LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资产 > HPB研究院|区块链中交易处理流程和HPB的优化

HPB研究院|区块链中交易处理流程和HPB的优化

2021-02-04 芯链 来源:区块链网络

摘要

市面上有很多区块链系统,比如公链的以太坊(Ethereum),比特币(Bitcoin)或者是联盟链IBM的超级账本(Hyperledger),它们的交易结构都不尽相同,也使用不一样的曲线签名算法。共识也有许多种:工作量证明(POW)、权益证明(POS)、一致性算法(RAFT)等等。

各种区块链系统之间有很大差别,但在交易的处理流程方面却是大同小异的。所以本文将详细介绍一笔交易从组建到打包,整个生命周期所经历的各个环节以及HPB对其优化的方面。

1.区块链交易流程

交易的流程我们可以参考下图来说明,首先交易构建和签名需要客户端根据交易的功能比如是转账还是调用合约来构建一笔交易,包含发送方接收方转账金额等基础信息。因为交易涉及到了个人资产的安全性,区块链系统中为了避免交易被恶意攻击者篡改和伪造?,由钱包使用私钥来把这笔交易的内容进行签名。然后客户端通过网络协议把交易发送到节点的交易池中。交易池首先会验证它的正确性以及合法性,错误的交易会被踢出节点,正常的交易会留在池中,等待共识模块达成新的一轮共识。共识模块在达成一致时,将从交易池中拿到这些待处理的交易打包成一个区块,交给处理执行模块。处理执行模块根据交易的内容,执行用户想要的逻辑。执行完成后将结果,交易,区块都持久化到存储模块中,以便后续交易的执行和查询等操作。流程结束这笔交易也就完成了它的使命,永久地保存在链上了。

1.1组装和签名交易

交易的内容可能因为区块链系统有所不同,但是交易的主要构成都有发送方,接收方,转账金额,合约脚本,签名这几个内容。

当客户端根据需求组装好交易后,使用钱包找到这笔交易发送方的私钥,来对交易内容Hash进行签名,并把签名结果放在交易中,以便节点交易池收到后进行验证,检查交易的内容是否中途被人篡改。

1.2交易的广播

客户端将构建好并签名的交易通过网络协议(RPC或者HTTPS)发送到某个区块链网络节点上,这个节点会通过P2P协议,将交易广播到全网,其中也包含出块节点。出块节点把这笔交易进行打包。

1.3交易池处理

当节点的交易池接收到客户端或者P2P广播过来的交易,首先会对交易的正确性和合法性进行的验证。当基础验证验证通过后,这笔交易进入到交易池的缓存中,共识会打包区块并从交易池拿正确的交易。

1.4共识打包区块

以POW共识为例,共识模块首先会组装区块头,这个区块头包含前区块的哈希值,时间戳,默克尔树根哈希值,工作量证明(POW难度值),矿工用户地址等信息。区块的体则是从交易池拿到的正确的交易,从而组成一个完整的区块,交给执行模块去执行交易的内容。

1.5交易执行

区块链系统的执行模块会根据交易的类型和内容,修改账户状态。支持合约的区块链系统,执行模块都会有一个虚拟机,例如以太坊使用的是图灵完备的虚拟机EVM,比特币只有基于堆栈的脚本系统,因此其合约的功能会比以太坊的受限很多。

因为区块链系统是有很多个节点分布式的去执行交易,当执行模块拿到一个区块的所有交易,按照排序顺序去执行,每个节点执行的结果是一致的,大家拥有相同的账本。

1.6数据上链

当区块执行完毕后,会将执行的结果,交易和区块持久化到DB当中。当下一个区块生成的时候会包含前一个区块的Hash值,这样就形成了一条链。这条链越长,交易被推翻的可能性就越低,也就永久地保存在链上了。

2.HPB创新和优化

交易验证在区块打包和区块验证中占据了绝大部分时间,根据测试发现,以太坊的软件验证算法速度约4000次/秒,再加上前端交易池和区块同步两方面重复工作,有效的验证交易速度仅有2000次/秒,这对于采用非POW共识算法的区块链项目来说完全不能满足需求。

对此,HPB?首次提出了使用?FPGA硬件实现交易验证算法,依靠FPGA的大数运算和并发优势,以及相配套的驱动,将验证速度提高到了20000次/秒。

2.1硬件签名

传统的区块链项目,交易和区块的签名以及验签的处理过程都是基于软件层面来实现的,有处理性能低,延迟时间长等缺点。

针对以上问题,HPB创新性地设计了BOE(Blockchain Offload Engine)技术。它是一个异构处理系统,包括BOE硬件、BOE固件,以及预制匹配的体系软件,通过结合CPU在串行能力和FPGA/ASIC芯片的并行处理能力,实现高性能和高并发计算。

—-

编译者/作者:芯链

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...