こんにちは! Androidエンジニアの ゆいき @yuikimil です
今回はBCH(Bitcoin Cash)の直近の開発済、開発中、議論中のプロポーザルをさくっと2~3行程度でまとめてみました!
次回の11月のハードフォークにも取り入れられるかも...?という項目群です
開発完了
Grapheneはつい先日、開発が完了し、アクティベーション待ちの状態です
Graphene got merged in @BitcoinUnlimit https://t.co/zf4XrBV8TE
— sickpig (@sickpig) July 25, 2018
Thanks to all the work done by George Bissias from @UMassAmherst and all the review done by BU devs.
Graphene
ブロックを従来より効率よく伝播する技術
ブロック作成時にブロードキャストしなければならないトランザクションの集合をIBLT(Invertible Bloom Lookup Tables)を利用して最適化します
IBLTについてはこの記事が詳しいです
O(1) block propagation · GitHub
開発中
以下は開発中の項目で、次のハードフォークで取り入れられる可能性が高いものです
- Canonical Transaction Ordering
- Revised DAA (w/ PID control)
- OP_DATASIGVERIFY
- Double spend proof creation and forwarding
- UTXO commitments
各項目について簡単に説明します
Revised DAA (w/ PID control)
DAAに室温調整など工学で使われるPID制御アルゴリズムを採用することで、ブロックの生成間隔を理想の間隔に最適化します
Canonical Transaction Ordering
ブロックにおけるトランザクションのソートアルゴリズムです
これがあることで上述したIBLTを利用した際に、ブロック内のトランザクションの順序に関する情報をピアに教える必要がなくなります
OP_DATASIGVERIFY
既存の OP_CHECKSIG
ではトランザクションの署名しか検証できませんが、OP_DATASIGVERIFY
を用いるとスタック上の任意のデータの署名を検証することができます
これを用いるとオラクルなどの任意のデータの真正性を検証できます(正当性は検証できません)
UTXO commitments
ある時点(ブロック)で存在するUTXOの集合に対して一意に決まる32バイトのハッシュを作成します
EthereumにおけるState treeのルートハッシュのようなものと言えばいいでしょうか
こうすることで、BCHでもフルノードにおいて全データを保持しないfast syncモードが可能になります
Ethereumのフルノード geth
にある --fast
オプションのようなものを実現しようとしています
議論中
以下は議論中の項目です
- Representative Tokens
- Double Spend Notifications
- Bobtail
- One Way Aggregate Signatures
- Switch standard denomination to 'bits'
- Avalanche
- Chain ID
こちらも各項目について簡単に説明します
Representative Tokens
新しいOP_CODE OP_GROUP
を追加することで、BCH上でカラードコイン(トークン)を作成できるようにしようという提案です
賛成派もいれば反対派も居て、相容れない状態になっているようです…
ちなみに OP_GROUP
についてはこの記事が詳しいです
techmedia-think.hatenablog.com
Double Spend Notifications
Double spendが試行されていることを検知すると、他のノードにすぐに知らせるようにします
このようにすることで、0-confの信頼性を向上させます
Bobtail
double spendやselfish miningを阻止するために、ブロック生成間隔のばらつきを小さくします
具体的には、ある標本(ブロック間の時間群)の順序統計量の頭からk個の平均値を現在のターゲットと比較することによってターゲットを調整します
One Way Aggregate Signatures (OWAS)
トランザクションの匿名性を上げるための新しい署名方式です
しかし、OWASは遅いという欠点があり、Mimblewimbleではその問題を解決しています
Switch standard denomination to 'bits'
1/1,000,000 BCHを1 bits
と表記しようという提案です
cash
にしようという話もあって、redditでは結構議論になっていたりします…
Avalanche
Avalancheはゴシッププロトコルから影響を受けた準安定(Metastable)な仕組みを用いて成り立つ新しいBFTなコンセンサスプロトコルの提案です
DAGを用いて投票を行い、4秒の確認時間で1300tpsという高スループットを可能にします
Chain ID
DDA(Due Diligence Agent)が本人確認をして、ブロックチェーンにユーザ情報を書き込み、その情報を用いて送金を行います
送金の都度に送金先の承認が必要となり、誤ったアドレスに送ってしまうのを防ぎます(ウォレット側の実装が必要)
まとめ
今回は2~3行でまとめた程度なので、より知りたい人はWP読むなどしてみてください!
僕はAvalancheについてリサーチしてみようかなと思っています📝
宣伝
今度、Mobile Dev.向けにビットコインのハッカソンやります!
↓来てください!!↓ connpass.com
参考文献
- https://cash.coin.dance/development
- https://news.bitcoin.com/graphene-block-propagation-technology-claims-to-be-10x-more-efficient/
- https://gist.github.com/gavinandresen/e20c3b5a1d4b97f79ac2
- https://github.com/BitcoinUnlimited/BitcoinUnlimited/pull/973
- https://github.com/Bitcoin-ABC/bitcoin-abc/issues/125
- https://bitco.in/forum/threads/buip088-double-spend-proof-creation-and-forwarding.10485/
- https://lists.linuxfoundation.org/pipermail/bitcoin-ml/2018-March/000688.html
- https://chrispacia.wordpress.com/2017/09/01/the-bitcoin-cash-roadmap/
- https://en.wikipedia.org/wiki/Gossip_protocol
- https://ipfs.io/ipfs/QmUy4jh5mGNZvLkjies1RWM4YuvJh5o2FYopNPVYwrRVGV
- https://www.yours.org/content/bitcoin-cash-improvement-proposal--chain-id--a-simple--yet-powerful-wa-6624dad9af58