区块链国赛第四套样题(关于运维)

本文详细描述了区块链系统的部署流程,包括搭建多节点系统、配置管理平台、部署API服务,以及FISCOBCOS区块链的控制台配置、节点版本管理和权限分配。重点介绍了如何设置委员权限、为机构A设置投票权重和部署HelloWorld合约的过程。
摘要由CSDN通过智能技术生成

任务1-2:区块链系统部署与运维

通过给定区块链项目需求,进行区块链系统部署,包括系统部署、控制台部署等。通过监控工具完成对网络、节点服务的监控。最终利用业务需求规范,完成系统日志、网络参数、节点服务等系统结构的维护。

  1. 部署区块链服务器,配置管理平台参数及访问端口;
  2. 部署项目节点,获取管理平台与节点服务的加密通信;
  3. 部署应用程序接口服务,应用工具完成接口部署;
  4. 部署区块链系统,对接应用服务器和数据库。

子任务1-2-1:搭建区块链系统

在本机搭建一条分布式存储的4节点区块链系统,其网络端口要求如下:

机构名称

节点数

P2P端口

channel端口

rpc端口

机构A

1

30100

20100

8010

机构B

1

30200

20200

8020

机构C

2

30300

20300

8030

搭建完区块链系统后,需检查每个节点的连接数和运行状态。

1-2-1

编写配置文件

 题目里没有要求群组如何配置 我们就以都是群组1为例操作

运行脚本

启动节点

检查连接数

检查运行状态 

子任务1-2-2:控制台配置与使用

为区块链系统配置控制台,使用控制台与区块链系统进行简单交互(配置控制台相关工具和软件在 “/root/Desktop/src” 目录下),交互步骤如下:

(1)查询节点版本信息;

(2)部署HelloWorld合约;

(3)查看交回执,解释每个字段含义;

(4)查询部署合约的区块信息。

1-2-2-1:查询节点版本信息;

这里没有说明配置控制台,但我们要查询节点版本的信息,需要用到控制台命令,所以我们先要搭建控制台。

由于这里不是采用默认的节点,所以说要要修改控制台的配置文件

打开config.toml文件

 这里说一下为什么可以这么修改,因为控制台 java SDK是通过区块链节点建立连接。所以我们这里添加group1的首个节点。

1-2-2-2:部署HelloWorld合约;

deploy HelloWorld

1-2-2-3:查看交回执,解释每个字段含义;

/*
   根据交易哈希获取交易回执信息
*/
getTransactionReceipt 0x676ebac28dca84363c46871cbe410f766ccda0ba14667b3b76f0fec8b78d8c4d

 解释

transactionHash:该交易的哈希值

transactionIndex:交易在区块中的位置索引 (0x0代表着是区块中的第一个位置)

root:交易执行的状态根

blockNumber:该交易的区块高度

blockNumber:该交易区块的哈希值

from:发起交易的账户地址

to:交易目标的账户地址(由于我们是部署合约,并不是双方之间的交易所以这里是0x0000000000000000000000000000000000000000)

gasUsed:执行交易所消耗的gas量

remainGas:交易完成后剩余的gas量(0x0表示没有剩余)

contractAddress:新创建的合约地址

logs:交易执行期间产生的日志,保存交易的events信息

logsBloom:日志的Bloom过滤器,用于快速检索和过滤日志事件

status:交易的执行状态

statusMsg:状态信息

input:交易输入的ABI编码十六进制字符串

output:交易返回的ABI编码十六进制字符串

txProof:交易的证明

receiptProof:交易收据的证明

message:交易附带的信息

1-2-2-4:查询部署合约的区块信息。

/*
    查询某个区块的详细信息
*/
getBlockByNumber 1

虽说题目没让解释这些字段的含义,但解释一下也好加深对FISCOBCOS区块链的认识

transactions:区块中包含的交易列表,一般只有一个交易

number:区块的编号,区块编号从0开始(创世区块)

hash:当前区块的哈希值

parentHash:上一个区块的哈希值

logsBloom:日志的Bloom过滤器

transactionsRoot:交易的根哈希,通过对区块中所有交易的哈希值应用Merkle树算法得到的哈希值,用于快速验证区块中交易数据的完整性和正确性

receiptsRoot:交易收据的根哈希,通过对区块中所有交易的收据进行Merkle树运算得到,用于快速验证每笔交易数据的完整性和正确性

dbHash:数据库的哈希值

stateRoot:状态的根哈希

sealer:哪个节点进行的区块打包操作

sealerList:参与共识的节点列表

extraData:附加数据

gasLimit:区块的gas上限

gasUsed:已使用的gas总量

timestamp:生成区块的时间戳

signatureList:区块签名列表

子任务1-2-3:区块链系统权限分配

为该区块链系统分配权限,大赛平台提供了机构 A、机构 B 和机构 C 管理员账号的私钥文件,现有任务如下:

(1)需要将这三个账号分别设置为委员账号;

(2)设置机构 A 账号的投票权重为2;

(3)新增运维账号D,并部署HelloWorld合约。

1-2-3-1:需要将这三个账号分别设置为委员账号;

由于我们没有大赛的环境,所以我们先手动创建三个账号。

使用脚本创建账户和使用命令创建窗户 没有啥区别,只是存放目录不同。newAccount操作起来相对方便一些

所有治理操作需要需要 有效投票权重/总权重>生效阈值 才能生效

fiscobcos角色权限使用白名单机制,默认不检查,当存在至少一个角色的账号时,角色对应的权限检查生效,所以直接可以使用随机的账号来投票设置第一个委员或者切换到第一个账户自己给自己来投票设置委员,设置完后只有委员才能进行相关的操作了。

我们先切换到第一个账户,采用自己给自己投票的方式

设置账号A为委员

账号A给账号A进行投票设置委员

设置账号B为委员

由于此时只有账号A是委员,所以使用账号A来设置委员即可

有效投票权重/总权重>生效阈值 才能生效        1 / 1 > 0.5

账号A给账号B进行投票设置委员

设置账号C为委员

现在有两个委员了,要想设置第三个委员,就需要两个委员都进行投票,才能设置成功第三个委员

有效投票权重/总权重>生效阈值才能生效        2 / 2 > 0.5

账号A给账号C进行投票设置委员

切换到账号B

 账号B给账号C进行投票设置委员

检查

说明一下address代表着账户地址,enable_num代表着设置委员时的区块高度 

1-2-3-2:设置机构 A 账号的投票权重为2;

由于此时是三个委员账号,所以要修改机构A账号至少需要两个机构账号的设置

机构A给机构A进行投票权重设置

先切换到机构A账号

进行投票权重设置

切换到机构B账号(或者C账号都可以)

验证

1-2-3-3:新增运维账号D,并部署HelloWorld合约。

生成一个新的账号

我们现在有三个委员账号,这三个委员账号都可以进行添加运维角色的权限

检查

切换到运维角色的账号

部署HelloWorld合约

这套题目到这就结束了。

其实还想再多说几句

当我们切换到委员账号时部署合约会发现部署失败

 这是因为FISCOBCOS对每一个角色进行了相应的权限控制

当然如果没有运维角色的话,委员也是可以部署合约的。还是多多看官方文档

  • 13
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值