多签名下如何进行 SECP256K1 公钥乘法?

2022-06-23 18:03:47 +08:00
 wangshouh

最近在研究多签名,参考了这篇文章

在实现 2-of-2 MuSig 时,我完成了公钥的加法运算,但对于公钥的乘法运算我始终无法得到如下结果:

P₁' = P₁ * c₁
P₁'  = 0x73e7ab3bcbd3194f01f9a60468cafc557d29043c3d230c98c57107e366ebd0ed * 0xecce388649143900eb4f2b107fcbde7d240336b7f4ad5c37c987701c0eb9159b
P₁'  = 0x031601087da98f7b3afe201984821727f55cc3176278dbcbb1eabbbeb5695da454

我尝试了对 P1c1 进行直接相乘然后对 SECP256K1 的阶数p进行取余计算,使用的 JS 代码如下:

import { utils } from "@noble/secp256k1"

let p1Dot = utils.mod(BigInt("0xed714a5d314dc046d39e07966425d7615c18e4dc787eccd963109308f9b34e5e") * BigInt("0x2b9449f654043b1920e5e17d89bf20d9e6e3e449b2f49122621b18d7756a495d"));
console.log(p1Dot.toString(16));

utils.mod 是使用noble/secp256k1库中给出的求余函数

得到的结果如下:

5ef944a9320dfbae43c1eb50694bb64ada1698da111471fce4612ba24ee363dd

显然与文章给出的结果不符,我想知道如何进行这种公钥乘法?代码如何实现?

736 次点击
所在节点    问与答
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/861728

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX