なるほどです。ありがとうございます。仕組み的私でもそれほど困難はなく配信は可能ってことですね・・・。
ありがとうございます。景気が良いようで何よりです。
ありがとうございます。複雑な挙動ですよね。よくそんなプログラムが組めるな・・・って驚嘆しかないです。
大体できたかな…。
- [x] 素数 p を法とする多倍超整数の四則演算
- [x] 乗法逆元の高速演算 ☆
- [x] 多倍長整数の累乗の高速演算 ☆
- [x] 平方剰余を高速計算する方法実装 (secp256k1限定)☆
- [x] 楕円曲線secp256k1 上の加法群演算の実装
- [x] secp256k1 のスカラー倍を高速に計算する方法 O(log(n)) ☆
- [x] キーペア生成実装
- [x] Nostr のNoteシリアライゼーション
- [x] Pubkeyの圧縮形式から楕円曲線上の座標を復元する
- [x] Noteに対するSchnorr 署名 (BIP0340)
- [x] Schnorr署名の検証
- [ongoing] メモ書き
- [ △] 計算式メモ
- [ ] なんかGithubだと数式のレンダリングがへん
- [ △] Pictorial representation (diagram.net)
- [ ] もうちょっと粒度落とさないと何が書いてあるかわからん
出来高
https://github.com/jundow/nostrexamples/tree/main/ex5_schnorr_sign
I said I was amazed Bitcoin has been quite functional because following the rule pays and cheating costs too much by combining arithmetic, computing and, importantly, the restriction of our real world, surprisingly well. I am getting myself a big fan of this realm as I learned things about it.
ありがとうございます。楕円曲線上の点をスカラー倍しているところ、実際の計算はそうなっていると思います。上の図で掛け算のが陽に見えているところは楕円曲線上の演算ではなくて多倍長整数演算なので、そっちも大丈夫かな・・・と。でもややこしくて間違えそうです・・・あとで見直してみます。
ありがとうございます。わかりすいです。ニュートン法みたいな微分を使った開平ができないから、計算量の点でこの方法が使えるの結構ポイントですよね…。累乗は指数の log (n) オーダーの乗算回数で計算できるし…。
分かってないこと
- pを法とする整数xにて。pを4で割ったときのあまりが3の場合、x平方根がx^((p+1)/4)として計算できる理由がわからない。
- 有限体上の楕円曲線が加算に対して閉じているのは自明のように思えるけど、証明の仕方はよくわからない。
- 多倍長整数の効率的な計算方法。多分ALUで実装されている計算方法の多倍長バージョンだと思うけど調べてない。
- golang で math/rand と crypto/rand 何が違っているのかよくわからない。crypto/rand を nonce にそのまま使っていいようなきもするがダメなのかOKなのかもわからない。
- BIP0340 で nonce を計算するときになんであんなに複雑な手順なのかよくわからない。単に乱数だけだとなぜダメなのかわからない。乱数が多少まずくてもあの方法だとよりランダムネスが増すのだと思うけど、やっぱりよくわからない。
- sha256 の計算方法は全く理解していない。
ギットハブへのリンクがおかしい?
ようやくノートにSchnorr署名してポストするところまでできた。あとは検証する部分を作ればひと段落かな…。成仏までもう少し…。
- [x] 素数 p を法とする多倍超整数の四則演算
- [x] 乗法逆元の高速演算 ☆
- [x] 多倍長整数の累乗の高速演算 ☆
- [x] 平方剰余を高速計算する方法実装 (secp256k1限定)☆
- [x] 楕円曲線secp256k1 上の加法群演算の実装
- [x] secp256k1 のスカラー倍を高速に計算する方法 O(log(n)) ☆
- [x] キーペア生成実装
- [x] Nostr のNoteシリアライゼーション
- [x] Pubkeyの圧縮形式から楕円曲線上の座標を復元する
- [x] Noteに対するSchnorr 署名 (BIP0340)
- [ ] Schnorr署名の検証
出来高はここ。
github.com/jundow/nostrexamples/tree/main/eccalc

