当前位置: 首页 > news >正文

区块链的搭建和运维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_configsys_consensussys_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_configsys_consensussys_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.构建单群组网络节点 使用开发部署工具构建单群组网络节点&#xff0c;命令如下&#xff1a; bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,85452. 启动 MySQL 并设置账户密码 输入如下命令&#xff0c;…...

数据驱动决策:内容数据产品经理的成长与价值

数据驱动决策&#xff1a;内容数据产品经理的成长与价值 内容数据产品经理以数据为媒介&#xff0c;在用户与决策之间搭建桥梁&#xff0c;通过理解分析模型和用户决策路径&#xff0c;设计产品以促成更多决策产出&#xff0c;创造用户价值。例如&#xff0c;在衡量数据产品经理…...

pyinstaller 打包python 提示 object has no attribute

参考&#xff1a; 错误&#xff1a;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语言交互

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

C语言 ——— 学习、使用memmove函数 并模拟实现

目录 memmvoe函数的功能 学习memmove函数​编辑 模拟实现memmove函数 memmvoe函数的功能 memmvoe函数的功能类似于memcpy函数&#xff0c;都是内存拷贝&#xff0c;唯一的区别是memcpy函数不能成功拷贝原数据&#xff0c;而memmvoe函数可以 举例来说&#xff1a; [1, 2, 3…...

职场中必须明白的三个道理,不明白无出头之日,你越早知道越好

职场中有很多优秀的人才&#xff0c;他们工作能力出众&#xff0c;为人处事也非常的善良&#xff0c;但是有时候&#xff0c;这样的优点反而成了他们在职场中被欺负的原因&#xff0c;因为他们太善良&#xff0c;很容易被别人利用&#xff0c;为了自己的利益&#xff0c;有些人…...

做webserver项目的一些问题和思路总结

1.webserver是做什么的&#xff1f;这个项目最后想实现什么&#xff1f; 网络服务器&#xff0c;是一个处理HTTP请求并返回HTTP响应的程序。&#xff08;socket实现的是网络编程&#xff0c;不一定是HTTP&#xff0c;还有其他协议&#xff0c;具体协议由端口来确定&#xff09…...

大数据-70 Kafka 高级特性 物理存储 日志存储 日志清理: 日志删除与日志压缩

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…...

基于S7-200 SMART实现PID控制仿真实验

关键字&#xff1a;Matalb&#xff1b;S7-200 SMART&#xff1b;Modbus TCP&#xff1b;PID控制 系列文章目录 基于S7-200 SMART实现一键启停 顺序功能图——&#xff08;二&#xff09;设计机组延时关机程序 基于S7-200 SMART实现Modbus TCP通信 基于S7-200 SMART实现MATLAB写…...

社交及时通讯平台完整版源码,uniapp技术,可打包成app

源码简介&#xff1a; 全原生&#xff0c;从底层开始结构就完全不一样&#xff0c;mongodb的库&#xff0c;uniapp混编手端&#xff0c;二开难度要比视酷或者酷信容易很多。全开源&#xff0c;带开发文档。前端用的是uniapp技术&#xff0c;所以是多端合一&#xff0c;可以做h…...

TensorFlow和Pytorch是什么?干什么用的?

TensorFlow和Pytorch都是机器学习框架&#xff0c;允许用户自定义开发机器学习模型&#xff08;利用已经实现好的神经网络层&#xff09;。 1. 加载和预处理数据 加载数据&#xff1a;使用合适的库&#xff08;如 Pandas、Numpy 或 TensorFlow 的数据处理 API&#xff09;从文…...

采购人可否自行选择采购方式?|数智化招采系统支持多种采购方式

采购人是否有权自行确定采购方式&#xff0c;主要取决于采购项目的性质和规模&#xff0c;特别是是否达到公开招标的数额标准。 一、达到公开招标数额标准以上的项目 《中华人民共和国政府采购法实施条例》第二十三条规定&#xff1a;“采购人采购公开招标数额标准以上的货物…...

ubuntu dde 改为中文

在 Ubuntu Deepin Desktop Environment (DDE) 中&#xff0c;如果已经将系统语言设置为中文&#xff0c;但系统菜单仍然显示英文&#xff0c;可以尝试以下步骤解决&#xff1a; 检查语言设置&#xff1a;确保你的系统语言已经正确设置为中文。你可以在“系统设置”->“区域和…...

Nginx配置小细节,location和proxy_pass 斜杠/ 问题

理解nginx的配置有助于理解前后端调用的过程&#xff0c;这里是location与proxy_pass需要注意的点 location 不带斜杠 的是模糊匹配&#xff0c;例如 location /abc 可以匹配 /abc/index.html&#xff0c;也可以匹配 /abcd/index.html location 带斜杠的是固定匹配&#xff0c…...

java 解析 PDF OFD 发票 部分文字缺失

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

C/C++数字与字符串互相转换

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

[Spring] Spring AOP

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏: &#x1f9ca; Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 &#x1f355; 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进行接口测试&#xff0c;可以参考《pytest-bdd 行为驱动自动化测试》。本篇文章主要介绍使用Pytest-BDD实现接口自动化测试。后面的文章会介绍生成测试报告&#xff0c;和流程性接口测试。 feature文件 首先我们先整理好…...

Sqli-labs-master靶场--布尔盲注

目录 1、布尔盲注 2、布尔盲注的流程&#xff08;以靶场less-8为例&#xff09; 2.1输入id尝试是否存在注入点 2.1.1通过以上尝试&#xff0c;联想到可能是布尔盲注 2.2猜测数据库长度 2.3获取数据库名 2.3.1python脚本获取 代码&#xff1a; 获取结果为&#xff1a; …...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

C++ 设计模式 《小明的奶茶加料风波》

&#x1f468;‍&#x1f393; 模式名称&#xff1a;装饰器模式&#xff08;Decorator Pattern&#xff09; &#x1f466; 小明最近上线了校园奶茶配送功能&#xff0c;业务火爆&#xff0c;大家都在加料&#xff1a; 有的同学要加波霸 &#x1f7e4;&#xff0c;有的要加椰果…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看

文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...

c# 局部函数 定义、功能与示例

C# 局部函数&#xff1a;定义、功能与示例 1. 定义与功能 局部函数&#xff08;Local Function&#xff09;是嵌套在另一个方法内部的私有方法&#xff0c;仅在包含它的方法内可见。 • 作用&#xff1a;封装仅用于当前方法的逻辑&#xff0c;避免污染类作用域&#xff0c;提升…...

用鸿蒙HarmonyOS5实现中国象棋小游戏的过程

下面是一个基于鸿蒙OS (HarmonyOS) 的中国象棋小游戏的实现代码。这个实现使用Java语言和鸿蒙的Ability框架。 1. 项目结构 /src/main/java/com/example/chinesechess/├── MainAbilitySlice.java // 主界面逻辑├── ChessView.java // 游戏视图和逻辑├──…...