1、比特币系统UTXO解读
UTXO(unspent transaction output)未花费的交易输出,这是比特币交易中核心概念。
UTXO是比特币拥有者的公钥锁定的一个数字,实际是是拥有者的公钥加密的数字,只有拥有者的私钥才能解开。
UTXO就是比特币,是比特币系统中虚拟货币的底层实现,也就是说比特币系统中没有一个虚拟货币的概念,只有UTXO。
UTXO可以用于支付,新的UTXO可以由挖矿或交易产生。说通俗一些,UXTO就是交易中交易接收者应该收到的支付金额和交易发起者的收到的找零。
UTXO存在全节点的数据库里 转账交易消耗自己的UTXO,同时生成新的UTXO,并用接收者的公钥锁定 比特币系统中用户的“余额”实际上并不直接存在,而是通过计算得来
2、比特币系统交易模型解读
(1)交易输出(UTXO)
- 锁定的比特币数量
- 锁定脚本(用接收者的公钥哈希)
(2) 交易输入(UTXO 解锁脚本)
- 解锁脚本(发送者的签名和公钥)
(3)签名-对发送者和接收者的公钥哈希以及整个交易签名
简单交易模型图
3、交易全流程
- 起初,第一个挖出的区块里面包含了一个 coinbase 交易。在 coinbase 交易中,没有输入,所以也就不需要签名。coinbase 交易的输出包含了一个哈希过的公钥(使用的是 RIPEMD16(SHA256(PubKey)) 算法)
- 当一个人发起交易时,就会创建一笔交易。这笔交易的输入会引用之前交易的输出。每个输入会存储一个公钥(没有被哈希)和整个交易的一个签名。
- 比特币网络中接收到交易的其他节点会对该交易进行验证。除了一些其他事情,他们还会检查:在一个输入中,公钥哈希与所引用的输出哈希相匹配(这保证了发送方只能花费属于自己的币);签名是正确的(这保证了交易是由币的实际拥有者所创建)。
- 当一个矿工准备挖一个新块时,他会将交易放到块中,然后开始挖矿。
- 当新块被挖出来以后,网络中的所有其他节点会接收到一条消息,告诉其他人这个块已经被挖出并被加入到区块链。
- 当一个块被加入到区块链以后,交易就算完成,它的输出就可以在新的交易中被引用。