8章Pay-to-script-hash

本書でここまでに扱ってきたのは、単一鍵のトランザクション、つまりインプットごとに単一の秘密鍵のみを使うトランザクションでした。では、もう少しだけ複雑なものがほしいとしたらどうでしょう? 1億ドルのビットコインを持っている会社は、この資金に単一の秘密鍵だけで鍵をかけておくのは望まないでしょう。その単一の鍵が紛失したり盗まれたりすると、すべての資金が失われることになるからです。このような、たった1つの障害によるリスクを軽減するにはどのような方法がとれるでしょうか?

そのための解決策にマルチシグ、すなわち複数署名があります。これは最初からビットコインに組み込まれていましたが、最初は扱いにくく、使用されていませんでした。本章の後半で説明しますが、おそらくSatoshiはマルチシグのテストをしていなかったので、Off-by-oneエラー(「OP_CHECKMULTISIG Off-by-oneバグ」を参照)が存在しています。このバグを修正するにはハードフォークが必要になるため、バグはプロトコル内に残らざるをえませんでした。

[注記]

複数の秘密鍵から単一の集約公開鍵へ

単一の秘密鍵を複数の秘密鍵に「分割」して、秘密鍵を復元することなく、インタラクティブな方法で署名を集約することは可能ですが、一般的な方法ではありません。集約署名がより簡単に作成できるようになるシュノア署名が、今後はより一般的になるでしょう。

8.1 ベアマルチシグ

ベアマルチシグは、複数の署名が必要となるアウトプットを持つトランザクションを作成する最初の試みでした。考え方としては、単一障害点から、ハックに対してもう少し対応力のあるものに変更していくことです。ベアマルチシグを理解するには、まず ...

Get プログラミング・ビットコイン ―ゼロからビットコインをプログラムする方法 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.