10. 新功能启用配置
此页面将介绍升级后如何开启新功能,若不是升级,则可在创建链时修改配置文件、或者默认启动。
10.1. v2.3.2 ->v3.0.0
10.1.1. 存储启动store-huge
在v3.0.0中,存储引擎支持旧引擎和新存储引擎store-huge(目前是alpha,不建议生产环境使用)。
如果要使用store-huge,必须清空当前node的所有存储数据,包括wal和数据库中的数据。 把使用store-huge的node当做一个新节点来启动。从0开始。
集群中,假设有node1,node2,node3,node4,node5 五个节点/进程。 要启动 store-huge,那么要依次操作,保证前一个启用了store-huge,并且已完全同步完区块后,再操作下一个node。 建议使用store-huge的节点数少于总节点数的一半。
注意不同的node/进程,(如果安装在一台服务器上),则不能用同一个磁盘。
1.开启store-huge 在chainmaker.yml中storage作用域下,选择使用 engine_provider: store-huge 存储引擎。如果不配置engine_provider 字段,则默认使用旧存储引擎。
# engine provider
engine_provider: store-huge
2.配置在线文件系统,和冷热分离系统。
engine_provider: store-huge
#block file system
block_file_config:
online_file_system: "/home/node1/hot1,/home/node1/hot2"
archive_file_system: "/home/node1/cold1,/home/node1/cold2"
#store engine version
storage_config_version:
major_version: 1
minor_version: 2
3.删除现有数据,包括文件和db
4.启动新节点
10.1.2. 虚拟机启用Docker Java
在本次v3.0.0的版本升级中,增加docker java虚拟机新特性。
10.1.2.1. Docker Java 的核心配置项:
common:
# 与虚拟机引擎grpc通信的最大消息发送大小, 默认100MB
max_send_msg_size: 100
# 与虚拟机引擎grpc通信的最大消息接收大小, 默认100MB
max_recv_msg_size: 100
# 与虚拟机引擎grpc通信的最大连接超时时间, 默认10s
dial_timeout: 10
# 运行时服务器配置 (与合约实例进程交互,进行信息交换)
runtime_server:
# 端口号,默认为 32351
port: 32351
java:
# 是否启用Java容器
enable: true
# 数据挂载路径, 包括合约、sock文件(uds)
data_mount_path: ../data/wx-org1.chainmaker.org/java
# 日志挂载路径
log_mount_path: ../log/wx-org1.chainmaker.org/java
# 如果需要自定义高级配置,请将vm.yml文件放入dockervm_config_path中,优先级:chainmaker.yml > vm.yml > 默认配置
# dockervm_config_path: /config_path/vm.yml
# 是否在控制台打印日志
log_in_console: false
# docker合约引擎的日志级别
log_level: DEBUG
# 合约引擎最多启用的原始合约进程数,默认为20(跨合约调用会额外拉起新的进程)
max_concurrency: 20
# 合约引擎服务器配置 (与chainmaker交互,进行交易请求、合约请求等交互)
contract_engine:
# 合约引擎服务器ip, 默认为 127.0.0.1
host: 127.0.0.1
# 端口号,默认为 23351
port: 23351
# 与合约引擎服务器的最大连接数
max_connection: 5
虚拟机的完整配置请参考《启动支持Docker_VM的链》。
注:common为Docker Go 和Docker Java共用的配置项,如果单独启用任一虚拟机都需要配置common配置。
10.1.2.2. 启用Docker Java命令
在完成节点的升级和配置变更后,可以通过以下链配置的交易启用Docker Java。注意:需要尽可能保证java虚拟机的相关配置是有效的,以免影响虚拟机的拉起。
# 由于docker java的合约体积较大,需要修改交易参数大小为40M或以上。
./cmc client chainconfig block updatetxparametersize \
--tx-parameter-size 40 \
--sdk-conf-path=./testdata/sdk_config.yml \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.key \
--admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.crt
# 启用 docker java
./cmc client contract user invoke \
--contract-name=CHAIN_CONFIG \
--method=VM_SUPPORT_LIST_ADD \
--params="{\"vm_type\":\"dockerjava\"}" \
--sdk-conf-path=./testdata/sdk_config.yml \
--sync-result=true \
--result-to-string=true \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.key \
--admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.crt
以上命令返回的message是OK,则说明启用成功。如果日志中没有相关报错,则节点已经拉起java虚拟机,可以发起docker java合约的安装和调用。
10.2. v2.3.0、v2.3.1->v2.3.2
10.2.1. 交易黑名单
交易黑名单
是新的系统合约,在232以前版本没有,故若是升级则需要手动初始化。在升级到v2.3.2版本以后,可以通过以下命令初始化之前版本中没有初始化的系统合约:
./cmc client contract user invoke \
--contract-name=CONTRACT_MANAGE \
--method=INIT_NEW_NATIVE_CONTRACT \
--sdk-conf-path=./testdata/sdk_config.yml \
--sync-result=true \
--result-to-string=true
本命令返回的message是OK,则说明新系统合约初始化成功。其使用详情可见交易黑名单
10.2.2. 开启升级合约的权限支持只有合约创建者可升级
升级合约的权限支持只有合约创建者可升级
功能是旧的系统合约(contract manage)中新增逻辑。其开启、关闭是在旧的系统合约(chainconfig manage)中新增2个方法。
在升级到v2.3.2以后,可通过发送交易开启仅创建者升级。详见合约只允许创建者升级
10.3. v2.3.0->v2.3.1
10.3.1. 三段式在线多签
在v2.3.0中,使用的是两段式多签,存在一个gas扣费的问题:会扣除最后一个投票成功人。显得不合理。故在v2.3.1中加入了三段式多签操作。原有发起多签请求和发起投票不变,新增确认投票操作,只能有发起多签请求的人有权限调用。将扣除发起人的gas值。
cmc启用方式
./cmc client chainconfig enable-manual-run \
--multi-sign-enable-manual-run=false \
--sdk-conf-path=./testdata/sdk_config.yml \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.key \
--admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.crt
配置文件参考
bc.yml
# Virtual machine related settings
vm:
native:
multisign:
enable_manual_run: true
参考链接: cmc在线多签操作
10.3.2. 数据库慢日志
在chainmaker.yml storage下级目录添加slow_log: 0 然后重启节点即可(单节点修改当前节点就生效)
storage:
# record DB slow log (INFO level,KV DB) when query spend time more than this value (millisecond), 0 means no record
slow_log: 0
10.4. v2.2.1->v2.3.0
默认gas计费为关闭状态,启用gas计费,CMC参考
./cmc client gas
--sdk-conf-path=./testdata/sdk_config.yml \
--admin-key-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.key,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.key \
--admin-crt-file-paths=./testdata/crypto-config/wx-org1.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org2.chainmaker.org/user/admin1/admin1.sign.crt,./testdata/crypto-config/wx-org3.chainmaker.org/user/admin1/admin1.sign.crt \
--gas-enable=true
配置文件参考:
bc.yml
# gas account config
account_config:
enable_gas: false