Speedy Trialの問題点(OP_CTVのアクティベーション方法を巡って)

Speedy Trialの問題点(OP_CTVのアクティベーション方法を巡って)

ビットコインのソフトフォークにはいくつかの種類があり、各々賛否両論あります。ソフトフォーク方法論だけでも一冊の本が書けるのでないかと思うほど、難しく感じられます。このソフトフォークについて活発に議論されだしたのは2016年ごろのブロックサイズを巡るあたりで、Segwitのソフトフォークは記憶に新しいのではないでしょうか。

BIP9とSegwit

ここでSegwitのソフトフォークについて簡単におさらいです。SegwitのソフトフォークはBIP9を使ってシグナリングが開始されました。BIP9は、一年以内に95%のシグナルによってアクティベーションが成功します。このシグナルは、マイナーが生成するブロックに特定のビットを埋め込むことで行います。もしシグナルが閾値に達しなかった場合、アクティベーションは失敗となり、別な方法を考えなければなりません。当時はブロックサイズをめぐって大きな論争が繰り広げられており、一部のマイナーやインフルエンサーのエゴもあり、「マイナーが投票パワーを持っている」という勘違いが生じ、なかなかシグナルが閾値に達しませんでした。

この状況を打開しようと提案されたのがBIP148で、いわゆるUASF(User Activate SoftFork)です。これはシグナルビットが入っていないブロックを無効とみなすビットコインクライアントで、これによりアクティベーションに非協力的なマイナーを拒否することができます(※チェーンの分裂を意味します)。実際には、BIP91というBIP148の前日までに75%のシグナルによってアクティベーションをする提案が受け入れられ、チェーンの分裂は回避され、なんとかソフトフォークすることができました。

BIP8による改善

Segwitソフトフォークによって、BIP9によるアクティベーションには問題があることが分かりました。その改善策として提案されたのがBIP8です。BIP8は、一年以内に90%のシグナルによってアクティベーションが成功しますが、たとえシグナルが閾値を越えなくてもアクティベーションされます。要はマイナーのシグナリングに関係なくアクティベーションされるので、もしマイナーがシグナリングしなければ、それはチェーンの分裂を意味します。その後、BIP8にはいくつかのパラメータが追加されました。その重要な値の1つにLockinonTimeoutがあります。これはLOTと略したりされますが、この値をTrueとすると閾値に関係なく、アクティベーションされます。この値をFalseにすると、閾値に達しなかった場合はアクティベーションが失敗するので、BIP9のような振る舞いになります。

Speedy TrialとTaproot

昨年末にアクティベーションされたTaprootソフトフォークは、当初はBIP8によるアクティベーションを想定していました。しかし、実際にはBIP8によるアクティベーションではなくSpeedy Trialと言われる新たなアクティベーション方法が提案され、このSTによってアクティベーションが成功しました。

Speedy Trialは名前の指すように短期間によるアクティベーション方法です。このSTは、三か月以内に90%のシグナルによってアクティベーションをするというものです。もし閾値に達しなかった場合、アクティベーションは失敗となり、別な方法でアクティベーションをすることとなります。これが提案された背景には、上記で紹介したようなマイナーによるシグナル拒否やチェーンの分裂の可能性、ユーザーもマイナーも一年という長期期間に渡るアクティベーションには疲弊してしまうという理由があります。なので、まずは短期間で全員のコンセンサスを伺ってみよう、というコンセプトから生まれました。結果的には、Speedy Trialによって90%のシグナルを獲得して見事Taprootソフトフォークは成功しました。

そしてOP_CTVによるSpeedy Trial

前置きがかなり長くなってしまいましたが、本記事のメインであるSpeedy Trialの問題点について書きたいと思います。事の発端は前回の記事でも紹介した異端ソフトフォークOP_CTVです。この新機能を追加しようとするソフトフォークはSpeedy Trialによってアクティベーションがされようとしています。

一見すると、Speedy Trialは短期間でサクッと支持率を調べることができるお手軽な方法のように見えます。しかし、Speedy Trialは「短期間かつ閾値に達しなかった場合は失敗する」という特徴から、マイナーにとって有利だと訴える人たちがいます(例1例2)。この理由を考える時に参考になるのは、先に紹介したBIP9とマイナーの投票パワーです。実際にはマイナーに投票パワーなどは存在せず、ビットコインエコシステムに参加しているユーザーにあります。アクティベーション期間が1年という長期間であれば、それだけマイナーには運用コストがかかります。しかしSpeedy TrialはBIP9の短期版と捉えることができ、短期間であるがゆえにマイナーは例えばユーザー全体がアクティベーションに賛成だとしても、あえてシグナルを発生させないことが可能で、それによる被害も受けることはありません。なぜなら、Speedy Trialは閾値に達しなかった場合は失敗するだけだからです。逆にBIP8のLOT=Trueのようなアクティベーション方法の場合、シグナルを発しないマイナーはネットワークから拒否されてしまうので、自分勝手な行動ができません。よって、Speedy Trialはマイナーに有利に働くからアクティベーション方法として採用すべきではない、ということが言えるのです。この見解も賛否両論あると思いますが、個人的には、Taprootではそれを採用するデメリットが全くない、という支持率があったからこそうまくいったのだと思います。今回のOP_CTVのようなソフトフォークでは使わない方がよいと思います。

Remaining : 196 characters / 0 images
2,000

Sign up / Continue after login

Related stories

Writer

ちょビットコイナー

Share

Popular stories

LNノードの運用益はどれぐらい?パート1

1481

LNノードの運用益はどれぐらい?パート3

898

猫でも分かるLightning Network解説!

743