当比特币中发生一笔交易时,它的执行过程是怎样的呢?首先引入一个概念:
公钥是公开的,大家都可以看到,私钥是保密的,只有持有人拥有。
公钥和私钥是成对存在的。
公钥加密的数据只能用对应的私钥解密。
私钥加密的数据(一般把它叫做签名)只能用对应的公钥解密(一般叫做验签)。
当用户A向用户B发起一笔交易,A会做如下几个事情:
将交易数据TX和B的公钥做一个哈希计算,得到哈希值V
V=hash(TX+B.publickey)A用私钥对V进行签名
sig=signature(V+A.privatekey)A将签名信息附加到交易数据的尾部,通过P2P网络将交易信息广播出去。

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