WeBASE常见问题

Date: 2020-09-14 Source: 本站

学习区块链就是不断踩坑积累的过程,为方便大家更好地从前人中总结经验,我们将FISCO BCOS社群中高频次、高质量的技术提问与探讨沉淀下来,集合成常见FAQ,作为一手学习材料,供大家随时查阅。


本篇收录了关于“WeBASE”的常见问题。WeBASE是由社区伙伴贡献的区块链中间件平台,用以简化区块链应用开发流程,降低企业落地区块链应用的时间成本、人力成本,帮助企业快速搭建区块链应用。




Q1 :是否能同时使用WeBASE和WeCross这两个组件搭建一套跨链的平台呢?

A1 :可以同时使用,是两种不同的功能组件。


Q2 WeBASE-Collect-Bee子系统只是解析历史区块数据,把历史区块、交易和合约事件数据导出,合约内部存储的数据像mapping之类是没办法导出吗?

A2 是的。有了交易和事件导出,辅以巧妙定义事件,链下还原mapping数据不是难事。


Q3 在WeBASE创建了账户,如何在console里面也生成对应的p12私钥文件以方便我在consloe里用这个私钥进行启动呢?

A3 目前支持在WeBASE- Front导入pem格式私钥,建议单独在一个地方做调试,单个平台管理更方便。1.3.1版本将支持p12私钥文件导入,敬请期待。


Q4 在WeBASE-Front上部署自己的合约会生成java文件吗?

A4 不会生成 java 文件,Front界面支持生成java类。


Q5 WeBASE-Front 配置了webase-sign 地址,但是在WeBase管理平台上新增用户后,没看到webase-sign数据库里有记录。

A5 这个版本是需要调用webase sign的newUser接口新增一个用户,然后sign通过返回userId去调用。使用webase-sign来管理私钥的话,可以参考webase-node-mgr接口文档的deployWithSign和transWithSign接口。


Q6 使用macOS操作系统部署webase node manager一直卡在start是怎么回事呢?

A6 node-manager暂时不支持mac。


Q7 We-Front 的合约IDE里面编写并编译好了一个合约,复制合约内容保存到本地文件以后,再重新导入这个合约文件编译生成的bytecodeBin为什么后面的一小段不一样呢?windows系统,使用We-Front 1.2.4版本,当合约参数为bytes32类型的时候会报错,但使用webase-front1.2.0就没问题。
unable to create instance of type:org.fisco.bcos.web3j.abi.datatypes.generated.Bytes32
A7 bytes32要用这种格式输入,长度要一致,在页面加个限制。
0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20


Q8 使用macOS操作系统部署webase node manager一直卡在start是怎么回事呢?

A8 node-manager暂时不支持mac。


Q9 想做一个区块链应用,现在已经写好后端和智能合约,web前端开发有什么推荐的吗?

A9 https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE/install.htm


Q10 1.3.0版本的情况下,同一个前置上可以配置多个签名服务吗?主备的那种呢?

A10 可以的,在front的yaml里可以配置多个sign的ip port。主备区分的情况下,需要另外在代码中配置,front是默认访问第一个。


Q11 通过控制台查询到的部署有3个,为什么在WEBASE部署显示0?

A11 这里显示的数量是通过WeBASE平台部署的合约。


Q12 启动WeBASE-Sign: python deploy.py startSign 这个命令是不是无效的?不用启动?

A12 可以的,在front的yaml里可以配置多个sign的ip port。主备区分的情况下,需要另外在代码中配置,front是默认访问第一个。


Q13 1.3.0版本的情况下,同一个前置上可以配置多个签名服务吗?主备的那种呢?

A13 如果想单独启动sign可以到webase-sign目录下,调用start.sh脚本。1.3.1版本增加了这个命令,择日即将发布。


Q14 在使用WEBASE过程中遇到不能删除文件夹的问题。

A14 部署的合约是不能删除的,如果要对合约进行调试开发,请使用WeBASE-Front的可视化开发环境。


Q15 Webase创建了私钥用户,如何导入到console,用该私钥启动控制台?

A15 front支持导入控制台的pem私钥,建议在单个平台进行操作。


Q16 用webase-front编译参数为Bytes32时报错无法初始化。

A16 bytes32需要用0x开头补齐32位的方法。


Q17 webase-node-manager交易审计里面的异常合约记录该如何消除呢?合约已经上传到webase-node-manager的web ide里面进行了保存和编译。

A17 需要发笔交易触发才能消除异常合约。


Q18 :webase-front怎么升级solc的版本?

A18 front的solc目前是引入的js包,文档有相应升级说明。


Q19 :webase-node-manager的区块同步异常问题。

A19 定时任务串行的问题导致,等一段时间会自动同步成功。


Q20 :WeBASE界面测试合约,view方法会随机生成私钥。部分用户合约查询跟msg.sender有关的话,查询值跟期望值不符。

A20 只读交易本来就是没有签名,无法保证用户不伪造。建议可以直接用参数指定查询条件。


Q21 我用WeBASE做了一个应用,要怎么移植到BSN呢?

A21 使用WeBASE搭建开发环境,开发应用调通后,放到BSN的环境运行;只是网关API替换或者适配一下即可。


Q22 不同渠道部署的合约,在WeBASE上调用不了。

A22 导入合约,然后使用合约地址就可以调用。


Q23 使用国密版webase-front /contract/compile-java接口得到的合约在webase-collect-bee导出失败。 A23 修改collect-bee为国密版配置。
Q24 :FISCO BCOS 2.2 WeBASE最新版,solidity编译成java文件时,事件变量如果没有显式指定变量名称,转换过程会报错“not a valid name”,没有详细堆栈输出是怎么回事?

A24 需要填变量名。


Q25 nginx配置错误问题 ,导致无法访问web界面。

A25 文件路径配置错误。


Q26 区块链游览器,起了两个docker,一个给mysql,一个给浏览器后台+前端。浏览器的docker里面可以通过mysql命令访问到DB,但是后台程序JDBC一直报错。

A26 数据库版本不匹配,目前manager的mysql版本不支持8.0。


Q27 调用webase-node-manager合约部署接口时,报错Multipart servlet request IOException。

A27 使用了node-manager后台接口编译智能合约后,调用部署接口传参格式不正确导致报错。


Q28 WeBASE界面验证码出不来。

A28 服务没有启动,检查WeBASE-Node-Manager是否启动。


Q29 怎么通过回调函数查询几天前一个地址的转账记录呢?

A29 回调函数是在event被调用后自动触发的。想要主动查询,可以使用WeBASE-Collect-Bee数据导出组件,将链上的数据导出到链下的数据库中,其中包含了所有的event信息。


Q30 用WeBASE开发合约无法管理合约吗?比如删除合约,重命名?

A30 WeBASE管理平台不可以修改,WeBASE-Front可以删除。


Q31 请问如何得到账号私钥?使用WeBASE管理平台的私钥管理如何导入或者导出私钥信息呢?

A31 私钥是加密存储的,不能导出,建议您可以先生成一个私钥,再在WeBASE里赋权。


Q32 我已经启动front sign ,然后启动 node;webase单独启动节点,log描述:not found any group ,这个怎么解决?

A32 添加完前置就能获取到group了。


Q33 WeBASE的solidity编译器可以切换成高版本的吗比如0.5.0?

A33 目前还不支持,后面的版本有规划支持切换。


Q34 交易处理接口(结合WeBASE-Sign)

WeBASE-Front/trans/handleWithSigncontractAbi如果没有传入此字段,则从db或cns获取合约abi;我目前是通过webase-node-manager部署的合约,目前如果不传contractAbi会报错get abi error。请问如何才能不需要传contractAbi参数?从db获取,他是从哪个db获取的?我用的版本是1.3.0。

A34 1.3移除了cns的逻辑,在front调用合约的话,要传abi。


Q35 区块数量内外不一致

A35 本地保存最新的10000个区块,可以在Yml中设置一下最大值,constant-blockRetainMax。


Q36 安装WeBASE-Codegen-Monkey,配置文件里有一个要填写合约Java文件的包名system.contractPackName=[编译Solidity合约时指定的包名],我填了自己的但是还一直报错,Invalid java package name. Please make sure your config is equal to your package name.说包名不对。

A36 这个配置指的是编译成JAVA合约的包名,可以随便打开一个JAVA合约,第一行就是


Q37 这个包哪里可以获取?

A37 如果用0.4.25不用修改,使用0.5就修改build.gradle中的版本号就可以切换


Q38 添加权限时报错,VM centos7系统,合约与交易是正常的。

A38 账户信息是旧账户,需要重新创建一个新的账户。重新安装所有子系统,或做兼容升级。


Q39 在webase里如何部署library,点击部署,报如上图所示的错误

A39 暂不支持单独部署library,可以在合约中引用library。


Q40 部署1.3.1版本WeBASE后,添加节点前置时出错,请问这是什么原因呢

A40 版本兼容性问题,WeBASE1.3.1的链需要配合2.4及以上的节点使用, 可参考:https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE/ChangeLOG.html


Q41 在安装节点管理子系统时,初始数据库报这个是什么原因?

A41 老版本的残留数据冲突,需要清理数据库


Q42 WeBase-front一直报以下提示是正常的吗?

A42 这个是收集FISCO BCOS节点日志的定时器如果不关注,改下 WeBASE-Front 的 application.yml 中的配置就好。


Q43-1 关于部署WeBase的问题: 使用已有链时需配置,已有链的路径,start_all.sh脚本所在路径,路径下要存在sdk目录,sdk里存放sdk证书(ca.crt、node.crt和node.key)fisco.dir=/data/app/nodes/127.0.0.1;我是参考https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/enterprise_tools/tutorial_detail_operation_gm.html部署的FISCO BCOS,是在generator/里操作的,上面WeBase里要求的fisco.dir要去哪里找呢?

A43-1 fisco.dir是你安装的节点的路径,各个字段填写的值在webase的.properties里有注释说明,比如你在build_chain之后,就在nodes目录存放了节点;https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/enterprise_tools/operation.html#generate-sdk-certificate 参考这个链接生成sdk证书

Q43-2 起来是部署成功了,但是通过浏览器访问显示无法加载http://47.115.19.81:5000/,可能是什么原因呢?是在阿里云服务器上部署,然后在本机上浏览器访问。

A43-2 已有链的话,直接在exist填yes就好了,其他的代码不要注释


Q44 请问搭WeBase,添加私钥,我的链用的是国密,里面有两个key,一个是gmnode.key,一个是gmennode.key,应该选哪个呢?

A44 WeBase的私钥是用于外部账户发交易的,不建议使用节点的私钥(node.key),使用私钥可以通过webase直接生成。


Q45 WeBase上只能导入.txt , .pem, .p12的,应该用什么工具把gm的.key转成符合要求的呢?我看openssl能转rsa的,它能转国密的吗

A45 可以导出WeBASE-Front的.txt私钥,按照其格式,输入明文的私钥和用户名即可导入到webase中可以通过openssl查看.key私钥的明文私钥


Q46 在webase中编写的合约运行后在webase中可以显示出input详细信息,在浏览器中只有methodId显示 function data都为空是否正常?

A46 在浏

Share: