区块链应用操作员考试实操题总结

区块链考试实操总结

1.决策树流程

1.1 全球开源平台

在这里插入图片描述

1.2 数字藏品平台

在这里插入图片描述

1.3 供应链金融下应收账款融资

在这里插入图片描述

2.纠错题

2.1 电子结婚证

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2 区块链宠物

在这里插入图片描述

3.操作员实操题

3.1 根据题目要求,手动和使用工具创建区块链账户,并能够获取和续期相关证书

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.2 区块链监控、通信配置文件、数据存储设置方法

根据题目要求,完成常用区块链系统监控的方法;补全FISCO BCOS节点的通信设置的配置文件;典型区块链技术的数据存储设置方法。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3 SimpleStorage合约补全

本例中提供了SimpleStorage合约在remix进行单元操作的SimpleStorageTest合约,请在SimpleStorageTest合约中,补充操作代码,完成操作。

在这里插入图片描述
在这里插入图片描述

4.运维案例题

4.1 完成fisco bcos联盟链搭建和依赖安装和搭链,补充脚本内容

在这里插入图片描述

搭建FISCO BCOS环境

1、单群组FISCO BCOS联盟链的搭建

本节以搭建单群组FISCO BCOS链为例,使用开发部署工具build_chain.sh脚本在本地搭建一条4节点的FISCO BCOS链。

  • 环境安装
## macos环境安装依赖
brew  install  openssl  curl
##ubuntu环境安装依赖
sydo  apt  install  -y  openssl  curl
##centos环境安装依赖
sudo  yum  install  -y  openssl  openssl-devel
  • 下载build_chain.sh脚本
curl  -#LO https://gitee.com/FISCO-BCOS/FISCO-BCOS/raw/master/tools/build_chain.sh  &&  chmod  u+x  build_chain.sh
  • 搭建联盟链
bash  build_chain.sh -1 "127.0.0.1:4" -p 30300,20200,8584
## 其中-p指定起始端口,p2p_port用于节点之间的交互,channel_port用于sdk访问,jsonrpc_port用于控制台访问。
  • 启动联盟链
bash  nodes/127.0.0.1/shatr_all.sh
  • 检查是否启动成功
ps -ef |grep -v grep | grep fisco-bcos

5. Solidity编程基础

5.1 Solidity基础语法、变量类型、运算符

Truffle是一个以太坊智能合约开发框架,利用它可以方便地生成项目模板、编译合约、部署合约到区块链、测试合约等。

5.1.1 基础语法

Solidity源文件可以包含任意数量的合约定义、import和pragma

1.pragma语法

第一行是pragma指令,他告诉我们源代码是为Solidity Version某个版本编写的。

pragma指令只对自己的源文件起作用,如果把文件B导入文件A,文件B的pragma将不会自动应用于文件A。

pragma solidity ^0.4.0 意思是不能用低于0.4.0版本的编译器,也不能用0.5.0版本以及以上的版本。

这里的^表示不超过0.5.0版本。

若要0.4.0 到0.4.22版本,可如下编写:

pragma solidity >=0.4.0 <0.4.22

2.Contract/智能合约

智能合约是位于以太坊区块链上特定地址的代码(函数)和数据(状态)的集合。

3.uint storedData

这行代码,声明了一个名为storedData的状态变量,类型为uint。set和get函数可用于修改或检索变量的值。

4.导入文件

Solidity支持与javaScript非常相似的导入语句

import “fileName”;

import * as symbolName from “fileName”;

import “./X”; 从当前目录导入文件X

5.1.2 数据类型

Solidity中,变量类型有以下几大类:

1.值类型

int(m):有符号整数

uint(m):无符号整数

m关键字取值为8~256 为8的倍数 不写默认为256

2.地址类型

address 大小为20个字节值,包含42个字符

3.引用类型

是将数据的位置(内存地址)存储在堆[6]内存上的变量,题目不直接共享数据

Solidity 中引用类型的示例包括字符串、结构、数组和映射。

string 字符序列,支持使用单引号’'和双引号""的字符串文字。

struct 结构,是一种引用数据类型,可以用于创建其他数据类型的结构。结构可以包含值类型和引用类型,包括其他结构,但不能包含其自身的结构。

[] 数组 [1]指定大小为1,例如string[1],uint[1]

mapping(key => value) 映射,键值对数据结构,其功能类似于 Python 中的字典和 JavaScript 中的哈希表或对象。其中key可以是除引用类型以外的任何数据类型,并且value可以是值类型和引用类型。

不能用Solidity保留关键字作为变量名,例如break或boolean变量名无效

不应该以数字开头,必须以字母或下划线开头

变量名区分大小写

5.1.3 运算符

Solidity支持以下类型运算符

  • 算术运算符

加 +

减 -

乘法 *

除法 /

求余 %

乘方 ** (只支持无符号的整数)

  • 比较运算符

“>”:大于,只支持左右两边操作数是数值类型。
= : 大于等于,只支持左右两边操作数是数值类型。
< : 小于,只支持左右两边操作数是数值类型。
<= : 小于等于,只支持左右两边操作数是数值类型。
== : 等于,比较两个操作数是否相等,支持数值类型,字符串,定长字节数组。
!= : 不等于,比较两个操作数是否相等,支持数值类型,字符串,定长字节数组。

  • 逻辑(或关系)运算符

&& :与,前后两个表达式必须都是 true 才返回 true,否则返回 false。
|| :或,只要两个表达式中有一个是 true,就可以返回 true,否则返回 false。
! :非,也叫取反运算符,只需要一个操作数,如果操作数为 true,则返回 false;如果操作数为 false,则返回 true。

  • 位运算符

左移运算符 << 右移运算符 >>

按位与 & 当两位同时为 1 时才返回 1。

^ :按位异或。当两位相同时返回 0,不相同时返回 1。

| :按位或。只要有一位为 1 即可返回 1。

  • 赋值运算符(=)

  • 条件(或三元)运算符

int32 a = x > y ? x : y;

5.2 代码调试
5.2.1 Assert方法

assert(bool condition)-----如果不满足条件,则此方法调用将导致无效的操作码,并对状态所做的任何更改都将被还原。此方法用于内部错误。

  • assert.equal(actual, expected, message): 这个方法用于断言actual的值与expected的值相等。如果断言失败,将抛出一个错误,并显示指定的message作为错误信息。这是一种常用的方法,用于验证合约的返回值是否符合预期。

    示例代码:

    assert.equal(myVariable, 10, "myVariable应该等于10");
    
  • assert.notEqual(actual, expected, message): 与assert.equal相反,这个方法用于断言actual的值与expected的值不相等。如果断言失败,将抛出一个错误,并显示指定的message作为错误信息。这在验证两个值不应相等的情况下非常有用。

    示例代码:

    assert.notEqual(myVariable, 0, "myVariable不应该等于0");
    
  • assert.isTrue(value, message): 这个方法用于断言value为真。如果断言失败,将抛出一个错误,并显示指定的message作为错误信息。通过使用这个方法,您可以验证布尔值为真的情况。

    示例代码:

    assert.isTrue(isValid, "isValid应该为真");
    
  • assert.isFalse(value, message): 与assert.isTrue相反,这个方法用于断言value为假。如果断言失败,将抛出一个错误,并显示指定的message作为错误信息。您可以使用这个方法来验证布尔值为假的情况。

    示例代码:

    assert.isFalse(isInvalid, "isInvalid应该为假");
    
5.2.2 require方法
  • require(bool condition)-----如果不满足条件,此方法调用将恢复为原始状态。此方法用于输出或外部组件中的错误。
  • require(布尔条件,字符串存储消息)-----如果不满足条件,则此方法调用恢复为原始状态。–此方法将用于输入或外部组件中的错误。它提供了提供自定义消息的选项。
5.2.3 revert方法

revert()-----此方法中止执行并将所有对状态所做的更改还原到状态。

revert(字符串存储原因)-----此方法中止执行并将任何所做的更改还原到状态。它提供了提供自定义消息的选项。

6.测试相关

6.1 区块链系统测试方法
6.1.1 功能测试
  • 黑盒测试
  • 白盒测试:
    • 优先选用自动化测试工具来进行静态结构分析
    • 以静态分析的结果作为依据,用代码检查和动态测试的方式对静态分析结果进行进一步确认,提供测试效率和准确性
    • 使用多种覆盖率标准衡量代码的覆盖率
6.1.2 性能测试
  • 负载测试
  • 并发测试
  • 稳定性测试
6.1.3 安全测试
  • 使用安全扫描工具对系统进行扫码操作
  • 对难以实现自动化检测漏洞进行以下手工检测,如通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性
  • 利用模拟黑客攻击的方式,来评估计算机网络系统安全性能的方式
6.1.4 可靠性测试
  • 使用系统不允许用户输入异常值作为测试输入测试系统的容错性
  • 在系统中植入故障,测试系统容错性和成熟性
  • 在一定负载下,长时间大容量运行某种业务,测试系统稳定性
  • 在一段时间内持续使用超过系统规格的负载进行测试,验证系统可靠性
6.1.5 合规性测试
  • 收集和分类区块链相关法律,法规,标准和规范,建立合规知识库
  • 梳理知识库库文件的控制点,建立合规控制矩阵
  • 根据控制点建立评鉴指标体系和控制方法
  • 采用访谈、调查、检查、观察、自动化工具等方法开展合规性测试
6.2 区块链系统功能测试介绍
  • 去中心化:是区块链最根本的性质,也是区块链区别于其他分布式账本的最重要因素。
  • 防篡改:区块链采用了链式数据结构,如果某个节点篡改了一个区块的数据,该区块与前后区块之间的链接就会被打破,区块链就不再完整
  • 去信任:指的是在区块链中,一个节点无需信任任何其他节点,在假设其他节点都是不合作、不可信的前提下,最终仍可以根据共识机制从区块链中获取可信的数据。
  • 开放性:区块链的数据全部存储在每一个节点中,除了交易各方的私人信息被加密存储外,区块链的数据对所有节点公开,任何人都可以通过公开接口查询区块链数据,因此整个系统的信息保持高度透明,数据的完整性也易于验证。
  • 隐私性:加密
  • 自动执行:无需人为干预
  • 简化运维

7.区块链应用操作

7.1手动创建账户
7.1.1 安装openssl
//不同的操作系统命令略有不同,在Ubuntu系统上安装openssl命令是:
sudo  apt  install  -y  openssl
//centos系统上安装命令是:
sudo  yum  install  -y  openssl
// 执行命令,检查openssl是否正确安装
openssl  version

7.1.2 选择非对称密码

//在生成公私钥对前,需指定相应的加密算法和算法曲线。需选择ECDSA算法作为非对称加密算法,选择曲线secp256k1作为算法曲线,生成相关的参数文件
openssl  ecparam  -out  secp256k1.param  -name  secp256k1
// 查看生成的参数文件
cat  secp256k1
7.1.3 生成账户私钥
//生成明文形式保存的私钥user.pem(文件名可以指定,此处为示例)
openssl  genpkey  -paramfile  secp256k1.param  -out  user.pem
//查看生成的私钥文件
cat  user.pem
7.1.4 生成账户公钥
//生成公钥文件,假设使用user.public.pem作为文件名
openssl  ec   -in  user.pem  -pubout  -out  user.public.pem
//查看生成的公钥文件
cat user.public.pem
7.1.5 加密保存账户私钥
//生成加密保存的账户私钥文件(假设文件名为user.p12),执行期间需输入密码,用于加密私钥文件
openssl pkcs12  -export  -name  key  -nocerts  -inkey  user.pem  -out user.p12
//查看p12文件,检查是否与原密钥文件相同
openssl  pkcs12  -in  user.p12  -nodes
7.2 使用工具创建账户
7.2.1 安装openssl
//与手动创建账户一样。在Ubuntu系统上安装openssl命令是
sudo  apt  install  -y  openssl
//centos系统安装命令是
sudo yum  install  -y  openssl
7.2.2 下载工具
//下载账户生成工具get_account.sh
https://raw.githubusercontent.com/FISCO-BCOS/console/master/tools/get_account.sh  &&  chmod  u+x  get_account.sh
//下载国密账户生成工具get_gm_account.sh
https://ram.githubusercontent.com/FISCO-BCOS/console/master/tools/get_gm_account.sh  &&  chmod  u+x  get_gm_account.sh
7.2.3 检查工具
//检查get_account.sh脚本,执行指令
bash get_account.sh -h
// 检查get_gm_account.sh脚本,执行指令
bash  get_gm_account.sh -h
7.2.4 创建账户
//用get_account.sh 脚本创建账户
bash  get_account.sh
//用get_gm_account.sh脚本创建账户
bash get_gm_account.sh
7.2.5 创建私钥被加密的账户
//用get_account.sh脚本创建账户,并输入保护私钥的密码
bash get_account.sh -p
//用get_gm_account.sh脚本创建国密版账户,并输入保护私钥的密码
bash  get_gm_account.sh -p
7.2.6 获取账户地址
//使用get_account.sh直接从私钥文件中直接获取账户地址
bash  get_account.sh -k  accounts/xxxxx.pem
//使用get_gm_account.sh直接从国密的私钥文件中直接获取账户地址
bash  get_gm_account.sh -k  accounts_gm/xxxx.pem
7.2.7 获取私钥被加密的账户地址
//使用get_account.sh直接从p12私钥文件中直接获取账户地址,需要输入正确的私钥保护密码
bash get_account.sh -P  accounts/xxxx.p12
//使用get_gm_account.sh直接从p12私钥文件中直接获取账户地址,需要输入正确的私钥保护密码
bash get_gm_account.sh -P  accounts_gm/xxxx.p12
7.3 应用业务操作

1.启动控制台

./start.sh
./start.sh  groupID
./start.sh   groupID  -pem  pemName
./start.sh  groupID  -p12  p12Name

2.生成公私钥

./get_account.sh

3.查询区块序号

[group:1] getBlockNumber

4.按照区块序号查询区块数据

[group:1]getBlockByNumber

5.按交易哈希值查询交易数据

getTransactionByHash   XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7.4 区块应用运维
7.4.1 区块链应用部署基本流程

区块链应用部署流程一般包括:区块链网络搭建,智能合约编译与部署,部署调用区块链的服务端项目接口,部署区块链用户使用的前端项目,测试网络部署结果

智能合约编译和部署:编译合约—》部署合约—》测试合约—》撰写报告

部署服务端接口项目:准备环境—》部署项目—》测试结果—》撰写报告

部署客户端项目:准备环境—》测试项目—》测试结果—》撰写报告

安装并启动Console控制台

安装Console的依赖内容,在centos平台运行以下命令

sudo  yum  install  -y  java  java-devel

在ubuntu平台运行以下命令

sudo  apt  install  -y  default-jdk

接下来安装console工具

拷贝控制台配置文件:

cp -n  console/conf/config-example.toml  console/config/config.toml

配置控制台证书

cp -r  nodes/127.0.0.1/sdk/*  console/conf

在启动控制台之前通过命令确认区块链节点是否已经启动,使用以下命令并观察输出

ps -ef | grep  -v  grep | grep  fisco-bcos

确定节点已经启动后,使用如下命令启动并进入控制台

cd ~/fisco/console  && bash  start.sh
sudo  yum  install  -y  java  java-devel

在ubuntu平台运行以下命令

sudo  apt  install  -y  default-jdk

接下来安装console工具

拷贝控制台配置文件:

cp -n  console/conf/config-example.toml  console/config/config.toml

配置控制台证书

cp -r  nodes/127.0.0.1/sdk/*  console/conf

在启动控制台之前通过命令确认区块链节点是否已经启动,使用以下命令并观察输出

ps -ef | grep  -v  grep | grep  fisco-bcos

确定节点已经启动后,使用如下命令启动并进入控制台

cd ~/fisco/console  && bash  start.sh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值