我对比特币感兴趣的开发人员有一个问题:每个交易都应该由所有同行核实,这意味着每个同行都应该拥有交易所有者的公钥,但是他们如何以及在何处获得所有者&# 39;公钥?它存放在某个地方?
答案 0 :(得分:1)
他们没有。比特币使用区块链来跟踪交易。说一个人A将比特币转移给人B.然后交易被一组称为区块链的服务器验证和存储。
来自维基百科
区块链是一个记录比特币交易的公共分类账。一种新颖的解决方案在没有任何可信中心权限的情况下实现这一点:区块链的维护由运行比特币软件的通信节点网络执行。表单付款人X将Y比特币发送给收款人Z的交易使用容易获得的软件应用程序广播到该网络。网络节点可以验证事务,将它们添加到分类帐的副本,然后将这些分类帐添加内容广播到其他节点。区块链是一个分布式数据库 - 为了实现对任何比特币(金额)的所有权链的独立验证,每个网络节点都存储自己的区块链副本。
答案 1 :(得分:0)
AA 将发送其公钥作为签名交易的一部分。 BB 将使用该公钥解密 AA 发送的交易哈希,并验证公钥实际属于 AA 的私钥。
现在重要的是 BB 如何知道这个公钥属于 AA 的地址,而 AA 没有在属于其他随机地址的 UTXO 上签署交易。
这个验证很容易,因为地址是使用公钥创建的。
地址 = base58(ripemd-160(sha256(public key)))
因此BB将使用上述公式来检查公钥是否属于AA用于花费交易的同一地址。