简介

  1. 由金融区块链联盟(深圳)主导研发的完全开源的联盟区块链平台
  2. 在2017年开源
  3. 是企业级的金融联盟链底层平台
  4. 支持以群组架构为体,并行计算和分布式存储为两翼,以及包含多项为使用提供的优化功能为引擎的一体两翼多引擎模型
  5. 主张将微信群组的使用模式的方便性引入

权限

Fisco Bcos通过角色进行权限控制

 

节点

节点ID

# 查看节点0id
cat ~/fisco/nodes/127.0.0.1/node0/conf/node.nodeid

 

区块

区块字段

  • dbhash:Fisco Bcos的新增字段,分布式存储通过计算哈希值来记录一个区块中写入的数据。
  • extraData:当前区块的其他信息
  • gasLimit:当前区块允许的最大交易费
  • gasUsed:当前区块累计使用的交易费
  • hash:区块的哈希值
  • logsBloom:区块日志的布隆过滤器
  • number:区块高度
  • parentHash:父区块的哈希值
  • receiptsRoot:收据的根节点
  • sealer:打包区块在共识节点中的索引
  • sealerList:共识节点列表
  • stateRoot:区块状态树的树根哈希
  • timestamp:时间戳
  • transactions:交易详细信息
  • transactionRoot:交易前缀树根

 

 账户

创建账户

利用脚本创建

非国密获取账户脚本下载

curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/tools/get_account.sh && chmod u+x get_account.sh && bash get_account.sh -h

国密账户脚本下载

curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/tools/get_gm_account.sh && chmod u+x get_gm_account.sh && bash get_gm_account.sh -h
# 国密版本需要配合tassl使用,下载tassl,下载后解压在~/.fisco/tassl/目录下
curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/tools/tassl-1.0.2/tassl.tar.gz

创建账户

创建成功后,账户公私钥会保存在当前目录的accounts/目录下

# 默认创建私钥存储格式为pem的
bash get_account.sh
# 创建私钥存储格式为p12的
bash get_account.sh -p

其他创建方式

# python-sdk中的脚本文件包含创建账户的方法,账户公私钥的存储路径在client_config.py中配置
./console.sh newaccount <account_name> <account_password>
# 控制台中同样包含创建用户的方法,账户的公私钥存储在console目录下的accounts目录中
newaccount <account_name> <account_password>

 

使用账户

计算地址

# 计算私钥以pem格式存储的账户的地址
bash get_account.sh -k <private_key_file_path>
# 计算私钥以pkcs12格式存储的账户的地址
bash get_account.sh -P <private_key_file_path>

 

权限

注:如果没有为链设置链管理员,即PermissionManager,则所有用户都拥有全部权限

设置链管理员

# 设置管理员权限
./console2.py grantPermissionManager 0xcbdd935fbcaa76db9610d64b38e1fc0fdd3974f9

操作执行成功,但是返回-51004,并且管理员没有设置成功

错误原因猜测:Fisco提供的控制台中没有包含赋予管理员权限的方法,可能时Fisco已经弃用了这个方法,并且用委员会成员来代替管理者角色

解决

通过控制台设置账户为委员会成员

./grantCommitteeMember <account_address>

 

 节点

新增节点

复制代码
cd fisco/nodes/127.0.0.1/
# 获取建链脚本
curl -#LO https://raw.githubusercontent.com/FISCO-BCOS/FISCO-BCOS/master-2.0/tools/gen_node_cert.sh
# 生成节点证书
bash gen_node_cert.sh -c ../cert/agency -o node4
# 拷贝配置文件
cp node0/config.ini node0/start.sh node0/stop.sh node4/
# 编辑配置文件
vim node4/config.ini
···rpc模块···
···1.修改channel_listen_port=20204···
···2.修改jsonrpc_listen_port=8549···
···p2p模块···
···1.修改listen_port=30304···
···2.新增node.4=127.0.0.1:30304···
# 配置群组初始信息,Fisco是群组架构的,包括数据库配置等信息在群组配置信息中
cp node0/conf/group.1.genesis node0/conf/group.1.ini node4/conf/
# 启动节点
bash node4/start.sh
# 确认节点与其他节点建立了链接
tail -f node4/log/log*  | grep "connected count"
复制代码

 

节点加入群组

# 获取节点ID
cat fisco/nodes/127.0.0.1/node4/conf/node/nodeid
# 启动节点
./fisco/nodes/127.0.0.1/node4/start.sh
# 添加为共识节点
./console2 addSealer <nodeid>

 

节点退出

# 清空节点连接
vim node5/config.ini
# 重启node5,使配置修改生效
./node5/stop.sh
./node5/start.sh

# 编辑与节点5建立连接的节点,删除连接
vim node6/config.ini
# 重启节点6,使配置生效
./node6/stop.sh
./node6/start.sh

# 登录控制台
./start.sh 1 -p12 accounts/0x6e703d811c787d0aee7ea91f7e51eecfb6e8cefa.p12
# 将节点移除群组
removeNode 69250bb01876e845dea44fdaecfe71bc8606f5a1e6970c6c8c725868cbd32863fe416be1e8134ffadc4517d95373b302269d7435ca2b9e0f93845583f6dae863
# 查看群组节点列表,是否移除成功
getGroupPeers

 

数据库

更换FISCO_BCOS底层数据库为MYSQL

安装MySql

https://www.cnblogs.com/losHill/articles/17286723.html

创建数据库

create database xxxx

 

配置区块链节点

https://blog.csdn.net/qq_52757943/article/details/118653755 

更改默认配置

如节点0的群组1的配置文件位置是fisco/nodes/127.0.0.1/node0/group.1.ini

用通配符统一修改

复制代码
# 修改存储类型为mysql
sed -i 's/type=rocksdb/type=mysql/g' ~/fisco/nodes/127.0.0.1/node*/conf/group.1.ini

# 配置数据库用户名和密码(本教程中,所有节点均以root的用户名连接同一个数据库,root用户密码为123456)
sed -i 's/db_username=/db_username=root/g' ~/fisco/nodes/127.0.0.1/node*/conf/group.1.ini
sed -i 's/db_passwd=/db_passwd=123456/g' ~/fisco/nodes/127.0.0.1/node*/conf/group.1.ini
sed -i 's/db_name=/db_name=xxx/g' ~/fisco/nodes/127.0.0.1/node*/conf/group.1.ini
复制代码

 

 智能合约

编译

编译缺少的abi

使用控制台编译abi

下载控制台脚本
curl -LO https://github.com/FISCO-BCOS/console/releases/download/v2.9.2/download_console.sh && bash download_console.sh
进入控制台脚本文件夹
cd console
运行编译脚本
bash sol2java.sh com.qq.test <contract_path>   # com.qq.test为solidity合约编译的Java文件所处的包名
获取编译好的abi文件

路径:./contracts/sdk/abi/

其他类似文件也在本路径

 

部署浏览器

【FISCO BCOS】十九、区块链浏览器部署

 部署成功后,后续Ubuntu重启后再次打开浏览器显示服务器启动错误 server start fail

原因一:JAVA_HOME的配置问题

即使可以在终端中获取到JAVA_HOME的值,但是fisco的浏览器可能还是读取JAVA_HOME不成功

解决:手动配置在重新安装浏览器

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
# 重新安装时不需要再次下载解压浏览器,重新安装数据库即可
python3 deploy.py installAll

 

 

参考

权限控制