仮想通貨

bitcoin-SignatureHash

考察(その7)です。特に高額の場合は「一度もトランザクションに使用していない新規アドレスに保管」です。これがコツです。

Schnorr署名の集約にうまくいったので、考察(その7)を忘れておりました。本日、まとめます。そこでまず、対策法(結論)はタイトルに書きました。一度もトランザクションに使用していない新規アドレスに保管する。これが大事です。理由は簡単で、一...
AI-NFT

ウォレット内部にあるECDSA鍵をSchnorr署名集約クラスのXOnlyPubKeysにpushしていくだけで検証できるようになりました。本実装ではY座標偶数の制約はありませんので、ECDSAの代わりにSchnorr署名を使うことができます。

この方向性で、75個のECDSA鍵を集約して実稼働できる見通しが立ちました。Y座標偶数の制約がないため、ウォレット内部から自由に選んでpushして集約することができます。便利です。
AI-NFT

効率的なマルチシグ: 鍵の集約、便利です。お試しの100個の鍵によるECDSA-Schnorr署名マルチシグであっても瞬時に生成です。そこで、マルチシグの集約をサポートするためOP_CHECKSIGADDは不要で、この集約で常に署名するOP_CHECKSIGAGGを新規で投入します。

100個の鍵によるマルチシグ。非線形性のECDSAでは100個の公開鍵と署名が必要になるため、そのサイズは約10KBになります。サイズが大きくなるのに加え、OP_CHECKSIG同等の処理が100回必要となるため、検証側の負担が大きくなりま...
AI-NFT

最終考察(その7)の前に……「Schnorr署名」が完成しました。BIP340にある公開鍵Y座標に対する制約解除(ウォレット内部の鍵を制限なくそのまま利用可能)、nonceは乱数、Verifyは完全一致(X座標だけではなくY座標も一致)、集約により100個のマルチシグであっても公開鍵32バイト固定、署名64バイト固定になります。

OpenSSLとlibsecp256k1で検証を重ねていた「Schnorr署名」が完成しました。テストも、計算上も問題ありません。これで自信を持って実装できます。魅力的なのは、集約により100個のマルチシグであっても公開鍵32バイト固定、署...
bitcoin-SignatureHash

本日の考察(その6)は、CTxInとCTxOutです。

CTransactionにあったvinとvoutの中身をみていきましょう。これがCTxInとCTxOutです。それでは、Serializeの実装について見ていきましょう。しかし、Serializeが見当たらないようです。実は、ビットコインの...
bitcoin-SignatureHash

本日の考察(その5)は、UnserializeTransactionとSerializeTransactionを観察です。

本日は、その3で考察したCTransactionSignatureSerializerとCTransactionが関連する、CTransactionのシリアライズ(UnserializeTransactionとSerializeTransa...
bitcoin-SignatureHash

本日の考察(その4)は、一般的なコインの使い方です。

本日は、コインの使い方について考えてみます。一般的に、以下のような使い方で合っているでしょうか?コインを受け取りたいアドレスを相手に渡すか、登録する。そのアドレス経由でコインを受け取る。受け取ったコインを別のアドレスに送る。このように、コイ...
bitcoin-SignatureHash

考察(その3)です。CTransactionSignatureSerializerの構造をみていきます。

本日は、このCTransactionSignatureSerializerの構造を解読していきましょう。ビットコインを解読する際は、Serializeというメソッドが重要です。ここから解読していくのです。template<typename ...
bitcoin-SignatureHash

本日も深い考察(その2)です。コールドウォレットとハッカーの関係 そこで、取引用の紙片の出入りを要約(ハッシュ)する仕組みに着目です。

暗号通貨系コインでは、取引用の紙片の出入りを要約(ハッシュ)する処理を以下のクラス(class CTransactionSignatureSerializer)になります。※ 厳密には古い方という解釈になります。※ ビットコインでは、従来か...
bitcoin-SignatureHash

コールドウォレットに手を出すようなハッカーに対抗にするには、コインの送付過程について、論理的に詳しくみていく必要があります。

コールドウォレットに手を出すようなハッカーに対抗にするには、コインの送付過程について、論理的に詳しくみていく必要があります。そこでわかりやすい例を用いて工夫してみます。1, アドレスアドレスとは「ここにコインを送ってください」と、相手に渡す...
bitcoin-SignatureHash

ここで、コイン流出を深く考察(その1)です。コールドウォレットはネットワークに接続されていないから絶対に安心という概念はなく、コールドでもネットワークに接続されています。

コールドウォレットは物理的にウォレットをネットワークから外しているため、どうやってもアクセスする方法はなく絶対に安心という概念がありますが、それは違います。ブロックチェーンの仕組み上、コールドウォレットでもネットワークに接続されています。表...
AI-NFT

negの一部はOpenSSLで確実を取りました。そこは引くだけなので、使い方が違うのかな。

schnorr署名の導入のうち、eに対するnegの過程で、libsecp256k1のnegが上手く作用しないため、暫定的な処置としてその部分だけOpenSSLで代用する内容となりました。計算の内容はシンプルで、単に値を入れてnegしてから加...
AI-NFT

決まった数(定数)に対するnegなので、直接、バイナリで操作することで引くことにしました。

昨日の続きです。libsecp256k1のnegが期待通りに作用しないため、BIGNUMに変換後、OpenSSLの関数で引いて、その結果をbe32でlibsecp256k1のスカラーに戻す手法があります。ただ、これはちょっと厳しいため、直接...
AI-NFT

あと少し。公開鍵の偶奇を問わずSignとVerifyの動作確認が取れたOpenSSLによるschnorr署名を、libsecp256k1で動かせれば完了です。ただ、一部のnegで苦戦中です。

今日もタイトル通りです。OpenSSLで動作の確認が取れたのですが、これをlibsecp256k1で動かせるかどうか、です。ただ一か所、negが思った通りに動かず、引くことができない状況です。OpenSSLでは正常動作しているため、書いた実...
AI-NFT

検証中のschnorr署名で、Rの計算手法を少し変え、X座標とY座標の両方一致(つまり点の一致)で有効とする方法の確認が取れました。

検証中のschnorr署名で、Rの計算手法を少し変え、X座標とY座標の両方一致(つまり点の一致)で有効とする方法の確認が取れました。X座標の一致でも十分な気はしますが、Y座標まで検証可能なら、これで楕円曲線の点を完全に捉えてた形で、署名の有...