大家有没有想过:区块链最近为什么这么火?
相信很多人都知道:因为比特币连续稳定运行了8年,让人们看到了比特币背后的技术,也就是区块链技术的威力。
但是可能很多人不知道,比特币底层的区块链不仅可以用来交易转账,还可以有很多其它应用,比如用于征信和票据交易等,这一切都要归功于交易脚本。
说到交易脚本,不得不提比特币的交易:
一笔比特币的交易包含一个或多个输入和输出。
比特币交易的基本单位是未经花费的交易输出,简称UTXO。
被交易消耗的UTXO被称为交易输入,由交易创建的UTXO被称为交易输出。
一笔比特币交易通过使用所有者的签名来解锁UTXO,并通过使用新的所有者的比特币地址来锁定并创建UTXO。
解锁UTXO用的是包含所有者签名的解锁脚本;锁定UTXO包含新的所有者的比特币地址的锁定脚本。
比特币节点验证一笔交易时,就是通过检查解锁脚本的签名信息,与创建该UTXO时锁定的比特币地址是否匹配。
在这里,签名是从私钥产生的,私钥可以产生公钥,而比特币地址由公钥产生,所以签名可以匹配比特币地址。
下面用一个简化且不太准确的类比,介绍整个交易的过程:
Alice在Bob的咖啡店买咖啡
1、Alice把自己的签名和Bob的比特币地址发给一些叫做节点的“人”。
2、节点们会试着用Alice的签名解锁网络中一个叫做UTXO的盒子(这个盒子里面的比特币是上次Alice花钱从Joe买来,joe用Alice的锁头锁上,并且放在网络中的)。
3、如果解锁成功,则证明Alice拥有这盒子里面的比特币,节点们把这些比特币取出来,然后用Bob的锁头把比特币锁在一个新的UTXO盒子。
在上面的交易场景中,Alice的私钥对应的是解锁脚本,Bob的比特币地址对应的是锁定脚本。
好了,今天先介绍到这里,接下来我会结合理论和代码,向大家讲述比特币交易脚本那些事儿。
区块链研习社比特币代码研读班 钟晓宏