資源下載地址:https://download.csdn.net/download/sheziqiong/86831335
資源下載地址:https://download.csdn.net/download/sheziqiong/86831335文章來源地址http://www.zghlxwxcb.cn/news/detail-713723.html
1.設計內(nèi)容
利用 Python 實現(xiàn)一個 PoW 的仿真程序,模擬一定數(shù)量的節(jié)點生成區(qū)塊鏈的狀態(tài)。
- 設置參數(shù)包括:節(jié)點數(shù)量和每個輪次出塊的成功率,測量區(qū)塊鏈的增長速度。
- 設置一定數(shù)量的惡意節(jié)點實施攻擊。
- 測量不同惡意節(jié)點比例(10%-40%)條件下,統(tǒng)計分叉攻擊成功的長度測量
- 不同惡意節(jié)點比例條件下,自私挖礦收益比例
2.代碼解析
- 程序入口是 simulate_pow.py,simulate_pow 函數(shù)參數(shù)為誠實節(jié)點數(shù)量,惡意節(jié)點數(shù)量和出塊難度。默認參數(shù)設置如下:
- 修改
- 仿真結(jié)果保存在 log 目錄下的日志中。
- 令惡意節(jié)點攻擊第一個區(qū)塊(genesis 塊)
3.實驗內(nèi)容
3.1第一輪仿真
- 參數(shù):honest node number = 10, evil node number = 0, difficulty = 000000
- 仿真結(jié)果:
- 平均出塊時間: 66s,最短出塊時間 3s,最長出塊時間 202s
3.2第二輪仿真
- 參數(shù):honest node number = 10, evil node number = 0, difficulty = 00000
- 仿真結(jié)果:
- 平均出塊時間: 3s,最短出塊時間 0s(精確到個位),最長出塊時間 7s
3.3第三輪仿真
- 參數(shù):honest node number = 10, evil node number = 1, difficulty = 00000
- 仿真結(jié)果:
- 惡意節(jié)點攻擊失敗
3.4第四輪仿真
- 參數(shù):honest node number = 10, evil node number = 4, difficulty = 00000
- 1 到 10 號 miner 為 honest node,11 號到 14 號為 evil node
- 可以看到,誠實節(jié)點在領先一個區(qū)塊的情況下被惡意節(jié)點瞬間反超,我認為這和 python 多線程的機制有關。python 多線程并不是真正意義上的并行,并且會先調(diào)度后創(chuàng)建的線程。為了更真實地模擬分叉攻擊,我決定讓誠實節(jié)點領先一個區(qū)塊后再讓惡意節(jié)點開始攻擊,并且提高出塊難度。
- 參數(shù):honest node number = 10, evil node number = 4, difficulty = 000000
- 0 到 9 號 miner 為 honest node,10 號到 13 號為 evil node
文章來源:http://www.zghlxwxcb.cn/news/detail-713723.html
- 可以看到,python 多線程優(yōu)先調(diào)度后創(chuàng)建的線程,因此惡意節(jié)點攻擊成功。
資源下載地址:https://download.csdn.net/download/sheziqiong/86831335
資源下載地址:https://download.csdn.net/download/sheziqiong/86831335
到了這里,關于基于Python實現(xiàn)一個PoW的仿真程序的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!