9f
9fe72c76
9fe72c76ced19360f2e62d89b8b54f80fdea877a1f334b58b1e4bdf1e3a5f902

成仏しよう…

彡△ミ

ノノ゚A゚)

( ∪∪

_  ) ノ

|秘| ( (

|密| )ノ

|鍵|

|の|

|墓|

| ̄ ̄|

`| ̄ii ̄|

|二(二)二|

大体できたかな…。

- [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.

ありがとうございます。楕円曲線上の点をスカラー倍しているところ、実際の計算はそうなっていると思います。上の図で掛け算のが陽に見えているところは楕円曲線上の演算ではなくて多倍長整数演算なので、そっちも大丈夫かな・・・と。でもややこしくて間違えそうです・・・あとで見直してみます。

BIP0340 の ECDSA 理解が進んだ。あってるかな。

みんな勉強しててえらい。

ありがとうございます。わかりすいです。ニュートン法みたいな微分を使った開平ができないから、計算量の点でこの方法が使えるの結構ポイントですよね…。累乗は指数の 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

みなさんありがとうございました。