Bitcoinに任意データを書き込むOrdinals
Bitcoin上に任意データを書き込む方法にはOP_RETURNを使う方法がありますが、これは80バイトの制限があります。この制限を突破しブロックサイズまでデータを書き込む方法が提案されました。 その方法は、インプットであるWitness領域を使います。Taprootが導入される前もこのWitnessを使うことで任意のデータを埋め込むことはできましたが、10,000バイトの制限がありました。しかし、Taprootの導入でこの制限が適用されないことになり、実質ブロックサイズの4MBまで任意データを書き込むことが可能になりました。 Ordinalsの場合、以下のルールに沿ってデータを書き込み、読み取ることになります。 Bitcoinのブロックチェーン上に任意データが書き込まれ

ECDSAのアダプター署名とDLCへの応用
先日の読書会にて様々なScriptless Scriptの手法についての解説があり、中でも「Payment points without 2p-ECDSA or Schnorr」と呼ばれる手法とそのDLCへの活用事例が面白かったので、それについて復習も兼ねて紹介したいと思います。 ペイメントポイントについては以前の記事で解説しましたが、ライトニングネットワークのマルチホップペイメントではHTLCと呼ばれるコントラクトを使うことで複数ノードを中継してコインを送金しています。しかし、このHTLCでは中継ノード全員に同じシークレットが行き渡ってしまい、それにより送金経路が明らかになったり、中継ノードが結託することで攻撃ができてしまう欠点がありました。ペイメントポイントを使うことで、中継ノードそれぞれに個別のシークレット情報を渡すことが可能となり、プライバシー向上や攻撃への対処ができることを解説しました。このペイメントポイントはアダプター署名を使用していますが、シュノア署名の導入が必要であったり、既存のECDSAを使う場合でも2者間で暗号化した署名を交換しあう必要があり(これを2party ECDSA、2p-ECDSAと呼ぶ)、複雑になるという難点があります。 そこで登場したのが、2p-ECDSAやシュノア署名を使わずにアダプター署名(Scriptless Script)を実現する方法「Payment points without 2p-ECDSA or Schnorr」です。この手法はOP_CHECKMULTISIGを使うので、完全なScriptless Scriptではありませんが、既存のビットコインブロックチェーン上で実現ができます。そしてこの手法をDLCへ応用することで、従来のDLCで想定されていたトランザクションをシンプルにすることができます。以前の記事でDLCの実装ソフトNDLCについて紹介した時、なぜアダプター署名を使う必要があるのか疑問でしたが、その答えがまさにこれでした。 Payment points without 2p-ECDSA or Schnorr アリスはボブが公開情報Tに対するシークレットtを公開すれば、1BTCを送金するという例をとって解説します。やりとりの流れは以下の通りです。
