Pedersen 承诺(commiment)
  • 只有一个值能产生(计算出)对应的承诺:
    这就是”绑定(binding)“
    • 一旦 u 被揭示,承诺 C 就可以被验证。
    • 绑定: 对于给定的秘密 uC 也固定。
    • 信息泄漏:两个相同的值拥有相同的承诺。

  • 随机的因素(factor)使承诺得以”隐藏(hiding)“。
    • 无论 u 的值如何,拥有不同的承诺。
    • 假设不知道点 H 的生成元(generator)。

  • 被破坏的承诺概形(commitment scheme):
    • H 的生成元 e 被知道了。
    • u 得值可被修改,承诺仍然不变。
椭圆曲线数字签名算法(ECDSA)
  • ECDSA 可以看作一个只能被秘密`e`的拥有者“破坏”的承诺概形。

  • R 点:
    • 随机点 (盲化blinding).
    • R 点的 x-坐标在等式左&右边的都有被表现。
    • 只对于秘密 e等式才能达到平衡。

  • 已签名的消息 z:
    • 对于一个给定的随机点 Rz 向等式的左边承诺。

  • ECDSA 验证:
    • 需要 z, r_x, s 和公钥 P 来验证签名。
DER 编码
  • libsecp256k1 代替 OpenSSL
    • OpenSSL 的问题在于不同系统间编码可能不同。
    • libsecp256k1 解决了这个系统依赖性的问题。

  • 严格的编码 (BIP66)
    • 移除了编码的可变性:共识层强制执行的编码标准。
    • 移除了 ECDSA 的可变性:强制使用较小的 s 的值。

  • DER 签名大小为 70-72 字节。
    • r_x 的长度: 32/33 字节
      • 有符号 256-位,无前导空位。
    • s 的长度: 31/32 字节
      • 强制使用较小的 s,无前导空位。