简介

 

基本定义

Wisdom Chain(简称:WDC;中文:智慧链)是一个面向商业应用的基础公链,其功能设计围绕着资产定义、多重签名以及条件支付和存证来进行,以稳定安全与多方自治为设计原则,在性能、安全性以及系统的开放性设计上引入了独特的技术栈实现方式。对于一个基础公链来说,密码技术、共识机制、P2P网络层、账本存储层以及脚本系统是最核心的五大基础模块,Wisdom Chain在这五大模块的设计上吸收了前人的优点也借鉴了很多的缺陷教训,并且在基础上进行深度的研究创新。

Wisdom Chain技术特点

1.技术特点

Wisdom Chain作为公链,在技术设计上采用了如下的基本机制:

2.系统组成

Wisdom Chain是一个公链,同时也包含一套工具组,用于实现节点部署、浏览器、节点服务监控以及综合数字钱包等功能。

3.1.基本数据结构
编号 字段名 作用 类型 说明
1 nVersion 区块头版本号 Int32 默认为 0
2 hashPrevBlock 上一区块头哈希值 Byte[] 32字节/SHA3-256位
3 hashBlock 当前区块哈希值 Byte[] 32字节/SHA3-256位
4 hashMerkleRoot 交易树梅克尔根哈希 Byte[] 32字节/256位
5 hashMerkleState 状态树梅克尔根哈希 Byte[] 32字节/256位
6 nHeight 区块高度 Int32  
7 nTime 区块时间戳 Int32 大于上一区块时间戳,并小于未来时间8分钟内
8 nBits 难度目标值 Byte[] 32字节
9 nNonce 随机数 Byte[] 32字节
10 blockNotice 见证者短语 Byte[] 32字节
3.2事务结构
编号 字段名 作用 类型 说明
1 nVersion 事务版本 Byte  
2 TxHash 事务哈希 Byte[] 32字节/SHA3-256
3 TxType 事务类型 Byte 1个字节
4 AccountNonce 防止重放攻击 Int64 无符号64位
5 From 签发者公钥 Byte[] 32字节
6 GasPrice 手续费单价 Int64 无符号64位
7 Amount 转账金额 Int64 无符号64位/根据不同的事务类型,转账金额可以分别表示普通转账、孵化、利息提取等
8 VRS 签发者的签名 ??? 签名
9 To 接收者公钥哈希 Byte[] 20字节/Hash160产生/如果是存证,则全部填零,若是投票,填写目标的公钥哈希
10 Payloadlen   Byte[] 4个字节
11 Payload 字节数组 Byte[]  

4.密码机制

Wisdom Chain在设计中,使用的密码算法包含如下:

I、keystore的生成与解析

包含ARGON2ID/AES-256-CTR/SHA256/RIPEMD-160/base58算法

II、椭圆线签名以及公钥验证

使用Curve25519,实现ed25519以及对应的ECDH

III、区块头哈希以及事务哈希

使用SHA256

IV、共识哈希

见如下的【混合共识机制】中的说明

以上所有的密码算法都符合国际密码技术标准

5.混合共识机制

具体来说,共识机制的协议如下:

1)、采取PoW与DPoS的混合,对于DPoS的加入,社区节点通过抵押以及投票,动态选出每

一个纪元的前15名作为矿工。

2)、对于PoW,机制比较简单,就是在创世区块设定一个难度目标值,作为难度1,然后每个

挖矿节点进行一个哈希计算,哈希计算出来的值小于难度目标值就算是获得了打包权。

3)、而这个哈希计算,是一个计算公式,具体来说,是将如下参数连接起来,

 

进行两次256哈希计算,如果计算出的值小于目标难度值,就成功代码结构如下:

 

我们使用8种哈希算法,分别为:

 

 

哈希计算的参数为:

1)、区块版本

2)、上一个区块的哈希值

3)、梅克尔根

4)、时间戳

5)、难度目标值

6)、随机数

注意,8种哈希计算的顺序并不是固定的,是根据上一个区块头的哈希值的最后4个字节,比如是0x7da009b8

则根据上述8个哈希算法的数字标号,进行相应顺序的调用。

6.验证式规则系统

对于公链的设计,安全机制是一道非常重要的防线,在公链上部署运行的是资产数据,必须达到银行级的安全才能在互联网公开运行,传统的虚拟机执行系统,往往会被动支持内部触发机制,无法保证资产的安全,并且在执行过程中,节点无法验证合约程序的行为。WisdomChain采取独特设计的验证式规则系统,设计了一套特有的语法,完全支持外部触发,并且节点可进行完整的格式以及行为验证。

在验证式规则系统中,攻击者无法通过构造特殊的脚本程序来实现如堆栈溢出、事件回调死循环等攻击,验证引擎在遭到黑客攻击的时候,最多延缓验证栈的验证效率,但是无法窃取用户资产,更不会导致用户资产的丢失。