区块链
HNB 是下一代基于区块链的去中心化经济体,旨在建立服务实体经济体的可持续发展的经济模型。从技术层面来讲,HNB 是一个支持具有多侧链架构且支持多数字资产流通的区块链技术体系,用于建立基于公有区块链的去中心化经济生态。基于 HNB 的业务理念和发展规划,我们对市场上现有的区块链项目和技术进行了分析和梳理,ᨀ出了实现 HNB 区块链经济模型的技术方案。
本文详细阐述了 HNB 公有区块链的设计原则,整体技术架构,以及核心技术的实现方法。本文主要描述的核心技术包括身份管理,共识机制,数据存储,多资产账本,交易管理,智能合约,节点管理,网络通信和密码学算法等。同时结合实体经济应用,技术白皮书还介绍了 HNB 的去中心化应用 DApp 体系、应用场景例如算法银行等的方面的内容。
设计原则
HNB 被设计用于建立服务实体经济体的可持续发展的经济模型。HNB 为下一代基于区块链的去中心化经济体打造,目标为上亿消费者和商家的生态圈ᨀ供服务,其经济规模和社区成员会随着生态圈的扩大而不断壮大。因此,HNB 区块链的设计原则为:
可扩展性 Scalability
•可支撑HNB社区的持续增长, 包括区块链底层节点数的增长、更多商户的接入、用户数增加等
高性能High Performance
•支持数百万用户和并发事务,可支持大并发交易峰值的处理,降低交易确认延时,秒级共识效率
安全性 Security
•在应用和基础设施级别的强安全性,保护商业数据和个人数据的隐私性
互操作性 Interoperability
•支持与现有系统的快速集成和持续开发,便于与其他区块链系统和应用系统对接
综合上述应用场景的考虑,我们设计 HNB 区块链具备以下的特性:
• 创新的共识机制,可支持多节点快速共识
• 双链双数字资产:HNB 和 HGS; HGS 与法币锚定的调控机制;
• 算法银行调控汇率稳定
• 健壮有机的 DApp 集和灵活的轻量级 SDK 支持商户应用对接集成
• 支持智能合约和支持多侧链模式
• 高性能和高可扩展:支持。链外极速网络等技术
• 强大的安全性和加密处理能力
整体技术架构
1. HNB 生态技术架构
HNB 生态技术架构遵循层次化、模块化的设计理念,强调框架的可扩展性、可交互性、性能和安全性。HNB 生态技术架构是包含底层区块链模块以及其相关的外围生态组件的集合体,是基于用户层、HNB 业务服务层、区块链核心层、基础组件层和通用服务层的结构化设计。
用户层
用户层是终端用户的接入点。用户通过用户层访问 HNB 区块链服务。从技术角度来看,HNB 终端用户服务的特性由后续章节的去中心化应用DApp 服务支持,包含数字钱包、数字资产管理等功能。
HNB 业务服务层
HNB 业务服务层实现了 HNB 去中心化经济社区的所有核心业务逻辑。从技术角度来看,HNB 的 DApp 去中心化应用为该层提供服务支持。
区块链核心层
区块链核心层,即 HNB 区块链底层,具备共识机制、账本管理、多资产管理、资产交易管理、智能合约等区块链核心功能。
基础组件层
主要为区块链核心层ᨀ供分布式基础组件,包括:分布式数据库、分布式存储、分布式网络。其中,数据库和存储服务支持可插拔,为社区参与者ᨀ供了更多的选择空间和更广泛的业务支撑能力。
通用服务层
通用服务层为上述四层的模块ᨀ供服务,包括:安全、审计、运维等功能。
2. HNB 底层链技术体系
HNB 底层区块链技术体系,是针对生态技术架构的区块链核心层、基础组件层和通用服务层的进一步细化设计。
HNB 区块链技术体系同样采用层次化和模块化的设计思想,分为合约层、共识层、激励层、数据层、网络层、安全层、基础层的七层架构。
合约层
合约层即智能合约服务层,为智能合约的生命周期管理、运行成本管理、运行环境、形式化证明逻辑提供服务。HNB 的智能合约支持采用 golang、JavaScript 等高级语言编写,满足图灵完备的特性,其成熟的运行环境保障合约运行的安全可靠。
共识层
共识层,采用 DPoS 与 Algorand 结合的混合共识算法,鼓励 HNB 社区内贡献多的节点参与记账,同时基于加密抽签保证共识提案人的公平选举,最终以 bft 共识算法保证共识的高效和一致。
激励层
激励层,基于 HNB 生态中算法银行的设计,公开、透明、统一的管理激励策略,对社区内贡献度较高的节点,进行激励 HGS 数字资产。
数据层
数据层,作为 HNB 基础设施层中分布式数据库和分布式存储模块的细化,在区块链底层技术架构中体现出来。主要为区块链的分布式数据库、分布式文件存储ᨀ供基础存储服务,同时支持 HNB 双资产账本管理。
网络层
网络层,作为区块链底层的网络通信基础模块,主要包含:区块链底层对应用层提供的访问接口、区块链节点间 P2P 组网、区块链节点间广播数据的用途。
安全层
安全层,从通信安全、数据安全、合约安全、密码安全的维度分析 HNB 对高安全区块链底层的方案设计。
基础层
基础层,为区块链底层ᨀ供通用的基础服务。包含:密码学算法库、节点管理、多资产链管理、账户管理、交易管理、事件管理等。
身份管理
1. 身份标识
1.1 去中心化身份标识
传统身份标识是对人本身进行识别,识别方式有:身份证、户口簿、驾照等。随着技术发展,指纹、DNA 等新兴身份识别方法逐步应用。在互联网世界中,所有事物非实体存在,需要网络标识来映射与管理实体身份。
HNB-ID 是根据用户的 HNB 公钥进行数学算法计算得到。HNB-ID 不需要通过中心化系统计算生成,也无需通过中心化系统进行冲突检测,由用户自身生成与管理。
1.2 隐私保护
HNB-ID 生成算法决定根据 ID 无法推导公钥信息,根据公钥信息也无法与用户其他身份属性信息进行关联。真正意义的做到了保护用户隐私。
1.3 自证身份
HNB-ID 与用户公钥具有一一映射关系,用户可通过身份验证算法证明该 HNB-ID 属于某线下实体,以便进行其他商业活动。
2. 身份注册
HNB 支持可配置的节点准入机制,加入 HNB 生态需要进行节点授权。该授权需要由 HNB证书授权中心 CA(Certificate Authority )中心颁发证书,表示允许某 HNB-ID 加入到 HNB 生态。与 HNB-ID 关联的属性信息将不会被发送至 HNB 公链底层。节点启动、网络组建时,将带有 CA颁发的证书信息发送至其他节点,表明被授权身份。
3. 信任模型
3.1 密钥生成安全
密钥生成过程在离线钱包中进行,用户私钥不能以任何形式在网络上传输,保证攻击者无法盗取用户密钥,杜绝盗取 HNB 的可能。
3.2 密钥托管安全
根据用户需求,HNB 支持密钥托管服务。用户可将密钥交给分布式私钥服务器进行管理,密钥存储过程使用对称加密,加密密钥由用户以其他形态进行管理。即使私钥服务器被攻破,攻击者无法还原用户私钥。
3.3 身份注册安全
用户进行身份注册过程中,用户将实体属性信息与 HNB-ID 进行绑定,并发送至证书授权中心 CA 中心,CA 中心验证实体身份后颁发证书。HNB 系统对用户实体属性信息进行非对称算法加密,中间人无法解析交易报文并获取关联信息,从而在最大程度上保护用户隐私。
如下图所示,Alice 身份注册时,需要将实体信息与用户公钥信息进行打包,使用证书授权中心 CA (Certificate Authority )的公钥对信息数据进行加密,保证传输安全。同时使用 HTTPS协议进行安全通信,这样使用了双重加密机制来保护数据安全和用户隐私。
共识机制
对于任何一个去中心化自治系统,其共识机制往往是社区信任建立的根基。共识是用来来描述了整个区块链系统中多个节点之间,对某个状态达成一致结果的过程。要保障系统满足不同程度的一致性,往往需要共识算法来达成。有效的共识算法解决的是对某个提案达成一致意见的过程,这里的提案可以指任何能达成一致的信息,无论是基础的区块产生和校验还是社区运行的规则。
1. 区块链不可能三角
CAP 定律(一致性 Consistency,可用性 Availability,分区容错性 Partition Tolerance Theorem)是指在一个分布式计算机系统中,一致性,可用性和分区容错性这三种特性,无法保证同时得到满足,最多同时满足其中的两个特性;系统设计者需要根据不同的需求进行取舍。
在区块链共识算法设计上,我们把焦点集中在了 SDE(安全 Security, 去中心化Decentralization, 和效率 Efficiency) 三大核心特性上。 安全,去中心化和效率构成一个不可能三角形,三者不能同时满足。如果我们设计一个安全的去中心化系统,它必然是以牺牲效率,以付出能源与计算力为代价(比如比特币的工作量证明机制)。我们要求设计一个既保证效率又去中心化的密码学货币,它将会是不足够安全的。
目前的主流的共识机制为 PoW/PoS/DPoS/PBFT,经典的 PoW,满足安全和去中心化的要求,但是效率非常低下,达成共识的时间很长; PoS 满足去中心化和效率,但是安全性不足,其确认仅仅为概率上的表达而没有所谓的“最终确认”,具有遭受攻击的可能,此外在机制设定上很难避免无利益攻击(nothing-at-the-stake attack)。DPoS 满足效率,但是去中心化不足,容易被少数利益集团的节点把持,导致单个节点存在作恶的可能。单纯的 PBFT 虽然满足去中心化和效率,但是当节点数增多时网络开销就会变得很大,很难在短时间内得出共识,并不适合大型网络。
我们分析了 HNB 当前应用场景与经济模型,效率应当是首先被考虑的,需要支持更大的并发事务和高性能。同时作为一个围绕支付作为核心的系统,在保证低延迟的前提下,需要避免出现双花问题,因此安全可靠也是至关重要的。基于上述分析,HNB ᨀ出了 DPoS+Algorand 的算法,通过 DPoS 进行共识组的选举,然后 Algorand 进行区块的生成。
基于这样组合的共识算法,主要的优势为:
· 利用身份属性的 Dpos 选出的节点充分考虑了利益分配和公平性,避免了单一群体作恶的情况。
· 共识达成速度较快,且速度不会随着系统节点增多而降低,能够支持海量节点。此外利用Dpos 来竞选候选节点会比利用 Algorand 来纯粹随机挑选普通用户更为稳定和相对高性能的配置
· 记账者完全随机且隐秘,无法对其产生特定攻击
· 在保证安全性的前ᨀ下不做无意义的运算,节省算力资源
· 单一记账者出现分叉的概率接近 0,容错率高
2. HNB 共识算法
2.1 共识算法概要
HNB 底层链采用 DPoS + Algorand 共识算法,提议者为从 HNB 社区选出的 99 名委员会成员,被分成 3 组,代表 3 个不同的利益集团,分为:消费者、生产者(或商户)和贡献者。DPoS 将从三大利益团体中选举提议者,并且保证没有单一利益群体持续获得提议权。
块提议流程将使用加密抽签方法(Verifiable Random Function,简称 VRF),随机选择提议者,加密抽签每次根据前块数据信息选择提议者,保证提议者选择的绝对随机性。攻击者无法预测、修改下一轮次的提议者,增加系统容错能力。
BA*流程将使用拜占庭容错算法在提议者间进行共识,HNB BA*算法利用多轮交互保证最终提议块在提议者间绝对一致性。BA* 两轮投票必须票数大于 2/3 才能进入下一流程,保证永远不会出现共识分区、区块分叉等问题。
2.2 提议流程
• 具体步骤
1. 广播自己最新块的状态信息,并接收其他节点的状态信息。
2. 检查自己是否落后,如果落后则进入同步流程,否则进入步骤 3。
3. 更新配置信息,更新共识节点资产表。
4. 各个节点独立计算提议者列表。(根据上一个块的信息和资产表来计算)
5. 如果自己是提议者,去交易池获取交易构建提议消息。(提议者不止一个)
6. 把提案消息广播给 BA*共识组。
• 实现说明
抽签需要一个角色(role)参数来区分用户可以选择的不同角色; 例如,用户可能在某个回合中被选择提出一个块,或者在 BA⋆的某个步骤他们被选择为委员会的成员。 Algorand 指定了一个阈值τ,用于确定为该角色选择的用户的预期数量。
在 VerifySort 算法中显示了用于验证抽签证明的伪代码,遵循相同的结构以检查是否选择了该用户。 该函数返回所选子用户的数量,如果用户没有被选中,则返回 0。
2.3 同步流程
• 具体步骤
1. 判断自己是否可以快速同步,可以进入步骤 2,否则进入步骤 3。
2. 遍历内存中的所有未处理的共识信息。
3. 2.1 根据当前块号构建提案信息。
4. 2.2 根据当前块号构建最终提案信息。
5. 2.3 打包块,并更新状态。
6. 向其他节点发送块请求,并等待收到响应块,验证块并落块。
• 实现说明
2.4 BA*流程
• BA*处理流程简述
1. 提议者将提议块发送给参与 BA*的提议者,其中参与 BA*的提议者总数 N = 3f + 1。
2. 对参与 BA*的提议者信息进行 Hash 计算进行降序排序,得到序号 n。
3. 获取本轮次共识编号 R。
4. 确定本轮次共识发起者编号 curNum = R mod N。
5. 取提议块 Hash 最小值最为最终提议块。
6. 共识发起者将最终提议块的 Hash 广播至其他参与 BA*的提议者。
7. 参与 BA*的提议者对该提议块进行预投票,预投票需要包含自身节点编号 n、预投票轮次 R、投票的块 Hash、validater 投票签名 S。
8. 参与 BA*的提议者在超时时间内等待接受投票数,对投票报文进行身份识别操作。
9. 收集预投票个数,超过 2/3 进入 preCommit 流程。
10. 参与 BA*的提议者对 preVote 块进行预提交,预投票需要包含自身节点编号 n、预投票轮次 R、投票的块 Hash、validater 投票签名 S。
11. 收集预提交个数,超过 2/3,完成 preCommit 流程。
12. 更新块高度 H、轮次 R,广播共识结果。
• 实现说明
为了提高效率,BA⋆投票表决块的散列,而不是整个块的内容。在 BA⋆算法的最后,使用BlockOfHash()函数来表明,如果 BA⋆还没有收到商定散列的前映像,它必须从其他用户那里获得。BA⋆算法还决定是否建立最终的或暂定的共识,其主函数流程如下:
ProcessMsg()不仅返回消息中包含的值,还返回与该值关联的投票数。如果消息不是来自选定的委员会成员,则 ProcessMsg()返回零票。如果委员会成员多次被选中,ProcessMsg()返回的选票数量也反映了这一点。ProcessMsg()也返回抽签散列。
Reduction()程序将在任意值上达成一致的问题转换为在两个值中的一个上达成一致:或者是特定建议的块散列,或者是空块的散列。Turpin 和 Coan 的两步技术启发了我们的减少。这种减少对于确保活力非常重要。
3. 共识激励
虚拟货币的生态体系的可持续发展,离不开完善的生态体系模型,也离不开合理优化的共识激励模型。中本聪创造的新型经济激励模型保证比特币 10 年的长治久安,拥有强大的支持者群体,并因此建立新型的行业生态。可见共识激励模型在数字货币生态发展中占有举足轻重的作用。
HNB 激励算法是根据经济学模型建立,极大程度提高持币用户参与生态建设的积极性、维护生态可持续发展。HNB 为每轮共识成功出块的记账节点提供 HGS 奖励,对于 HNB 作恶节点将扣除一定比例 HGS 以示惩戒。
HNB 经济体的激励机制遵循以下准则:
1. HNB 根据币龄与持币数量计算权重 w,被选为共识组概率与 w 值正相关。
2. 共识成功后,明确本次共识的提议者及参与 BA*的提议者。将 HGS 奖励数量根据比例发放至本次共识相关成员。
3. HGS 奖励数量与该块内交易复杂度总和正相关,存在相关系数 k。
4. HNB 支持分级惩罚,区分节点作恶及节点故障。若提议者发送虚假、错误提案,参与BA*的提议者发送异常共识协议判定为节点作恶。若节点共识期间网络交互无响应判定为节点故障。
5. HGS 奖励的相关系数 k 根据出块总数负相关。
全部0条评论
快来发表一下你的评论吧 !