2022年4月28日 5 min read

OP_CTVとソフトフォーク導入方法

先週は寄稿をお休みさせていただいたので前回から間隔が空いてしまいましたが、その間にビットコインの世界は一大論争が巻き起こっています。本稿でも何度か登場している独創的なビットコイン開発者、Jeremy Rubin氏が自身の提案するOP_CTVという機能のソフトフォークによる導入をSpeedy Trial方式で目指すと発表したのです。

ところが同じくSpeedy Trial方式で導入されたTaprootと異なり、まだユーザーやビットコイン開発者の中でOP_CTVに対して広く支持が得られていないこと、Speedy Trial自体がソフトフォークの導入方法として好ましくないことが意見の対立につながっています。

今日はOP_CTVの概要と論争となっているポイントを整理し、個人的な意見も交えながら現在の論争がビットコインの将来にどのような影響を与えうるかを考察します。

TAPROOT導入時のおさらい

Taprootの導入にあたって、2017年にユーザーの大半が支持したSegwitの導入にマイナーが抵抗したことを踏まえ、導入に際してマイナーに依存しないソフトフォークのアクティベーション方法が長期間にわたって検討されていました。

しかし、Taprootの導入自体にはマイナーを含めほとんど反対意見がなかったこと、導入方法の議論に決着が見えずいたずらに時間が経過していたことから、最終的には早期の決着が期待できるSpeedy Trial方式が採用されました。Speedy Trial方式とは特定期日までに数回マイナーによるシグナリングの期間を設け、いずれかの期間でハッシュレートの90%が準備完了をシグナリングするとロックインし数カ月後アクティベーションする、という方式です。もしマイナーの協力が得られないなどして期日までにロックインできなければ失敗となり、導入方法の議論を継続するという計画でしたが、結果的には無事アクティベーションしました。

つまりTaprootにおいてSpeedy Trialの採用はよりよいソフトフォーク導入方法の選定を放棄しアクティベーションを急いだ結果だったといえるでしょう。なぜなら、Speedy Trialは大半のマイナーがネットワークのアップグレードに協力的であるという、2017年に反証された前提に依存するからです。

Segwitにはトランザクション展性というtxidが後から変えられるバグを修正する内容が含まれており、LNの実現に必要なものです。しかし、当時Bitmainが製造するASICにこれを利用してマイニングの効率を改善する機能が搭載されていたため、Bitmainや多くのマイナーが機材の優位性を損なうSegwitの導入に消極的でした。これに反発し、UASF (User Activated Soft Fork)といってユーザーがマイナーの協力なしでもソフトフォークを導入する宣言をし、最終的にマイナーが折れたという経緯があります。

OP_CTVの内容

さて、OP_CTVの内容ですが、過去にも何度か本稿で触れているように、ビットコインUTXOの使用条件を記述する言語Bitcoin Scriptに、使用時の支払先や金額などを限定できるオペコード(関数)OP_CTVを追加するものです。

このオペコードを使うことで、あるUTXOからの支払先や金額等をあらかじめ指定でき(Covenantsといいます)、Bitcoin Scriptで表現できるコントラクトの幅がかなり広がります。簡単なものでは、コールドウォレットに保管するUTXOからの送金先アドレスを自身の所有する別のアドレスに限定することで盗難リスクを削減できるVaultsなどが挙げられます。

Covenantsを実現するオペコードの提案は多数存在していますが、OP_CTVはその中でも有力なものの1つです。

アクティベーション方法に対する批判

Speedy Trialによるアクティベーションはマイナーに主導権を委ねるため、ソフトフォークに反対するユーザーのノードが取れる行動というのは規定されていません。古いノードは新しく追加されたルールが理解できないため、ソフトフォーク後も対応しなければノードの検証機能が低下してしまいます。
したがって一般のノードユーザーがソフトフォークの導入に消極的なのは当然でしょう。マイナーの結託で導入されうるなら脅威ですらあります。

この脅威を感じた一部のユーザーから、ソフトフォークを支持するノードに対してトランザクション伝播を拒否するというURSF (User-rejected soft fork)というコンセプトまで出てきています。これはネットワークの分裂も辞さない混乱リスクの高い運動である点を含め、2017年のUASFに対応するものです。(マイナーとユーザーの意見が逆ですが)

私の意見

Speedy Trialがマイナーとユーザーで意見が合致している場合にしか使えず、ほとんどすべてのユーザーが合意している場合にしか適さないという意見には同意します。

Great! You’ve successfully signed up.
Welcome back! You've successfully signed in.
You've successfully subscribed to ビットコイン研究所.
Your link has expired.
Success! Check your email for magic link to sign-in.
Success! Your billing info has been updated.
Your billing was not updated.