Date: 2020-09-14 Source: 本站
学习区块链就是不断踩坑积累的过程,为方便大家更好地从前人中总结经验,我们将FISCO BCOS社群中高频次、高质量的技术提问与探讨沉淀下来,集合成常见FAQ,作为一手学习材料,供大家随时查阅。
A1 :可以在合约调用的接口中增加字段记录来实现这个功能。
A2 :没有同步时间。
A3 :能运行工程代码 ( 包括 java , go , nodejs ) ,能访问到节点所在服务器,基本满足这两点就可以了。
A4 :目前 FISCO BCOS链上交易数据在所有的共识节点中都是保持一致的,不会根据交易对节点进行区分。
A5 :目前不支持。所有的共识节点和观察节点的区块数据都是保持一致的,不会出现你说的同步自己相关的交易数据。
A6 :走扩容操作,不用改创世块,发交易可以更新共识列表。
A7 :1.3和2.x系列在数据上不兼容,不能直接拷贝数据升级。
A8 :不同群组的交易不会打包在同一个区块,每个群组都有独立的链。
A9 :交易数据是不共享的。两个不同的群组相当于是两个不同的链,群组B中的交易不会同步到群组A中。
A10 :是的,同一个群组就是大家共识和同步,所以是可以看到的。
A11 :是的。
A12 :节点有缓存,第二次获取过了有些时间了,缓存替换出去了。大部分场景的回执只会去查一次,而且是一出块就查了。当缓存替换出去以后,确实会慢一些。1w条回执同时从节点请求,压力很大,时间确实会慢一些。实际场景下,可以考虑缓存第一次查询的结果。
A13 :区块hash和共识签名保证历史交易没被篡改。历史交易是有的,可以通过getBlock和getTransaction查询,根据历史交易可以推导出状态数据。可以通过数据导出模块bee,从区块导出所有event数据,参考文档:https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE-Codegen-Monkey/index.html
A14 :一条交易异常,这个区块就会被丢弃了,里面所有的改动也会被丢弃。
Q15 :根据文档一键部署,执行到如图这个位置后,4个节点都跑起来了,看着正确,但是区块一直是0,没有新增区块,是什么问题呢?
A15 :在没有交易的场景下,虽然会打包,但是不会出块; 有交易打包进区块才会出块。
Q16 :请问一下FISCO BCOS的区块大小有限制吗?
A16 :没有固定大小限制,与打包的交易数量多少相关。
Q17 :如果一笔合约调用只发event,不修改链上数据,这笔提交会出现在块里吗? 我认为是可以的,但是看浏览器,没有这个块(交易很少,基本一个交易一个块)。
A17 :如果没有修改数据,自然就不需要和其他节点进行共识,也就不会出块。
Q18 :Java sdk 2.3版本,通过sdk创建群组,然后启动群组,如果创建时指定多个共识节点的话部署合约会超时,这个是我操作有问题吗?通过sdk生成的群组是不是要自己手动把群组的创世文件拷贝到其他共识节点?
A18 :调用其他节点的generate和start 入参保持一致。
A19 :0x19对应到25,是权限不足,(not-enough gas?) 这个只是给一个可能的出错原因,并没有根据错误码推导具体的错误原因,具体的错误码请参考https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/api.html#id68 。
Q20 :创建的外部账户直接采用privateKey就调用了合约!但这个外部账户怎么理解呢?外部账户是没有文件的,跟P12 PEM格式的账户不同? 这个外部账户是保存在哪里?
A20 :p12和pem里面保存了外部账户的公私钥,外部账户的address是可以通过公钥推导出来的,不需要单独保存,构建交易签名的时候,直接从p12, pem里面加载公私钥对就可以了。
Q21 :请问FISCO BCOS是多久打包一次区块?
A21 :默认500ms打包一次区块,如果一直没有交易的话,最多等待1秒打包空块。
Q22 :我目前有3个机房,如果我要分别在3个机房里面部署fisco bcos节点组成网络,那是否需要3个机房部署的所有节点都需要对外提供访问?是否可以只提供共识节点对外?
A22 :对外的接口看需求,p2p肯定要。可以使用 nginx 对外提供统一的一个访问接口,然后在 nginx 上配置需要提供对外服务的共识节点。
Q23 :java.lang.Exception: no active connection available network exception;跑测试类是正常的, 在项目里就会报错,这是什么原因呢?
A23 :看报错是连接不上节点,可以检查一下网络是否能正常连接。
Q24 :我把某个节点的证书拷贝出来,配置到另外一个节点上,是否可用?我看节点证书里面没有包含域名或ip信息。
A24 :可以,节点id证书不动就行。
Q25 :在原有的机构里面增加一个节点的时候,第三步的操作是只需要在新节点的配置文件里面增加还是需要在所有的节点上都要增加新节点的node.* 的配置?
A25 :只配置新节点上的配置文件功能上不会有问题,但在其他老节点加上冗余配置,网络异常时更加健壮。
Q26 :单机4节点,创建一个群组,状态也是RUNNing,为何部署合约一直超时?
A26 :不是节点,是节点上的群组,建立、启动群组的RPC请求要发到所有的节点上。
Q27 :我用docker创建了一个叫fisco-gm的国密版四节点BCOS, 发现8545端口永远是连不上的,但是20200又是连得上的。我就是用四节点script起的节点 有人知道这是为什么吗?
A27 :8545是RPC端口,默认监听ip是127.0.0.1,只能本机访问,如果需要跨机器访问,需要修改config.ini的rpc_listen_ip为0.0.0.0 。
Q28 :启动节点的时候报这个错是因为port没开放吗?
A28 :channel_listen_port端口冲突了。
Q29 :这个地址是从哪里生成的?
A29 :两条链的用户外部账号。
Q30 :目前群组1有,A、B、C、D、E五个机构,每个机构两个节点,目前由于E操作系统有问题被维护人员重新格式化了,E节点上的两个node.nodeid在其它节点进行了删除动作(remodenodeid),但未成功(因为E节点操作系统重做),在此情况下重新安装了E进行部署已经动态增加,但这时之前的,A、B、C、D出块也产生了问题(不出块了),请问这个怎么解决?
A30 :P2P配置成全连。
Q31 :如果有一个节点对历史信息做出修改,后续还可以正确共识吗?mpt模式和storage模式进行共识的时候计算状态根的时候只对新的数据的hash进行计算的时候怎么发现以前的数据是否还合法呢?
A31 :节点有缓存,暂时还能跑,如果重启了,合约又读了改的数据,就不能共识了。
Q32 :是不是只有在节点建立连接的时候才会验证证书,其他时候会不会和证书有交互?
A32 :SDK等客户端通过channel与节点建立连接时也会验证证书。
Q33 :SDK直连节点的带宽降低为原先的一半,那么原先一般是多少呢?有具体的值吗?具体的计算公式?
A33 :具体数值跟具体的交易和交易的并发数有关,以 centos 为例,服务器上用 nload 查看下带宽就可以看到了,没有具体的公式。
Q34 :任何有全量数据的节点都可以获取链上数据,那没有存储全量数据的节点呢?
A34 :连接到链上的共识节点和观察节点都是有全量数据的,但是节点变为游离节点后,交易就不会同步到这个节点,数据自然不是全量的了。
Q35 :如果联盟链的跑了一段时间之后,节点数据量已经很大了,再新加节点,这个新节点同步数据流程是怎么样的?会不会影响整个链的tps?
A35 :可以从已有的节点上,copy data 目录到新节点下,然后启动新节点,这时新节点包含的数据就是最新的链数据。
Q36 :我现在只起了4个节点网络, 其中一个节点同步数据块很慢,有没有快速同步区块的方法?
A36 :把这个节点加入观察节点,同步完在加入记账列表。
Q37 :群组和节点配置只能删除不能修改吗?
A37 :是的,只能删除,不能修改;因为如果允许修改的话,新的节点数据和旧的节点数据就会相互交叉,造成数据干扰。
Q38 :CA这块支持第三方CA 吗?
A38 :支持, CFCA就可以。
Q39 :FISCO BCOS 2.5.0、浏览器 2.0;添加节点失败{"code":305007,"message":"node error or not alive","data":null}是什么问题?
A39 :ip或者rpc端口配置错误。
Q40 :一个节点新加入群组,会立马开始参与共识吗?加入群组只需要拿到群组创世块并运行./generator --add_group,不需要同群组的其他机构执行./generator --add_peers吗?
A40 :最佳示范是新节点添加到群组后,把群组已有的节点peers连接也更新一下,保证群组里的双向互联。
Q41 :切换节点身份就卡住是什么情况呢?我在另一个ubuntu服务器可以正常操作,但在centos上就会卡。
A41 :这个和节点有关系,addSealer是一笔交易,控制台将addSealer发到某节点上,如果是之前被remove掉的节点,控制台把交易发上去,其它节点也不会接受这个节点转发过去的交易了,其它节点也就不会去共识这笔交易了。
Q42 :一个FISCO BCOS的链最少应该有几个节点参加呢?
A42 :最少1个,但是不容错,3个以上开始容错,4个允许1个出错,7个允许2个,3f +1 这样来算。
Q43 :新建一个群组之后,共识log正常,但是控制台进不去新群组是什么问题呢?
A43 :新加群组,/generator/console/conf/applicationContext.xml 文件需要配置。不建议直接开error,推荐生产用info级别,定期清理无用的日志。
供参考:https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/manual/configuration.html#id6。
Q44 :节点没跑多久,打了好多日志,怎么控制日志级别?
A44 :节点config.ini里,配置后重启。