Parity 工程师 Wei Tang演讲的“如何在 Substrate 上建立 PoW 共识” Workshop
9 月 21 日 - 22 日,为期两天的 PolkaWorld Hackathon(波卡世界黑客马拉松)在杭州钱江新城的 B-LABS 圆满举办。21 号下午,Parity 和 Web3 基金会带来了三个干货满满的 Workshop。其中之一是Parity 工程师 Wei Tang演讲的 “如何在 Substrate 上建立 PoW 共识” Workshop。以下为超节点(SSSnodes)对其演讲稿的独家中文全译。感谢PolkaWorld提供的图片资料。

Substrate, Proof of Work and Consensus Engines
原作者:Wei Tang Parity
Substrate
Substrate 是建立区块链网络的基础设施之一,被设计用于波卡(Polkadot)网络的建设。
一个区块链项目需要的主要条件:
l 数据库后端(Database backend),状态后端(state backend),runtime执行器
l 交易池,区块提议者(block proposer)
l RPC, CLI,密匙圈(keyring)
l 联网(Networking)
可用于构建区块链的可组合库:
l 共识协议
l 许多runtime模型!
使得建立区块链网络更简便,最终能够支持所有区块链建于其上!
工作证明(Proof of Work)
一个区块链网络有许多初级的目标:
l 让参与者为了什么达成共识
l 使任何人都可以审核如何达成共识,并说服自己达成共识
区块链(链上的区块)是完成以下目标的方法之一:
l 定义一个状态,以及如何从一个状态转换到另一个状态
l 将状态交易集中到区块中。一个系列的区块组合成一条链
l 定义一种方法,找出每个人都可以同意的规范链
共识
l 验证人
l 硬分叉
确定化(Finalization)
工作证明(Proof of Work)
l 为给出的问题寻找解决方案(被定义为pre_hash, nonce,只能以“蛮力”解决)

l 哈希函数(Hashcash PoW)。验证的花费与一次证明尝试相同
| 图(Graph),素数(prime numbers)
Substrate上的工作证明
Substrate共识引擎
l Aura, BABE
l Grandpa (Finality)
l Casper
l RHD (拜占庭共识BFT consensus)
l PoW工作证明
通用的PoW:

共识和Runtime
l Runtime:执行状态
l 共识:选择区块链
l 观察:
n 通过允许共识使用来自runtime的数据,我们能够得到灵活性和在线升级
n 换句话说,允许共识引擎使用状态数据的权限
l 为了进行工作证明,我们可以通过将定义推迟到运行时来实现灵活的难度调整算法

l 然而,在当前的基板设计中将密封验证推迟到运行时是不安全的
编写Substrate的一个引擎

区块验证:
l 定义导入队列,或将基本队列与验证程序一起使用
区块提议:
l 任何需要导入块并连续导入块的函数
l 你通常希望它未来得以实现(want to make it a Future)