此次整理的内容为5-6月社群内的问答供更多开发者参考(社群中部分优质问题连贯性不足未能收录,欢迎点击公众号菜单栏加入社群共同交流)。有更多问答在社区issue中描述更为细致,开发者提问前可以先按照关键词进行搜索。欢迎各位开发者按照问答template提交issue,也欢迎有意愿的开发者参与到社区issue版块维护中。
issue问答合集链接:
https://git.chainmaker.org.cn/chainmaker/issue/-/issues?scope=all&utf8=%E2%9C%93&state=all
社群问答精选
安装配置
1. Q:请教一下,长安链部署链对于服务器有没有要求,可不可以用虚拟机?
A:可以的,例如使用centos7。
2. Q:想问这个是啥问题?我这个是开放测试网络。
A:使用长安链插件钱包发送上链信息失败。
(1)此前长安链开放测试网络升级过相关链信息,如果您的插件版本低于V1.5.0,请尽快升级到V1.5.0及以上;
(2)如果您是订阅的自己的链且连接超时,请检查如下信息。
- 长安链插件是部署在公网的,请确保您的链网络支持公网访问。
- 如果您的链网络是部署在局域网环境的测试用的,请将插件系统设置内的网络代理更换到您自行部署的代理服务上。如何部署代理服务请参考长安链插件使用文档。
- 您所要访问的链的相关信息是否填写正确,如chainid,节点信息、链账户信息,以及节点是否还正常运行。
3. Q:管理平台可以修复合约升级权限的吗, 在管理平台投票后修改失败?
A:(1)长安链管理台目前支持修改链配置和链的账户权限,在列表上罗列出:更新区块配置,部署合约、升级合约、冻结合约、解冻合约、注销合约等常用的几个权限的入口。同时也可以通过修改更多权限按钮,修改更多权限。
如果您通过列表修改权限失败,可尝试通过修改更多权限按钮修改。
长安链的权限资源请参考文档:https://docs.chainmaker.org.cn/tech/%E8%BA%AB%E4%BB%BD%E6%9D%83%E9%99%90%E7%AE%A1%E7%90%86.html#permissionedwithcert
(2)如果两者都修改失败,请检查您的链是否还正常运行。
4. Q:请问数据迁移工具目前支持到哪个版本?说明里面是2.2.1。
A:后续的长安链版本兼容2.2.1的数据。
Q:2.3.x版本支持吗?
A:支持的;只需要备份数据之后,更换可执行程序即可。
5. Q:请问链的日志级别在链搭建成功后,可以再次对日志级别进行修改吗?
A:修改log.yml后重启节点。
Q:节点不重启可以吗?
A:目前不支持。
6. Q:请问多机部署中生成的安装包在Linux和Mac通用吗?
A:不通用。
Q:那如果部署机器有Mac的话如何生成他的安装包呀?
A:在mac上单独生成节点安装包然后加入已有链,证书使用同一套,换下二进制就行。
合约相关
7. Q:你好,我想问一下预言机的合约格式限制是只是这个post 表单功能限制吗。还是全局就只支持编译环境是 go 的合约? 因为我看前面说明使用 cmc 指令的时候一点也没提这个事情,只在这里提了下。
A:只支持go合约。
8. Q:把 docker 合约 vm 启用,启动时候报这个错误是什么原因?
A:docker vm没启动吧?这个错误是连接不上docker vm。
Q:看到存在 没有看到端口映射。docker port VM-GO-xf-org4.xwindlab.com 这个容器没有端口映射出来 是正确的吗?
A:不正确 相对于 你连上 EVM 虚拟机,无法部署合约。
9. Q:第一次执行 cmc 合约部署,sdk.log 会报getSyncResult failed错。但是第二次执行的时候就会变成failed to check contract bin version。(但是删除sdk.log后再执行,会继续报错getSyncResult failed)
https://git.chainmaker.org.cn/chainmaker/chainmaker-go/-/blob/master/test/testdata/ERC20Go.7z
用 chainmaker-go 的 ERC20 测试。发现现象和合约无关,只要是 go 的合约,上述现象是一样的。
A:1. 区块链节点环境安装了7z,不是本地,是区块链节点;2. 确认所有节点都有7z。
SDK相关
10. Q:各位好,想请教一下java-SDK、以及出块的问题:
版本:2.3.1;
链配置:出块间隔-10s,区块容量-100;
问题:SDK发起上链,只有一笔交易就打包出块了,怎么才能一次打包多笔交易,是配置有问题吗?
A:举个例子:公交车来了,站台只有一个人,那就不等了直接拉着开走。站台有 200 人等待,一趟车就拉 100 人,那就俩次拉完。
Q:这个能理解,但是我的疑问点也在这,测试的时候,单个节点发起一次调用(调用invokeContract方法),然后就等待了,出块间隔到了就出块;
我想问的是:单个节点的多笔交易是通过一次调用完成的,还是说多笔交易需要多次调用才可以?
A:多线程或者说发送时采用异步方式,不要同步等待结果。
11. Q:问一下 怎么设置go-sdk中日志模块,比如输出等级、日志文件位置等,WithChainClientLogger这一个貌似不够啊?
A:可以参考这个:
交易相关
9. Q:如果要修改运行时的交易池大小,能通过执行系统合约修改吗?
A:交易池配置在chainmaker.yml里面,属于节点配置,不是链配置。不支持动态修改。
Q:那就是修改配置文件然后重启对吧?
A:对的,修改chainmaker.yml里面的配置,都这么做。
10. Q:长安链有根据时间范围查询交易的接口吗?
A:没有,可以考虑转换成时间范围内的区块,然后根据区块去取交易。
Q:这个时间范围内的区块需要业务系统自己记录吗?
A:区块里面有时间戳,如果不记录的话,可以用里面的时间戳,然后结合二分查找。但是记录会简单些,需要额外存,可以结合自己的场景选择合适的方案。
11. Q:请问开了batch交易池后会自动打开共识消息压缩吗?
A:会的。
12. Q:如果配了多个chain id,那么chain1和chian2的交易应该不会打在同一个区块里吧?
A:两个chain的区块互不干扰。
存储相关
13. Q:请问大家影响节点运行内存占用大小的因素都主要有什么呢,我在使用默认交易过滤器进行1000笔/s的压力测试时,内存使用量达到700MB,希望能够降低一下。
A:可以用pprof分析一下。
Q:这样看是文件DB占用的多,请问这个可以降低吗?
A:logdb_segment_size: 64,修改这个配置之后重启看看;另外你服务器配置低的话,需要关闭一些缓存配置,enable_rwc: false
disable_state_cache: true。
14. Q:请问长安链的区块结果里面的额外数据的字段是存储什么信息的呢?
A:主要是签名信息。
15. Q:请问节点存储文件下wal存储的是什么内容呢?
A:这个是共识节点存储的一些wal信息,保证共识安全和一致性的。
Q:那请问他的大小是累计增长的吗?
A:会增长,但有上限,会自动删除过期的内容。
证书相关
16. Q:编译证书工具,报这些错误。需要怎么配置才能通过呢?asym这个包没有被包含进去编译。请问下大佬们,cryptogen需要设置一些特殊配置吗?试过了go mod了,直接执行make也是报一样的错误我电脑装了三个版本的go。其他项目我是能随意切换go版本编译的?
A:windows可以试试230的。支持编译。231的暂未适配windows。
17. Q:请教一下 PermissionWithKey、Public 这2中身份模式区别在哪?都是公私钥。
A:PermissionWithKey 这个还需要注册用户才可以访问合约。Public 完全不用注册 相当于放开权限,像公链一样。
跨链相关
18. Q:请问适配2.3.x版的跨链程序发布了吗?查找了一下spv,发布到了2.1.0版。没看到2.3.0对应的spv版本,另外,cross-chain中集成了spv功能,看到现在的版本支持到v2.1.0。
Q:2.3.x版本的跨链程序暂时还没发布,可以继续关注,目前只支持到2.1.x。
19. Q:长安链支持fabric到fabric的跨链吗?
A:不支持。
共识相关
20. Q:长安链这个tbft就是tendermint么?
A:是的,算法本身是基于tendermint论文的,我们做了一些调整和优化。
Q:他的这个主节点轮换的规则是什么呢?
A:正常情况下就是轮换,一个一个来,如果出现一轮没有出块的时候,等这轮完成后,会重新按照取模的方式来。
21. Q:求问,长安链共识节点优先考虑的是内存,还是硬盘?当数据量大起来时,哪部分会成为瓶颈?
A:都需要考虑吧,看测试的时候卡点在哪里;https://docs.chainmaker.org.cn/manage/%E6%95%B0%E6%8D%AE%E7%AE%A1%E7%90%86.html。存储配置的时候,参照一下这个文档。
其他问题
22. Q:
chainmaker/vm-wasmer/[email protected]/wasmer-go/packaged/include/wasm.h:32: more undefined references to `static_assert' followcollect2: error: ld returned 1 exit status
centos编译报错了 ,wasm的。
A:gcc -v 查看gcc版本,升级到7.3以上。
23. Q:
订阅链失败: send QUERY_CONTRACT failed, all client connections are busy
有谁遇到过这种错误吗?
A:检查一下证书和配置文件是否匹配。
24. Q:请问一下上链成功了,但是里面数据乱码是什么原因呢?
A:浏览器只解析base64,和utf-8。
25. Q:存证合约用的哈希函数是哪种哈希函数?
A:这个由具体的业务来决定哈,长安链的存证合约不计算hash,由业务方根据业务场景来计算就可以~
26. Q:请问在区块头的签名字段和额外数据的签名信息有什么不同呢?
A:区块头是自己签名,其他地方是共识投票签名。
27. Q:public key 模式下,节点之间需要tls证书吗?
A:不需要。