首页 web3.0 深度丨区块链技术发展史

深度丨区块链技术发展史

在本文中,我们探讨了区块链技术背后的历史。从20世纪80年代的拜占庭将军问题到如今复杂的智能合约,区块链是如何走到今天的…

标题:深度丨区块链技术的发展历史

在本文中,我们探讨了区块链技术背后的历史。从20世纪80年代的拜占庭将军问题到如今复杂的智能合约,区块链是如何走到今天的?

区块链基础知识

区块链是随着比特币等数字加密货币的日益普及而逐渐兴起的一项新技术。它提供了一种去中心化、无需信任的信用建立范式。目前已引起金融行业和科研机构的关注。政府部门和投资企业高度重视和广泛关注。

区块链技术通过建立共同维护且不可篡改的数据库来记录所有过去的交易记录和历史数据。所有数据都是分布式、存储且公开透明的。在该技术下,任何互不相识的网络用户都可以通过合约、点对点记账、数字加密等方式达成信用共识,而不需要任何中央信任机构。在这个技术下,我们可以构建数字货币、数字资产、智能财产、智能合约等。

通过上一章的介绍,相信大家对区块链和比特币已经有了初步的了解。在本章中,我们将继续探讨区块链的技术细节。

本章将首先介绍区块链的基本概念及其运行原理,然后介绍可以在区块链上进行的操作和相关细节,最后讨论区块链上的交易过程及其验证过程。

区块链技术

区块链本质上是一个点对点的分布式账本数据库。比特币的底层采用了区块链的技术架构。

区块链本身实际上是一系列链接的数据块,其链接指针是使用密码学哈希算法处理块头生成的块头哈希值。每个数据块记录了一组由哈希算法组成的树状交易状态信息。这就保证了每个区块中的交易数据无法被篡改,区块链中链接的区块也无法被篡改。

1. 基本概念

一个完整的区块链系统包括很多技术,包括用于存储数据的数据块以及其上的数字签名、时间戳等技术,支持P2P网络和维护系统的共识算法,挖矿和工作量证明机制包括匿名交易机制和比特币钱包,如以及链龄、UTXO、默克尔树、双花等相关技术概念。

正是这些技术使得区块链能够在无中心网络上形成持续运行的引擎,为区块链的交易、验证、链接等功能提供源源不断的动力。

2. 数据块

比特币交易记录存储在数据块中。比特币系统中大约每10 分钟生成一个区块。每个数据块一般包含两部分:块头(Header)和块体(Body)。

区块头封装了当前版本号(Version)、上一个区块地址(Prev-block)、时间戳(Timestamp)、随机数(Nonce)、当前区块的目标哈希值(Bits)、默克尔树根值(Merkle) -root)和其他信息。

区块体主要包含交易计数和交易详情。交易明细是比特币系统中的账本。每一笔交易都会被永久记录在数据区块中,任何人都可以查询。

块体中的Merkle 树将对每笔交易进行数字签名,确保每笔交易不可伪造且不存在重复交易。所有交易都会通过Merkle 树的哈希过程生成唯一的Merkle 根值,并将其记录在区块头中。 Merkle 树将在本章后面详细介绍。

如果您使用的是比特币核心钱包(Bitcoin core),那么每当您打开客户端时,区块数据文件都会同步到电脑硬盘上,并且可以在blocks文件夹下找到。

我们还可以使用hexdump命令在终端上以十六进制格式显示数据块。我们可以通过解析这些数据来获取交易记录、区块大小等基本信息,所以我们说区块链中的数据是完全公开透明的。我们使用命令hexdump -n 10000 -C blk00000.dat 打开编号为00000 的创世块(比特币中的第一个区块链)。

3. 挖矿和分叉问题

区块是在挖矿过程中生成的。所谓挖矿,其实就是一种穷举随机数算法。将前一个区块的哈希值添加到10分钟内的所有交易订单中,然后添加一个随机数,计算出256位的字符串哈希值。输入随机数Nonce,使得哈希值满足一定条件,就获得了该区块的交易记账权。

新生成的区块需要快速广播,以便其他节点对其进行验证,防止欺诈。每个区块都存储了前一个区块的哈希值,可以追溯到来源。只有经过验证后才能最终获得该区块的交易记账权。比特币系统将允许矿工竞争记账权(在主链上链接区块的权利)。这种竞争机制就是工作量证明机制。

采矿需要大量的精力和时间。谁投入更多的工作,谁就能以更大的概率获得一个区块的记账权。获得记账权的矿工会将当前区块与前一个区块链接起来,形成最新的区块主链。矿工还将获得一定数量的系统奖励(2009年至2013年每10分钟产生50个比特币,2014年以来每10分钟产生的比特币数量将减半至25个)比特币。所有区块链接在一起,形成区块链的主链。从创建区块到当前区块,区块链上的所有数据历史都可以追踪和查询。

需要注意的是,可能会出现不同地区的两个矿工同时“挖出”两个新区块并链接起来的情况。这时,主链上就会出现“分叉”。系统不会立即确认哪个区块不合理,但同意后续矿工将始终选择累积工作量证明最大的区块链。因此,当主链分叉时,后续区块的矿工会通过计算比较,将自己的区块链接到最大化当前累积工作量证明的替代链上,形成一条更长的新主链,并自动丢弃分叉。分叉处链条短,从而解决分叉问题。

4. 时间戳和不变性

时间戳是指从格林威治标准时间1970年1月1日00:00:00(北京时间1970年1月1日08:00:00)到现在的总秒数,通常是一个字符序列,唯一标识某个及时的时刻。在比特币系统中,获得记账权的节点在链接区块时需要在区块头中添加时间戳,记录当前区块数据的写入时间。

每个后续块中的时间戳都会增强前一个时间戳,形成时间递增链。时间戳技术本身并不是很复杂,但将时间戳应用在区块链技术中是一项重大创新。时间戳为未来基于区块链的互联网和大数据增加了时间维度,让数据更容易追溯。重现历史也是可能的。

同时,时间戳可以作为存在性证明中的一个重要参数。它可以证明特定数据在特定时刻确实存在。这保证了区块链数据库无法被篡改或伪造。这也为区块链技术在公证、知识产权登记等时间敏感领域的应用提供了可能。

5.分布式数据库

比特币系统中的区块就像一个账本,记录着所有比特币交易信息。每个比特币用户的比特币收入和支出都永久嵌入数据块中,供其他人查询。这些数据块中的交易数据存储在每个比特币用户的客户端节点中,所有这些节点构成了比特币及其坚固的分布式数据库系统。任何一个节点的数据破坏都不会影响整个数据库的正常运行,因为完整的数据库都存储在其他健康的节点上。

6.UTXO交易模式

UTXO(Unspent Transaction Outputs)即未花费的交易输出,是比特币交易过程中的基本单位。除创世区块外,所有区块中的交易(Tx)都会有多个输入(Tx_in,也称为资金来源)和多个输出(Tx_out,也称为资金目的地)。创世区块及后续挖矿产品生成区块中奖励矿工的交易没有输入。另外,在比特币系统中,某一笔交易的输入一定是另一笔交易未使用的输出,而这个输入也需要之前的交易。输出地址对应的私钥被签名。

目前整个区块链网络中的UTXO都会存储在各个节点中,只有满足UTXO和数字签名条件的交易才是合法的。因此,区块链系统中的新交易不需要追溯整个交易历史来确认当前交易是否合法。

7. 哈希函数

哈希函数在比特币系统中也有重要的应用。区块链中的数据不仅仅是原始数据或交易记录,还有它们的哈希函数值,将原始数据编码成特定长度,由数字和字母组成的字符串记录在区块链中。哈希函数有很多适合存储区块链数据的应用。

优势:

1)哈希函数处理的数据是单向的,几乎不可能通过处理后的输出值计算出原始输入值;

2)哈希函数处理不同长度的数据所花费的时间是一致的,输出值也是定长的;

3)即使哈希函数的输入值仅相差一个字节,输出值的结果也会完全不同。比特币系统中最常用的哈希函数是双SHA256哈希函数。一般来说,不同长度的原始数据经过SHA256哈希函数处理两次,然后输出长度为256的二进制数进行统一。识别并存储。

总之,哈希函数是比特币系统中的一项关键技术,为比特币系统提供了很多便利。哈希函数将在本书后面的章节中详细介绍,这里不再赘述。

8.默克尔树

Merkle树是数据结构中树的一种。它可以是二叉树或多叉树。它具有树结构的所有特点。如图2-4所示,比特币区块链系统采用Merkle二叉树。其主要功能是快速汇总并验证区块数据的完整性。它将区块链中的数据分组。哈希运算,不断向上递归运算生成新的哈希节点,最后只剩下一个Merkle 根并存储在区块头中。每个哈希节点总是包含两个相邻的数据块或其哈希值。

在比特币系统中使用Merkle 树有很多优点:首先,它极大地提高了区块链的运行效率和可扩展性,使得区块头只需要包含根哈希值,而不需要封装所有底层数据。这使得哈希运算可以在智能手机甚至物联网设备上高效运行;其次,Merkle树可以支持“简化支付验证协议”(SPV),这意味着无需运行完整的区块链网络节点即可处理交易数据。测试。因此,在区块链中使用Merkle树的数据结构是非常有意义的。本书后面的章节将详细介绍Merkle树。

9.双重付款

双重支付问题也称为“双花”问题,利用货币的数字特性,用“同样的钱”完成两次或多次支付。在传统金融货币体系中,由于货币是物理实体,具有客观、独特的属性,可以避免重复支付。但在其他电子货币系统中,需要有可信的第三方管理机构提供担保。

区块链技术有效解决了去中心化系统中的双重支付问题,无需借助任何第三方机构,仅通过分布式节点之间的相互验证和共识机制,在传递信息的同时完成价值转移。区块链技术利用区块链接形成的时间戳技术加上比特币是否满足UTXO(未花费交易)和数字签名的验证,有效避免了双重支付问题。如果有人使用相同的UTXO 构造两笔交易来向不同方付款,则比特币客户端只会转发最先听到的交易。矿工将选择将该交易包含在未来的区块中。当其中一笔交易位于有5 个链接区块的区块时,该交易已被确认6 次。在比特币区块链上,6次确认基本上可以保证比特币不会被双花。

10.P2P网络

P2P网络(点对点网络)是一种分布式应用架构,它在对等点之间分配任务和工作负载。它是应用层点对点计算模型形成的一个群体。网状或网状形式。因此,从字面上看,P2P可以理解为点对点计算或者点对点网络。 P2P网络示意图如图2-5所示。国产迅雷软件采用P2P技术。

区块链系统基于IP通信协议和分布式网络。它不依赖于传统的电路交换,而是建立在网络通信之上,完全通过互联网交换信息。网络中所有节点地位平等,不存在专门的中心节点或层级结构。每个节点将承担网络路由和数据块验证等功能。网络的节点根据存储数据量可以分为全节点和轻量节点。全节点存储自创建区块以来的所有区块链数据(比特币网络现在大约有数十GB,并且仍在增长)。

全节点的优点是不需要依赖其他节点进行数据验证。可以自行完成验证、更新等操作。缺点是硬件成本较高。轻量级节点只需要存储部分数据信息。当需要其他数据时,可以通过简化支付验证(SPV)向邻居节点请求所需数据,完成验证更新。

11. 加密算法

除了哈希算法之外,比特币中还有一种非对称加密算法(椭圆曲线密码学)用于加密交易。非对称加密算法是指存在一对数学上相关的密钥。使用其中一个密钥加密的数据信息只能使用另一个密钥解密。在这对密钥中,公开的密钥称为公钥,不公开的密钥称为私钥。例如,公钥就像银行帐户,私钥就像帐户的密码或帐户所有者的签名。

区块链上的有效交易都有由交易发起者的私钥签名的有效数字签名,并且可以使用交易发起者的公钥来验证交易的签名。公钥可以通过私钥通过算法计算出来,但私钥不能从公钥推导出来。比特币系统采用了一种非常典型的非对称加密算法,——椭圆曲线加密算法(ECC)。

比特币系统一般采用来自操作系统底层的加密安全随机源的256 位随机数作为私钥。私钥总数为2256,因此很难通过遍历所有可能的私钥来获得与公钥相同的数字。对应的私钥。用户使用的私钥也将通过SHA256和Base58转换为易于写入和识别的50位私钥。公钥将首先使用私钥和Secp256k1椭圆曲线算法生成65字节的随机数。

一般情况下,比特币钱包的地址也是由公钥生成的。生成过程是首先对公钥进行SHA256和RIPEMD160双重哈希运算,生成20字节长度的汇总结果(即Hash160结果)。这将作为比特币地址的主体信息,前面添加版本前缀0x00,最后添加4字节的地址校验码。地址验证码是通过对摘要结果进行两次SHA256运算并取哈希值的前4位生成的。最后采用Base58处理,将连接的版本前缀、主体信息和校验码转换成易于识别的比特币字符地址。

12.数字签名

数字签名就是在消息末尾添加另一段内容作为发送者的证明,证明消息没有被篡改。一般情况下,发送方使用哈希算法对信息进行处理,得到哈希值,然后使用私钥对哈希值进行加密,得到签名。然后,发件人将消息和签名发送给收件人。接收方使用发送方的公钥解密签名,恢复哈希值,然后使用哈希算法验证消息的哈希值与解密签名恢复的哈希值是否一致,从而识别消息是否来自或验证信息是否已被篡改。

13. 比特币的隐私模型

传统的隐私模型为交易参与者提供了一定程度的隐私保护。第三方不会泄露交易者的个人身份信息。公众所知道的是,一个人向另一个人发送了一定数量的货币,但很难将交易与特定的身份识别人员联系起来,公众无法知道那个人是谁。这与证券交易所发布的信息类似。每笔股票买卖的时间和交易量均被记录并可供查询,但交易各方的身份信息不会公开。但事实上,交易双方的个人信息均存储在第三方机构中,因此在一定程度上仍存在交易参与者隐私信息泄露的风险。

在比特币隐私模型中,所有交易都不需要第三方控制,也不需要提供任何身份信息。你只需要提供一个比特币地址就可以与任何人完成准匿名交易。比特币交易可以逃避监管,因为交易无法追溯到交易者本身。不过,通过对区块链上的交易地址和交易金额进行相关性分析,也可以获得交易者的线索。因此,比特币交易并不是纯粹的匿名交易机制,而是伪匿名交易机制。

框架及特点

1. 框架介绍

目前区块链技术的应用大多与比特币类似,且大多是比特币架构的扩展。目前,区块链技术在金融行业受到广泛关注,被认为用于从底层重构传统金融行业现有的IT基础设施。我们将区块链基础设施分为三层来解释。

首先,在网络层之上,区块链是一个基于IP通信协议和点对点网络的分布式系统。与传统的有中心的分布式系统不同,它不依赖中心化的服务器节点。转发消息,各个节点参与转发消息。因此,P2P网络比传统网络具有更高的安全性。如果任何一个节点受到攻击,都不会影响整个网络。所有节点都保存着整个系统的状态信息。

其次,在数据层面,区块链是一个只能追加不能更改的分布式数据库系统,是分布式账本。如果是公有链,也就是公有链,那么这个账本任何人在任何地方都可以查询,是完全公开透明的。在区块链网络中,节点通过共识算法来维护网络中账本数据库的一致性。

同时采用密码学签名和哈希算法,保证数据库不可篡改、不可伪造、可追溯。例如,在比特币系统中,只有当网络算力被控制到51%时,才有可能重组区块链来修改账本信息。因为比特币系统的设计者中本聪巧妙地将带有经济激励的挖矿工作量证明(PoW)机制加入到系统设计中,即使是拥有超过51%网络算力的人也不会伤害自己。对网络发起攻击以获取利润。因此,比特币系统自上线以来已经正常运行了7年多,没有出现过因比特币系统本身缺陷而导致的安全故障。

第三,在应用层面,我们可以用区块链来替代传统的登记清算系统。 2016年6月22日,波士顿咨询集团指出,到2030年,全球支付业务收入预计将达到8070亿美元。基于区块链技术的兑换和支付属于区块链1.0应用版本,其安全性、交易时间、成本都将对传统支付业务做出颠覆性的改进。花旗银行还明确指出,到2020年,如果所有主要金融机构都采用区块链技术,每年可节省超过200亿美元的成本。

国信证券的分析报告指出,利用区块链的点对点分布式时间戳服务器生成按时间排列记录的电子交易凭证,可以解决双重支付问题,从而带来零结算成本的可能。根据德意志银行援引波士顿咨询集团的研究报告,欧洲银行的IT成本支出平均占银行整体运营成本的16%[5]。一个重要原因是传统银行在维护账本、结算和清算支付交易方面的结构过于复杂,维护成本过高。

在应用方面,区块链平台可以为用户编写智能合约提供编程环境。通过智能合约,可以将业务规则转换为在区块链平台上自动执行的合约。本合约的执行不依赖受信任的第三方或人为干预。

理论上,一旦部署,满足合约执行条件就会自动执行。执行结果也可在区块链上供公众检查,提供合约的公平性和透明度。因此,智能合约可以降低参与合同建立、执行和仲裁的中介成本。区块链的智能合约为未来构建可编程货币、可编程金融乃至可编程社会奠定了基础。

2.建筑特色

区块链具有去中心化、数据库可靠、开源可编程、集体维护、安全可信、交易准匿名等特点。如果一个系统不具备上述特征,就不会被认为是基于区块链技术的应用。

(1) 去中心化

区块链数据的存储、传输、验证等过程都是基于分布式系统结构。整个网络不依赖于非中心化的硬件或管理组织。作为区块链的一种部署模式,公链网络中的所有参与节点都可以拥有平等的权利和义务。

(2) 可靠的数据库

区块链系统的数据库采用分布式存储,任何参与节点都可以拥有数据库的完整副本。除非能够控制系统中一半以上的算力,否则对节点上的数据库的修改将是无效的。

参与系统的节点越多,数据库的安全性就越高。而且区块链数据采用时间戳存储,为数据增加了时间维度,具有极高的可追溯性。

(3) 开源可编程

区块链系统通常是开源的,代码高度透明。公链的数据和程序对所有人开放,任何人都可以通过接口查询系统中的数据。并且区块链平台还提供灵活的脚本代码系统,支持用户创建先进的智能合约、货币和去中心化应用。

例如,以太坊平台提供了图灵完备的脚本语言,供用户构建任何可以精确定义的智能合约或交易类型。有关以太坊的更多信息,请参阅第2.2 节。

(4)集体维护

系统中的数据块由整个系统中所有具有记账功能的节点共同维护。任何一个节点的损坏或丢失都不会影响整个系统的运行。

(5)安全、值得信赖

区块链技术采用非对称密码学原理对交易进行签名,使得交易无法伪造;同时采用哈希算法,保证交易数据不易被篡改;最后,借助分布式系统中各节点的工作量证明等共识算法,利用强大的算力来抵御破坏者的攻击,确保区块链中的区块以及区块内的交易数据无法被篡改。不可篡改或伪造,因此具有极高的安全性。

(6)准匿名性

区块链系统使用与用户公钥挂钩的地址作为用户身份标识,不需要传统基于PKI(Public Key Infrastructure)的第三方认证中心(Certificate Authority,CA)颁发数字证书来确认身份。通过在全网节点上运行共识算法,建立网络中诚实节点对全网状态的共识,从而间接建立节点之间的信任。

用户只需公开自己的地址,无需公开自己的真实身份,并且同一用户可以不断更换地址。因此,区块链上的交易不与用户的真实身份挂钩,而只与用户的地址挂钩,交易具有准匿名性。

区块链技术的核心优势是去中心化。它利用哈希算法、数字签名、时间戳、分布式共识、经济激励等手段,在节点无需相互信任的分布式系统中建立信用,实现点对点交易。和协作,从而为中心化机构中成本高、效率低、数据存储不安全等普遍问题提供解决方案。

近年来,随着国内外研究机构对区块链技术的研究和应用,区块链的应用前景受到社会各界的高度关注,被认为是继大型机、个人电脑、区块链之后的下一个重大技术。互联网和移动/社交网络。计算范式的第五次颠覆性创新,是继血亲信用、贵金属信用、央行纸币信用之后,人类信用进化史上的第四个里程碑。它被视为下一代云计算的雏形,有望彻底重塑人类社会活动形式,实现当前信息互联网向价值互联网的转变。

区块链运营核心技术

1. 区块链链接

顾名思义,区块链是由区块组成的链。每个区块分为两部分:区块头和区块体(包括交易数据)。区块头包含用于实现区块链接的前一个区块的哈希值(PrevHash)(也称为散列值)和用于计算挖矿难度的随机数(nonce)。前一个区块的哈希值实际上就是前一个区块头的哈希值,计算随机数的规则决定了哪个矿工可以获得记录该区块的权力。

2. 共识机制

区块链与比特币一同诞生,是比特币的基础技术架构。区块链可以理解为基于互联网的去中心化记账系统。像比特币这样的去中心化数字货币系统需要区块链来保证诚实节点记账的一致性,而无需中心节点。因此,区块链技术的核心是一种共识机制,在没有中心控制的情况下,彼此没有信任基础的个人之间就交易的合法性达成共识。

目前区块链共识机制主要有四大类:PoW、PoS、DPoS、分布式共识算法。

(1)工作量证明

PoW(Proof of Work),这是一种像比特币一样的挖矿机制,矿工将尚未被网络记录的现有交易打包成一个区块,然后继续遍历并尝试找到一个随机数,从而使新的区块添加随机数哈希值满足一定的难度条件,例如前10位为零。找到一个满足条件的随机数相当于确定了区块链的最新区块,也相当于获得了区块链本轮的记账权。

矿工在网络中广播满足挖矿难度条件的区块。在验证该区块满足挖矿难度条件并且该区块中的交易数据符合协议规范后,全网其他节点将将该区块相互链接起来。到自己版本的区块链,从而在全网形成对当前网络状态的共识。

优点:完全去中心化,节点自由进出,避免建立和维护中心化信用机构的成本。只要网络破坏者的算力不超过网络总算力的50%,网络的交易状态就可以保持一致。

缺点:目前比特币挖矿造成大量资源浪费;此外,挖矿的激励机制也导致矿池算力高度集中,背离了去中心化设计的初衷。更大的问题是PoW机制需要很长时间才能达成共识,并且每秒最多只能完成7笔交易,不适合商业应用。

(2)权益证明

PoS是一种分布式共识机制,需要节点提供一定数量代币的证明来争夺区块链记账权。如果单纯依靠代币余额来确定记账人,必然是富人获胜,导致记账权的中心化,降低了共识的公平性。因此,不同的PoS机制在权益证明的基础上采用不同的方法来增加记账。权利的随机性避免了中心化。

例如,在PeerCoin PoS机制中,链龄最长的比特币获得记账权的机会更大。 NXT和Blackcoin使用一个公式来预测下一个记账节点。您拥有的代币越多,被选为记账节点的概率就越大。未来,以太坊也将从目前的PoW机制切换为PoS机制。从目前掌握的信息来看,以太坊的PoS机制将利用节点对下一个区块进行下注。投注的获胜者将获得额外的以太坊货币奖励。没有获胜的人将被扣除以太币以就下一个区块达成共识。

优点:在一定程度上缩短了达成共识的时间,减少了PoW机制中的资源浪费。

缺点:破坏者攻击网络的成本较低,网络的安全性需要验证。另外,拥有大量代币的节点有更大的机会获得记账权,这会让网络的共识被少数富有的账户所主导,从而失去公平性。

(3)DPoS

DPoS(委托权益证明)机制,类似于董事会投票。比特股采用的PoS机制是股东投票选出一定数量的见证人。每个见证人都有两秒的时间按顺序生成区块。如果见证人在给定的时间片内无法生成区块,则将出块权限交给下一个时间片对应的见证人。股东可以随时通过投票更换这些见证人。 DPoS的这种设计使得区块的生成速度更快。

也更加节能。
优点:大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证。
缺点:选举固定数量的见证人作为记账候选人有可能不适合于完全去中心化的场景。另外在网络节点数少的场景,选举的见证人的代表性也不强。
(4)分布式一致性算法
分布式一致性算法是基于传统的分布式一致性技术。其中有分为解决拜占庭将军问题的拜占庭容错算法,如PBFT。另外解决非拜占庭问题的分布式一致性算法(Pasox、Raft),详细见本书第5章的共识算法。该类算法目前是联盟链和私有链链场景中常用的共识机制。
优点:实现秒级的快速共识机制,保证一致性。
缺点:去中心化程度不如公有链上的共识机制;更适合多方参与的多中心商业模式。
3.解锁脚本
脚本是区块链上实现自动验证、自动执行合约的重要技术。 每一笔交易的每一项输出严格意义上并不是指向一个地址,而是指向一个脚本。脚本类似一套规则,它约束着接收方怎样才能花掉这个输出上锁定的资产。
交易的合法性验证也依赖于脚本。 目前它依赖于两类脚本:锁定脚本与解锁脚本。锁定脚本是在输出交易上加上的条件,通过一段脚本语言来实现,位于交易的输出。解锁脚本与锁定脚本相对应,只有满足锁定脚本要求的条件,才能花掉这个脚本上对应的资产,位于交易的输入。通过脚本语言可以表达很多灵活的条件。解释脚本是通过类似我们编程领域里的“虚拟机”,它分布式运行在区块链网络里的每一个节点。
比特币的脚本目前常用的主要分为两种, 一种是普通的P2PKH(Pay-to-Public-Key-Hash), 即支付给公钥的哈希地址,接收方只需要使用地址对应的私钥对该输出进行签名,即可花掉该输出。 另一种是P2SH(Pay-to-Script-Hash), 即支付脚本的哈希。以多重签名来举例,它要求该输出要有N把私钥中的M把私钥(M≤N)同时签名才能花掉该资产,它类似于现实生活中需要多把钥匙才能同时打开的保险柜,或是多人签名才能使条约生效一样,只是它是自动执行。
比如在比特币中,P2PKH的脚本规则如下:
Pubkey script: OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG
Signature script:
P2SH的脚本规则如下:
Pubkey script: OP_HASH160
Signature script: [sig] [sig…]
在上述的两种脚本规则里,Pubkey script代表锁定脚本,Signature script代表解锁脚本。OP_开头的单词是相关的脚本命令,也是“虚拟机”所能解析的指令。这些命令规则根据Pubkey script的不同来进行划分,它也决定解锁脚本的规则。
比特币中的脚本机制相对简单,只是一个基于堆栈式的、解释相关OP指令的引擎,能够解析的脚本规则并不是太多,不能实现很复杂的逻辑。 但它为区块链可编程提供了一个原型,后续一些可编程区块链项目其实是基于脚本的原理发展起来的, 比如以太坊就是深入增强了脚本机制,脚本机制里不再单单是简单的OP指令,而是支持脚本的一套图灵完备语言,该脚本语言可以通过“虚拟机”去执行。以太坊实现了一个支持图灵完备脚本语言的区块链平台。
脚本的机制对于区块链来说非常重要,它类似于区块链技术提供的一个扩展接口,任何人都可以基于这个接口开发基于区块链技术的应用,比如智能合约的功能。脚本机制也让区块链技术作为一项底层协议成为可能。未来很多基于区块链的颠覆性应用,都有可能通过区块链的脚本语言来完成。
4.交易规则
区块链的交易就是构成区块的基本单位,也是区块链负责记录的实际有效内容。一个区块链交易可以是一次转账,也可以是智能合约的部署等其他事务。
就比特币而言,交易即指一次支付转账。其交易规则如下:
1)交易的输入和输出不能为空。
2)对交易的每个输入,如果其对应的UTXO输出能在当前交易池中找到,则拒绝该交易。 因为当前交易池是未被记录在区块链中的交易,而交易的每个输入,应该来自确认的UTXO。如果在当前交易池中找到,那就是双花交易。
3)交易中的每个输入,其对应的输出必须是UTXO。
4)每个输入的解锁脚本(unlocking script)必须和相应输出的锁定脚本(locking script)共同验证交易的合规性。
对于以太坊来说,交易还可能是智能合约的部署。交易规则就确定了符合一定语法规则的合约才能被部署在区块链上。
5.交易优先级
区块链交易的优先级由区块链协议规则决定。对于比特币而言,交易被区块包含的优先次序由交易广播到网络上的时间和交易额的大小决定。随着交易广播到网络上的时间的增长,交易的链龄增加,交易的优先级就被提高,最终会被区块包含。对于以太坊而言,交易的优先级还与交易的发布者愿意支付的交易费用有关,发布者愿意支付的交易费用越高,交易被包含进区块的优先级就越高。
6.Merkle证明
Merkle证明的原始应用是比特币系统(Bitcoin),它是由中本聪(Satoshi Nakamoto)在2009年描述并且创造的。比特币区块链使用了Merkle证明,为的是将交易存储在每一个区块中。使得交易不能被篡改,同时也容易验证交易是否包含在一个特定区块中,Merkle树说明详见4.2节。
Merkle树的一个重要使用场景就是快速支付验证,也就是中本聪描述的“简化支付验证”(SPV)的概念:轻量级节点(light client)不用下载每一笔交易以及每一个区块,可以仅下载链的区块头,每个区块中仅包含下述5项内容,数据块大小为80字节。
(1)上一区块头的哈希值
(2)时间戳
(3)挖矿难度值
(4)工作量证明随机数(nonce)
(5)包含该区块交易的Merkle树的根哈希
如果一个轻客户端希望确定一笔交易的状态,它可以简单地要求一个Merkle证明,显示出一个在Merkle树特定的交易,其根是在主链(main chain,非分叉链)上的区块头。
Merkle证明可以让区块链得到更广阔的应用,但比特币的轻客户有其局限性。虽然可以证明包含的交易,但无法证明任何当前的状态(例如:数字资产的持有,名称注册,金融合约的状态等)。一笔交易影响的确切性质(precise nature)可以取决于此前的几笔交易,而这些交易本身则依赖于更为前面的交易,所以最终你需要验证整个链上的每一笔交易。为了解决这个问题,以太坊进行了更进一步的创新。
以太坊的每一个区块头中并非只包含一棵Merkle树,而是包含了3棵Merkle树),分别对应了以下3种对象:
(1)交易(Transactions)
(2)收据(Receipts,基本上,它是展示每一笔交易影响的数据条)
(3)状态(State)
这三棵树允许轻客户端轻松地进行并核实以下类型的查询答案:
(1)这笔交易被包含在特定的区块中了吗?
(2)告诉我这个地址在过去30天中,发出X类型事件的所有实例(例如,一个众筹合约完成了它的目标)。
(3)目前我的账户余额是多少?
(4)这个账户是否存在?
(5)假装在这个合约中运行这笔交易,它的输出会是什么?
第一种是由交易树(transaction tree)来处理的;第3和第4种则是由状态树(state tree)负责处理,第2种则由收据树(receipt tree)处理。计算前4个查询任务是相当简单的。在服务器简单地找到对象,获取梅克尔分支,并通过分支来回复轻客户端。第5种查询任务同样也是由状态树处理。
7.RLP
RLP(Recursive Length Pref?ix,递归长度前缀编码)是Ethereum中对象序列化的一个主要编码方式,其目的是对任意嵌套的二进制数据的序列进行编码。
以太坊中的所有数据都以“递归长度前缀编码”(Recursive Length Pref?ix encoding,RLP)形式存储,这种编码格式将任意长度和维度的字符串构成的数组串连接成字符串。例如,[\’dog\’, \’cat\’]被串接(以字节数组格式)为[130,67,100,111,103,67,99,97,116];其基本的思想是把数据类型和长度编码成一个单独的字节放在实际数据的前面(例如‘dog’的字节数组编码为[100,111,103],于是串接后就成了[67,100,111,103])。
注意RLP编码正如其名字表示的一样,是递归的;当RLP编码一个数组时,实际上是在对每一个元素的RLP编码级联成的字符串编码。需要进一步提请注意的是,以太坊中所有数据都是整数;所以,如果有任何的以一个或多个0字节开头的哈希或者地址,这些0字节应该在计算出现问题的时候去除。以太坊中没有串接数据结构包含任何以0开头的数值。整数以大端基础(Big Endian)256格式存储(例如32767字节数组格式为[127,255])。
区块链交易流程
以比特币的交易为例,区块链的交易并不是通常意义上的一手交钱一手交货的交易,而是转账。如果每一笔转账都需要构造一笔交易数据会比较笨拙,为了使得价值易于组合与分割,比特币的交易被设计为可以纳入多个输入和输出,即一笔交易可以转账给多个人。从生成到在网络中传播,再到通过工作量证明、整个网络节点验证,最终记录到区块链,就是区块链交易的整个生命周期。
交易的生成。 所有者A利用他的私钥对前一次交易和下一位所有者B签署一个数字签名,并将这个签名附加在这枚货币的末尾,制作成交易单。
交易的传播。 A将交易单广播至全网,每个节点都将收到的交易信息纳入一个区块中。
工作量证明。 每个节点通过相当于解一道数学题的工作量证明机制,从而获得创建新区块的权力,并争取得到数字货币的奖励。
整个网络节点验证。 当一个节点找到解时,它就向全网广播该区块记录的所有盖时间戳交易,并由全网其他节点核对。
记录到区块链。 全网其他节点核对该区块记账的正确性,没有错误后他们将在该合法区块之后竞争下一个区块,这样就形成了一个合法记账的区块链。
来源: 火球财经
转载请注明“来源:FinPlus FinTech投资基金旗下自媒体FinTech猫观察(微信号:FinTechCat)”
FinTech 猫观察
每只猫需要花8分钟吃掉一条鱼,FinTech猫让你每天只需8分钟,就可以吃掉一篇行业动态或者标的研究或者深度解读又或者……
FinTech猫观察,国内首个专注于FinTech投资和加速的天使基金FinPlus旗下自媒体,以猫的态度玩转FinTech,敏捷快速的精华资讯、观察透彻的行业研究、角度全面的深度解读、沉稳深邃的冷静分析、硬派Geek的新潮科技,每天给你带来不同的啃食体验。
FinPlus,利用自身产业积累的资源发起FinPlus Wormhole 加速计划。FinPlus Wormhole 加速计划是FinPlus组织业内专家导师而设计的针对于所投的FinTech Startups 的加速课程,内容涵盖金融产品设计、运营规划、经营合规等十多个领域。 有正在FinTech领域创业的团队,可以将商业计划书投递到 BP@FinPlus.me。
FinPlus,旨在以FinPlus Fund + FinPlus Accelerator 的形式搭建行业生态系统FinTech Eco-System,与FinTech 产业链上下游的伙伴们一起,推动中国FinTech发展。
www.FinPlus.vc
本文来自FinTech猫观察,创业家系授权发布,略经编辑修改,版权归作者所有,内容仅代表作者独立观点。[ 下载创业家APP,读懂中国最赚钱的7000种生意 ]

免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。

为您推荐

以区块链为笔 描绘“数字文旅”新图景丨数据通信链谷·以风景谈链

坐拥7万平方米的办公空间, 汇聚近百家区块链企业, 静安区科技创新高地 在——《数据通讯谷》中, 一场关于传统与未来交织...

2024年 区块链技术的5大趋势 你跟上了吗?

亲爱的朋友们,2024年已经到来,区块链技术正在以前所未有的速度发展。今天,让我们一起探讨今年区块链技术的5大发展趋势,...

我国首个区块链专用计算硬件开放架构发布

记者8月30日从国家区块链技术创新中心获悉,我国首个区块链专用计算硬件开放架构BUDA(区块链统一设备架构)正式发布,并...

在这里 区块链正在悄然推动生产生活方式的改变

” 新生产力正在迅速改变我们的生产生活方式,区块链将是至关重要的基础设施之一。”静安区数据局负责人表示。“在线支付解决了...

在这里 区块链正在悄然推动生产生活方式的改变

” 新生产力正在迅速改变我们的生产生活方式,区块链将是至关重要的基础设施之一。”静安区数据局负责人表示。“在线支付解决了...
返回顶部