LoginSignup
3
2

More than 5 years have passed since last update.

Bitcoin Core のブロックチェーンの同期を高速化するためにノードを指定する

Last updated at Posted at 2017-08-15

追記ここから
わざわざこんなことしなくても、wallet.datファイルを消すか他の場所に移動してから、

$ tar -czvf bitcoin.tar.gz ~/.bitcoin

とでもして、その圧縮ファイルを移動して所定の場所で解凍するのが一番早いと思います(試してませんが、、、)。
以下の方法は新たに txindex を有効にしたものを作りたいときは良いかもですね。
追記ここまで

自分用覚え書きです。Bitcoin coreの同期が終わったマシンが手元にあるけどもう一台立ち上げたい、そんなときの話です。

前提条件

  • 既に同期が終わっており自分が管理しているBitcoin Coreノードが存在している
  • もう一台、Bitcoin Coreを走らせたくなったが、BlockChainの同期がトロイのが嫌
  • 手持ちに同期が終わっているノードがあるのだから、GbEで繋いで高速に同期できないかと思っている (まあGbEでなくてもいいですけど、たとえば同じLANにあるとして)
  • BlockChainと言っても結局ファイルで ./bitcoin 以下をうまいこと移動すればできそうだけどなんとなくめんどい人
  • 自前で同期しているものがあるのに、インターネットを経由して他のノードから落とすのに罪悪感がややある人
  • Linux環境 (Windowsやその他OSでも似たようにできるとは思いますが試していないので)

方法

  • 新しいマシンの方にBitcoin Coreをダウンロードして展開 (https://bitcoin.org/en/download)
  • 以下のコマンドを打つ (IPアドレスは既に同期が終わったマシンのもの。今回は例として192.168.150。coonectオプションでノードを指定できるようです)
$ ./bin/bitcoind -daemon -connect=192.168.1.50
  • 同期が始まる (一応、以下のコマンドできちんと↑のマシンに接続されているか確認可能)
$ ./bin/bitcoin-cli getpeerinfo
[
  {
    "id": 1,
    "addr": "192.168.1.50",
    "services": "000000000000000d",
    "relaytxes": true,
    "lastsend": 1502829024,
    "lastrecv": 1502829024,

以下略
  • 帯域を見たければdstatなどで
$ dstat --disk --net
-dsk/total- -net/total-
 read  writ| recv  send
 116k   17M|   0     0 
   0    25M|  12M   69k
   0    21M|4600k 7771B
   0    71M|3323k   11k
   0    51M|  70B  210B
   0    62M|  70B  210B
 284k   48M|4657k   19k
   0    28M|  10M   18k
   0    25M|9982k   32k
   0    23M|  11M   58k
   0    36M|  10M   92k
   0    49M|6728k   29k
   0    24M|  12M   35k
  • 一日程度待って終わり

自分の環境と結果

  • 既に同期が終わったBitcoin Coreが走っているマシンA
  • 新しくBitcoin Coreを入れたいマシンB
  • 同じLANでGbEで接続されている

という環境(上記のマシンたちのCPUはSandy Bridge以降のi3以上だった気がします)で、ムラがありますが最大25MB/s (=120Mbps) 程度出ました。平均して10MB/s程でしょうか。一分で600MB、一時間で3.6GBなので悪くはないと思います。BlockChainは現在(2017年8月16日)140GBほどなので、一日ちょっとで終わる計算です。

理想的な方法としては ./bitcoinのblockchain部分を圧縮して転送すれば良いのでしょうが具体的にどのファイル・ディレクトリをやればいいのかよく分からなかったので上記の方法を取りました。wallet(アカウント)も一緒に入れたければそのまま./bitcoinを圧縮・転送すれば良いのでしょうが今回はそうしたくなかったもので。もしやり方をご存じの方がいらっしゃれば具体的なコマンド付きで教えてください。(書いてて思いましたが./bitcoinを圧縮・転送して、展開してからwallet.datだけ消せば良い気もしてきました、動くか分かりませんが)

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2