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