汪晓明对区块链、以太坊的思考

记录创业、生活的所思所感,探讨去中心化思想,推动区块链的发展。

HPB61:HPB BOE 版卡功能介绍

BOE功能介绍

BOE(Blockchain Offload Engine)系统是区块链卸载引擎的缩写,利用硬件FPGA的并发处理能力对区块链节点上的交易、区块等处理过程进行加速。共识算法也与BOE的伪随机序列深度结合,以保证网络内节点能够快速、稳定、安全的运行。下面分别从交易验签和伪随机序列两个方面详细介绍BOE的工作流程。

1 交易验签

在HPB中,从整体上看交易的处理流程有下面几步:

  • 从客户端收到交易数据

  • 由BOE恢复公钥,得到发送者的公钥

  • 根据公钥计算发送者的账户地址

  • 根据账户余额和Nonce验证交易的合法性

  • 交易合法则放入交易池等待打包入块

  • 入块后交易完成

    flow1

​ 图1 交易流程图

其中第二步恢复公钥为BOE的主要工作,恢复公钥的主要流程:

  • 主程序将交易数据打包成网络包
  • BOE从网卡接收数据
  • 协议模块进行协议解析
  • 根据运算类型放入对应的任务队列
  • 任务调度模块将任务从队列中放到 ECC运算模块
  • 重组数据包,将结果发给网卡
  • 主程序接收到BOE返回的数据,解析后得到公钥

​ 图2 BOE框图

2 共识算法随机序列

HPB的共识算法(Prometheus)与BOE的结合之处在于每一次的出块节点是通过BOE产生的伪随机序列来指定的.

其主要过程如下:

  • 各节点准备生成区块
  • 从前一个块头中获取Hash序列
  • 根据当前的Hash送给BOE计算得到NewHash
  • 根据NewHash与当前快照中的节点总数取余,得到本轮次的出块节点索引
  • 如果本节点并不是上面计算得到的出块节点,那么将延时一段时间
  • 如果本节点是上面计算得到的出块节点,那么马上生成区块并广播出去
  • 其他节点同步到区块后,重复执行步骤 2-4 验证该区块的生成者是否为选出的出块节点

flow3

​ 图3 BOE出块流程

其中计算随机数是BOE的主要工作,计算随机数的主要流程:

  • 主程序从块头中获取当前的序列Hash,组成网络包发给BOE
  • BOE从网卡接收数据
  • 协议模块进行协议解析
  • 根据运算类型放入对应的任务队列
  • 任务调度模块将任务从队列中放到 随机序列运算模块
  • 重组数据包,将结果发给网卡
  • 主程序接收到BOE返回的数据,解析后得到NewHash

1548774223928

​ 图4 BOE工作框图

我们创立了HPB的技术讨论专栏,如有任何技术问题,请访问HPB Talk

感谢HPB技术团队整理。

关于我

蓝莲花(汪晓明):HPB芯链(hpb.io)创始人,巴比特专栏作家。十余年金融大数据、区块链技术开发经验,曾参与创建银联大数据。主创区块链教学视频节目《明说》30多期,编写了《以太坊官网文档中文版》,并作为主要作者编写了《区块链开发指南》,在中国区块链社区以ID“蓝莲花”知名。2018年6月9日, HPB芯链荣登《2018胡润区块链企业排行榜》区块链创新企业TOP50。

公众号
小明微思考公众号

HPB

« HPB60:HPB共识算法选举机制描述 HPB62:HPB开发节点搭建指南 »