“Support for ‘segwit’ rule requires explicit client support”を解決する 〜 簡単なpythonプログラムを使ってbitcoinの採掘を試してみる その11

技術メモ

前回の記事 で、testnetの全データをダウンロードするところでおわった。今回はその続き

どれくらいだろう、だいたい2時間くらいで全部のデータがダウンロード終わり、sizeは12Gのようだ

$ ~/.bitcoin# du -h testnet3
1.1M testnet3/database
636M testnet3/chainstate
241M testnet3/blocks/index
11G testnet3/blocks
12G testnet3

さて、いよいよ採掘PGを動かしてみると・・・

$ python ntgbtminer.py
Mining new block template...
{"params": [{}], "id": 4218016004, "method": "getblocktemplate"}
{"params": [{}], "id": 4218016004, "method": "getblocktemplate"} {u'id': 4218016004, u'result': None, u'error': {u'message': u"Support for 'segwit' rule requires explicit client support", u'code': -8}}
Traceback (most recent call last):
  File "ntgbtminer.py", line 415, in 
    standalone_miner(bin2hex("Todorokifire Hello from vsergeev!"), "mzK6whNjDt5Wyzc3EW6MkSvxWdFYxAx2GX")
  File "ntgbtminer.py", line 403, in standalone_miner
    mined_block, hps = block_mine(rpc_getblocktemplate(), coinbase_message, 0, address, timeout=60)
  File "ntgbtminer.py", line 328, in block_mine
    block_template['transactions'].insert(0, coinbase_tx)
KeyError: 'transactions'

“Support for ‘segwit’ rule requires explicit client support”という、新しいエラーメッセージいただきましたー。

Segwitとは?

そもそもSegwitがよくわからないので調べる。

Segwitとは?(初心者向け)

今後流通量が増えるときにビットコインブロックチェーンのサイズが小さすぎて遅延が発生するため「取引のサイズ圧縮」すること

をSegwitというらしい。(あってるかな・・・この意訳(汗))

ググっていると、こちらの記事で同じ現象が発生している人を発見
どうも、getblocktemplateを呼び出す時に、'{“rules”:[“segwit”]}’ というパラメータをつければよいということで

https://github.com/vsergeev/ntgbtminer/blob/master/ntgbtminer.py#L55

の部分を以下に変える

def rpc_getblocktemplate():
    try: return rpc("getblocktemplate", [{"rules":["segwit"]}])

そして実行してみると・・・

$ python ntgbtminer.py
Mining new block template...
{"params": [{"rules": ["segwit"]}], "id": 333700817, "method": "getblocktemplate"}
{u'id': 333700817, u'result': {u'coinbaseaux': {u'flags': u''}, u'vbavailable': {}, u'previousblockhash': u'00000000000004765b3cc405d99497de6bec5008cc40cb0095fd6e8146b4f352', u'target': u'000000000000138a4d0000000000000000000000000000000000000000000000', u'noncerange': u'00000000ffffffff', u'transactions': [{u'fee': 50000, u'hash': u'a0ed7cbd5a5d7bb6384d17b049d25e6849fe5be6200d540acbac42de6bd48a0d', u'weight': 900, u'txid': u'a0ed7cbd5a5d7bb6384d17b049d25e6849fe5be6200d540acbac42de6bd48a0d', u'depends': [], u'data': u'010000000107f7522e8d2cdd7964ed138b9f7de87fd8ba47040adeca6c2323cc32c1113e90000000006a47304402205e5f7684629ff2340f040037f86f6203ddeece8d43ddc483c9518dfab7b92ae102204319cb8a0909245c10f70be299db56efc0a263e3ee0966999312f7107c66b19a0121026b66e1b3a8d8b8d596b3f524253346de4eae712dcdade9563d0d5f64350fde0effffffff02c0c62d00000000001976a9140766ed7a38e2c82537e7b7ae5fc9bcd75d6bd47a88ac7066cc02000000001976a9143644e3a7b2121caa4f8267bf8519b9fd83b6378d88ac00000000', u'sigops': 8}, {u'fee': 50000, u'hash': u'7fa0a5c497aeadc5eb1e1a3f943da1e613d0041367655e263609b471b1890127',
  :
  :

うごいた、うごいた!!!

regtestモードのときはすぐ、

Solved a block! Block hash: 46160fbee92d4b131d9265cf1fdad5b8bf4a7ddc1d9a5b7395bde0af15533008
Submitting: 000000209fb61ff926ec78f4339eea564fbec289b2c8bd324548dde1cef3cd5396d1da66e61d31e4c5e54cc724a0f1743b3d99edddd30ae25e0f626aa9dfc1992132e6c1708feb58ffff7f20640000000101000000010000000000000000000000000000000000000000000000000000000000000000ffffffff1848656c6c6f2066726f6d2076736572676565762169000000ffffffff0100f2052a010000001976a91430197e198481f044490d0616be65b458d6b52c9a88ac00000000

のように、すぐblockを採掘できたが、testnetでは当たり前だがなかなかできない。
このregtestモードとtestnetモードの違いで、採掘に時間がかかる、かからないのロジックを次回検証してみる事にする。

Sponsored Link
コメントはまだありません

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


仮想通貨全般
TendermintをDocker使って起動してみる

以前、勉強会に行ってきた際にTendermintの事を聞いて ブロックチェーンプロトコルが実装できる …

仮想通貨全般
Bitcoinのdifficultyを決めるnBitsを理解する

マイニングする際の理解を深めようと思い、マイニング難易度(difficulty)を決めるnBitsに …

仮想通貨全般
EOS Night Meetupにいってきた

今回は、以前からEOSに興味があったので EOS Night Meetupにいってきました。 暗号通 …