Cryptography 比特币如何存储公钥

Cryptography 比特币如何存储公钥,cryptography,bitcoin,Cryptography,Bitcoin,我是一个对比特币感兴趣的开发者,有一个问题:每一笔交易都应该经过所有对等方的验证,这意味着每个对等方都应该拥有交易所有者的公钥,但是他们如何以及在哪里获得所有者的公钥呢?它存储在某个地方?他们没有。比特币使用区块链跟踪交易。假设某人a将比特币转移给某人B。然后,该交易由一组称为区块链的服务器进行验证和存储 来自维基百科 区块链是记录比特币交易的公共分类账。一种新的解决方案在没有任何可信中央机构的情况下实现了这一点:区块链的维护由运行比特币软件的通信节点网络执行。付款人X向收款人Z发送Y比特币的形

我是一个对比特币感兴趣的开发者,有一个问题:每一笔交易都应该经过所有对等方的验证,这意味着每个对等方都应该拥有交易所有者的公钥,但是他们如何以及在哪里获得所有者的公钥呢?它存储在某个地方?

他们没有。比特币使用区块链跟踪交易。假设某人a将比特币转移给某人B。然后,该交易由一组称为区块链的服务器进行验证和存储

来自维基百科

区块链是记录比特币交易的公共分类账。一种新的解决方案在没有任何可信中央机构的情况下实现了这一点:区块链的维护由运行比特币软件的通信节点网络执行。付款人X向收款人Z发送Y比特币的形式的交易使用现成的软件应用程序广播到此网络。网络节点可以验证事务,将它们添加到分类账的副本中,然后将这些分类账添加内容广播到其他节点。区块链是一个分布式数据库——为了实现对任何和每个比特币(金额)所有权链的独立验证,每个网络节点存储其自身的区块链副本


AA将发送其公钥作为已签名交易的一部分。BB将使用该公钥解密AA发送的事务哈希,并验证公钥实际属于AA的私钥

现在重要的部分是BB如何知道这个公钥属于AA的地址,并且AA并没有在属于其他随机地址的UTXOs上签署事务

这个验证很容易,因为地址是使用公钥创建的

地址=base58(ripemd-160(sha256(公钥)))


因此BB将使用上述公式检查公钥是否属于AA用于支付交易的同一地址。

“网络节点可以验证交易”,那么节点如何验证交易?他们应该使用公钥进行验证,对吗?或者怎么做?阅读RSA密钥。当A将一定数量的比特币转移给B时,A用他的私钥签署交易。由A签名的交易只能使用其公钥进行解密。这样每个人都知道是谁真正创造了交易。只要A的私钥是私有的,就没有人能模仿A。好的,让我说清楚。B收到这个交易,然后他必须验证这个交易,对吗?那么如何验证呢?B应该使用A的公钥进行验证,对吗?那么从何处获取A的公钥为什么需要验证A的公钥?据我所知,我可能是错的,A作为交易的一部分向你发送他的公钥,然后将其报告给区块链,你可以等待不同程度的确认。哦,我明白了。我的问题是从哪里获取A的公钥,而不是验证A的公钥。对不起,我没说清楚。因此,交易将包含A的公钥。你知道有一个专门的,对吗?直到看到你的评论。thanksStack Overflow是一个用于编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许是一个更好的提问的地方。