# 比特币交易过程

By [daguoyuan](https://paragraph.com/@daguoyuan) · 2024-08-31

---

当比特币中发生一笔交易时，它的执行过程是怎样的呢？首先引入一个概念：

公钥和私钥
-----

*   公钥是公开的，大家都可以看到，私钥是保密的，只有持有人拥有。
    
*   公钥和私钥是成对存在的。
    
*   公钥加密的数据只能用对应的私钥解密。
    
*   私钥加密的数据（一般把它叫做签名）只能用对应的公钥解密（一般叫做验签）。
    

当用户A向用户B发起一笔交易，A会做如下几个事情：

1.  将交易数据TX和B的公钥做一个哈希计算，得到哈希值V `V=hash(TX+B.publickey)`
    
2.  A用私钥对V进行签名 `sig=signature(V+A.privatekey)`
    
3.  A将签名信息附加到交易数据的尾部，通过P2P网络将交易信息广播出去。
    

![图示](https://storage.googleapis.com/papyrus_images/74b75240713d4b3cd524790d34555ed7515cf293c08a711406be7d66fe0d9f86.png)

图示

1.  用A的公钥对交易签名做验证，如果验证通过，根据公钥私钥的特性，则可以证明该笔交易确实是有A发起的,同时解出哈希值V。 `V=Verify(sig+A.publickey)`
    
2.  将交易信息TX和B的公钥做哈希运算，得到哈希值V2 `V2=hash(TX+B.publickey)`
    
3.  判断V是否等于V2，如果相等则说明交易数据TX是完整的，在传输过程中没有发生篡改和数据丢失。
    

至此，交易进入区块打包环节。

---

*Originally published on [daguoyuan](https://paragraph.com/@daguoyuan/ryhck4V6PdTjT5pjfJ1n)*
