{"content":{"title":"比特币交易过程","body":"当比特币中发生一笔交易时，它的执行过程是怎样的呢？首先引入一个概念：\r\n\r\n## 公钥和私钥\r\n\r\n- 公钥是公开的，大家都可以看到，私钥是保密的，只有持有人拥有。\r\n- 公钥和私钥是成对存在的。\r\n- 公钥加密的数据只能用对应的私钥解密。\r\n- 私钥加密的数据（一般把它叫做签名）只能用对应的公钥解密（一般叫做验签）。\r\n\r\n当用户A向用户B发起一笔交易，A会做如下几个事情：\r\n\r\n1. 将交易数据TX和B的公钥做一个哈希计算，得到哈希值V\r\n`V=hash(TX+B.publickey)`\r\n2. A用私钥对V进行签名\r\n`sig=signature(V+A.privatekey)`\r\n3. A将签名信息附加到交易数据的尾部，通过P2P网络将交易信息广播出去。\r\n\r\n![微信截图_20230608105445.png](https://img.learnblockchain.cn/attachments/2023/06/WZoucUJc64816003b3d24.png)\r\n其它节点收到交易信息会有如下几个步骤：\r\n\r\n1. 用A的公钥对交易签名做验证，如果验证通过，根据公钥私钥的特性，则可以证明该笔交易确实是有A发起的,同时解出哈希值V。\r\n`V=Verify(sig+A.publickey)`\r\n2. 将交易信息TX和B的公钥做哈希运算，得到哈希值V2\r\n`V2=hash(TX+B.publickey)`\r\n3. 判断V是否等于V2，如果相等则说明交易数据TX是完整的，在传输过程中没有发生篡改和数据丢失。\r\n\r\n至此，交易进入区块打包环节。"},"author":{"user":"https://learnblockchain.cn/people/6119","address":null},"history":"QmNxgpAysCEWCKCPPnTeZYQT2ffuMwifpAjfHYVysg9Bfw","timestamp":1717903812,"version":1}