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

前回の続き物だけど、今回はBlockstream Greenの仕様について確認するコーナーとなります。以下前回の記事です。

 

okometsubulog.hatenablog.com

 

======

 

 

 

じゃあ今日は何をやるかっていうと、前回疑問に思った部分を深堀します。

 

前回までのあらすじ / 今回やりたいこと

  • Blockstream Greenは2-of-2環境が構築でき、1つはHWW、1つは2FA認証で使えるよ
  • しかも、約1年後(360日前後らしい)の期限が切れたら2FA認証は解除されてシングルウォレットと同様のセキュリティになるよ。けど、元々シングルウォレット予定だった人はセキュリティ向上していい感じだよ!
  • が、360日経たないと動作検証できないよ!怖いのは、2FA認証解除後するのは良いけど、正しく自分の資産を取り出せるのか検証出来ない所だよ。
  • 2FA解除について、Blockstream社のサーバの応答が完全になくなった場合の動作確認もできないよ。サーバに依存せずに2FA解除されるの?

 

ということで、今回AIのチケットも復活したので調べて行きたいと思います。

 

そもそもBlockstream社のタイムロックの仕組み

AIに聞いて完全に理解した()ので、サクッとその内容を書きだします。

  • タイムロックの仕組み自体はビットコインの機能そのものを利用しています。⇒なのでBlockstream社のサーバが破壊されようがどうでもいいよ。
  • 2FA認証はBlockstream社独自でやってるので、Blockstream社のサーバから応答が無くなったら接続できなくなるよ⇒つまり、タイムロックの期限を待つ必要があるよ

 

なるほどなぁ。完全に理解した。この2-of-2の素晴らしい所は相続時の問題でも有効な点だろう。私が毎年期限を更新してたとして、氏んでしまった後は1年まって、HWWのシードフレーズとGreenアプリを使って取り出してもらう手順にしておけばいいのだ。

 

問題は、GreenアプリがBlockstream社が破壊しつくされた後にも存在できるかどうかだろうか。

 

というか、そもそも2-of-2になってるので、HWWのシードフレーズだけじゃ取り出せなくない?だって、HWWのxpub + Blockstreamで用意しているxpubの二つ合わせて2-of-2が実現してると思うけど、Blockstream社のサーバが破壊されて応答が無くなった後でも本当に1からHWWのシードフレーズだけで復元できるの?

 

何故サーバが破壊されても2-of-2が実現できるのか

AIに聞いてみました。以下が回答です。

======

Q.マルチシグってxpubが無いと復元できないけど、サーバの応答無い状態でGreenアプリをインストールしたら、xpub取得できなくなって詰みじゃない?

A.

Blockstream Greenアプリとgarecoveryツールの中には、Blockstream社がマルチシグウォレットの構築に使用する公開鍵(xpub)に関する情報が「内蔵」されています。

======

 

えーーー!!そうだったのか!なるほどなぁ!!!

 

マルチシグはxpubの組み合わせで実現するため、xpubが無いと実装できないというのを先週学びに学びました。じゃあサーバの応答なかったら終わりじゃね?って思ったら、Greenとか、復元ツールのgarecoveryとかいうアプリの中に内蔵されてたって話ね。なるほどなぁ~。

 

成程それなら確かにビットコさんの「タイムロック」機能と合わさり最強に見えますね・・・多分タイムロック解除されたら1-of-2みたいになるので、xpub 2個で環境がある中で1つの秘密鍵が通ればOK的な、そんな感じになるのでしょう。納得です。

 

となると、必然的に「タイムロック」機能は信頼できるものとなりそう。

 

ということは、Blockstream社が崩壊して、Greenアプリとgarecoveryのアプリが取れなくなったら終わり?

 

って聞いてみたところ、garecoveryはオープンソースでアリ、githubとかにソースがあるからそこから解読すればxpubを取り出せるというか、なんとかリカバリーする方法があるんだそうな。

 

こはちょっと怖い所ですが、一応Blockstream社のJadeというHWWは今日本で活発に売り出されていますし、崩壊したらある程度情報が出回るはずなのと、その時代になったらAIも凄い進化してるだろうから、復旧方法の手順をまとめてもらう、というのでもいいかもしれない。

 

ともあれ、xpubはなんか公開されてるのでGreenアプリとか最悪手に入らなくてもギリギリ何とかなるとのこと。相続時は終わりかもしれないがな・・・

 

と思ったら次の問題が浮上

 

サーバの応答が無かったらGreenアプリでは送金不可

なんと、このGreenアプリ、2FA認証サーバの応答が無くなったらそれで使い物にならなくなるそうだ。AI(GeminiとChatGPT)に聞いたらそう回答がきたので、復旧ツールを使わないとダメとのこと。マジかよ・・・

 

えーー!?ってことは、Greenアプリってひょっとして、UTXOのタイムロック期限が全部が全部有効期限切れたたとしても、2FA必ず求めてくるってこと!? 

⇒はいその通りです(AI談)

 

うえぇ・・・じゃあ、Greenアプリ上でUTXOの期限が切れたかどうかって分からないってこと? 

はいその通りです。ただし、ウォレット内の資金の約2/3以上(だったと記憶しています)がタイムロックの期限切れに近づくと、「Redeposit」を行うよう通知してくれます。(AI談)

 

AIが、「だったと記憶しています」って言っちゃってるー!(ガビーーーーーン!)

 

政治家か!くそっ!もっとちゃんと調べて!!!ってお願いしたらこう来た。

⇒現在の公式ドキュメントでは、「資金のタイムロックが期限に近づいた際」にRedepositを行うよう通知される、と一般的に説明されています。(AI談)

 

一般的に説明されてるのかぁ・・・どういうこっちゃ。(※↑原文ママ)

 

でもまぁ、公式ドキュメントに書いてあるなら信じてやろう。ただ、メールとかじゃなくて、アプリを起動したらバナーとかでお知らせがくるとかそういう感じらしい。そっかぁ。

 

実はこれ、非常に大きな問題を抱えていると思っている。

 

2FA強制が問題となる点について

  • 毎回2FAが求められるので、通知バナーに気づかず(英語だから)、タイムロック有効期限を超えてロック解除状態で放置される
  • Greenアプリの場合は毎回2FAを求められるが、ハッカーは別にGreenアプリ使わないで直接タイムロックの有効期限が切れたUTXOを狙って資産を取り出せる状態になる。つまり、HWWのシードフレーズがばれたら終わり状態は続く。

 

これかなり怖いよ。有効期限切れてるのに毎回2FA求めてくるらしい部分。普通にスルーしちゃいそうだよ。「2FA有効じゃーん、じゃ、大丈夫っしょ!」って普通思うじゃん!私は思ったよ!!!タイムロックが有効だから2FA聞いてるんだねーって!

 

違うんです。有効期限切れてても2FA聞いてくるんです。

 

仕組みは超初心者向けなんだけど、Blockstream社のサーバ全損の対応とか、タイムロック期限過ぎた後の気づけなさ具合部分かなり怖い。2FA忘れた場合も復旧ツール必須になるってことなので、初心者は不向きじゃなかろうか。1年後にノーパスで送金出来たらよかったのに。

 

あと、Greenアプリを起動しないと「期限ちかいよー」っていう警告バナーもでないっぽいのでそこも怖い所だ。そりゃそうなんだけどね。でも普段そんなにウォレット開かないよね。普通の人は。気づかなくなりそうで怖いんだ。ここも、Blockstream社サーバが応答無くなったら復旧ツール行きだ。

 

一応人力でスケジューラーに毎年「絶対更新しろYO!」って入れておけばなんとかなる部分ではあるし、HWWの管理も毎年やったほうがいいので、まぁ、入れるのはアリかもしれない。

 

じゃあサーバの応答が無くなったらどうやって復旧するの?

 

サーバの応答が無くなった後の復旧方法

以下AIの回答。私自身は一切試してないのでご了承ください。自分用メモ。

 

======

garecoveryツールを使用した復旧手順

 

この手順は、Blockstream Greenの公式サイトやGitHubで提供されているオープンソースgarecoveryツールを使用することを前提としています。

  1. 最新のgarecoveryツールを入手する:

    • Blockstream GreenのGitHubリポジトリgreenaddress/garecovery)から、最新バージョンのgarecoveryツールをダウンロードします。これは通常、Pythonスクリプトとして提供されます。

    • 重要: 信頼できるソースからのみツールを入手し、ダウンロードしたファイルのハッシュを検証するなどして、改ざんされていないことを確認してください。

  2. Python環境の準備:

    • garecoveryツールはPythonで書かれているため、Pythonがインストールされている環境(LinuxmacOSWindowsなど)が必要です。

    • 必要なPythonライブラリをインストールします(通常、pip install -r requirements.txtなどでインストールできます)。

  3. リカバリーフレーズの準備:

  4. garecoveryツールの実行:

    • ターミナルまたはコマンドプロンプトを開き、garecoveryツールが保存されているディレクトリに移動します。

    • 以下のコマンドを実行して、復旧プロセスを開始します。具体的なコマンドはツールのバージョンや設定によって異なる場合がありますが、基本的にはリカバリーフレーズを入力して実行します。するとGreenウォレットの避難先のウォレットが作成されてそこから送金できるようになる(らしい。未確認)

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

  • --mnemonic-file: あなたのリカバリーフレーズを指定します。単語毎に半角スペース区切りで入力してください。

  • --network: bitcoinまたはliquidなど、対象のネットワークを指定します。今回はbitcoinになります。テストの場合はtestnetになります。

  • --output:結果をここに記載する(らしい)

  • CSV Timelockの場合: CSVでは、タイムロック期間が過ぎればユーザーの鍵のみで署名が可能になるため、garecoveryツールがトランザクションを生成し、ユーザーの鍵で署名してブロードキャストします。

 

あー、思ったよりも簡単なコマンドでできそう。このツールの中にBlockstream社のxpubが内蔵してるから、リカバリーフレーズだけあればいいってことだろうな。

 

で、CSVかどうかなんだけど、2025年の今、Greenアプリで作ったウォレットは全部CSVだから気にしないで良いとのこと。過去にも違う方法でタイムロックしてた時代があったけど、2021年とかの話なので割愛。

 

上記について、テストネットでテスト用のBTCを使えば検証はできるそうだ。しかもタイムロック期限はなんか、5分とからしい。この辺は実際にやる時みる。今日は流石に時間無さすぎるのでやらない。後日。

 

じゃあ次に、タイムロックの仕様について確認しよう。

 

タイムロックの仕様について

ガチで私初心者なのでAIの言うこと鵜呑みにして書きます。違ってたらごめんんなさい。

 

最初、私はタイムロックの期限を延ばす方法として

 

自分のアドレスに少額送金したら自動で有効期限伸びて終わり!!!

 

って思ってたんですね。これ、全然違うらしい。

 

タイムロックが有効になるのは「各UTXO毎」になるとのこと。

 

は?なにそれ???

 

UTXOとは「未使用トランザクションアウトプット」である。は???

 

ようするにUTXOとは「ビットコインの塊」らしい。なんというか、UTXOというバケツに金塊が入ってるイメージすると良いかも。多分。

 

雑に説明すると、例えば私が2BTC持ってたとして、その2BTCが1つのUTXOに入っていたとする。

 

この状態で1BTCを自身に送金すると、

  • 2BTC入ってたUTXOが消滅!するらしい(消滅!)
  • 送金先で新たに1BTC受入用のUTXOが作成!(送金先UTXO)
  • 残り1BTCはお釣りとして、お釣り用のUTXOが作成!(お釣り用UTOX)

 

とまぁ、こんな感じ。今回の送金先は自分自身なので受信したUTXO + お釣り用 UTOXの2つに分裂した形に見える。

 

で、自身のウォレットの総額は2BTC(※送金手数料は減ってる)のままなんだけど、UTXOは新しい二つのグループに分かれるのだ。

 

そしてここが重要なんだけど、タイムロック機能はこの「UTXO」単位で設定されるらしい。へー。

 

例えば、送金テストで0.00001BTCとか送金するじゃないですか。で、送金元のUTXOってなんか手数料が安いやつを自動的に選別するらしいんですね。

 

例えば、0.5BTCのUTXOが4つあるとして総額2BTCだとします。

 

そこで0.00001BTCを自身の新しいアドレスに送金する際、どのUTXOか分かりませんが使われて、そのUTXOが二つに分かれます。

 

これで、

  • 0.5BTCのUTXOが3つ(※タイムロック古い)
  • 0.00001BTCが1つ(※タイムロック最新)
  • 0.5-0.00001BTCが1つ(※タイムロック最新)

 

という風になるのだ!!!要するに、タイムロックの期限違いがどんどん生まれるってわけ。送金増やせば増やすほど。

 

何が問題かって、これは詰まるところ、「一括全額送金」をしないとタイムロックが完全に更新されなくなるってことだYO!!!!!!!

 

これ、気づかないと一部のUTXOだけがタイムロック期限が切れてたら、ハッカーにシードフレーズが盗まれてたらそれを盗まれ放題になるってわけ。多分ね。AIからの情報だと。でも確かにそんな感じするね。Greenアプリの挙動とか聞いてると。

 

一応、Greenアプリは全部のUTXOを監視してくれるらしく(※ホントか?)、一番古い有効期限を見て警告を出してくれるそうな。でもUTXOを指定して送金できないので、結局全部一括送信しないとダメらしい。全部にしないと全部のUTXOが更新されないからね仕方ないね。

 

えぇ・・・怖いなぁ。全額送金とか怖すぎるんだよなぁ・・・

 

そんな中、AIからは

頑張れ」とか

テストネットでとりあえず練習して慣れろ」とか、

完全にスポ根時代の根性論叩きつけてきます。令和のこの時代に!???????

 

うーーーーーーーーん・・・悩むなぁ。シングルウォレット持つより遥かにセキュリティ高いし、シードフレーズ盗まれても2FA端末は別で管理してたらセーフだから安心感半端ないし、最悪、2FA認証を忘れても1年後に取り出せるというのは非常に良いんだけどなぁ・・・まぁ、1年後に争奪戦が始まると思うんだけどもね!ハッカーとの!

 

凄い初心者向け設計なのにすっごい玄人向けやなぁ!!!

 

うーーーーーーん。うーーーーーーん・・・使いたくなってきてるのに、こう、全額送金とか、サーバが消滅して応答なくなったらコマンド環境を実装しないと復元できないとか、2FA忘れた後の対応がどうにもめんどいねぇ・・・

 

Greenアプリで2FA忘れて期限がきたら2FA聞かなくしてくれたらいいのにって思ってたのですが、UTXO毎にタイムロックがあるなら、確かに期限が切れてても2FA聞いてくるのは納得だしなぁ・・・もやるぜぇ・・・

 

っていうか、全部のUTXOを監視してるんだからさぁ!!!全部のUTXOの期限が切れたら2FA解除してくんないとさぁ!!!ユーザがあたふたしてるうちにハッカーが速攻で盗んできちゃうじゃんかYO!!!

 

いや、マジでGreenアプリ使わないでハッカーはシードフレーズ一つあれば解除できちゃうんだから、ユーザが使うGreenアプリ側で2FAを有効にしたままにする意味ないじゃんって思うんだけどどうなんだろうね。設計の話だから仕方ないんだけど・・・

 

Greenアプリにもgarecoveryで復元できるんだから、入れといてくれてもいいのに。いやねぇ。

 

で、これ気づいたんだけど、毎年送金テストとかあるから、手数料取られるじゃん。いくらぐらいかAIに聞いてみた。

 

毎年の送金手数料目安

以下AI回答

🎯 概算費用(2025年7月時点の目安):

項目 内容 おおよその手数料
テスト送金 例:0.0001 BTC(約1,000〜2,000円分)を少額で 数十〜数百円(低手数料でも可)
本番全額送金 1アドレス→1アドレス(単純な送金) 数百〜数千円(高騰時は5,000円超えることも)

 

💰 例えば…

  • 通常時:1バイトあたり 5〜20 sat/vByte → 標準的なトランザクション(150〜200バイト)だと 50〜300円程度

  • 混雑時:100 sat/vByte 超 → 同じ条件でも 1,500円〜5,000円 に跳ね上がる

=====

 

うーん。数千円見とけばいいかなぁ。やってもいい、ギリギリの値段すぎてなんともいえねぇ・・・これは必要経費かねぇ。年々上がりそうで怖いけどw

 

ということで、まとめましょうか。

 

まとめ

  • タイムロックはビットコインの機能なのでBlockstream社がどうなっても機能するよ
  • 2FAはBlockstream社独自の設定で、Bloockstream社のサーバが全損等で応答が無くなった場合、Greenアプリは使い物にならなくなるよ
  • タイムロックが解除されてもGreenアプリは2FAを要求してくるよ
  • 但しタイムロック期限切れ近くになったらアプリ上で警告を出してくれる(らしい)よ
  • Blockstream社のサーバの応答が無かった場合はgarecoveryという公式サイトのツールで復旧可能そうだよ。要HWW側のシードフレーズ。Blockstream社側のxpubはgarecoveryに内蔵されてるからそこは安心らしいよ
  • garecoveryツールは実質1行コマンド打つだけっぽいので情報さえ押さえていればなんとかなりそう。※ただpython環境を整える方が難しそうだ
  • 逆にサーバの応答があるならGreenアプリで普通に使えるので、急いで新しいUTXOを作るべく、自分の無数にある受信用アドレスの新しいアドレスに対して全額送金をすればOK。最初少額で試してOKだったら同じアドレスに送金すればOK。※AIもそれでいいと回答あり
  • 余談だが、Blockstream社のサーバはHWWのxpubを把握しているため、自身のHWWを新しい物にしたり、Greenアプリ上に直接旧HWWで使っていたシードフレーズを入れた場合でもxpubが同じと判断して2FAの設定はそのまま継続できるとのこと。

 

ふ~。理解がはかどりました。最後の最後の余談について、HWWって寿命が来たら終わりじゃないですか。どうやって復旧するのかなぁって思ったら、同じシードフレーズ使うだけでOKとのこと。まぁそりゃそうか。

 

ということで、今回は特に検証無しで仕様について確認しました。ぶっちゃけ突然Blockstream社のサーバが応答しなくなるってことはそうそう無いと思うんだけどね。dサーバさえ生きていれば大きな問題はない。問題は、全額送金しなきゃならないことかなぁ・・・そこ怖いよなぁ・・・

 

さて、次回は多分、テストネット使って実際のUTXOを見て、本当にタイムロックが設定されているか確認できるか、テストネット上だとタイムロックの期限が短いらしいので、もし短かったら動作確認とかするかもしれません。超難しいのでAIが教えてくれなかったら没になります。

 

※以下次回に続きます。

okometsubulog.hatenablog.com