联盟链是虚构的?没有用的?用FISCO BCOS来展示链委员这件事

news2025/3/1 2:39:26

前言

         当前区块链大都使用的是投票决定这种方法,但是如何使现实中的投票转换到区块链中,如何让举手表决变得更加智能,如何让投票透明、安全、权威,这是区块链的一大设计思路,有很多人觉得联盟链是个梦,是个虚无缥缈的东西,确实联盟链介于公链的开放和私链的自主中,一不小心就会更加偏向于另外一边,那么如何将这个1/2做的更加像1/2是一个挑战。

        本篇文章我们使用FISCO BCOS的委员会设计思想来介绍联盟链投票这件事情,话不多说,直接开始。文中多引用FISCO BCOS官网中的原话,再加上自己的实操与理解,以保证全篇文章的科学性。

环境:

Ubuntu20

FISCO BCOS

FISCO BCOS Console

正文

角色定义

分为治理方、运维方、监管方和业务方。考虑到权责分离,治理方、运维方和开发方权责分离,角色互斥。

治理方:拥有投票权,可以参与治理投票,可以增删节点、修改链配置、添加撤销运维、冻结解冻合约、对用户表的写权限控制。链级别的可变配置的权限。
运维方:由治理方添加运维账号,运维账号可以部署合约、创建表、管理合约版本、冻结解冻本账号部署的合约。
业务方:业务方账号由运维添加到某个合约,可以调用该合约的写接口。
监管方:监管方监管链的运行,能够获取链运行中权限变更的记录、能够获取需要审计的数据

权限

        以下简称治理账号为委员

        增删委员、修改委员权重、修改生效阈值三个操作,需要有效投票权重/总权重>生效阈值生效。其中总权重=SUM(委员权重)

        治理账号可以添加运维账号,但治理账号不拥有运维的权限

        运维账号可以为某个合约添加业务账号,但运维账号没有业务账号权限

6dcf211b630249e3ac67ea24715c4abf.jpeg

 (图片来源于FISCO BCOS官方文档)

 权限项

权限操作控制方式命名默认阈值修改方式
增删委员控制写权限表AUTH_ASSIGN_AUTH0.5委员投票
修改委员权重控制写权限表AUTH_ASSIGN_AUTH0.5委员投票
修改生效投票阈值(投票委员权重和大于该值)控制写权限表AUTH_ASSIGN_AUTH0.5委员投票
增删节点(观察/共识)控制写共识表AUTH_CTRL_NODE 委员可操作
修改链配置项控制写配置表AUTH_MODIFY_CONFIG 委员可操作
冻结解冻合约合约生命周期AUTH_CTRL_CONTRACT_LIFE 委员可操作
添加撤销运维 AUTH_CTRL_OPERATOR 委员可操作
用户表写权限 AUTH_CTRL_USER_TABLE 委员可操作
部署合约_sys_tables_的写权限AUTH_CREATE_TABLE 运维操作
创建表_sys_tables_的写权限AUTH_CREATE_TABLE 运维操作
合约版本管理CNSAUTH_CTRL_CNS 运维操作
冻结解冻本账号部署的合约修改合约状态  运维操作
调用合约合约表写权限  业务操作

计票与生效

  • 所有治理操作需要有效投票数/委员数>生效阈值才能生效

  • 每次投票操作,如果是委员投票,则记录操作内容和投票委员,不重复计票

  • 每次投票操作,计票结束后,计算有效投票数/委员数,如果大于此操作的生效阈值,则对应操作生效,写入

  • 投票设置过期时间,根据块高,blockLimit的10倍,固定不可改

 

功能列表

  1. 增删委员计票与生效

  2. 修改委员权重计票与生效

  3. 修改生效阈值计票与生效

  4. 委员增删运维

  5. 委员解冻冻结合约

  6. 委员增删节点

  7. 委员修改系统配置

  8. 权限项默认阈值存储

  9. 运维部署合约的权限

  10. 运维管理合约版本的权限

实操

这里对上文进行一些总结,那么首先先说权限控制这个概念:权限控制通过控制台(console)进行实现,首先登陆使用的是控制台的启动脚本进行登陆,使用-pem参数指定用户文件。

使用get_account.sh脚本进行文件生成,这里我们还是一样生成三个文件,去体验不同的权限控制

 

 新建三个用户

bash get_accounts.sh

之后创建文件
bash get_accounts 私钥

9ef3a18ed9dc4ee1a3d628af55db8f0a.png

2691f99bed054d6298c6a2475666ab75.png

 

进入控制台

./start.sh 1 -pem ./accounts/私钥

使用我们刚才所创建的私钥文件进入控制台 ,这样就可以指定用户体验权限控制

5f2dd8164b0949ec97fd4cba1a281585.png

重复这个操作,开三个窗口,登陆上一步我们所操作的三个用户 

 将用户1变成委员

grantCommitteeMember 私钥

// 附上私钥将用户加入委员会

listCommitteeMembers

//验证委员会列表中是否有当前用户

49d1ed824ed244d7b77e52c0bad9974e.png

 使用用户1将用户2任命为委员

grantCommitteeMember 私钥

// 附上私钥将用户加入委员会

listCommitteeMembers

//验证委员会列表中是否有当前用户

5486355953d947b6b0722eb4db0ef133.png

 验证是否有权限对区块链进行操作 

56f8ae8336c5419e8c03ef7720f26be4.png

  • tx_count_limit:区块最大打包交易数

  • tx_gas_limit:交易执行允许消耗的最大gas数

  • rpbft_epoch_sealer_num: rPBFT系统配置,一个共识周期内选取的共识节点数目

  • rpbft_epoch_block_num: rPBFT系统配置,一个共识周期出块数目

  • consensus_timeout:PBFT共识过程中,每个区块执行的超时时间,默认为3s,单位为秒

 用户1

ce8f7edf3e3b4d3a970f8035b9a16660.png

 用户2818d0537f3e74b38ba7bfaa6172b494b.png

 用户39ab6d945bc2943b587e643b5bd8e3a38.png

 最终我们发现权限控制是真实存在的,那么只需要在登陆区块链以及用户上链之前限定好权限即可

撤销某用户的权限

用户1撤销用户2的权限

fffec84cbe4440f0890ac399a8e0510a.png

 用户2撤销用户2的权限

af62b2f9e81047e7bc7195a922db057a.png 因为我们这里只有三个用户,其中两个用户有权限,所以我们的两个用户各持有50%的决定权,需要两个用户都同意才可以撤销

计算公式:有效票/总票数=2/2=1>0.5

 验证是否撤销成功

0d3b6f1a07a14003b2937188db1e8fe4.png

修改用户权重

首先先查看一下当前用户的权重,因为我们上一步撤销了用户2的权限,所以加入用户3进行对比

queryCommitteeMemberWeight 私钥

f82b3ab6d35045caa3755d74be35253a.png

 

grantCommitteeMember 私钥

listCommitteeMembers

0107df83b613446f9a61d0a355ffa13f.png

 

updateCommitteeMemberWeight 私钥 权重数

0f775314e0ca41f583f7846cd555f516.png

 

queryCommitteeMemberWeight 私钥

 这个时候我们查询后发现,投票的权重并没有更新,这是因为我们设置了用户3为委员,所以现在的投票机制还是五五开,因此我们还是需要去用户3哪里投票

439574385e544b74af40a9ad65bc3c0b.png

updateCommitteeMemberWeight 私钥 权重数
queryCommitteeMemberWeight 私钥

 在用户3这里更新一下我们的权重,在查询一下发现weight变成了2

5ed93699ca714960888953c5a1a3550f.png

修改阈值操作

我们发现不管是几个用户一直都是,五五开,或者是超过半数才可以,这个时候我们就会有疑问了,那么怎么样才可以不用五五开或者是46?73?这样的阈值呢

因为我们刚才将用户1的权重设置为了2,所以我们将用户2重新赋予权限

grantCommitteeMember 私钥

listCommiteeMembers

d96de82266b441bcbbdc97bc3c402f10.png

 使用用户1将我们的阈值更新为75,之后查询一下

updateThreshold 75
queryThreshold

b1a1b35e7a7d430ca849d6d0a5b61f67.png

 这个时候我们还是发现,所有的并没有改变,那是因为我们只是有一个用户进行了投票,那么我们切换到其他用户去进行投票 

f25412d169ba4a4ca05dea0acfe25380.png

这个时候,就有疑问了,不是75了吗,为什么两个用户投了票就更新了呀,这里呢是因为,在这之前的阈值是50,只需要两个用户投票即可,我们现在设置75也是因为用户1有了两票,当用户多起来了以后,我们就需要根据实际情况去设置权重以及阈值

运维委员设立

我们的委员职责是分开且独立的,不会存在一个人就可以管理整个区块链的情况发生

这里我们使用上面的方法再新建一个账户

bash get_account.sh

bash get_account.sh 私钥文件

在开始之前,我们先部署一下HelloWorld合约,没有任何问题

865d3a08f3a846b48f50c16b21986cd0.png

使用用户1控制台将用户4任命为运维委员

5d401719e2e94d63bc1b4dc50ab040e7.png

 这里我们部署HelloWorld合约

deploy HelloWorld

801688330db2417bae48019dd6b309b9.png

 发现部署失败了,这里的原因就是我们所说的,各司其职,只要有了运维人员,就不在具有运维的职责

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/415037.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分享一个国内可用的免费ChatGPT网站

背景 ChatGPT作为一种基于人工智能技术的自然语言处理工具,近期的热度直接沸腾🌋。 作为一个程序员,我也忍不住做了一个基于ChatGPT的网站,免费!免登陆!!国内可直接对话ChatGPT,也…

十年磨一剑,你要的低代码平台在这里

目录低代码平台现状没有创新的“拼凑”,没有好东西ivx平台是什么ivx与其他平台的区别产品思路不同用户不同学习价值不同应用范围不同有无框架限制总结低代码开发平台已成为企业数字化转型和应用程序开发的重要工具。它们提供了一种快速创建和部署应用程序的方法&…

【MySQL】DDL数据库、表的创建与管理

一、基本概念 1、从系统架构的层面来看,数据库从大到小依次是数据库服务器(上面安装了DBMS和数据库)、数据库(也称database或者schema)、数据表、数据表的行与列 二、创建和管理数据库 1、创建数据库 直接创建:CREATE DATABASE 数据库名;(使用默认的…

这篇文章价值很大:股票历史分时成交数据怎么简单获取?【干货】

文章目录前言一、准备二、使用步骤1.引入库2,使用这个API查询历史分时数据:3.查询完整历史分时数据4.其他查询方法参数格式:[(市场代码, 股票代码), ...]参数:市场代码, 股票代码, 文件名, 起始位置, 数量参数:市场代码…

【MySQL】(3)约束

文章目录表的约束空属性默认值列描述zerofill主键概念使用 alter 添加和删除主键联合主键如何设计主键自增长唯一键外键表的约束 所谓约束,就是不让你做某事,约束的存在,有助于程序员和用户合法合理地使用数据库。 数据类型其实就是对字段的…

【C++】位图的概念

文章目录位图的引入什么是位图位图的应用bitset的使用定义方式成员函数bitset的运算符重载>> 及 << 运算符赋值,关系,复合赋值,单目运算符[]重载位图的引入 无序的40亿个不重复的无符号整数,给一个无符号整数,如何判断一个数是否在这40亿个数中【腾讯面试题】 方法…

记一次浏览器下载错误处理-失败网络错误

背景 最近在自己电脑上Chrome浏览器正常使用&#xff0c;但只要是下载软件&#xff0c;就会在下载几十秒后&#xff0c;自动停止&#xff0c;报失败-网络错误&#xff0c;导致文件都下载不成功&#xff0c;如下图。 猜测是更改了哪块的配置&#xff0c;导致一直中断&#xff0…

28岁,终于从字节退休了...

大厂一直是每个程序员都向往职业目标&#xff0c;大厂意味着薪资高、福利好、倍有面儿&#xff0c;而且发展空间也大。甚至有人调侃不想进大厂的程序员不是好程序员。 而在网上&#xff0c;也有各个网友分享自己在大厂的经历&#xff0c;在某平台还有一个近2600万浏览的话题&a…

JavaEE——了解Spring,容器,Ioc,DI相关概念

目录 一、Spring 是什么 二、什么是容器 三、什么是loC 1. 什么是 IoC 2. 传统程序开发和控制反转式程序开发 (1). 传统程序开发 (2). 控制反转式程序开发 (3). 对比 3. Spring的功能 4. 将对象存放到容器中的好处 四、DI概念说明 IoC和DI的联系和区别&#xff1f;…

算法 贪心1 || 455.分发饼干 376. 摆动序列 53. 最大子数组和

基础知识 什么是贪心&#xff1a;贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。 但是贪心没有套路&#xff0c;做题的时候&#xff0c;只要想清楚 局部最优 是什么&#xff0c;如果推导出全局最优&#xff0c;其实就够了。 455.分发饼干 很容易想到&am…

Emlog底部显示当前在线人数

第一步&#xff1a;在模板文件里面创建“visitor.php”的文件吧下面代码入进去 code <?php//首先你要有读写文件的权限&#xff0c;首次访问肯不显示&#xff0c;正常情况刷新即可$online_log "slzxrs.dat"; //保存人数的文件到根目录,$timeout 30;//30秒内没…

计算机视觉__基本图像操作(显示、读取、保存)

计算机视觉__基本图像操作&#xff08;显示、读取、保存&#xff09; 本文目录&#xff1a; ✨ 一、前言 ✨ 二、图像显示&#xff08;使用OpenCV和Matplotlib显示图像&#xff09; &#xff08;1&#xff09;、使用OpenCV显示图像 &#xff08;2&#xff09;、使用Matplotl…

密集场景下的行人跟踪替代算法,头部跟踪算法 | CVPR 2021

一个不知名大学生&#xff0c;江湖人称菜狗 original author: Jacky LiEmail : 3435673055qq.com Time of completion&#xff1a;2023.4.8 Last edited: 2023.4.8 目录 摘要 主要内容 结果 这篇文章是CVPR 2021 的最新论文&#xff0c;文章的标题&#xff1a; 文章的主要内…

C#,数值计算的进化与发展——FORTRAN 77/80/95源程序 转C# 源程序的软件F2C#

1 F2C#FORTRAN 77/80/95源程序 转C# 源程序的软件 1.1 F2C#起源 全世界科学计算领域在超过40年的时间里累积了巨大数量的FORTRAN源程序&#xff08;尤其以FORTRAN77居多&#xff09;&#xff0c;实际上目前的许多大型科学软件还是以这些代码为基础的。众所周知的原因&#xf…

【youcans的深度学习 06】PyTorch入门教程:张量的基本操作

欢迎关注『youcans的深度学习』系列&#xff0c;持续更新中… 【youcans的深度学习 01】安装环境之 miniconda 【youcans的深度学习 02】PyTorch CPU版本安装与环境配置 【youcans的深度学习 03】PyTorch CPU版本安装与环境配置 【youcans的深度学习 04】PyTorch入门教程&#…

t-SNE进行分类可视化

0、引入 我们在论文中通常可以看到下图这样的可视化效果&#xff0c;这就是使用t-SNE降维方法进行的可视化&#xff0c;当然除了t-SNE还有其他的比如PCA等降维等方法&#xff0c;关于这些算法的原理有很多文章可以借阅&#xff0c;这里不展开阐释&#xff0c;重点讲讲如何进行…

window10 更新提示 0x80073712错误

解决方法&#xff1a; 1、可以尝试重新配置一下 Windows 更新服务状态&#xff1a; 2、Win S打开搜索&#xff0c;输入 CMD 找到 “命令提示符”&#xff0c; 3、右键以管理员身份打开&#xff0c;依次输入以下代码&#xff0c;并按回车执行。注&#xff1a;是一条一条的执行…

vue基础知识

1、特点 1.采用组件化模式&#xff0c;提高代码复用率、且让代码更好维护。 2.声明式编码&#xff0c;让编码人员无需直接操作DOM&#xff0c;提高开发效率 命令式编码 3.使用虚拟DOM优秀的Diff 算法&#xff0c;尽量复用DOM节点。 2、hello vue vue的引入 就是写在引入c…

关键词词库制作-搜索词分析工具

关键词词库制作 关键词词库是一种帮助SEO和SEM优化的工具&#xff0c;它可以帮助您确定关键词的流行程度、竞争程度、搜索意图和其他相关信息等等。以下是一些关键词词库制作的方法&#xff1a; 收集关键词&#xff1a;首先需要收集相关的关键词&#xff0c;这可能涉及到您的业…

一文讲透产品经理如何用好ChatGPT

作者&#xff1a;京东零售 何雨航 “4.0版本的ChatGPT可以有效提升产品经理工作效率&#xff0c;但并无法替代产品经理的角色。” 一、引言 3月15日&#xff0c;OpenAI发布了最新的基于GPT-4的ChatGPT&#xff0c;关于其智能性的讨论热度在互联网上空前高涨。 我之前体验过3…