Lおさらい前回で「umbrelを始めて使う人は、ブロックチェーンの移植をしてIBD時間の短縮を狙うと超気持ちいいけども、初期投資を惜しまずにまともな環境を構築すべきだ。」ということを書きました。今回はブロックチェーンを移植した方が時短になる方に向けて、具体的な手順を解説したいと思います。移植方法ブロックチェーンを手に入れるまずどうにかしてブロックチェーンを手に入れましょう。入手するデータはbitcoincore(bitcoind)では/bitcoinディレクトリ以下のディレクトリデータ(blocks,indexes,chainstate)です。信頼できる知り合いにコピーしてもらう。オススメBTCブロックチェーンが記録されたHDDやSSDを購入する。信じられる人からコピーしてもらえるのならそれが一番いいです。BTC」と検索するとビットコインブロックチェーンを保存した中古HDDを販売している人が見つかります。メルカリでは販売している人はいないようです。ブロックチェーンの移植は時間との勝負(遅くなればなるほど移植後に自力で同期しなくてはいけないブロックが増えやる意味がなくなる)なので、データを分割している方は安くても買わない方がいいと思います。(2022/01/26補足)作業を行う時は複写元であろうが複写先であろうが関係なく、bitcoindを停止させましょう。複写しているデータが複写中に書き換わってしまい、移植後の稼働に失敗します。長い時間をかけたのにうまくいかなくて泣けますよ。(3敗)移植umbrelの場合とコア単独で動かしている場合を説明します。コアが稼働しているコンピュータでは/bitcoinというディレクトリが存在します。wallet.datという名前のファイルがあった場合、消えるとまずいファイルなのでまずはどこかにバックアップを取っておきましょう。このwallet.datは他人に渡してはいけない情報が含まれているファイルでもあります。ブロックチェーンを融通してくれる相手がうっかりこのファイルまでコピーしてきたらしめしめ問題ないよう教えてあげましょう。自分の環境からも削除しましょう。Umbrelの場合は/bitcoin以下にwallet.datは存在しませんので、この心配は無用です。稼働中のコアを停止します。[PID]'とすれば停止します。動かす時はシステムを再起動させればよいです。/home/umbrel/umbrel/script/stop'とし管理者パスワードを入力します。入手した「/bitcoin/blocks,/bitcoin/indexes,/bitcoin/chainstate」の3ディレクトリリのデータを移植先の/bitcoin以下に上書きします。以下の点に注意しましょう。初心者あるあるで移植時に入力したフルパスの最後に/をつけるのかつけないのかで変な複写をしてしまい失敗というのがあります。慎重にやりましょう(1敗)例えば/bitcoinとすればそのディレクトリを含むという意味ですし、/bitcoin/とするとディレクトリの中身を指しディレクトリ自体を指定していません移植用のデータを観察し、/bitcoin以下にファイルやディレクトリが見えていれば圧縮も何もされていません。cpコマンドでもいいと思いますが、移植後のパーミッションの変化に気をつけましょう。意味が分からない人はrsyncを使ったほうが無難です。移植用データが〇〇.tarとなっている場合、圧縮はされていませんが1つのファイルに固められています。転送面で有利なため、複写を依頼した相手がこのような加工をしてくることは十分に考えられます。このような場合は、tarコマンドで展開する必要があります。[展開先のディレクトリのフルパス]などとします。詳しくはググりましょう。移植用データが〇〇.zipとか〇〇.gzipとか〇〇.tar.gzとかであった場合、固められた上に圧縮されています。転送面で有利なため、大いにありえます。このような場合、それぞれの拡張子をググると解凍・展開方法が分かるので自力で調べましょう。[解凍展開先のフルパス]'とか。移植後、bitcoinコア(もしくはbitcoind)を再始動します。さあ、緊張の瞬間です。datadir=[移植先/bitcoinのフルパス]'ですインストールしている環境で違いますので読み替えて下さい。/home/umbrel/umbrel/script/start'ですかね。bitcoind'でフルパスが判明すると思います。うまく行けば移植したブロックチェーンの検証がものの数分で終わり。IBDの進捗状況を表す数値が90%台になっていることでしょう。白目をむきながらギボチイイと叫びましょう。(参考)reindexについてumbrelが無事に起動し、ブロックチェーンも100%とか9x%とかになっていても注意が必要です。recover.とエラーを吐いてるじゃーないですか。実は複写用ストレージに移す過程で、複写元のbitcoindを停止させていなかったことが原因によるデータの不整合が原因なのですが、この場合のリカバリーで試行錯誤しましたので記録に残しておきたいと思います。結論からいいますと、移植用データの作成からやり直せ、それが一番早いし確実です。以下はreindexのやり方ですが、やってもうまく行ったり行かなかったりだったので、人に勧められる作業ではありません。私の失敗をどうか繰り返さないでください。してもreindexしたい方は、umbrelの場合だけ説明します。bitcoindはdockerコンテナの一つとして稼働していますので、reindexするにはひと工夫必要になります。-reindexのやり方1bitcoind含め各種コンテナを停止します。/home/umbrel/umbrel/script/stop2bitcoindの設定ファイルbitcoind.confを編集します。update.などと記述してあり「編集すんなよ!知らねーぞ!」という気持ちがビシビシ伝わってきます。ここは気持ちだけ受け取って先に進みます。3設定ファイルの適当な場所、今回は末尾に、reindex=1と追記し上書きします。事が済んだら必ずこの一文を削除しなくてはいけませんので、追記したことを忘れずにいて下さい。削除を忘れると再起動の度にreindex作業が始まってしまいます。4準備OKですので、コンテナ群を再起動します。/home/umbrel/umbrel/script/start3~5分くらい待ちますと、コンテナが全て起動完了しますので、先ほどのbitcoidのログ「debug.log」を確認しましょう。reindex作業が始まっていれば成功です。(ログを取り忘れました)2021年10月現在、ラズパイ4+SSDでこの作業を行うと24時間以上はかかるかと思います。先ほども触れましたがreindex作業が完了したら、忘れずに設定ファイルからreindex=1の部分を削除上書きしてください。繰り返しになりますが、reindexを行ったとしても正常に稼働できたりできなかったりを私は体験しています。大人しく移植用データの作成からやり直しましょう。コンテナ版のreindexのやり方が分からずDiamondHandsのテレグラムグループに相談したところやさしく教えてもらえました。この場を借りてお礼申し上げます。次回はtor経由でラズパイにssh接続し、外出中でもサーバ管理する方法について書きたいと思います。不正行為を報告たがえるのブログQooQ。