首页财经区块链 › 从一笔数字货币交易的生命周期看懂区块链才干,揭秘区块链底层技巧之交易进程

从一笔数字货币交易的生命周期看懂区块链才干,揭秘区块链底层技巧之交易进程

在比特币系统上其实并不存在“账户”,而只有“地址”。只要你愿意,你就可以在比特币区块链上开设无限多个钱包地址,你拥有的比特币数量是你所有的钱包地址中比特币的总和。比特币系统并不会帮你把这些地址汇总起来形成你的账户。从我(甲)到你(乙)的一笔比特币转账,是从我的一个钱包地址转到你的一个钱包地址上去。接下来的讨论就涉及比特币系统的一个关键技术性细节:UTXO(未使用的交易输出)。通证经济专家孟岩曾撰写一篇文章,标题是“其实没有什么比特币,只有UTXO”,这个标题指出了,对于计算机来说比特币是什么——比特币是区块链账本上的交易输出。我们来看一个两个人进行转账交易的过程,以深入理解UTXO:假设我有
8
个比特币,这其实意味着,之前有一个交易把这些比特币转入我的地址,这个交易的输出(即
8 个比特币)未被使用,我拥有了这 8
个比特币。现在,我要发起一个转账交易,这个交易中的输入是让我拥有这些比特币的上一个交易。我要转账给你,我做的是,对让我拥有这些
8
个比特币的上一个交易进行签名,把这一新转账交易的输出地址设为你的钱包地址。这样,我就发起了一个转账支付交易。等矿工将这一交易打包进新的区块,转账交易完成,这
8
个比特币就属于你了。你拥有的是你我这个交易的未使用的交易输出。对于一个交易签名所涉及的比特币的公钥和私钥的非对称加密机制,之后再讨论。为便于理解可类比看,钱包地址相当于房间号和锁,私钥则相当于钥匙,钥匙可以打开对应的锁。以上两个人的转账交易过程是:我用私钥(从一个输出是我的地址的交易中)取出比特币,并用私钥对从我的地址转到你的地址的新交易进行签名。一旦交易完成,这些比特币就转到你的钱包地址中去。你的钱包中新交易的未使用交易输出,只有你的私钥才可以打开。从以上讨论中我们可以看到,的确不存在比特币,只有未使用的交易输出(UTXO)。每一笔比特币都源自上一个交易,可以一直向上追溯上去。而一直向上追溯,在每一笔比特币的源头,都有一种特殊的交易,即比特币矿工因挖矿获得奖励的创币交易,每一个比特币都是通过挖矿被创造出来的。假设我作为比特币矿工挖矿成功赢得了
25 个比特币,那么这个特殊交易是,它的输入是 0,而输出是 25
个比特币进到矿工的钱包地址中。未使用的交易输出(UTXO)和我们熟悉的银行账户有着很大的不同。为什么要采用这样的设计?对比银行账户和比特币的
UTXO,我们可以看到 UTXO 的优点。

随着数字货币的火热,区块链技术成了人们口中讨论的热门话题,很玩家纷纷加入,但最近发现网络上大部分区块链文章,要么过于概念化要么就是谈及应用前景和行业判断的,很多新入币圈小伙伴很难真正理解,下面通过一笔完整的交易为大家介绍了区块链技术的完整生命周期。

这篇文章主要和大家介绍下比特币的交易过程。比特币底层技术要点:节点 /
交易过程 / 区块 / 区块头 / 区块形成 /
区块分叉比特币是不存在的比特币不存在与任何地方,包括你的电脑硬盘或者其他任何存储设备。你持有的比特币也只是拥有比特币的地址。这样的一个地址只是充当了一个银行账户,没有任何一个实物或者某个数据文件叫做比特币。比特币的所有交易都存放在巨大的账本文件中,这个账本就是区块链。你的“银行账户”(比特币地址)的余额,并不是直接存放在地址中,而是计算出来的。UTXO是比特币交易的基本单位先来一张“比特币之父”中本聪白皮书里的装逼图UTXO(Unspent
Transaction
Outputs)是未花费的交易输出,它是比特币交易生成及验证的一个核心概念。到底什么是UTXO?举例说明基于账户的支付系统:张三有一个余额
100
元的账户,李四有一个余额50元的账户。当张三要付给李四20元时,做以下操作:检查张三账户余额是否充足,如果不足20元就终止交易,向张三报“余额不足”在张三账户里减去20元在李四账户里增加20元举例说明UTXO的支付系统:张三挖到12.5
枚比特币。过了几天,他把其中 2.5
枚支付给李四。又过了几天,他和李四各出资 2.5 比特币凑成 5
比特币付给王五。那么,三人的账户变化情况使用UTXO记录如下:对比特币的区块链账本来说记录的只是3笔交易记录。资金来源就是每笔交易的交易输入,资金去向就是每笔交易的交易输出。每一笔交易都要花费(Spend)一笔输入,产生一笔输出,而其所产生的输出,就是“未花费过的交易输出”,也就是
UTXO。被斯坦福大学密码学和计算机安全教授 Dan Boneh 评价为“extremely
brilliant”的中本聪的三个伟大创新:一个是区块链的设计,一个是UTXO,一个是智能合约。比特币的私钥比特币的地址是随机生成的一串字符串,好像一个透明的存钱罐,谁都可以看到。私钥也是一串保密的字符串,犹如一把钥匙,只有持有私钥的人才能打开这个存钱罐。为什么交易需要等待10分钟?比特币协议里面设置了挖矿完成的大概时间是10分钟。所以商家可能会等到你的交易所在的区块被确认之后才会给你发货。但是也有商家不会让你去等,基于对你的一个信任,相信你不会在交易没有得到确认之前有去拿同一笔钱花在别的地方。不过一般这只适用于小额交易。10分钟是被中本聪设计的时间,考虑计算并验证一笔交易后传播到全部互联网需要几分钟的时间,为了避免“矿工A和矿工B在不知道对方都计算出结果的情况下同时发送计算结果”的情况,都假设需要10分钟才可以完成计算。​交易过程中的手续费目前,很多矿工都不收手续费。但是随着每次挖矿成功系统奖励给矿工的币不断减少,未来肯定会有更多的矿工会收取手续费的。有些钱包可以让你手动设置手续费。交易中那部分没有被对方收到,同时也没有找零回来的就是手续费。这笔钱最终会被得到记账权的那个幸运的矿工所得到。(原标题:一篇文章读懂比特币:区块链底层技术之交易过程)本文由
@ 区块链老垚 原创发布于人人都是产品经理。未经许可,禁止转载。

图片 1

基本常识:

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

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

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

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

假设一笔比特币交易 A 一旦被创建,它的生命周期就开始了。随后,交易 A
会被一个或者多个签名加密(这些签名用来说明交易 A

的资金流向是被资金的拥有者所许可的)。而后,交易 A

被广播到比特币网络中,最快收到广播信息的是相邻的2-3个节点,这些节点都会参与验证这笔交易,于此同时将交易在网络中再次进行广播,直到这笔交易
A

被网络中大多数节点(所有下载比特币客户端的设备都有可能成为这样的节点)接收。

最终,交易 A 被一个正在参与挖矿的节点验证,交易 A
连同其它一些近期被创建的交易一起被打包到一个区块 B

中,并被添加到区块链上,这时整个区块链就被延长并新增了一个区块 B 。区块
B 获得 6

次以上的“确认”时就被认为是不可撤销的,因为要撤销和重建六个区块需要巨量的计算,交易被打包在一起放进区块中时需要极大的计算量来证明,但只需少量计算就能验证它们已被证明。

图片 2

我们将上面的交易过程描述简单细分为以下 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比特币也都将成为交易费,被矿工挖到这份惊喜的“红包”。

02 签名加密

一笔比特币交易一旦被创建,它就会被资金所有者(可能存在多位所有者)签名。如果它是合法创建并签名的,则该笔交易现在就是有效的。它包含资金转移时所需要的所有信息。用户的私钥用于生成支付比特币所必需的签名,来证明资金的所有权,这样的签名加密是为了确保交易内容不被篡改。这和前面介绍的纸质支票的授权签字效果相同。

网络中节点收到交易信息后,会对交易的合法性进行检查,资金所有者的签名加密是重要的验证依据,检查都通过后,则将交易标记为合法的未确认交易,才会在网络中进行广播。

有以下 4 个概念需要展开理解,用以更加深入的理解“签名加密”的一些细节:

私钥

公钥

钱包

转载本站文章请注明出处:银河娱樂城 http://www.51minimoto.com/?p=1216

上一篇:

下一篇:

相关文章