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)證交易的有效性.通過(guò)測(cè)試發(fā)送方提供的哈希與礦工使用發(fā)送方公鑰生成的哈希的相等性來(lái)驗(yàn)證交易有效性.此外,礦工將驗(yàn)證發(fā)件人是否有足夠的余額來(lái)支付當(dāng)前交易.
為簡(jiǎn)潔起見(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
接下來(lái),我們挖掘難度等級(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)文章!
相關(guān)文章
python 函數(shù)嵌套及多函數(shù)共同運(yùn)行知識(shí)點(diǎn)講解
在本篇文章里小編給各位整理的是一篇關(guān)于python 函數(shù)嵌套及多函數(shù)共同運(yùn)行知識(shí)點(diǎn)講解,需要的朋友們可以學(xué)習(xí)下。2020-03-03
Django結(jié)合WebSockets和異步視圖實(shí)現(xiàn)實(shí)時(shí)通信功能
在現(xiàn)代Web應(yīng)用程序中,實(shí)時(shí)通信已經(jīng)成為了必不可少的功能之一,這篇文章主要介紹了如何利用Django中的WebSockets和異步視圖來(lái)實(shí)現(xiàn)實(shí)時(shí)通信功能,需要的可以參考下2024-04-04
Python的Django中django-userena組件的簡(jiǎn)單使用教程
這篇文章主要介紹了Python的Django中django-userena組件的簡(jiǎn)單使用教程,包括用戶登陸和注冊(cè)等簡(jiǎn)單功能的實(shí)現(xiàn),需要的朋友可以參考下2015-05-05
python中Selenium+Webdriver實(shí)現(xiàn)自動(dòng)化登錄
本文主要介紹了python中Selenium+Webdriver實(shí)現(xiàn)自動(dòng)化登錄,包括測(cè)試環(huán)境的搭建、代碼編寫、以及注意事項(xiàng)等,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09
Python3.6基于正則實(shí)現(xiàn)的計(jì)算器示例【無(wú)優(yōu)化簡(jiǎn)單注釋版】
這篇文章主要介紹了Python3.6基于正則實(shí)現(xiàn)的計(jì)算器,涉及Python基于正則表達(dá)式的算術(shù)式遍歷、查找及數(shù)學(xué)運(yùn)算相關(guān)操作技巧,需要的朋友可以參考下2018-06-06
Python的Tornado框架實(shí)現(xiàn)異步非阻塞訪問(wèn)數(shù)據(jù)庫(kù)的示例
Tornado框架的異步非阻塞特性是其最大的亮點(diǎn),這里我們將立足于基礎(chǔ)來(lái)介紹一種簡(jiǎn)單的Python的Tornado框架實(shí)現(xiàn)異步非阻塞訪問(wèn)數(shù)據(jù)庫(kù)的示例:2016-06-06
python輾轉(zhuǎn)相除法求最大公約數(shù)和最小公倍數(shù)的實(shí)現(xiàn)
這篇文章主要介紹了python輾轉(zhuǎn)相除法求最大公約數(shù)和最小公倍數(shù)的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07

