财经365讯(编辑 章馨),今天来说下比特币的转账机制,现实生活中,我们转账100元给朋友时,都是先得知道朋友的卡号,然后通过ATM或者网银等方式转账。
如果跨行再扣除一定的手续费,点击确定转账,其实就是提交到银行系统的后台处理,银行会你的账号减少100元,对你朋友的账户增加100元。
如果是跨行转账会经过中央银行进行一次清算,然后对相应账户的金额进行增加与减少的更新操作。
上面是传统的转账行为,里面有一个关键的概念就是账户,但在比特币的世界是没有账户这个概念的。
数据冗余与双重支付
也就是说,传统的转账逻辑和比特币的转账逻辑是完全不同的。
在说明比特币转账逻辑之前,我们先思考一个问题,如果比特币也使用“账户概念”来搭建系统的话,会出现什么问题?
首先需要一个数据库来记录所有人的比特币余额,每个人交易都会更新全网其他人的数据表,也就是比特币余额,那就会造成数据的冗余,对于一个去中心化、分布式账本这是非常不友好的。
再者,我们刚才也谈到了每个人的交易都会更新其他账户的余额,为什么呢?因为他要避免双重支付。顾名思义就是一笔钱被重复支付两次。
再一个,我们在昨天也说了,比特币是点对点,没有类似中央银行这种权威机构进行记账,达成一个共识是需要大多数的节点的确认。
如果在这个过程中,因为网络或者其他原因不能及时更新每个账户的余额的话,必然会出现双重支付。
打个比方吧,小明从商户A买一台苹果手机,又从商户B买了一台安卓手机,于是他把这两笔交易分别告诉了两个矿工,于是传播商户A的矿工就把这条信息给发布出去了。
但是,传播商户B的矿工因为网速慢,并没有看到小明与商户A的交易信息,也发布了一条交易记录。这样就会出现上面的问题。
我们总结下,上面的所遇到的问题,数据冗余从而导致庞大的数据库以及双重支付问题。
UTXO(Unspent Transaction Output)
那么比特币是如何避免上面的问题的呢?我们今天就讲一个概念:UTXO (Unspent Transaction Output),翻译过来就是未花费的输出。
怎么理解,就是比特币与传统消费不同之处在于比特币记录的是交易过程而非交易结果。
每笔比特币的交易都包含交易输入和交易输出。交易输入就是谁付给你的钱即资金的来源,交易输出就是资金的去向,就是你收到的钱。
你可能会疑问,既然是我收到的钱那为什么叫输出?因为他只是暂时在你这,你以后还是要花的,所以在你没花费以前他就是未花费的交易输出(UTXO)。
如果花费了,他就是真正的输出了,比如你现在把这笔钱转给我了,那么我的交易输入就是你了。
我们用场景案例来演示下比特币整个交易流程:我通过挖矿挖到10个比特币,然后转账给你3个比特币,然后,我们各出资3个凑足6个比特币给小明。那么这个过程通过UTXO实现。
比特币交易遵循两个规则
一是除了coinbase交易之外,所有的资金来源都必须来自前面某一个或者几个交易的 UTXO
二是任何一笔交易的输入总量必须等于交易输出总量,等式两边必须配平。
图1是我通过矿机挖矿从而创建了一个区块,也就获得记账权,然后我就将交易输出的地址写上我的地址。
图2,我需要转3个比特币给你,但是呢,在比特币的世界里,挖出来的币。
数量就相当于一枚硬币,是没法拆开来花的,根据比特币,每笔交易输入与输出配平原则,其实是直接输出10个比特币,然后你接收了3个,另外的7个又转给我了。当然这个过程是由比特币系统去操作的。
图3就是你和我需要共同给小明6个比特币,所以资金来源是你和我,和上面同样的道理最后再转我4个比特币。
总结一下:比特币没有账户一说,如果非要说余额的话,余额就是UTXO,如果你把整个比特币想象成一个水管网络,那么UTXO其实就是水管中的阀门。更多相关新闻资讯尽在财经365外汇频道!