区块链交易的流程分析

区块链绝非单一的创新技术,而是将许多跨领域技术凑在一起,包括演算法、数学、密码学与经济模型,并结合点对点(P2P)网路关系,利用数学基础就能建立信任效果,成为一个不需基于彼此信任基础、也不需依赖单一中心化机构就能够运作的分散式系统,而比特币便是第一个采用区块链技术而打造出的一套P2P电子现金系统,用来实现一个可去中心化,并确保交易安全性、可追踪性的数位货币体系。
在这里插入图片描述
现在,包括大数据、物联网、基因工程、3D打印、量子工程、人工智能、无人驾驶、机器人AI和区块链将带来第四次工业革命,工业4.0时代全面开启。著名的《经济学人》杂志于2015年10月发了题为《The trust machine》的封面文章,将区块链被比喻为“信任的机器”。
区块链基于数学原理解决了交易过程的所有权确认问题,保障系统对价值交换活动的记录、传输、存储结果都是可信的。区块链记录的信息一旦生成将永久记录,无法篡改,除非能拥有全网络总算力的51%以上才有可能修改最新生成的一个区块记录!区块链的交易并不是通常意义上的一手交钱一手交货的交易,而是转账。
如果每一笔转账都需要构造一笔交易数据会比较笨拙,为了使得价值易于组合与分割,比特币的交易被设计为可以纳入多个输入输出,即一笔交易可以转账给多个人。
一、区块链究竟可以做什么呢?
区块链解决了信任危机
著名的《经济学人》杂志于2015年10月发了题为《The trust machine》的封面文章,将区块链被比喻为“信任的机器”。
区块链基于数学原理解决了交易过程的所有权确认问题,保障系统对价值交换活动的记录、传输、存储结果都是可信的。区块链记录的信息一旦生成将永久记录,无法篡改,除非能拥有全网络总算力的51%以上才有可能修改最新生成的一个区块记录。
区块链的数学原理是hash 方程,看到这里,相信数学学霸和程序猿们已经明白啦。不明白的童鞋请继续往下看。
在这里插入图片描述二、区块链的交易流程
1、交易的生成
在这里插入图片描述
当前所有者利用私钥对前一次交易和下一位所有者签署一个数字签名,并将这个签名附加在这枚货币的末尾,制作成交易单。一笔新交易产生时,会先被广播到区块链网络中的其它参与节点。
2、交易的传播
在这里插入图片描述
当前所有者将交易单广播至全网,每个节点会将数笔未验证的交易Hash值收集到区块中,每个区块可以包含数百笔或上千笔交易。最快完成POWwww.kaifx.cn的节点,会将自己的区块传播给其他节点。
3、工作量证明
在这里插入图片描述
每个节点通过相当于解一道数学题的工作量证明机制,从而获得创建新区块的权力,并争取得到数字货币的奖励。各节点进行工作量证明的计算来决定谁可以验证交易,由最快算出结果的节点来验证交易,这就是取得共识的做法。
4、全节点验证
在这里插入图片描述
当一个节点找到截时,它就向全网广播该区块记录的所有盖时间戳的交易,并由全网其他节点核对,其他节点会确认这个区块所包含的交易是否有效,确认没被重复花费且具有效数位签章后,接受该区块,此时区块才正式接上区块链,无法再窜改资料。
5、区块链记录
在这里插入图片描述
全网其他节点核对该区块记账的正确性,没有错误后他们将在该合法区块之后竞争下一个区块,这样就形成了一个合法记账的区块。所有节点一旦接受该区块后,先前没算完POW工作的区块会失效,各节点会重新建立一个区块,继续下一回POW计算工作。每个区块的创建时间大约在10分钟,随着全网算力的不断变化,每个区块的产生时间会随算力增强而缩短,随算力减弱而延长。
三、区块链交易的7个步骤
步骤1:1个用户在他们的钱包里确认交易,尝试发送某种加密货币给其他人。
步骤2:交易由钱包传达出去并等待对应的区块链上的矿工接收。只要没有接受,它就会等待在“未确认的交易池”中。这是一个待处理的未确认的交易集合池。而这些待确认的交易通常不会集中在一个巨型池中,而是在分开的小型本地池中。
步骤3:网络上的矿工(有时称为节点,但不完全相同!)从这些池中选择交易并形成“区块”。除了一些额外的元数据之外,块区基本上是交易的集合(此时,仍然是未经确认的交易)。每个矿工都构建自己的交易块,多个矿工可以选择同样的交易包含在自己的区块中。
示例:有两名矿工,矿工A和矿工B。矿工A和矿工B都可以将交易X包含在自己的区块中。每个区块链都有自己的区块规模。在比特币区块链上,区块最大可存储1 MB数据。在向区块添加交易之前,矿工需要根据区块链历史检查交易是否有能够进行。根据当前区块链历史记录,如果发起人的钱包余额充足,则交易被认为是有效的并且可以添加到该区块中。矿工通常会优先考虑高交易费的交易,这样回报更高。
步骤4:通过选择交易并将其添加到自己的区块,矿工创建了一个交易块。为了把交易块添加到区块链(让所有矿工和节点记录),该区块需要签名(也称为工作证明)。此签名是通过解决每个交易块所特有的数学问题来创建。每个区块都有不同的数学题,因此每个矿工需要处理他们构建的区块所特有的问题,所有这些问题难度相同。为了解决这个数学问题,大量算力被占用(因此需要大量的电力)。你可以想象成在计算器上运行计算,只是在电脑上更难,这就是挖矿的过程。如果你想了解更多数学问题的解决过程,请继续阅读下文,或者请跳至步骤5。
挖矿又叫哈希(工作量证明共识算法)
当在区块链上添加区块时,每个矿工面临的数学问题是为其区块中的数据找到哈希输出(也称为签名),该输出以一定量的连续零开始。这听起来很复杂吧?但实际上并不那么难。我们试着用一个简单的方法解释。
在我们继续之前,了解什么是哈希函数很重要。哈希函数是一个很难解决的数学问题,但答案很容易验证。
哈希函数接收数字和字母的字符串(任意随机字母,数字或者符号的字符串),并将其转换为由随机字母和数字组成的新的32位字符串。这个32位数字符串是哈希输出。如果接收的字符串中任何数字或字母发生更改,则哈希输出也将随机变化。但是,接收相同的字符串将始终得到相同的字符串输出。
现在将区块内的数据想象为哈希输入(一个数据串),当对此输入进行哈希处理时,它会得到哈希输出(32位字符串)。比特币区块链的一个规则是,如果一个区块的签名(哈希输出)以一定量的零开始,才能将其添加到区块链中。但是,输出字符串每次都是由随机的输入字符串产生的,那么如果区块的数据字符串不能产生以多个连续零开头的签名(哈希输出)怎么办?好吧,这就是为什么矿工需要反复更改其区块内数据,这称为nonce。每次矿工更改nonce时输入字符串都会改变,因此也会产生随机的输出字符串(签名)。矿工一直重复此过程直到找到满足签名要求(以多个连续零开始)的输出字符串。下面有一个示例,它使用七个零,但零的数量实际上取决于区块链的“区块难度”。“区块难度”有点复杂,所以我建议你先保存(现在不是非常重要)。
这就是矿工们找到合格签名的过程,也是解决这个数学问题需要如此多算力的原因。如此多的nonce需要花费大量的时间和算力;如果更多的矿工加入区块链,数学问题的难度也会随之增加,这将导致更高的电费。如果你很好地理解这个过程,现在让我们来看第5步。
步骤5:矿工首先为区块找到合格的签名,然后再把该区块及其签名广播给其他矿工。
步骤6:其他矿工需要确认签名的合法性,通过接收被广播的区块的数据串来计算输出的字符串是否匹配签名。如果它是有效的,其他矿工将确认其有效性并同意该区块可以添加到区块链中(他们达成共识,也就是说彼此一致,因此术语叫共识算法)。这也是“工作量证明”的来源。签名就是所执行工作的“证明”(花费了算力)。然后该区块就可以添加到区块链中,并被网络上的其他节点传播。只要区块内的交易与当前钱包余额(通过交易历史)能对应,其他节点就会接受该区块并保存到其交易数据中。
步骤7:将一个区块添加到链上后,之后添加的每个区块都被看成该区块再次的“确认”。例如,如果我的交易包含在区块502中,总共链长是507个区块,则意味着我的交易被5次确认(从502-507)。之所以被称为确认,因为之后添加区块时,区块链会在整体交易历史上再次达成共识,包括你的交易及区块。所以可以说区块链确认了你的交易5次。这也是Etherscan在展示交易详情时所指的内容。你的交易被确认次数越多(也就是嵌入链中更深的区块),攻击者就越难以改变它。在添加新区块到区块链后,所有矿工需要从第3步形成一个新的交易区块开始。这是,矿工们不能继续(实际上他们可以,但这与本文无关)挖掘来解决区块中的问题,原因有两个:
1、它可能包含已被添加到区块链的上一个区块确认的交易(请记住,矿工可以选择/包含区块中相同的交易),因此这些交易中的一些可能不再有效,而使整个区块无效。
2、每个区块都需要添加上一个区块的哈希输出(签名),这个哈希输出已经添加到区块链的元数据中。这就是它成为区块链的过程。如果矿工继续挖掘他们正在处理的区块,其他矿工就会看到哈希输出与区块链上最新添加的区块不对应,因此将遭到拒绝。

猜你喜欢

转载自blog.csdn.net/kaihuiguoji/article/details/91974530