Skip to content

Polkadot技术内探

Afanti edited this page Dec 24, 2020 · 18 revisions

概述

安全共享池。技术的力量和商业的力量造成不同的局面。两种计算范式的信任模型不同。共享安全下的多链系统。平行链负责应用方面的功能。中继链平行链相互交互,负责安全服务和安全通信。中继链网络按照角色来划分节点。

区块链状态

状态可以用一个关联数组只够来表示,关联数组是一个键值对集合,每一个键都是唯一性的。键和值是有限的字节数组。键值对构成了中继链的状态,中继链的状态使用默克尔树来进行组织。默克尔的树根表示当前中继链的状态。默克尔树提供验证一个键值对是否在这个树中的方法。为了控制状态数据的大小,对状态数据的应用范围进行限制,状态数据只能够用于质押和识别验证者等操作。

状态转移

外部的有序指令执行时,区块链的状态发生改变。中继链主要分为两个核心组件,一个是运行时,一个是运行时环境。状态转移函数的执行逻辑封装在运行时内,诸如网络通信、区块产生、共识引擎等共享性通用操作则封装在运行时环境中。

节点

节点、节点角色、节点角色所要遵从的协议和需要完成的操作。

区块产生过程

验证者的领导者打包交易,对区块进行提案。

数据结构

中继链上的交易使用多签名算法。账户身份标识、区块链身份标识。哈希算法和备用哈希算法。区块头、区块、区块身份标识。交易在不同场景下的身份id,数据类型多为整型,但是长度可能不同。与交易相关的错误为枚举类型,定义不同类型的交易错误。在枚举类型的基础上,添加各种格式化的输出方法。与智能合约相关的操作也定义为枚举类型,主要有两种操作,一种是创建新的智能合约。另外一种是调用智能合约。 账户的基本构造以及两种形式。分为用户账户和合约账户,每个纪元都有一个标识符,每个纪元用一个纪元号码来表示。纪元表示区块链中重要的时刻节点。交易是个结构体的数据类型,交易索引描述交易在区块中的位置,交易索引由两个重要的特征值字段构成,分别是交易摘要和索引值。 使用多个内部合约来满足系统维护和链上治理的需要,起码有三个内部合约:管理员合约、质押合约和白名单控制合约。

合约与状态

质押机制和存储空间占用之间的关系,质押为空间存储空间提供一种价格和收费机制,也为分布式治理提供一个投票权利大小的机制。质押合约为账户记录质押的信息。质押资金的利息在质押资金提取的时候发放。利息的大小取决于质押期间,质押期间使用区块高度差来表示。 区块链的状态、状态管理、快照管理和存储管理。

网络

节点的限制:节点个数与IP地址之间的关系,节点个数与子网之间的关系。是否考虑限额?会话和连接的关系是怎样的?会话应该是连接之上更上层的封装,建立连接之后,还需要达到额外的条件才是会话。会话和会话数据包,使用文件来管理节点。构造了节点表和节点数据库两个概念对象,但是数据的存储和解析都是使用json进行文件的读写。数据报文和不同协议的通道。网络服务是在不同的节点之间建立起来的点对点通信,管理节点之间的连接,使用事件的循环和线程池。使用文件或者目录来组织独立的模块,采用控制器和服务器层次调用模式。 分支标识符和控制符,区块链的测试方法,将区块写入到数据库。在命令行参数中提供节点标识符的产生方式,提供交易的重放,提供区块链的统计,提供区块的迁移、导入和导出的操作。键值对数据库的导入和导出方法。数据库的升级是在判断数据库版本的基础上决定是否要进行升级的操作。编写入口函数,变成可执行程序。 使用文件锁防止文件被多次打开,一次只有一个操作和进程打开文件。使用文件是否打开作为锁定的判断依据。区块的数据分解成数据文件和索引文件。数据类型和结构的定义单独的使用一个名副其实的文件来编写。区块高度和哈希锁的封包和解包。如何阅读源代码?共享的方面包括区块链数据库、交易池控制器、通知控制器、共识、快照管理器和异步处理函数。

密码学

使用不同的密钥和密钥类型来代表不同的权限和功能。账户密钥分为用户密钥和会话秘钥。持有代币的密钥进行锁定之后可以参与区块链中的事务决策。 会话密钥主要与共识和安全相关。会话秘钥由控制密钥签名所产生。任何时候,控制密钥可以暂停或撤销会话证书,颁发新的会话秘钥。

源码剖析

运行时

运行时围绕运行时接口提供类型、接口和宏定义,运行时接口是运行时和节点之间的固定约定接口。运行时接口的实现可以是本地实现,也可以是远程实现。

节点授权

节点授权模块管理节点的可配置列表,搭建联盟链。每个节点有一个节点id,节点身份类型整数向量。节点的授权有两种方式,第一种方式是用户对每个节点可以主张所有权,管理节点的连接;第二种方式是节点挂靠不同的组织,不同组织下的节点可以相互互联。

Pallet

交易的权重,定义一些权重的产量。交易支付相关的费用交易和不支付相关的费用。权重是一个类型,等价于整数类型,是整数类型的别名。交易的优先级。 链下模块可以提供的功能:提交一个原始未签名的交易;提交一个交易体签名,整个交易未签名的交易;提交一个签名后的交易。

未来展望

从地址簿中分解出发现机制,创建一个更加安全的网络拓扑。可信验证人集合中的节点之间的连接可以进行透明化的验证。地址隐私和可信验证,满足节点不同安全需求的多样性。中继链有单一网络变成网状网络。研发平行链的平行线程轻量级模式。

参考文献

  1. https://eprint.iacr.org/2020/641.pdf