【问题标题】:Public key authenticity in Bitcoin比特币中的公钥真实性
【发布时间】:2020-06-02 13:52:49
【问题描述】:

我对比特币(区块链)领域的公钥密码学有一个根本性的困惑。

例如,据我了解,在比特币中,当 Bob 想要进行交易时,他会发出包含以下内容的交易:

  • 普通交易消息(例如 Bob 向 Alice 发送 5 个比特币)。
  • Bob 的公钥
  • 交易的数字签名,使用 Bob 的私钥签名

我了解整个比特币网络将根据 Bob 的公钥和数字签名验证此交易,该签名与纯交易信息一起在整个网络中传播。

但是,如果上述交易(Bob 向 Alice 发送 5 个比特币)是由 Eve 发起的呢? Eve 广播纯交易消息、她的公钥、使用她的私钥签名的数字签名。似乎整个比特币网络也会根据提供的信息验证交易。

你能澄清一下我的想法是什么类型的错误吗?

非常感谢!

干杯, M.

【问题讨论】:

    标签: cryptography blockchain digital-signature bitcoin public-key


    【解决方案1】:

    一切都是正确的。但是,Bob 不能发送任何公钥。他必须提供与地址相关的 Pubkey,从该地址中提取 5 BTC 以进一步发送。在Bitcon设计中,地址是Pubkey的hash。

    因此,Eve 不知道 Bob 的地址的公钥,并且她无法发送交易,这花费了 Bob 的钱。但是,当然,她可以使用 pubkey 发送交易以获取她拥有的地址。换句话说,夏娃可以自己花钱,这没问题。

    如果您将看到Bitcoin script 的详细信息,您将看到典型的支出脚本:

    ScriptPubKey = OP_DUP OP_HASH160 OP_EQUAL OP_CHECKSIG

    此脚本复制 pubkey,散列一个副本,将散列副本与 btc_address 进行比较,如果相等 - 检查签名。如您所见,没有任何公钥可以接受。

    【讨论】:

      猜你喜欢
      • 2019-05-16
      • 2014-01-17
      • 2023-03-13
      • 2021-12-25
      • 2013-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-01
      相关资源
      最近更新 更多