【导读】

在前文《谁允许你访问了?》中,介绍了区块链中的权限层级、基于提案投票的权限管理模型,那么基于提案投票的权限管理模型在区块链中是如何使用的呢?下文将进行介绍。

随着区块链系统的运行,节点网络拓扑、用户数量会不断的变化,运行在区块链系统上的业务系统的形态与规模也会发生不断的变化。区块链系统的用户会逐渐认识到现有的区块链系统无法满足需求,需要加以升级调整,以解决运行时遇到的问题并满足一些新需求。

治理就是用户对区块链系统进行调整、决策,使系统整体发生相应改变。这里就提出了三个问题:谁可以参与决策?如何进行决策?如何执行决策?

【联盟自治】
根据决策系统的所处位置,可将区块链治理分成:链下治理、链上治理。

▲链下治理
链下治理:依赖于区块链系统以外的机制来完成治理。

大多时候依托于基金会,由核心开发者在社区中牵头发起某项提案,经过一定讨论后,在区块链系统中引入一些新的机制来达成某项目的,但这种机制往往和旧版系统不兼容,无法平滑过渡。

注意:这种方式往往会导致硬分叉,因为用户对于新机制的引入存在支持和反对两种观点,而这种模式的治理需要更新区块链程序,反对派可以选择不更新加以抵制,就会导致用户群体的割裂出现硬分叉,比较出名的事件就是以太坊的DAO事件,DAO之后以太坊也就分裂成了ETH和ETC两个系统。

▲链上治理
链上治理:依赖于区块链系统内部的机制来完成治理。
相比于链下治理,链上治理所提供的可调整能力是预定义的、有限的,但链上治理一般可以保证节点之间做统一、同步变更,不易导致用户社群分裂,产生硬分叉,总结而言就是安全、受限。同时,通过链上治理可以来改变一些区块链系统的运行时参数、共识的各种参数(例如出块时间、区块内交易数量等)、区块链系统公共组件的配置参数(例如区块链账号黑名单、域名服务等)。

【链上治理提案投票模型】
前文提出三个问题:谁可以参与决策?如何进行决策?如何执行决策?基于提案投票的权限管理模型对其分别回答。

谁能参与:基于提案投票的权限管理模型中,维护角色系统、具有特定角色的用户可以参与。

如何决策:去中心化决策。能参与决策的用户可以发起提案,所有能参与决策的用户在一定规则限制下进行投票,当投票超过一定阀值时出发执行。

如何执行:通过RPC的提案基准来序列化提案,基于提案进行决策,决策完成后通过反序列化、反射RPC请求的方式执行。

▲角色系统
角色系统:基于区块链的公钥密码学账号系统,为账号增加角色属性,同时使用编写的内置合约来进行账号角色的管理。

由于区块链账本采用了键值对存储的方式进行存储设计,为了方便查询,在各个账号中保存了账号到角色的映射关系,在内置合约状态数据中保存了角色到账号的映射关系。

通过内置的一些角色来进行核心权限控制,当前最核心的内置角色是admin,在第一次调用内置合约时给特定的账号赋予admin角色。一般情况下,这些被赋予admin角色的账号是创世区块中写入的账号,所谓的创世账号admin账号可以发起提案交易、投票交易和执行交易。node账号可以发起提案和执行提案。

​▲合约类型
自治相关的合约都封装在了内置合约中,内置合约采用一个统一的前端合约来封装提案状态机,后端则是不直接暴露合约接口的功能合约,包括负责权限合约、配置合约、节点合约,以后还会进行扩展。

权限合约:提供角色增加、删除的功能,以及赋予用户角色和回收用户角色的功能。如果要对角色系统进行维护,则需要通过提案调用权限合约。

配置合约:提供修改链级配置的功能。如果要对链级配置做统一更改,需要通过提案调用配置合约更改共识配置,例如batch_size等来修改打包参数,也可以更改拦截器配置,打开拦截器,配置相应规则可以禁止具有某些角色的用户调用某些合约,或者只允许具有某些角色的用户调用某些合约,还可以变更提案配置,修改提案的超时时间、投票通过阈值等。

节点合约:提供增加、删除节点的功能。如果要对网络拓扑进行更改,需要通过提案调用节点合约,节点合约提供对分布式CA证书的支持,另外也提供共识节点集合变更的支持。

使用自治合约,可以通过四类交易进行,分别是提案交易、投票交易、撤销交易、执行交易。

提案交易:封装功能合约调用的多个方法名、参数构成的操作列表,用于创建提案。

投票交易:对提案进行投票,有权投票的用户可以通过投票交易对提案进行投票。同意此提案的操作内容,则投支持票,不同意则投反对票。

撤销交易:撤销提案,通过提案交易创建提案的用户,在提案没有被执行时,可以通过撤销交易撤销此提案。

执行交易:执行投票通过的交易,通过提案交易创建提案的用户,通过执行交易来执行提案,执行交易可能会导致配置变更,也称为配置交易。

▲业务流程
对于单个提案,有提案发起、提案审批、提案超时、提案禁止、提案通过、提案生效、提案销毁这几种状态。其状态的流转如下图所示:

引发提案状态发生变更的交易则是上文介绍到的提案交易、投票交易、执行交易、撤销交易。

注意:系统中只能有一个提案。当一个提案交易在提案合约中处理时,首先检查已有提案是否达到终止状态(所谓终止状态指的是超时、禁止或生效三个状态)。如果已有提案已经达到终止状态,那么已有提案的数据会被从状态数据中移除,取而代之的是新提案的数据,新提案进入审批状态。

经过一段时间投票,如果支持票超过阈值则进入通过状态,如果反对票超过阈值则进入禁止状态。达到通过状态的提案都可以通过执行提案交易来变更到生效状态。在任何状态下,一旦提案相关交易的打包时间超过一定范围,就会导致提案超时。

当提案状态发生变更时,会通过mq通知到客户端。客户端也可以主动使用轮询的方式来主动查询提案。

【总结】

本篇介绍了联盟自治的链上、链下治理,讲解了区块链系统机制是如何完成治理的、链上治理提案投票模型部分角色系统是如何运作的、合约类型以及一条业务交易是如何流转的等内容。联盟自治是为了满足灵活多变、迭代更替的业务规则而提出的一种具备联盟协商、迭代升级的技术。

综上所述,链上自治主要作用帮助使用角色系统来控制谁可以参与决策,通过内置合约来管理决策系统,完善控制如何进行决策以及如何执行决策的机制。

作者简介
刘明美
趣链科技基础平台部 区块链网络研究小组
参考文献
[1] 《区块链技术指南》

【权限专栏】联盟链的“圆桌会议”相关推荐

  1. 联盟链FISCO BCOS权限控制一览

    FISCO BCOS是完全开源的联盟区块链底层技术平台,由金融区块链合作联盟(深圳)(简称金链盟)成立开源工作组通力打造.开源工作组成员包括博彦科技.华为.深证通.神州数码.四方精创.腾讯.微众银行. ...

  2. 一文读懂公有链、私有链、联盟链

    链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载. 区块链中公有链.私有链.联盟链都是区块链技术的一个细分,而技术仅仅是一种工具,怎么在不同的场景应用好不同的工具才是技术进 ...

  3. 区块链BaaS云服务(40) 泰岳联盟链

    1. 系统框架设计 1.1 关注点 区块链底层互链协议.共识算法.隐私计算.并行计算.多方安全计算 1.2 整体架构 泰岳链划分成基础数据层.核心共识层.应用管理层和接口层等: 存储层: 提供区块链数 ...

  4. 联盟链赛道上,微众、蚂蚁、百度、京东等“正规军”能崛起吗?

    来源 | 螳螂观察 文 | 隐南 DeFi和NFT爆火. 投资者也动了起来,把全球加密货币总市值推到2万亿美元左右(截止2021年9月).相比之下,专注于机构之间应用落地的联盟链受到的关注就较少. 随 ...

  5. 公有链、私有链、联盟链、许可链,这些区块链又分别代表着什么意思?

    想知道更多区块链技术知识,请百度[链客区块链技术问答社区] 链客,有问必答!不同的区块链,有着不同的内涵和功能.在区块链领域经常出现的公有链.私有链.联盟链.许可链,这些区块链又分别代表着什么意思?1 ...

  6. 寺库商用区块链落地,联盟链为每件奢侈品发“×××”

    2018年6月,整个世界奢侈品行业都把目光集中到了两件事情上:在欧洲,历峰集团宣布,旗下的Yoox Net-a-porter Group SpA (YNAP.MI)(下称YNAP)在完成私有化后,正式 ...

  7. 联盟链中的Hyperledger Fabric、FISCO BCOS和CITA

    本文援引自链接:https://mp.weixin.qq.com/s/4JAZGwI32bZNlxBqPfkihg 一.摘要 第 46 届世界经济论坛达沃斯年会将区块链与人工智能.自动驾驶等一并列入& ...

  8. 联盟链系统开发 联盟链开发多钱

    联盟链,只应对某一特殊人群的组员和不足的第三方,其內部特定好几个选号牌连接点为记帐人,每一个块的转化成由全部的选号牌连接点一同决策.依据联盟链互联网去中心化水平的不一样,我们团队作为一家专业的区块链服 ...

  9. 区块链入门教程(4)--搭建单机四节点FISCO BCOS联盟链

    文章目录 1. 任务背景 2. 任务目标 3. 相关知识点 4. 任务实操 4.1 切换root用户 4.2 安装依赖 4.3 创建目录,下载安装脚本 4.4 搭建单群组4节点联盟链 4.5 启动FI ...

最新文章

  1. 隔壁大爷都会网络布线啦、搞起来搞起来
  2. asp.net 2中的图片上传
  3. 数据库查询经常卡死?面对亿级大数据量,我是这么展示分析的
  4. Leetcode —— 208. 实现 Trie (前缀树)(Python)
  5. python定义变量字符串_Python学习笔记二(变量和字符串)
  6. JNA-Java跨平台调用的利器
  7. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_07 缓冲流_1_缓冲流的原理...
  8. 判断 失效_复合材料渐进失效Hashin模型及参数详解
  9. python数据建模优缺点_Python数据分析\建模入门建议
  10. Unity 动态修改鼠标指针
  11. 如何解决 U盘 文件变成.exe文件
  12. linux bond服务是什么,linux 查看bond
  13. 参考文献中文刊名的英文缩写对照表
  14. 上传图片格式一句话木马
  15. jadx卡死解决方案
  16. Glib基础——版本信息
  17. MPLS LDP原理
  18. c语言程序设计迷宫问题,C语言迷宫问题
  19. Tensorflow2.0 自定义网络
  20. 实体知识+字典树辅助jieba的分词(并对三国演义进行简单分析)

热门文章

  1. python人脸识别实验报告总结_Python 使用 face_recognition 人脸识别
  2. Scyther形式化验证工具简单教程
  3. 校招前几个月,如何高效地进行复习?
  4. 在Linux下安装配置蒲公英 私网环境轻松实现异地SSH远程管理
  5. 数据脱敏d18n之一-podman安装
  6. Angular显示图片示例
  7. HCIA-数通学习总结4
  8. 离群点检测——局部离群因子(Local Outlier Factor,LOF)算法
  9. python图片分类技术介绍_手把手教你用Python构建你的第一个多标签图像分类模型(附案例)!...
  10. previous_sibling和next_sibling的理解