【问题标题】:Why bitcoin address instead of public key?为什么比特币地址而不是公钥?
【发布时间】:2018-10-24 10:56:50
【问题描述】:

在非对称加密中,将您的公钥发布给其他人是很常见的。使用公钥,每个人都可以验证使用相应私钥创建的签名。

那么为什么像比特币这样的加密货币不直接使用公钥作为交易的输出呢?

比特币使用所谓的address。不使用curve25519公钥的原因是什么?

【问题讨论】:

  • 这不是编程问题,更适合 Bitcoin.SE(顺便提一下 already answered

标签: bitcoin signing public-key


【解决方案1】:

发布地址基本上有两个优点,即公钥的 RIPEMD-160 散列,而不是直接使用公钥:

  • 与 256 位公钥相比,哈希只有 160 位,因此我们可以保护直接使用公钥时大约 1/3 的空间。这是在端点传输和存储的数据。虽然传输的大小非常明确,但存储也有两种形式:UTXO 集大小和磁盘大小。
  • 一些针对 ECDSA 被破坏的有限保护:如果在给定公钥的情况下创建签名在计算上是可行的,因为发现了一个弱点,我们可以通过这种间接级别避免所有资金被盗。假设生成有效签名需要一段时间,我们可以切换签名算法,并且拥有私钥的所有者仍然具有时间优势 w.r.t.攻击者必须从线路中获取公钥,转身并快速计算出竞争交易的签名。

【讨论】:

  • 感谢您的回答。但是,要使用 UTXO,必须提供公钥和签名。这个恕我直言最终导致更多的存储浪费,而不是首先使用公钥。如果我遗漏了什么,请纠正我。但是,如果您每次交易只使用一次密钥对,我理解第二点。
  • 不同之处在于 UTXO 是一个在内存中维护的集合,因此在那里进行的任何节省都会减少比特币守护程序的整体内存占用。在花费时间显示公钥为验证节点提供了验证正确性所需的信息,之后可以将交易刷新到磁盘,因此不会妨碍内存中的 UTXO,p2pkh 确实大于 p2pk,但是在这种情况下,存储此信息的位置很重要。此外,我们可以在支出后只存储公钥,而不是哈希和公钥。
猜你喜欢
  • 2019-05-16
  • 2013-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-18
  • 2021-08-31
  • 2023-03-13
  • 2014-01-17
相关资源
最近更新 更多