【BTC】Blockstream Greenを導入してみた(その3)【マルチシグ】

前回の続き物。以下過去記事。

 

okometsubulog.hatenablog.com

 

============

 

 

 

前回までのあらすじ

  • Greenアプリ使えば2-of-2が簡単に使えて、2FA認証で送金可能。2FAパスを忘れてもタイムロック機能で約1年後に復旧可能とシングルウォレット使ってる人にとって簡単でセキュリティアップ可能な素敵なサービス!
  • が、Blockstream社のサーバが応答無くなったら復旧超めんどい。コマンド一発でなおるっぽいけど環境整えるのがめんどいし、パソコン音痴の人は無理ゲー。
  • タイムロック機能はビットコイン本来の機能、2FAはBlockstream社の機能だよ
  • タイムロックの期限が切れてもGreenアプリでは2FAが一生有効のままだよ。2FA忘れたらコマンドラインツールで復旧してね。

 

ということで、前回、「タイムロック」の機能はビットコさんの機能だと分かりました。つまり、ネットワークを見れば、そのUTXOがタイムロックがついてるのか否かが分かるのだ!ほんとか!?

 

というのが今回の議題。本当に分かるんでしょうか?テストネットを使ってやってみましょう。

 

やること

  • テストネットを使って実際にタイムロック機能付きのUTXOを作ってみる
  • そのUTXOの有効期限が数日とかだったら、復元テストもしてみる。期限内なら送金できないが、期限後なら送金可能、みたいなやつやりたい。

 

ビットコインにはテストネットというものがあるらしく、テスト用ビットコイン(無料)が使い放題らしい!知らんけど!

 

ということで、早速試してみたいと思います!以下手順は全部AIからこぴってきたのを改良してい書きます。

 

=======================

Blockstream GreenでTestnetウォレットを作成し、TEST(という名前の通貨)を入手する手順

ステップ1:Blockstream GreenアプリでTestnetウォレットを作成する

  1. Blockstream Greenアプリを開く。

  2. 画面左下の歯車マークから「一般」> 「Testnetを有効化する」にチェック
  3. 新規ウォレットを作成」または「Create New Wallet」を選択します。

    • 既存のウォレットがある場合は、一度ログアウトするか、右上のメニューから「ウォレットを切り替える」のようなオプションを探し、「新規ウォレットを作成」を選択します。

  4. すると、以下のようにTestnetを選択する画面がでるのでそっちをクリック
  5. 出来たら「アカウントを作成する」で「2段階認証で保護中」を選択
  6. 設定で2段階認証から「Authenticatorアプリ」でとりあえず設定(この辺までは前回の記事でやった場所です)

これで、あなたのTestnet用ウォレットが作成された感じ。TESTとかなんか書いてある。

 

 

ステップ2:Testnet用ビットコインを入手する

Testnetのビットコインは、特別な「フォーセット(Faucet)」と呼ばれるウェブサイトから無料で入手できます。

  1. Testnetウォレットの受信アドレスをコピーする:

    • Blockstream Greenアプリのトランザクション一覧画面で、「受けとる」ボタンをクリック。

    • 表示されるQRコードの下にある受信アドレスをコピーします。

  2. Testnet Faucetのウェブサイトにアクセスする:

    • 以下のいずれかのTestnet Faucetサイトを開きます。

      • Mempool.space Testnet Faucet: ttps://mempool.space/testnet/faucet (おすすめらしいがリンク切れしてたので)

      • coinfaucet.eu:  ttps://coinfaucet.eu/en/btc-testnet/ (こちらもよく使われるらしい。今回はここで。)

      • Bitcoinfaucet.uo1.net: ttps://bitcoinfaucet.uo1.net/ (※今回未使用) 

  3. 受信アドレスを貼り付けてTESTをリクエストする:

    • Faucetサイトの入力欄に、先ほどコピーしたTestnetウォレットの受信アドレスを貼り付けます。

    • 「Send Testnet Bitcoins」や「Get Bitcoins」のようなボタンをクリックして、TESTをリクエストします。

    • CAPTCHA認証(人間であることを確認するテスト)が表示される場合があるので、指示に従ってクリアしてください。

    • なんか以下のように取れました。今回はcoinfaucet.euさんのサイトをお借りしました。
  4. TESTが着金するのを待つ:

    • Faucetから送られたTESTは、数分から数十分であなたのTestnet Greenウォレットに着金します。

    • アプリの履歴画面で着金を確認できるはずです。通常、最初に「unconfirmed」(未承認)と表示され、数ブロックの承認を経て「confirmed」(承認済み)に変わります。なんか残高増えてればOKでしょう。いえい!

これで、Testnet環境で実際にビットコイン保有し、送金やRedepositのテストを行う準備が整いました。

 

次のステップ(CSVタイムロックの確認)

TESTが着金したら、以下の手順でその入金トランザクションCSVタイムロックを確認できます。

  1. Testnet Greenウォレットの履歴から、今入金されたトランザクションをタップしてTXIDをコピーする。

  2. Mempool.space Testnet Explorer (ttps://mempool.space/testnet/ ) にアクセスし、コピーしたTXIDを検索する。なんかテストネット3は非推奨となり、みたいな画面が表示されるが、今回はテストネット3でTESTをもらったのでこのまま見ます。

  3. 「詳細」ボタンを押して、一番下まで行って「トランザクションの16進値」のボタンをクリックすると、16進数の文字列が沢山でてきます。それをコピーして、ChatGPTにその文字列をそのまま貼り付けます(※見せても良いなら。不安ならやめておいた方が良い)

     

  4. ChatGPTにこれはCSV形式か、タイムロックは何日で解除されるかを聞いてください。私の場合は約2.5日でタイムロック解除されるそうで、CSV対応しているとのこと。OP_CHECKSEQUENCEVERIFYは360だったので約2.5日なんだそうな。オンラインのでコードツールでは解析できないため、python-bitcoinlibのようなツールを使えばできるとか。正直そこまでやりたくなかったので、一旦Gemini(AI)でデコードしてくれたからOKとします。※ここもっといい方法あると思います。すいません。

=======================

 

一応最後がGemini(AI)で解析しないとタイムロック時間とか分からなかったのですが、Bitcoin Coreを入れれば見れるそうな。あの何百ギガとインストールに必要なアレです。流石に無理や・・・

 

代替案として、「garecovery.py」つまりBlockstream社のツールを使えば分かるそうです。ただ、本末転倒な所があって、Blockstream社が本当に正しくやってるかを確認したいのに、その会社のツール使って検証しちゃ意味ないよなぁ・・・ってなったので、ChatGPTさんにお願いしました。

 

ということで、期限が2.5日なら十分検証できます!さっそく前回記事で教えてもらった2FAを回避する方法をやってみましょう!

 

garecoveryツールを使う環境を整える

多分公式サイトのgithubのやつ。一応載せとく。

ttps://github.com/greenaddress/garecovery

 

なんとなくUbuntu環境で実装します。以前テストで使った環境なので。

 

■以下コマンドを実行

まず最初にgit で持ってくる必要があるらしい。READMEに書いてなかった・・・全部めんどいのでroot権限で打ってます。マネしないでsudo使った方が良いと思います。

 

・gitインストール

apt install git

・garecovery.gitを落としてくる

git clone https://github.com/greenaddress/garecovery.git

 

・以下インストール

apt-get update -qq
⇒以前Sparrow Wallet入れた時の残骸。おま環ですが一応メモ。Sparrow Wallet今は使わないので削除

vi /etc/apt/sources.list.d/sparrow.list
コメントアウトしとく
#deb [signed-by=/

■改めてインストール
apt-get update -qq

apt-get install python3-pip python3-dev build-essential python3-virtualenv -yqq
⇒なんか沢山入った。成功したら次へ。

■なんか良く分からないけど実行
全部面倒なのでroot権限でやってます。マネしないでください。

virtualenv -p python3 venv
source venv/bin/activate
pip install --require-hashes -r tools/requirements.txt
⇒以下エラー発生。
ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'tools/requirements.txt'

なんだこれ?AIに聞いてみると実行する場所が正しくないと。cdで移動する

cd garecovery
pip install --require-hashes -r tools/requirements.txt
⇒成功!
pip install .
⇒/root/garecovery で構築されちまった。いい子は一般ユーザーでやろうな!
 

 

いよいよリカバリーコマンドを打つ(失敗)

 
 

環境が整ったので、前回記事にしたリカバリーコマンドを打ってみようかと思います。なんかAIに教えてもらったやつを打つ。

 

garecovery-cli 2of2-csv \
    --mnemonic-file /tmp/mnemonic.txt \
    --network testnet \
    --output garecovery_results.csv

 

--mnemonic-fileにシードフレーズ半角スペース区切りで1行で書くはず。

--networkは今回testnet

--output はなんか結果がでるらしい。

 

で、送信先についてですが、なんかGreenウォレット内に作成できるらしいので指定しなくてよいとのこと(AI談なのでホントか不明)

 

が、打ったら以下エラーがでました。

WARNING:root:[Errno 2] No such file or directory: '/root/.bitcoin/.cookie'
Failed to connect to core daemon - getting connection variables

Please ensure bitcoind is installed and running and
that the rpc connection parameters are correct

 

要約すると、bitcoindインストールして起動してね!ってことらしい。

 

はぁ・・・いよいよ面倒くさい。リカバリー面倒くさすぎる。ヤバイこれ。

 

って調べたらbitcoindってこれ、「Bitcoin Core」じゃん!確か数百ギガデータ必要なやつ!詰んだ!!!

 

公式のREADMEにもBitcoin Core必要って書いてあるっぽいなぁ。自動翻訳内容を転記。

 

tps://github.com/greenaddress/garecovery/blob/master/README.md

必要なもの:

  • ローカルRPCアクセス用に構成されたBitcoin Coreフルノード。ノードウォレット 機能を無効にしてはいけません。コインは ノードから取得された所有アドレス。
  • 回復ツール
  • Blockstream Green/GreenAddressのニーモニック

 

まず「ローカルRPCアクセス用に構成されたBitcoin Coreフルノー」ってなんやねんって話なんですよね。フルノードって書いてあるから多分、700GBとか必要だったはず。今は900GBとかになってんのかなぁ~~~????

 

回復ツールはgarecoveryのことで、最後のニーモニックもHWWのシードフレーズだから多分この辺は大丈夫。

 

いやいやいやいや、さすがにもうこれ以上は進めません!ここで一旦検証終わり。無理無理!テスト環境なのでOSコミで20GBしか用意してないし!

 

このリカバリーが必要なのは、2FAを忘れた場合や、Blockstream社が崩壊してサーバの応答が無くなった後のリカバリーの時に必要なので、割とありえるケースなんですよ。

 

ということで、割と地獄だと言うことが分かりました。え?マジで地獄なんだけど、クッソ使いづらすぎないか?これ一般人に提供していいやつ超えてない?

 

でもしょうがないかなぁ。だってタイムロックってビットコインの機能じゃないですか。それを直接送るとかそういうのって、やっぱフルノードで持たないとできないとか、そういうのありそうよね。Blockstream社関係ない部分だから。

 

でも、うーん。これ普及しないだろうなぁ・・・。多分表立って言わない奴でしょ。営業の人がもしいるなら、絶対これ公開したくない奴だよ。復旧めちゃ大変だよこれ。

 

じゃ、まとめます。

 

まとめ

  • テストネット上で見る限りはUTXOはタイムロックが設定されてる(らしい)
  • 復旧方法が地獄。使い物にならない。
  • 相続対策で2-of-2いいなって思ったけど、タイムロック解除後かつ2FA分からない時の復旧方法がガチで地獄すぎて絶対に家族に渡せないし、手順作っても途中で仕様変更されたら手順作り直しの地獄がまた待ってる無理ゲー

 

ルノードが辛すぎるんだよなぁ・・・1TBのディスク買ってきてやるかぁ・・・?いやぁ・・・

 

相続対策でこれを使おうと思ったんだけど、やっぱそこまで考えたらBitcoin Core、インストールした方がいいんだろうなぁ・・・後普通に2FAとシードフレーズ管理ってかなり良い感じだし、1年後に開放されるのも最高に気軽でグッドだったんだけどなぁ・・・

 

いやいやいやいや!相続の人がBitcoin Coreをインストールするとか、復旧コマンドを打つって正気の沙汰じゃねぇぞ!やっぱ無し!ウッキウキでGreenアプリ入れて2-of-2イイゾ~ってテンション跳ね上がってた俺の気持ち返して!!!

 

ということで、個人的には導入しようかなと思っていましたが、最後の最後でちょっと無しかな・・・ってなりました。2FA忘れない運用にすればいいんだけどね。最悪ロック期限すぎちゃっても2FA覚えていて、かつ、Blockstreamサーバが生きていれば取り出せるからね。

 

ただ、2FA忘れがピンポイントでボトルネックになるのが辛み。2FA忘れても放置してれば取り出せるというのが強かったのだ。残念。