<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
        主站蜘蛛池模板: 中文字幕久久亚洲一区| 久久免费看黄a级毛片 | 亚洲熟妇中文字幕五十中出| 亚洲中文字幕无码久久2020| 24小时日本韩国高清免费| 国产成A人亚洲精V品无码| 亚洲高清免费视频| 亚洲国产高清精品线久久| 噜噜噜亚洲色成人网站| 国产麻豆免费观看91| 亚洲精品天堂无码中文字幕| 在线视频免费观看高清| 亚洲五月综合缴情婷婷| 久久精品国产免费观看| 亚洲韩国在线一卡二卡| 亚洲一区二区三区免费在线观看 | 亚洲精品国产首次亮相| 99国产精品永久免费视频| 亚洲区精品久久一区二区三区| 18女人毛片水真多免费| 亚洲成人黄色在线观看| 亚洲黄色免费观看| 亚洲av无码不卡久久| 毛片免费vip会员在线看| 亚洲精华国产精华精华液网站| 国内自产少妇自拍区免费| 亚洲av日韩综合一区久热| 波多野结衣视频在线免费观看| 美女免费视频一区二区| 亚洲精品中文字幕乱码三区| 在线观看片免费人成视频播放| 久久国产亚洲精品麻豆| 免费人妻无码不卡中文字幕系| 亚洲无人区视频大全| 四色在线精品免费观看| 无套内谢孕妇毛片免费看看| 亚洲精品你懂的在线观看| 69式互添免费视频| 日本亚洲欧美色视频在线播放| 中文字幕亚洲综合久久菠萝蜜 | 91人人区免费区人人|