A5下载文章资讯

分类分类

深入浅出:从一笔比特币交易的生命周期看懂区块链技术

2018-03-26 14:09作者:zy

深入浅出:从一笔比特币交易的生命周期看懂区块链技术

基本常识:

区块链不等于比特币,区块链只是比特币系统用来记录交易信息的账簿;

比特币没有账户余额的概念,所有的交易只记录资金的来源和去向,所谓账户余额是区块链中计算出来的结果;

挖矿奖励是为了维护整个系统鼓励人们利用自己设备的算力资源来共同验证每笔交易的有效性而给予的奖励;

交易的完整过程:从创建新交易到新区块产生

假设一笔比特币交易 A 一旦被创建,它的生命周期就开始了。随后,交易 A 会被一个或者多个签名加密(这些签名用来说明交易 A 的资金流向是被资金的拥有者所许可的)。而后,交易 A 被广播到比特币网络中,最快收到广播信息的是相邻的2- 3 个节点,这些节点都会参与验证这笔交易,于此同时将交易在网络中再次进行广播,直到这笔交易 A 被网络中大多数节点(所有下载比特币客户端的设备都有可能成为这样的节点)接收。

最终,交易 A 被一个正在参与挖矿的节点验证,交易 A 连同其它一些近期被创建的交易一起被打包到一个区块 B 中,并被添加到区块链上,这时整个区块链就被延长并新增了一个区块 B 。区块 B 获得 6 次以上的“确认”时就被认为是不可撤销的,因为要撤销和重建六个区块需要巨量的计算,交易被打包在一起放进区块中时需要极大的计算量来证明,但只需少量计算就能验证它们已被证明。

我们将上面的交易过程描述简单细分为以下 6 个步骤:

产生新交易

签名加密

交易在比特币网络中传播

整合交易&构建新区块

挖矿

新区块连接到区块链

接下来,我们将详细分析 6 个交易步骤中的具体细节和所采用到的底层技术,在解释每个步骤和具体的概念时,我都将举出适当的例子来帮助理解,如果依然没有读懂,那肯定是你看的太快了……

01 产生新交易

当隔壁老王想要将自己钱包中的一个比特币转账给老张时,这个交易就被老王的钱包所构建了。

将一笔比特币交易理解成纸质支票有助于我们的理解,一笔比特币交易是一个有着货币转移目的工具, 如同当收款人或持票人拿着支票到银行时,银行会无条件支付其规定数量的金额。并且交易发起人并不一定是签署该笔交易的人。

比特币交易可以被任何人在线上或线下创建,即便创建这笔交易的人不是这个账户的授权签字人。就像一家企业中秘书开出的这张支票(发起交易),需要等待Boss签署该笔交易(数字签名)。

有以下 4 个概念需要展开理解,用以更加深入地理解“新交易构建”的一些细节:

UTXO

交易输出

交易输入

交易费

UTXO

UTXO易于理解的说就像是账户的余额。它是比特币交易的基本单位,是未经使用的一个交易输出,Unspent Transaction Output,简称UTXO,“未花费的交易输出”。UTXO不能再分割,1 个UTXO可以是 1“聪” 的任意倍,就像美元可以被分割成“美分”一样,“分”就不可以再分割了。UTXO被记录于区块链中,比特币网络监测着以百万为单位的所有可用的UTXO。

假设隔壁老王此时拥有 1.9 比特币,当隔壁老王接收到 0.1 比特币时,这个金额被当作UTXO记录到区块链里,现在老王一共拥有的 2 比特币,同样都被当作UTXO分散到数百个交易和数百个区块中。实际上,并不存在一个储存比特币的地址或账户余额的地方,只有被老王(所有者)锁住的、分散的UTXO。

因此,“隔壁老王的比特币余额”这个概念,是通过扫描区块链并聚合所有属于该用户的UTXO来计算该用户的余额。

交易的输出

一笔比特币交易是一个含有输入值和输出值的数据结构,其中包含了将一笔资金从初始地址(输入)转移至目标地址(输出)的代码信息:版本规则、输入&其数量、输出&其数量、时间戳。

每一笔比特币交易创造输出,输出都会被比特币账簿记录下来。所有的输出都能创造一定数量的可用于支付的比特币(也就是UTXO)。这些UTXO会被整个网络所识别记录,其所有者可在未来的交易中使用它们。给隔壁老王发送比特币实际上是创造新的UTXO,并且能被他用于新的支付。

交易的输入

交易输入是指向UTXO的指针,当用户付款时,他的钱包通过选择可用的UTXO来构造一笔交易。

例如:隔壁老王想要支付0. 015 比特币,他的钱包应用会选择一个 0.01 UTXO和一个 0.005 UTXO,使用它们加在一起来得到想要的付款金额。

交易费

大多数交易包含交易费,这是为了在网络安全方面给比特币矿工一种补偿。大多数钱包自动计算并计入交易费,交易费被挖出这个区块的矿工得到,并且记录在这个交易的区块链中。交易的数据结构没有交易费的字段,意味着你无法从交易信息中直接看到交易费的金额。

例如:隔壁老王想要消费支付0. 015 比特币,为了自己的交易被矿工优先处理,他愿意支付0. 001 比特币作为交易费,那么老王的钱包至少需要从区块链记录中整合至少0. 016 比特币的UTXO。假设他的钱包有一个0. 2 比特币的UTXO可用,那么这笔新的交易就会产生一个0. 2 比特币的输入,和两个输出:一个是0. 015 比特币的消费金额被支付给目标地址,另一个0. 184 比特币的输出作为找零支付给老王的钱包地址,其中有0. 001 比特币未分配,就是“隐藏的”交易费用。

值得说明的是:一定要定义清楚0. 184 比特币是一个指向老王自己钱包的输出,这样找零才会有效“退回”给老王的钱包,否则0. 184 比特币也都将成为交易费,被矿工挖到这份惊喜的“红包”。

展开全部

相关

说两句网友评论
    我要跟贴
    取消