区块链的搭建和运维4

news2024/12/24 3:29:46

区块链的搭建和运维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

在这里插入图片描述

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

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

相关文章

【mysql 第一篇章】系统和数据库的交互方法

一、宏观的查看系统怎么和数据库交互 在我们刚刚接触系统和数据库的时候不明白其中的原理&#xff0c;只知道系统和数据库是需要交互的。所以我们会理解成上图的形式。 二、MYSQL 驱动 随着我们的学习时间的加长以及对程序的了解&#xff0c;发现链接数据库是需要有别的工具辅…

免费【2024】springboot 高校毕业生信息管理系统的设计与实现

博主介绍&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围&#xff1a;SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

安卓Termux系统设备安装内网穿透工具实现远程使用SFTP传输文件

文章目录 前言1. 安装openSSH2. 安装cpolar3. 远程SFTP连接配置4. 远程SFTP访问4. 配置固定远程连接地址 前言 本教程主要介绍如何在安卓 Termux 系统中使用 SFTP 文件传输&#xff0c;并结合cpolar内网穿透工具生成公网地址&#xff0c;轻松实现无公网IP环境远程传输&#xf…

用 echarts 开发地图、点击展示自定义信息框

1、下载所需地市的json 链接&#xff1a;DataV.GeoAtlas地理小工具系列 在右侧输入需要的名称&#xff0c;然后下载json文件到本地 2、在html 中准备容器&#xff0c;并设置宽高 <div id"mapContent"> <div ref"mapChart" style"width:10…

全网详解LVS的四种工作模式及案例

目录 LVS&#xff08;Linux virual server&#xff09; 一、集群和分布式的简介 二、LVS的运行原理 1、LVS简介 2、LVS 相关术语 3、LVS的集群类型 三、LVS-NAT工作模式 部署NAT工作模式案例&#xff1a; 1、实验环境 2、实验环境说明 3、配置 四、LVS-DR工作模式 …

Http:八股

1、Https加密方式 1.1Https通过 摘要算法保证数据的完整性&#xff0c; 1、服务器将公钥注册到CA&#xff0c; CA用自己的私钥给 服务器的公钥进行数字签名。 2、客户端拿到服务器证书后&#xff0c;用CA的公钥确认数字证书的真实性。 3、获取服务器的公钥&#xff0c;使用它对…

SpringBoot Actuator

对应用进行观测,监控,预警 健康状况[组件状态,存活状态] health 健康端点:返回存活,死亡. Health对象 运行指标[CPU,内存,垃圾回收,吞吐量,响应成功率] Metrics 指标监控端点:访问次数/率等等 链路追踪等等 引入web和actuator依赖 在…

如何在不丢失数据的情况下绕过IPhone密码?

不幸的是&#xff0c;不可能在不丢失数据的情况下绕过 iPhone 密码。通过密码的唯一方法是使用iTunes或iCloud恢复设备。这将清除您设备的内容&#xff0c;因此请务必在恢复之前备份所有重要数据。如果您忘记了密码&#xff0c;请按照以下步骤操作&#xff1a; 1. 将您的 iPhon…

AI绘画 Stable Diffusion后期处理—无需ControlNet也能轻松高清放大图像与老旧照片修复,SD新手必看教程

大家好&#xff0c;我是设计师阿威 分享了这么多期AI绘画Stable DIffusion的入门教程和一些常用的插件玩法后&#xff0c;不知道大家有没有发现&#xff0c;SD还有一个功能&#xff0c;似乎没怎么用到过&#xff0c;它就是—后期处理。 今天就给大家分享一下SD中的 “后期处理…

VLSI | 计算CMOS反相器的负载电容

ref. 数字集成电路 电路、系统与设计&#xff08;第二版&#xff09;&#xff0c;周润德 译 为了计算方便&#xff0c;本人编写了MATLAB代码进行计算&#xff0c;需要可至&#xff1a;MATLAB计算CMOS反相器等效负载电容 。资源中也给出了PTM的MOS模型参数。对于MOS的模型参数&…

TMGM:日本加息预期被推迟,日元相对稳定

根据最新的日本银行《意见总结》&#xff0c;"实现通胀目标的可能性进一步增加"&#xff0c;预计将进一步上升。 "假设通胀目标将在2025财年下半年实现&#xff0c;央行应在那时将政策利率提高到中性利率水平。由于中性利率水平至少在1%左右&#xff0c;为避免…

injected stylesheet 导致 页面重置按钮文字样式改变,按钮中的文字看不清晰

项目场景&#xff1a; 相关背景&#xff1a; injected stylesheet 导致 页面重置按钮文字样式改变&#xff0c;看不清晰 问题描述 遇到的问题&#xff1a; 检查页面中该按钮的代码如下所示&#xff1a; <div class"el-form-item__content"> <button d…

手把手从0开始,使用Ollama+OpenWebUI本地部署阿里通义千问Qwen2 AI大模型

&#x1f4a5;Ollama介绍 Ollama是一个开源框架&#xff0c;专为在本地机器上便捷部署和运行大型语言模型&#xff08;LLM&#xff09;而设计。它提供了一套简单的工具和命令&#xff0c;使任何人都可以轻松地启动和使用各种流行的LLM&#xff0c;例如GPT-3、Megatron-Turing N…

Python教程(十二):面向对象高级编程详解

目录 专栏列表前言变量命名规则说明&#xff1a;一、类的内部变量和特殊方法1.1 内部变量示例测试结果: 1.2 __slots__未使用__slots__使用__slots__ 二、装饰器2.1 函数装饰器示例 2.2 property示例 三、枚举类3.1 枚举类概述3.2 枚举类定义示例 四、元类4.1 什么是元类4.2 自…

去除猫咪浮毛哪款更胜一筹?希喂、有哈宠物空气净化器测试对比

随着养宠人群的增多&#xff0c;宠物空气净化器受到铲屎官们的喜爱&#xff0c;成为家庭清洁的好帮手。然而&#xff0c;市场上的选择繁多&#xff0c;不少品牌以次充好&#xff0c;让人们掉入消费陷阱。为此&#xff0c;挑选一台优质有保障的宠物空气净化器品牌&#xff0c;需…

智界S7 小鹏P7 G3 G3i P5 G9 P7i G6 X9维修手册和电路图线路图接线资料更新

汽修帮手资料库提供各大厂家车型维修手册、电路图、新车特征、车身钣金维修数据、全车拆装、扭力、发动机大修、发动机正时、保养、电路图、针脚定义、模块传感器、保险丝盒图解对照表位置等&#xff0c;并长期保持高频率资料更新&#xff01; 覆盖车型2020-2024年智界S7 小鹏…

不是智商税!六个核桃健脑效果获科学支持,效果源自七大方面

这两年来&#xff0c;关于脑雾、脑损伤的话题在社交媒体上越发受到关注&#xff0c;健脑也越发成为国民刚需。 不过&#xff0c;要做到科学健脑并不容易。有消费者选择专业保健品补剂&#xff0c;也有消费者倾向于食补。中国饮食传统中就有核桃补脑的说法&#xff0c;但不少人…

Untiy Modbus 西门子 S7-1200 基础通信

Untiy Modbus 西门子 S7-1200 基础通信 ModbusModbus是什么Modbus 协议版本Modbus 通信和设备Modbus 如何实现Modbus 使用限制Modbus 通信协议学理上的弱点分析 UnityUnity ModbusTCPUnity ModbusTCP 单个线圈读取方法Unity ModbusTCP 单个线圈写入方法 IntUnity ModbusTCP 单个…

Android 让程序随系统自动启动并允许后台运行(白名单)

最近制作一个管理程序&#xff0c;需要在开机时候启动&#xff0c;并持续运行。这里简单记录下如何制作。 自启动原理 系统在启动的时候会广播一个ACTION_BOOT_COMPLETED&#xff0c;带有接收的程序可以收到&#xff0c;所以我们在接收到以后把程序运行起来。 清单文件设置 …

PyMysql快速上手操作详解

PyMySQL是从Python连接到MySQL数据库服务器的接口。 它实现了Python数据库API v2.0&#xff0c;并包含一个纯Python的MySQL客户端库 一、PyMysql安装 pip install pymysql 或者 pip3 install pymysql二、连接数据库 pymysql连接数据库使用的是 pymsql.connect() 函数&#xff…