プロトコルをテストするとき、かなり悪い癖があるんです。真実だと見えた瞬間、脳が自動的に「完了」とスタンプしてしまう……そしてその反射が、以前はState Machine全体を誤読させてしまいました。

その日、ack_complete=trueを見ていたのに、vault_active=falseはほぼ見落としかけていました。

やめてよかった。

Pre-PegInの通過12 Signet Block Confirmationsは、Confirmation CountがACK Collection開始のトリガ条件に達したことを意味するだけで、Vault Activationが起きたことを意味するわけではありません。

1つの状態ラベルが変われば、それに応じて制御権も変わります。

Signing Participantsが、約24時間のACK Window内にCollaborative Setupを完了するとack_complete=trueになります。しかしUser Authorizationは、約48時間のActivation Window内にSecret Revealを行っていない場合、存在しません。

24/48 = 50%。

つまり、ACK Windowが占める時間はActivation Windowの約半分の空間だけ……なのに、私は無意識にACK完了を最終状態だと思い込んでいました。

正直、ここで私は@BabylonLabs_io pretty徹底的に妥協のない設計だと感じます。

このプロトコルは、私たちがどれだけせっかちかには関心がありません。

関心があるのは、State Dependencyが正しいかどうかだけです。

Expiration前に十分なACKがなければ、Vaultは期限切れになり、Peg-in Fee Refundが有効な分岐になります。

十分なACKがすでに存在しているのにSecret Revealがまだであれば、ACKデータ喪失を疑ったりACKリトライを連打したりしても、ぐるぐる回るだけです。

私はログを3層で読み始めました。まずBlock Confirmation、次にCollaborative Setup、最後にUser Activationです。

手順のスキップはしない。

その代わりにプロトコルを解釈しない。

そしてそこからもう1つ、かなり痛いことにも気づきました。Testnet Parameters、たとえば12ブロック、約24h、約48hはMutable Parametersかもしれませんが、最も信頼できるのは実は、Pre-PegIn、ACK Completion、Active State、Final State間のState Transitionです。

あなたの見解では、良いBitcoin Vaultは「速い」と感じさせる体験を目指すべきでしょうか?それとも、このようにユーザーに各層の権限を順守させるべきでしょうか?

#baby $BABY @BabylonLabs_io