Python區(qū)塊鏈塊的添加教程
每個(gè)礦工將從先前創(chuàng)建的交易池中獲取交易.要跟蹤已挖掘的消息數(shù)量,我們必須創(chuàng)建一個(gè)全局變量 :
last_transaction_index = 0
我們現(xiàn)在讓我們的第一個(gè)礦工在區(qū)塊鏈中添加一個(gè)區(qū)塊.
添加第一個(gè)區(qū)塊
到添加一個(gè)新塊,我們首先創(chuàng)建一個(gè) Block 類的實(shí)例
block = Block()
我們從隊(duì)列中選取前3個(gè)交易并減去;
for?i?in?range(3): ???temp_transaction?=?transactions[last_transaction_index] ???#?validate?transaction
在將事務(wù)添加到塊之前礦工將驗(yàn)證交易的有效性.通過測(cè)試發(fā)送方提供的哈希與礦工使用發(fā)送方公鑰生成的哈希的相等性來驗(yàn)證交易有效性.此外,礦工將驗(yàn)證發(fā)件人是否有足夠的余額來支付當(dāng)前交易.
為簡(jiǎn)潔起見,我們未在教程中包含此功能.驗(yàn)證交易后,我們將其添加到塊實(shí)例中的 verified_transactions 列表中.
block.verified_transactions.append(temp_transaction)
我們遞增最后一個(gè)事務(wù)索引,以便下一個(gè)礦工將獲取隊(duì)列中的后續(xù)事務(wù)
last_transaction_index + = 1
我們?cè)趬K中添加了三個(gè)交易.完成此操作后,我們將初始化 Block 類的其余實(shí)例變量.我們首先添加最后一個(gè)塊的哈希值.
block.previous_block_hash = last_block_hash
接下來,我們挖掘難度等級(jí)為2的區(qū)塊.
block.Nonce = mine(block,2)
請(qǐng)注意, mine 函數(shù)的第一個(gè)參數(shù)是二進(jìn)制對(duì)象.我們現(xiàn)在對(duì)整個(gè)塊進(jìn)行哈希并在其上創(chuàng)建摘要.
digest = hash(block)
最后,我們將創(chuàng)建的塊添加到區(qū)塊鏈中,并重新初始化全局變量 last_block_hash ,以便在下一個(gè)區(qū)塊中使用.
添加塊的整個(gè)代碼顯示在下面 :
block?=?Block() for?i?in?range(3): ???temp_transaction?=?transactions[last_transaction_index] ???#?validate?transaction ???#?if?valid ???block.verified_transactions.append?(temp_transaction) ???last_transaction_index?+=?1 block.previous_block_hash?=?last_block_hash block.Nonce?=?mine?(block,?2) digest?=?hash?(block) TPCoins.append?(block) last_block_hash?=?digest
添加更多塊
現(xiàn)在我們將向區(qū)塊鏈添加兩個(gè)塊.添加下兩個(gè)塊的代碼在下面和下面給出;
#?Miner?2?adds?a?block block?=?Block() for?i?in?range(3): ???temp_transaction?=?transactions[last_transaction_index] ???#?validate?transaction ???#?if?valid ???block.verified_transactions.append?(temp_transaction) ???last_transaction_index?+=?1 block.previous_block_hash?=?last_block_hash block.Nonce?=?mine?(block,?2)digest?=?hash?(block) TPCoins.append?(block)last_block_hash?=?digest #?Miner?3?adds?a?block block?=?Block() for?i?in?range(3): ???temp_transaction?=?transactions[last_transaction_index] ???#display_transaction?(temp_transaction) ???#?validate?transaction ???#?if?valid ???block.verified_transactions.append?(temp_transaction) ???last_transaction_index?+=?1 block.previous_block_hash?=?last_block_hash block.Nonce?=?mine?(block,?2) digest?=?hash?(block) TPCoins.append?(block) last_block_hash?=?digest
當(dāng)你添加這兩個(gè)塊時(shí),您還將看到查找Nonce所需的迭代次數(shù).此時(shí),我們的區(qū)塊鏈共包含4個(gè)區(qū)塊,包括創(chuàng)世區(qū)塊.
轉(zhuǎn)儲(chǔ)整個(gè)區(qū)塊鏈
您可以驗(yàn)證整個(gè)區(qū)塊鏈的內(nèi)容使用以下語(yǔ)句 :
dump_blockchain(TPCoins)
你會(huì)看到輸出類似于下面顯示的那個(gè) :
Number?of?blocks?in?the?chain:?4 block?#?0 sender:?Genesis ----- recipient: 30819f300d06092a864886f70d010101050003818d0030818902818100ed272b52ccb539e2cd779 c6cc10ed1dfadf5d97c6ab6de90ed0372b2655626fb79f62d0e01081c163b0864cc68d426bbe943 8e8566303bb77414d4bfcaa3468ab7febac099294de10273a816f7047d4087b4bafa11f141544d4 8e2f10b842cab91faf33153900c7bf6c08c9e47a7df8aa7e60dc9e0798fb2ba3484bbdad2e44302 03010001 ----- value:?500.0 ----- time:?2019-01-14?16:18:02.042739 ----- -------------- ===================================== block?#?1 sender: 30819f300d06092a864886f70d010101050003818d0030818902818100bb064c99c492144a9f463 480273aba93ac1db1f0da3cb9f3c1f9d058cf499fd8e54d244da0a8dd6ddd329ec86794b04d773e b4841c9f935ea4d9ccc2821c7a1082d23b6c928d59863407f52fa05d8b47e5157f8fe56c2ce3279 c657f9c6a80500073b0be8093f748aef667c03e64f04f84d311c4d866c12d79d3fc3034563dfb02 03010001 ----- recipient: 30819f300d06092a864886f70d010101050003818d0030818902818100be93b516b28c6e674abe7 abdb11ce0fdf5bb728b75216b73f37a6432e4b402b3ad8139b8c0ba541a72c8add126b6e1a1308f b98b727beb63c6060356bb177bb7d54b54dbe87aee7353d0a6baa9397704de625d1836d3f42c7ee 5683f6703259592cc24b09699376807f28fe0e00ff882974484d805f874260dfc2d1627473b9102 03010001 ----- value:?15.0 ----- time:?2019-01-14?16:18:01.859915 ----- -------------- sender: 30819f300d06092a864886f70d010101050003818d0030818902818100bb064c99c492144a9f463 480273aba93ac1db1f0da3cb9f3c1f9d058cf499fd8e54d244da0a8dd6ddd329ec86794b04d773e b4841c9f935ea4d9ccc2821c7a1082d23b6c928d59863407f52fa05d8b47e5157f8fe56c2ce3279 c657f9c6a80500073b0be8093f748aef667c03e64f04f84d311c4d866c12d79d3fc3034563dfb02 03010001 ----- recipient: 30819f300d06092a864886f70d010101050003818d0030818902818100a070c82b34ae143cbe59b 3a2afde7186e9d5bc274955d8112d87a00256a35369acc4d0edfe65e8f9dc93fbd9ee74b9e7ea12 334da38c8c9900e6ced1c4ce93f86e06611e656521a1eab561892b7db0961b4f212d1fd5b5e49ae 09cf8c603a068f9b723aa8a651032ff6f24e5de00387e4d062375799742a359b8f22c5362e56502 03010001 ----- value:?6.0 ----- time:?2019-01-14?16:18:01.860966 ----- -------------- sender: 30819f300d06092a864886f70d010101050003818d0030818902818100be93b516b28c6e674abe7 abdb11ce0fdf5bb728b75216b73f37a6432e4b402b3ad8139b8c0ba541a72c8add126b6e1a1308f b98b727beb63c6060356bb177bb7d54b54dbe87aee7353d0a6baa9397704de625d1836d3f42c7ee 5683f6703259592cc24b09699376807f28fe0e00ff882974484d805f874260dfc2d1627473b9102 03010001 ----- recipient: 30819f300d06092a864886f70d010101050003818d0030818902818100cba097c0854876f41338c 62598c658f545182cfa4acebce147aedf328181f9c4930f14498fd03c0af6b0cce25be99452a81d f4fa30a53eddbb7bb7b203adf8764a0ccd9db6913a576d68d642d8fd47452590137869c25d9ff83 d68ebe6d616056a8425b85b52e69715b8b85ae807b84638d8f00e321b65e4c33acaf6469e18e302 03010001 ----- value:?2.0 ----- time:?2019-01-14?16:18:01.861958 ----- -------------- ===================================== block?#?2 sender: 30819f300d06092a864886f70d010101050003818d0030818902818100a070c82b34ae143cbe59b 3a2afde7186e9d5bc274955d8112d87a00256a35369acc4d0edfe65e8f9dc93fbd9ee74b9e7ea12 334da38c8c9900e6ced1c4ce93f86e06611e656521a1eab561892b7db0961b4f212d1fd5b5e49ae 09cf8c603a068f9b723aa8a651032ff6f24e5de00387e4d062375799742a359b8f22c5362e56502 03010001 ----- recipient: 30819f300d06092a864886f70d010101050003818d0030818902818100be93b516b28c6e674abe7 abdb11ce0fdf5bb728b75216b73f37a6432e4b402b3ad8139b8c0ba541a72c8add126b6e1a1308f b98b727beb63c6060356bb177bb7d54b54dbe87aee7353d0a6baa9397704de625d1836d3f42c7ee 5683f6703259592cc24b09699376807f28fe0e00ff882974484d805f874260dfc2d1627473b9102 03010001 ----- value:?4.0 ----- time:?2019-01-14?16:18:01.862946 ----- -------------- sender: 30819f300d06092a864886f70d010101050003818d0030818902818100cba097c0854876f41338c 62598c658f545182cfa4acebce147aedf328181f9c4930f14498fd03c0af6b0cce25be99452a81d f4fa30a53eddbb7bb7b203adf8764a0ccd9db6913a576d68d642d8fd47452590137869c25d9ff83 d68ebe6d616056a8425b85b52e69715b8b85ae807b84638d8f00e321b65e4c33acaf6469e18e302 03010001 ----- recipient: 30819f300d06092a864886f70d010101050003818d0030818902818100a070c82b34ae143cbe59b 3a2afde7186e9d5bc274955d8112d87a00256a35369acc4d0edfe65e8f9dc93fbd9ee74b9e7ea12 334da38c8c9900e6ced1c4ce93f86e06611e656521a1eab561892b7db0961b4f212d1fd5b5e49ae 09cf8c603a068f9b723aa8a651032ff6f24e5de00387e4d062375799742a359b8f22c5362e56502 03010001 ----- value:?7.0 ----- time:?2019-01-14?16:18:01.863932 ----- -------------- sender: 30819f300d06092a864886f70d010101050003818d0030818902818100be93b516b28c6e674abe7 abdb11ce0fdf5bb728b75216b73f37a6432e4b402b3ad8139b8c0ba541a72c8add126b6e1a1308f b98b727beb63c6060356bb177bb7d54b54dbe87aee7353d0a6baa9397704de625d1836d3f42c7ee 5683f6703259592cc24b09699376807f28fe0e00ff882974484d805f874260dfc2d1627473b9102 03010001 ----- recipient: 30819f300d06092a864886f70d010101050003818d0030818902818100a070c82b34ae143cbe59b 3a2afde7186e9d5bc274955d8112d87a00256a35369acc4d0edfe65e8f9dc93fbd9ee74b9e7ea12 334da38c8c9900e6ced1c4ce93f86e06611e656521a1eab561892b7db0961b4f212d1fd5b5e49ae 09cf8c603a068f9b723aa8a651032ff6f24e5de00387e4d062375799742a359b8f22c5362e56502 03010001 ----- value:?3.0 ----- time:?2019-01-14?16:18:01.865099 ----- -------------- ===================================== block?#?3 sender: 30819f300d06092a864886f70d010101050003818d0030818902818100a070c82b34ae143cbe59b 3a2afde7186e9d5bc274955d8112d87a00256a35369acc4d0edfe65e8f9dc93fbd9ee74b9e7ea12 334da38c8c9900e6ced1c4ce93f86e06611e656521a1eab561892b7db0961b4f212d1fd5b5e49ae 09cf8c603a068f9b723aa8a651032ff6f24e5de00387e4d062375799742a359b8f22c5362e56502 03010001 ----- recipient: 30819f300d06092a864886f70d010101050003818d0030818902818100bb064c99c492144a9f463 480273aba93ac1db1f0da3cb9f3c1f9d058cf499fd8e54d244da0a8dd6ddd329ec86794b04d773e b4841c9f935ea4d9ccc2821c7a1082d23b6c928d59863407f52fa05d8b47e5157f8fe56c2ce3279 c657f9c6a80500073b0be8093f748aef667c03e64f04f84d311c4d866c12d79d3fc3034563dfb02 03010001 ----- value:?8.0 ----- time:?2019-01-14?16:18:01.866219 ----- -------------- sender: 30819f300d06092a864886f70d010101050003818d0030818902818100a070c82b34ae143cbe59b 3a2afde7186e9d5bc274955d8112d87a00256a35369acc4d0edfe65e8f9dc93fbd9ee74b9e7ea12 334da38c8c9900e6ced1c4ce93f86e06611e656521a1eab561892b7db0961b4f212d1fd5b5e49ae 09cf8c603a068f9b723aa8a651032ff6f24e5de00387e4d062375799742a359b8f22c5362e56502 03010001 ----- recipient: 30819f300d06092a864886f70d010101050003818d0030818902818100be93b516b28c6e674abe7 abdb11ce0fdf5bb728b75216b73f37a6432e4b402b3ad8139b8c0ba541a72c8add126b6e1a1308f b98b727beb63c6060356bb177bb7d54b54dbe87aee7353d0a6baa9397704de625d1836d3f42c7ee 5683f6703259592cc24b09699376807f28fe0e00ff882974484d805f874260dfc2d1627473b9102 03010001 ----- value:?1.0 ----- time:?2019-01-14?16:18:01.867223 ----- -------------- sender: 30819f300d06092a864886f70d010101050003818d0030818902818100cba097c0854876f41338c 62598c658f545182cfa4acebce147aedf328181f9c4930f14498fd03c0af6b0cce25be99452a81d f4fa30a53eddbb7bb7b203adf8764a0ccd9db6913a576d68d642d8fd47452590137869c25d9ff83 d68ebe6d616056a8425b85b52e69715b8b85ae807b84638d8f00e321b65e4c33acaf6469e18e302 03010001 ----- recipient:? 30819f300d06092a864886f70d010101050003818d0030818902818100bb064c99c492144a9f463 480273aba93ac1db1f0da3cb9f3c1f9d058cf499fd8e54d244da0a8dd6ddd329ec86794b04d773e b4841c9f935ea4d9ccc2821c7a1082d23b6c928d59863407f52fa05d8b47e5157f8fe56c2ce3279 c657f9c6a80500073b0be8093f748aef667c03e64f04f84d311c4d866c12d79d3fc3034563dfb02 03010001 ----- value:?5.0 ----- time:?2019-01-14?16:18:01.868241 ----- -------------- =====================================
以上就是Python區(qū)塊鏈塊的添加教程的詳細(xì)內(nèi)容,更多關(guān)于Python區(qū)塊鏈塊添加的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- python區(qū)塊鏈實(shí)現(xiàn)簡(jiǎn)版網(wǎng)絡(luò)
- python區(qū)塊鏈地址的簡(jiǎn)版實(shí)現(xiàn)
- python區(qū)塊鏈持久化和命令行接口實(shí)現(xiàn)簡(jiǎn)版
- python區(qū)塊鏈實(shí)現(xiàn)簡(jiǎn)版工作量證明
- python區(qū)塊鏈基本原型簡(jiǎn)版實(shí)現(xiàn)示例
- python區(qū)塊鏈簡(jiǎn)易版交易完善挖礦獎(jiǎng)勵(lì)示例
- python區(qū)塊鏈簡(jiǎn)易版交易實(shí)現(xiàn)示例
- Python區(qū)塊鏈Creating?Miners教程
- Python構(gòu)建區(qū)塊鏈的方法詳解
相關(guān)文章
python將四元數(shù)變換為旋轉(zhuǎn)矩陣的實(shí)例
今天小編就為大家分享一篇python將四元數(shù)變換為旋轉(zhuǎn)矩陣的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12Python中往列表中插入字典時(shí),數(shù)據(jù)重復(fù)問題
這篇文章主要介紹了Python中往列表中插入字典時(shí),數(shù)據(jù)重復(fù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02基于python的docx模塊處理word和WPS的docx格式文件方式
今天小編就為大家分享一篇基于python的docx模塊處理word和WPS的docx格式文件方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-02-02python中g(shù)etopt()函數(shù)用法詳解
這篇文章主要介紹了python中g(shù)etopt()函數(shù)用法,通過getopt模塊中的getopt(?)方法,我們可以獲取和解析命令行傳入的參數(shù),需要的朋友可以參考下2022-12-12pandas常用表連接merge/concat/join/append詳解
使用python的pandas庫(kù)可以很容易幫你搞定,而且性能也是很出色的;百萬(wàn)級(jí)的表關(guān)聯(lián),可以秒出,本文給大家分享pandas常用表連接merge/concat/join/append詳解,感興趣的朋友跟隨小編一起看看吧2023-02-02通過Python編寫一個(gè)簡(jiǎn)單登錄功能過程解析
這篇文章主要介紹了通過Python編寫一個(gè)簡(jiǎn)單登錄功能過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09jupyter notebook中美觀顯示矩陣實(shí)例
這篇文章主要介紹了jupyter notebook中美觀顯示矩陣實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04