(轉)以太坊私鏈的挖礦速度與難度值的關系


之前呢都是用很小的難度值,讓挖礦速度很快,可以輕松的打包交易並且獲得以太幣,但是這樣的話也會讓機器的內存很卡,而且涉及到具體的項目應用時是不想讓他這么快的,所以我們來測試一下難度值跟挖礦速度的關系:

首先在自己創建的鏡像里面跑一個容器node2:

docker run -it --name node2 daocloud.io/ubuntu/node

創建目錄,並寫好創世塊

mkdir test && cd test
vim genesis.json
{
   "config": {
        "chainId": 12345,
        "homesteadBlock": 0,
        "eip155Block": 0,
        "eip158Block": 0
    },
    "coinbase" : "0x0000000000000000000000000000000000000000",
    "difficulty" : "0x77fff88",
    "extraData" : "0x123456",
    "gasLimit" : "0xffffffff",
    "nonce" : "0x0000000000000042",
    "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
    "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
    "timestamp" : "0x00",
    "alloc": { }
}

初始化創始塊

geth --datadir ./data/01 init genesis.json

PS:chainId不為0,否則出現insufficient funds for gas * price + value

解釋一下各個參數的作用:

mixhash

與nonce配合用於挖礦,由上一個區塊的一部分生成的hash。注意他和nonce的設置需要滿足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章節所描述的條件。.

nonce

nonce就是一個64位隨機數,用於挖礦,注意他和mixhash的設置需要滿足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章節所描述的條件。

difficulty

設置當前區塊的難度,如果難度過大,cpu挖礦就很難,這里設置較小難度

alloc

用來預置賬號以及賬號的以太幣數量,因為私有鏈挖礦比較容易,所以我們不需要預置有幣的賬號,需要的時候自己創建即可以。

coinbase

礦工的賬號,隨便填

timestamp

設置創世塊的時間戳

parentHash

上一個區塊的hash值,因為是創世塊,所以這個值是0

extraData

附加信息,隨便填,可以填你的個性信息

gasLimit

該值設置對GAS的消耗總量限制,用來限制區塊能包含的交易信息總和,因為我們是私有鏈,所以填最大。


進入geth

geth --identity "haha" --datadir ./data/01 --networkid 12345 --rpcapi "db,eth,net,web3" --port 2221 --rpcport 3331 console

創建賬戶,挖礦並記錄挖礦的時間和區塊的高度

personal.newAccount("123") miner.start() miner.stop()

每次更改創始塊只需要把容器停掉然后重新創建就好了。

docker stop node2 && docker rm node2

接下來是難度值的更改:

十六進制 “0x99999” 對應的十進制 629145還是挺快的,半分鍾大概30個,就是一秒一個 
DDDDDDDD 3722304989 挖不到 放大了近四萬倍 等了三分鍾沒挖到 
176ffe890 6291450000 放大一萬倍,五分鍾沒挖到

好吧,我放棄了,設置的小一點

  • 5ffffa 6291450 放大十倍 一分鍾五個
  • 2ffffd 3145725 五倍 一分鍾五到十個之間個

  • bffff4 12582900 二十倍 六分鍾挖了八個

  • 3bfffc4 62914500 一百倍 六分鍾兩個
  • 12bffed4 314572500 五百倍 15分鍾沒有一個

  • 77fff88 125829000 兩百倍 十分鍾兩個

四五分鍾一個區塊是不是差不多了呢? 挖礦速度是可以通過算法自動調整,讓速度保持與我們設置的難度值保持相當,但是后面區塊的難度值都是跟初始塊設置的難度值相關,所以只是由初始塊的難度值決定整個鏈的速度. 
這個是黃皮書關於難度值設定的算法 
這里寫圖片描述

轉自:http://blog.csdn.net/DDFFR/article/details/77095033


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM