区块链的搭建和运维4
区块链的搭建和运维4
(1) 搭建基于MySQL分布式存储的区块链
1.构建单群组网络节点
使用开发部署工具构建单群组网络节点,命令如下:
bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545
2. 启动 MySQL 并设置账户密码
输入如下命令,启动 MySQL 服务,右下角出现 [OK] 字样表示启动成功
service mysql start
MySQL 服务启动成功后,在终端输入如下命令,登录 mysql
mysql -uroot -p
输入如下命令,设置 root 账户的密码为 ”123456“
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
输入如下命令,退出 MySQL
quit;
3.配置 MySQL
在终端输入如下命令,编辑 MySQL 配置文件(/etc/mysql/my.cnf),并在键盘输 入”i“,进入输入模式
vim /etc/mysql/my.cnf
在文件末尾添加如下内容,输入完成后,在键盘左上角按 ”ESC“ 键,输入”:wq“ 保 存退出,如下图
[mysqld]
max_allowed_packet = 1024M
sql_mode = STRICT_TRANS_TABLES
ssl = 0
default_authentication_plugin = mysql_native_password
输入如下命令,重启 MySQL 服务
service mysql restart
1.7 验证参数
输入如下命令,登录 MySQL 数据库,需要输入之前设置的密码
mysql -uroot -p
输入如下命令,查看 max_allowed_packet 的值
show variables like 'max_allowed_packet%';
输入如下命令,查看 sql_mode 的值
show variables like 'sql_mode%';
输入如下命令,查看 default_authentication_plugin 的值
show variables like 'default_authentication_plugin';
Cb5.png&pos_id=img-wNAbqHJg-1723008968840)
输入如下命令,退出 MySQL 数据库
quit;
4.修改节点存储配置
修改 node0 的数据存储配置,输入以下命令,并在键盘输入”i“,当左下角出现 ”-- 插入–“ 时进入输入模式
vim nodes/127.0.0.1/node0/conf/group.1.ini
其他节点同样操作
5.启动节点
输入如下命令,启动所有节点
bash nodes/127.0.0.1/start_all.sh
(2) 配置控制台
再终端输入如下命令,解压控制台压缩包,
tar -zxvf console.tar.gz
在终端输入如下命令,将节点 sdk 证书拷贝到控制台 conf 目录下
cp nodes/127.0.0.1/sdk/* console/conf/
输入如下命令,将控制台 conf 目录下的 config-example.toml 文件重命名为 config.toml 文件
cp console/conf/config-example.toml console/conf/config.toml
输入如下命令,启动控制台
bash console/start.sh
(3) 委员账户权限操作
1.账户准备
在控制台输入如下命令,生成账户地址
newAccount
在新打开的终端输入如下命令(私钥文件根据实际情况输入),使用创建的账户启 动控制台
bash fisco/console/start.sh 1
fisco/console/account/ecdsa/0x742bceda913fdc79595198c86634b45802754
5bc.pem
在控制台再次输入如下命令,生成账户地址
newAccount
在新打开的终端输入如下命令(私钥文件根据实际情况输入),使用创建的账户启 动控制台
在第一个控制台输入如下命令,查看控制台加载的账户地址
listAccount
为方便理解,本实验规定如下:
加载 “0xa29f51b0…” 账户的为 1 号控制台,账户地址用 A 表示
加载 “0x742bceda…” 账户的为 2 号控制台,账户地址用 B 表示
加载 “0x3eddcbf7…” 账户的为 3 号控制台,账户地址用 C 表示
2.添加委员
在 1 号控制台输入如下命令,添加账户A为委员 需要注意的是,初始系统无权限设置记录,任何账户均可使用权限设置,一旦设置权限 后,只有委员才可授权委员账号;另外,添加委员操作需要投票决定,由于初始系统无 委员账户,任意地址投票即可生效
grantCommitteeMember 0xa29f51b088808a08497d04897da9700475a6716d
在 1 号控制台输入如下命令,可查看系统中的委员账户
listCommitteeMembers
在 2 号控制台中输入如下命令,尝试将账户B添加为委员
grantCommitteeMember 0x742bceda913fdc79595198c86634b458027545bc
在新打开的终端中输入如下命令,使用 root 账户登录 MySQL,并连接到 db_node0 数据库
mysql -uroot -p123456 -A db_node0
在 MySQL 输入如下命令,查看权限表(sys_table_access)
select * from _sys_table_access_;
可以看到,委员账户A 对 sys_config、sys_consensus、sys_table_access 三个 表具有写入权限。
在控制台 1 输入如下命令,将账户B添加为委员 添加委员操作需要投票决定,此时系统中只有一位委员(账户A),生效阈值=有效票/ 总票数=1/1=1>0.5,所以立即生效。
grantCommitteeMember 0x742bceda913fdc79595198c86634b458027545bc
在 1 号控制台输入如下命令,可查看系统中的委员账户
listCommitteeMembers
此时系统中已经有两个委员账户,分别为账户A和账户B。
在 MySQL 输入如下命令,再次查看权限表(sys_table_access)
select * from _sys_table_access_;
可以看到,委员账户(账户B)对 sys_config、sys_consensus、 sys_table_access 三个表具也具有写入权限。
3.撤销委员
在 1 号控制台输入如下命令,撤销账户B的委员角色
grantCommitteeMember 0x742bceda913fdc79595198c86634b458027545bc
在 1 号控制台输入如下命令,查看系统中的委员账户
listCommitteeMembers
此时系统中有两个委员账户(账户A和账户B),账户A账户投票后的生效阈值=有效票/ 总票数=1/2=0.5,而 FISCO BCOS 的默认有效阈值必须大于 0.5 才可生效,所以账户A 投票后, 账户B仍是委员。
在 2 号控制台输入如下命令,撤销账户B的委员角色
grantCommitteeMember 0x742bceda913fdc79595198c86634b458027545bc
在 1 号控制台输入如下命令,查看系统中的委员账户
listCommitteeMembers
当账户B也投票后,有效阈值=有效票/总票数=2/2=1>0.5,撤销账户B委员的提议通 过,因此再次查询委员账户列表只有账户A。
在 MySQL 输入如下命令,再次查看权限表(sys_table_access)变化情况
select * from _sys_table_access_;
撤销委员并不会删除权限表中的数据,而是以 status 字段来标注该账户是否可用,0 表示该账户地址可用,1 表示不可用。
4.修改委员权重
在 1 号控制台输入如下命令,添加账户C为委员
grantCommitteeMember 0x3eddcbf715b02701a1d061ade21fe938642f50a4
在 1 号控制台输入如下命令,可查看系统中的委员账户
listCommitteeMembers
此时系统中只有一位委员(账户A),生效阈值=有效票/总票数=1/1=1>0.5,所以立即 生效。
在 1 号控制台输入如下命令,修改账户A的权重为 2
updateCommitteeMemberWeight
0xa29f51b088808a08497d04897da9700475a6716d 2
此时系统中存在两个委员(账户A和账户C),因此账户A投票后不能立即生效,还需要 账户C进行投票才能生效。
在 3 号控制台输入如下命令,修改账户A的权重为 2
updateCommitteeMemberWeight
0xa29f51b088808a08497d04897da9700475a6716d 2
账户C投票后,有效阈值=有效票/总票数=2/2=1>0.5,立即生效,账户A的权重修改为 2。
在 1 号控制台输入如下命令,查看账户A的权重
queryCommitteeMemberWeight
0xa29f51b088808a08497d04897da9700475a6716d
在 1 号控制台输入如下命令,查看账户C的权重
queryCommitteeMemberWeight
0x3eddcbf715b02701a1d061ade21fe938642f50a4
在 1 号控制台输入如下命令,添加账户 B 为委员
grantCommitteeMember 0x742bceda913fdc79595198c86634b458027545bc
在 1 号控制台输入如下命令,可查看系统中的委员账户
listCommitteeMembers
修改权重后,账户A的权重为2,账户A投票后,有效阈值=有效票/总票数=2/3>0.5,立 即生效,即不需要账户C再进行投票。
5.修改生效阈值
在 1 号控制台输入如下命令,修改系统的有效阈值为75(默认为50)
updateThreshold 75
此时系统中有三个委员(账户A权重为2,账户B权重为1,账户C权重为1),生效阈值 =有效票/总票数=2/4=0.5=默认有效阈值(0.5),即还需要其他委员投票才能生效。
在 2 号控制台输入如下命令,修改系统的有效阈值为75(默认为50)
updateThreshold 75
在账户B投票成功后,生效阈值=有效票/总票数=3/4=0.75>0.5,修改系统有效阈值的 提议通过。
在 1 号控制台输入如下命令,查询系统有效阈值
queryThreshold
在 1 号控制台输入如下命令,撤销账户C的委员角色
revokeCommitteeMember 0x3eddcbf715b02701a1d061ade21fe938642f50a4
此时系统中有三个委员(账户A权重为2,账户B权重为1,账户C权重为1),生效阈值 =有效票/总票数=2/4=0.5<0.75,即还需要其他委员投票才能生效。
在 2 号控制台输入如下命令,撤销账户C的委员角色
revokeCommitteeMember 0x3eddcbf715b02701a1d061ade21fe938642f50a4
在账户B投票成功后,生效阈值=有效票/总票数=3/4=0.75=0.75,即还需要账户C投票 才能生效。
在 3 号控制台输入如下命令,撤销账户C的委员角色
revokeCommitteeMember 0x3eddcbf715b02701a1d061ade21fe938642f50a4
在账户C投票成功后,生效阈值=有效票/总票数=4/4=1>0.75,立即生效。
(4) 运维账户权限操作
1.新增运维
在 1 号控制台输入如下命令,新增账户C为运维账户
grantOperator 0x3eddcbf715b02701a1d061ade21fe938642f50a4
运维账户的新增和撤销不需要投票操作,由委员账户授权即可。
在 1 号控制台输入如下命令,查看运维账户列表
listOperators
2.部署调用合约
在 3 号控制台输入如下命令,使用运维账户部署合约
deploy HelloWorld
台输入如下命令,调用刚才部署的合约(合约地址根据自己的实际情 况输入)
call HelloWorld 0x0bbc3309b7eddb87f59c233d4e7dec5280934b21 get
3.冻结和解冻合约
在 3 号控制台输入如下命令,冻结刚才部署的合约(合约地址根据自己的实际情 况输入)
freezeContract 0x0bbc3309b7eddb87f59c233d4e7dec5280934b21
在 3 号控制台输入如下命令,尝试调用合约
call HelloWorld 0x0bbc3309b7eddb87f59c233d4e7dec5280934b21 get
在 3 号控制台输入如下命令,解冻合约(合约地址根据自己的实际情况输入)
unfreezeContract 0x0bbc3309b7eddb87f59c233d4e7dec5280934b21
4.撤销运维账户
在 1 号控制台输入如下命令,撤销账户C的运维权限
revokeOperator 0x3eddcbf715b02701a1d061ade21fe938642f50a4
在 1 号控制台输入如下命令,查看运维账户列表
listOperators
相关文章:

区块链的搭建和运维4
区块链的搭建和运维4 (1) 搭建基于MySQL分布式存储的区块链 1.构建单群组网络节点 使用开发部署工具构建单群组网络节点,命令如下: bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,85452. 启动 MySQL 并设置账户密码 输入如下命令,…...

数据驱动决策:内容数据产品经理的成长与价值
数据驱动决策:内容数据产品经理的成长与价值 内容数据产品经理以数据为媒介,在用户与决策之间搭建桥梁,通过理解分析模型和用户决策路径,设计产品以促成更多决策产出,创造用户价值。例如,在衡量数据产品经理…...
pyinstaller 打包python 提示 object has no attribute
参考: 错误:gi.repository.BlockDev’ object has no attribute plugin_specs_from_names 查看包路径 rpm -ql python3-blockdev/usr/lib64/python3.7/site-packages/gi/overrides/BlockDev.py /usr/lib64/python3.7/site-packages/gi/overrides/__pyca…...

ubuntu20.04搭建RUST开发环境并与C语言交互
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 ubuntu20.04搭建RUST开发环境并与C语言交互 前言开战一、确认环境版本二、环境搭建三、hello world!四、跟c语言进行交互1.rust调用C静态库2.C调用rust库 总结参考…...

C语言 ——— 学习、使用memmove函数 并模拟实现
目录 memmvoe函数的功能 学习memmove函数编辑 模拟实现memmove函数 memmvoe函数的功能 memmvoe函数的功能类似于memcpy函数,都是内存拷贝,唯一的区别是memcpy函数不能成功拷贝原数据,而memmvoe函数可以 举例来说: [1, 2, 3…...

职场中必须明白的三个道理,不明白无出头之日,你越早知道越好
职场中有很多优秀的人才,他们工作能力出众,为人处事也非常的善良,但是有时候,这样的优点反而成了他们在职场中被欺负的原因,因为他们太善良,很容易被别人利用,为了自己的利益,有些人…...
做webserver项目的一些问题和思路总结
1.webserver是做什么的?这个项目最后想实现什么? 网络服务器,是一个处理HTTP请求并返回HTTP响应的程序。(socket实现的是网络编程,不一定是HTTP,还有其他协议,具体协议由端口来确定)…...

大数据-70 Kafka 高级特性 物理存储 日志存储 日志清理: 日志删除与日志压缩
点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…...

基于S7-200 SMART实现PID控制仿真实验
关键字:Matalb;S7-200 SMART;Modbus TCP;PID控制 系列文章目录 基于S7-200 SMART实现一键启停 顺序功能图——(二)设计机组延时关机程序 基于S7-200 SMART实现Modbus TCP通信 基于S7-200 SMART实现MATLAB写…...

社交及时通讯平台完整版源码,uniapp技术,可打包成app
源码简介: 全原生,从底层开始结构就完全不一样,mongodb的库,uniapp混编手端,二开难度要比视酷或者酷信容易很多。全开源,带开发文档。前端用的是uniapp技术,所以是多端合一,可以做h…...
TensorFlow和Pytorch是什么?干什么用的?
TensorFlow和Pytorch都是机器学习框架,允许用户自定义开发机器学习模型(利用已经实现好的神经网络层)。 1. 加载和预处理数据 加载数据:使用合适的库(如 Pandas、Numpy 或 TensorFlow 的数据处理 API)从文…...
采购人可否自行选择采购方式?|数智化招采系统支持多种采购方式
采购人是否有权自行确定采购方式,主要取决于采购项目的性质和规模,特别是是否达到公开招标的数额标准。 一、达到公开招标数额标准以上的项目 《中华人民共和国政府采购法实施条例》第二十三条规定:“采购人采购公开招标数额标准以上的货物…...
ubuntu dde 改为中文
在 Ubuntu Deepin Desktop Environment (DDE) 中,如果已经将系统语言设置为中文,但系统菜单仍然显示英文,可以尝试以下步骤解决: 检查语言设置:确保你的系统语言已经正确设置为中文。你可以在“系统设置”->“区域和…...
Nginx配置小细节,location和proxy_pass 斜杠/ 问题
理解nginx的配置有助于理解前后端调用的过程,这里是location与proxy_pass需要注意的点 location 不带斜杠 的是模糊匹配,例如 location /abc 可以匹配 /abc/index.html,也可以匹配 /abcd/index.html location 带斜杠的是固定匹配,…...

java 解析 PDF OFD 发票 部分文字缺失
1、pdfbox https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox 到这里用最新的版本 最近碰到发票各式各样,千奇百怪:记录其中一个 解析出来是:缺少一个通字 发票好几处都缺少文字,解析出来的是 一个 圆点 原因&…...

C/C++数字与字符串互相转换
前言: 在C/C程序中,会需要把数字与字符串做出互相转换的操作,用于实现程序想要的效果。下面将介绍多种方法实现数字与字符串互相转换。 字符串转为数字 一、利用ASCII 我们知道每个字符都有一个ASCII码,利用这一点可以将字符-0…...

[Spring] Spring AOP
🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…...

鸿蒙 webview 实现顶部 Progress进度条
1, 先看效果 2, 直接cv代码 import web_webview from ohos.web.webview;interface PerUrl {url: string,age: number } Component export struct webviews {controller: web_webview.WebviewController new web_webview.WebviewController();ports: web_webview.WebMessageP…...
Pytest-BDD实现接口自动化测试,并附全部代码
引言 在之前的文章中简单的介绍了怎么使用Pytest-BDD进行接口测试,可以参考《pytest-bdd 行为驱动自动化测试》。本篇文章主要介绍使用Pytest-BDD实现接口自动化测试。后面的文章会介绍生成测试报告,和流程性接口测试。 feature文件 首先我们先整理好…...

Sqli-labs-master靶场--布尔盲注
目录 1、布尔盲注 2、布尔盲注的流程(以靶场less-8为例) 2.1输入id尝试是否存在注入点 2.1.1通过以上尝试,联想到可能是布尔盲注 2.2猜测数据库长度 2.3获取数据库名 2.3.1python脚本获取 代码: 获取结果为: …...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...

label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法
树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作,无需更改相机配置。但是,一…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...

2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...

uniapp 开发ios, xcode 提交app store connect 和 testflight内测
uniapp 中配置 配置manifest 文档:manifest.json 应用配置 | uni-app官网 hbuilderx中本地打包 下载IOS最新SDK 开发环境 | uni小程序SDK hbulderx 版本号:4.66 对应的sdk版本 4.66 两者必须一致 本地打包的资源导入到SDK 导入资源 | uni小程序SDK …...