首页 > 解决方案 > 比特币中的公钥真实性

问题描述

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

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

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

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

你能澄清一下我有什么样的错误想法吗?

非常感谢!

干杯,M。

标签: cryptographyblockchaindigital-signaturebitcoinpublic-key

解决方案


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

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

如果您将看到比特币脚本的详细信息,您将看到典型的支出脚本:

ScriptPubKey = OP_DUP OP_HASH160 OP_EQUAL OP_CHECKSIG

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


推荐阅读