<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
        當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

        通過(guò)Python函數(shù)來(lái)詳細(xì)解析區(qū)塊鏈

        來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 14:20:44
        文檔

        通過(guò)Python函數(shù)來(lái)詳細(xì)解析區(qū)塊鏈

        通過(guò)Python函數(shù)來(lái)詳細(xì)解析區(qū)塊鏈:本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于通過(guò)Python函數(shù)來(lái)詳細(xì)解析區(qū)塊鏈,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。我想對(duì)于那里的很多人來(lái)說(shuō),區(qū)塊鏈就是這種現(xiàn)象,很難不讓你頭腦發(fā)熱。我開(kāi)始觀看視頻和閱讀文章,但對(duì)我個(gè)人而言,直到我編
        推薦度:
        導(dǎo)讀通過(guò)Python函數(shù)來(lái)詳細(xì)解析區(qū)塊鏈:本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于通過(guò)Python函數(shù)來(lái)詳細(xì)解析區(qū)塊鏈,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。我想對(duì)于那里的很多人來(lái)說(shuō),區(qū)塊鏈就是這種現(xiàn)象,很難不讓你頭腦發(fā)熱。我開(kāi)始觀看視頻和閱讀文章,但對(duì)我個(gè)人而言,直到我編

        本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于通過(guò)Python函數(shù)來(lái)詳細(xì)解析區(qū)塊鏈,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。

        我想對(duì)于那里的很多人來(lái)說(shuō),區(qū)塊鏈就是這種現(xiàn)象,很難不讓你頭腦發(fā)熱。我開(kāi)始觀看視頻和閱讀文章,但對(duì)我個(gè)人而言,直到我編寫自己的簡(jiǎn)單區(qū)塊鏈,我才真正理解它是什么以及它的潛在應(yīng)用價(jià)值。

        我對(duì)區(qū)塊鏈的看法是它是一個(gè)公開(kāi)的加密數(shù)據(jù)庫(kù)。如果你是亞馬遜并且你想使用該技術(shù)來(lái)跟蹤庫(kù)存水平,那么使用區(qū)塊鏈?zhǔn)欠裼幸饬x?可能沒(méi)有,因?yàn)槟愕目蛻舨幌牖ㄙM(fèi)資源來(lái)驗(yàn)證你的區(qū)塊鏈,因?yàn)樗麄冎活櫩粗W(wǎng)站說(shuō)Only 1 left!

        我會(huì)讓你考慮未來(lái)的應(yīng)用。所以不用多說(shuō),讓我們看看我們的7個(gè)函數(shù)!

        def hash_function(k):
         """Hashes our transaction."""
         if type(k) is not str:
         k = json.dumps(k, sort_keys=True)
        
         return hashlib.sha256(k).hexdigest()

        區(qū)塊鏈的核心是hash函數(shù)。如果沒(méi)有加密,區(qū)塊鏈將易于操作,并且交易將能夠以欺詐方式寫入。

        def update_state(transaction, state):
         state = state.copy()
        
         for key in transaction:
         if key in state.keys():
         state[key] += transaction[key]
         else:
         state[key] = transaction[key]
        
         return state

        state是來(lái)記錄誰(shuí)擁有代幣交易情況。例如,我有10個(gè)代幣,我給1到Medium,然后狀態(tài)state將是下面字典的值。

        {‘transaction’: {‘Tom’: 9, ‘Medium’: 1}}

        值得注意的是,透支不可能存在。如果現(xiàn)有只有10個(gè)代幣,那么我就不能給某人11個(gè)代幣。以下函數(shù)驗(yàn)證我們嘗試進(jìn)行的交易確實(shí)有效。此外,交易總體上必須平衡。我不能給5個(gè)代幣并讓收件人收到4個(gè)代幣幣,因?yàn)檫@樣可以銷毀和生成代幣。

        def valid_transaction(transaction, state):
         """A valid transaction must sum to 0."""
         if sum(transaction.values()) is not 0:
         return False
        
         for key in transaction.keys():
         if key in state.keys():
         account_balance = state[key]
         else:
         account_balance = 0
        
         if account_balance + transaction[key] < 0:
         return False
        
         return True

        現(xiàn)在,我們可以制作我們的區(qū)塊。讀取前一個(gè)區(qū)塊的信息,并將其用于將其鏈接到新區(qū)塊。這也是區(qū)塊鏈理念的核心。可以嘗試以欺騙性的方式將看似有效的交易插入到區(qū)塊鏈中,但是解密所有先前的塊在計(jì)算上(幾乎)是不可能的,這就保留了區(qū)塊鏈的完整性。

        def make_block(transactions, chain):
         """Make a block to go into the chain."""
         parent_hash = chain[-1]['hash']
         block_number = chain[-1]['contents']['block_number'] + 1
        
         block_contents = {
         'block_number': block_number,
         'parent_hash': parent_hash,
         'transaction_count': block_number + 1,
         'transaction': transactions
         }
        
         return {'hash': hash_function(block_contents), 'contents': block_contents}

        下面是一個(gè)小輔助函數(shù)來(lái)檢查前一個(gè)塊的哈希值:

        def check_block_hash(block):
         expected_hash = hash_function(block['contents'])
        
         if block['hash'] is not expected_hash:
         raise
        
         return

        一旦我們將所有東西組合在一起,就有時(shí)間來(lái)創(chuàng)建我們的區(qū)塊。我們現(xiàn)在將更新區(qū)塊鏈。

        def check_block_validity(block, parent, state):
         parent_number = parent['contents']['block_number']
         parent_hash = parent['hash']
         block_number = block['contents']['block_number']
        
         for transaction in block['contents']['transaction']:
         if valid_transaction(transaction, state):
         state = update_state(transaction, state)
         else:
         raise
        
         check_block_hash(block) # Check hash integrity
        
         if block_number is not parent_number + 1:
         raise
        
         if block['contents']['parent_hash'] is not parent_hash:
         raise
        
         return state

        在我們完成之前,必須驗(yàn)證區(qū)塊鏈:

        def check_chain(chain):
         """Check the chain is valid."""
         if type(chain) is str:
         try:
         chain = json.loads(chain)
         assert (type(chain) == list)
         except ValueError:
         # String passed in was not valid JSON
         return False
         elif type(chain) is not list:
         return False
        
         state = {}
        
         for transaction in chain[0]['contents']['transaction']:
         state = update_state(transaction, state)
        
         check_block_hash(chain[0])
         parent = chain[0]
        
         for block in chain[1:]:
         state = check_block_validity(block, parent, state)
         parent = block
        
         return state

        最后,需要一個(gè)交易功能,它將以上所有內(nèi)容掛起:

        def add_transaction_to_chain(transaction, state, chain):
         if valid_transaction(transaction, state):
         state = update_state(transaction, state)
         else:
         raise Exception('Invalid transaction.')
        
         my_block = make_block(state, chain)
         chain.append(my_block)
        
         for transaction in chain:
         check_chain(transaction)
        
         return state, chain

        所以,現(xiàn)在我們有了7個(gè)函數(shù)。我們?nèi)绾闻c它互動(dòng)?好吧,首先我們需要用Genesis Block啟動(dòng)我們的區(qū)塊鏈。這是我們的新代幣(或庫(kù)存等)的開(kāi)始。出于本文解釋說(shuō)明的目的,我會(huì)說(shuō)我是Tom,將從擁有10個(gè)代幣開(kāi)始。

        genesis_block = {
         'hash': hash_function({
         'block_number': 0,
         'parent_hash': None,
         'transaction_count': 1,
         'transaction': [{'Tom': 10}]
         }),
         'contents': {
         'block_number': 0,
         'parent_hash': None,
         'transaction_count': 1,
         'transaction': [{'Tom': 10}]
         },
        }
        
        block_chain = [genesis_block]
        chain_state = {'Tom': 10}

        現(xiàn)在,看看當(dāng)我將一些代幣交給Medium時(shí)會(huì)發(fā)生什么:

        chain_state, block_chain = add_transaction_to_chain(transaction={'Tom': -1, 'Medium': 1}, state=chain_state, chain=block_chain)

        state更新顯示誰(shuí)擁有多少代幣:

        {'Medium': 1, 'Tom': 9}

        區(qū)塊鏈看起來(lái)像這樣:

        [{'contents': {'block_number': 0,
         'parent_hash': None,
         'transaction': [{'Tom': 10}],
         'transaction_count': 1},
         'hash': '064d0b480b3b92761f31831d30ae9f01954efaa62371b4b44f11465ec22abe93'},
         {'contents': {'block_number': 1,
         'parent_hash': '064d0b480b3b92761f31831d30ae9f01954efaa62371b4b44f11465ec22abe93',
         'transaction': {'Medium': 1, 'Tom': 9},
         'transaction_count': 2},
         'hash': 'b4ae25f0cc0ee0b0caa66b9a3473e9a108652d53b1dc22a40962fef5c8c0f08c'}]

        我們創(chuàng)建了第一個(gè)新交易并將其插入到堆棧頂部。現(xiàn)在,我希望我已經(jīng)激起了你的好奇心,并且有興趣將代碼復(fù)制下來(lái)并使用它。

        聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        通過(guò)Python函數(shù)來(lái)詳細(xì)解析區(qū)塊鏈

        通過(guò)Python函數(shù)來(lái)詳細(xì)解析區(qū)塊鏈:本篇文章給大家?guī)?lái)的內(nèi)容是關(guān)于通過(guò)Python函數(shù)來(lái)詳細(xì)解析區(qū)塊鏈,有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。我想對(duì)于那里的很多人來(lái)說(shuō),區(qū)塊鏈就是這種現(xiàn)象,很難不讓你頭腦發(fā)熱。我開(kāi)始觀看視頻和閱讀文章,但對(duì)我個(gè)人而言,直到我編
        推薦度:
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 久久久久亚洲av成人无码电影| 毛片A级毛片免费播放| 凹凸精品视频分类国产品免费| 天堂亚洲国产中文在线| 中国在线观看免费国语版| 亚洲一级免费视频| 大学生a级毛片免费观看| 亚洲色大成WWW亚洲女子| 免费高清在线影片一区| 免费人成网站永久| 亚洲一区视频在线播放| EEUSS影院WWW在线观看免费| 亚洲大成色www永久网站| 国产精品免费一区二区三区四区| 亚洲Av无码精品色午夜| 18禁黄网站禁片免费观看不卡| 亚洲AV无码精品蜜桃| 日韩免费观看一级毛片看看| 无码的免费不卡毛片视频| 国产精品亚洲аv无码播放| 69精品免费视频| 亚洲第一成年网站视频| 亚洲国产精品毛片av不卡在线| 国产线视频精品免费观看视频| 91亚洲精品视频| 午夜神器成在线人成在线人免费| 豆国产96在线|亚洲| 亚洲成AV人片一区二区密柚| 91精品免费国产高清在线| 亚洲国产日韩a在线播放| 国产亚洲日韩一区二区三区| 69精品免费视频| 国产精品成人亚洲| 亚洲天堂男人天堂| 国产区卡一卡二卡三乱码免费| 99精品免费视频| 亚洲最大天堂无码精品区| 中文字幕精品无码亚洲字| 91黑丝国产线观看免费| 一区二区三区在线免费| 亚洲国产成人久久综合一区|