# 新功能启用配置 此页面将介绍升级后如何开启新功能,若不是升级,则可在创建链时修改配置文件、或者默认启动。 ## v2.3.2 ->v3.0.0 ### 存储启动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 字段,则默认使用旧存储引擎。 ```shell script # 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.启动新节点 ### 虚拟机启用Docker Java 在本次v3.0.0的版本升级中,增加docker java虚拟机新特性。 #### Docker Java 的核心配置项: ```yaml 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的链》](../instructions/启动支持Docker_VM的链.html#dockervm)。 注:common为Docker Go 和Docker Java共用的配置项,如果单独启用任一虚拟机都需要配置common配置。 #### 启用Docker Java命令 在完成节点的升级和配置变更后,可以通过以下链配置的交易启用Docker Java。注意:需要尽可能保证java虚拟机的相关配置是有效的,以免影响虚拟机的拉起。 ```bash # 由于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合约的安装和调用。 ## v2.3.0、v2.3.1->v2.3.2 ### 交易黑名单 `交易黑名单`是新的系统合约,在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,则说明新系统合约初始化成功。其使用详情可见[交易黑名单](../dev/命令行工具.html#txBlackListManage) ### 开启升级合约的权限支持只有合约创建者可升级 `升级合约的权限支持只有合约创建者可升级`功能是旧的系统合约(contract manage)中新增逻辑。其开启、关闭是在旧的系统合约(chainconfig manage)中新增2个方法。 在升级到v2.3.2以后,可通过发送交易开启仅创建者升级。详见[合约只允许创建者升级](../dev/命令行工具.html#chainConfig.onlyCreatorUpgrade) ## v2.3.0->v2.3.1 ### 三段式在线多签 在v2.3.0中,使用的是两段式多签,存在一个gas扣费的问题:会扣除最后一个投票成功人。显得不合理。故在v2.3.1中加入了三段式多签操作。原有发起多签请求和发起投票不变,新增确认投票操作,只能有发起多签请求的人有权限调用。将扣除发起人的gas值。 **cmc启用方式** ```sh ./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 ```yml # Virtual machine related settings vm: native: multisign: enable_manual_run: true ``` 参考链接: [cmc在线多签操作](../dev/命令行工具.html#multiSign) ### 数据库慢日志 在chainmaker.yml storage下级目录添加slow_log: 0 然后重启节点即可(单节点修改当前节点就生效) ```sh 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 ``` ## v2.2.1->v2.3.0 默认gas计费为关闭状态,启用gas计费,CMC参考 ```sh ./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 ```sh # gas account config account_config: enable_gas: false ```