FAQ:

一. 快速了解fisco-bcos 2.0

【快速体验】

  1. 如何快速体验fisco-bcos 2.0?

    可以参考资料《fisco-bcos 2.0 快速入门》

  2. fisco 1.3和2.0有什么大的差异?

    2.0增加了多群组、分布式存储等重要特性,在性能等方面进行了较大的优化。

  3. fisco2.0支持哪些版本?

    普通版本,国密版本,暂不支持群环签名版本。

  4. 有哪些接口能力可以调用 fisco-bcos 2.0?

    1)rpc接口:使用简便,搭链完成后可以直接通过curl命令发送请求。

    2)控制台:功能比rpc接口强大,需要下载配置web3sdk。

    3)web3sdk:功能最强大,可以调用合约,开发区块链应用必选。

  5. 有哪几种褡裢方式,各有什么特点?

    一键褡裢:使用更简单,适合入门小白和第一次用2.0的同学

    企业工具搭链:用法更灵活,适合熟悉fisco-bcos的用户和企业搭链用户。

【软硬件依赖】

配置 最低配置 推荐配置
CPU 1.5GHz 2.4GHz
内存 2GB 4GB
核心 2核 4核
带宽 1Mb 5Mb
操作系统   CentOS (7.2 64位)或Ubuntu(16.04 64位)
JAVA   Java(TM) 1.8 && JDK 1.8
node   v6
python   v2.7 或 v3.6

二. fisco-bcos 2.0特性

【多群组】

  1. 什么是多群组?

    1个群组相当于1.3版本的一条链的功能,2.0一条链上多群组基本等同于1.3多条链的作用,群组之间共享节点网络。

【共识算法】

  1. fisco 2.0支持哪些共识算法?

    pbftraft

  2. 什么是Raft算法?

    RAFT算法采用2F+1<=N算法来计算冗余;其中F表示加入和合约组网中节点进程挂起或者僵尸数,N代表group内记账列表内节点总数,满足对应算法后,系统能正常的共识、同步和出快;

  3. 使用build_chain.sh脚本搭建Raft算法环境需要注意什么?

    在使用build_chain.sh脚本搭建group后,需要在节点进程启动前修改group.X.genesis文件的consensus_type为raft。

  4. 在Raft算法的环境中只有leader才会出块,当group下节点较多时,如何快速找到leader节点?

    进入控制台执行getConsensusStatus(gcs) 命令,可以通过leaderId和leaderIdx快速的查出当前group下那个节点是leader。

【安全控制】

  1. fisco 2.0有哪些安全控制机制?

    网络准入权限控制CA黑名单

  2. 2.0节点准入机制是什么?

    2.0引入group即账本概念,节点分为group节点和网络节点两种。只有成为group节点才能参与共识和出块,要成为group节点的前提是成为链所在网中的网络节点。

  3. group下观察节点和记账节点的区别是?

    观察节点作为group账本下的观察者,能被动同步出块节点的数据,但是没有权限作为出块节点。记账节点除了具有观察者权限,还具有作为出块者的权限。

  4. 新节点扩容加入链网络启动失败报错:conf/group.2.genesis:can not open file?

    对于新节点,报类似无法打开文件的错误,节点启动首先会初始化config.ini配置,这种错误一般是读取到config.ini有配置conf/group.2.genesis,但是实际上目录下没有这个文件导致。一般节点要加入哪个组,config.ini就配置哪个组,上述报错是因为额外配置了group.2.genesis。直接在config.ini删除该行配置。

  5. 节点黑名单设置导致链无法正常出块?

    2.0节点黑名单管理实现指定节点之间连接开放与限制,两个节点设置黑名单后,此两节点间无法通信和共识,可能导致链无法正常运行。

  6. 4个节点,A B C 三个节点依次设置黑名单,导致链出块异常?

    原因是节点间转发机制异常,需要在conf下设置group.1.ini配置增加ttl参数。

【存储】

  1. fisco-bcos 2.0支持哪几种存储方式?

    mptstatestoragestate两种,mptstate就是1.3版本默克尔树的存储方式,storagestate是2.0新增的分布式存储,支持leveldb和mysql数据库。

  2. storagestate有什么优点?

    mptstate使用的默克尔树存储方式会随着数据量的增大速度越来越慢,而storagestate用的传统的存储方式,数据量增大并不会明显的影响性能,而且可以通过分库分表等方式优化。

【CNS】

  1. 2.0 CNS合约服务特性是?

    通过web3sdk实现合约接口调用,实现合约部署和调用,使用CNS表管理合约

  2. 合约如何编译?

    当前使用solidity编写好合约后,需要使用web3sdk编译成*.java格式的java类再执行

  3. 合约编译后使用控制台无法部署合约的问题?

    合约编译后,会产生一个新的temp目录,需要将web3sdk再次执行gradle build操作打包一次

  4. 如何查询合约cns表?

    通过web3sdk控制台指令查询,查询指令根据合约name查询。

  5. 如何将合约纳入CNS管理?

    在部署合约时,调用CNS合约接口,将合约name、version、address信息写入CNS表中

【国密】

  1. 国密有什么作用?

    国密国家密码局认定的国产密码算法,符合中国密码安全要求。

  2. 国密和非国密版本的区别有哪几方面?

    编译版本,证书,落盘加密,solidity编译java,web3sdk使用.

【落盘加密】

  1. 落盘加密有什么优点?

    安全。非法带出的加密数据没有私钥不会被破解。

  2. 是否支持部分节点落盘加密?

    支持。

  3. fisco 2.0 运行过程中能否切换落盘加密?

    不能直接切换,如果想切换需要清理调data数据,配置落盘加密,然后重头开始同步区块。

  4. 落盘加密是否支持国密?

    支持,不过操作上略有不同,具体可以参考《落盘加密文档》

【虚拟机与合约】

  1. fisco 2.0 的合约和1.3的合约有什么不同?

    fisco 2.0增加了precompile合约对表进行操作,适配分布式存储。

  2. fisco 2.0是否兼容fisco 1.3 的合约?

    兼容。

三. 工具

【部署】

  1. 有哪几种褡裢方式,各有什么特点?

    一键褡裢:使用更简单,适合入门小白和第一次用2.0的同学

    物料包:用法更灵活,适合熟悉fisco-bcos的用户和企业搭链用户。

  2. 一键褡裢和物料包是否支持国密?

    一键褡裢支持国密(要添加-g参数)。物料包暂时不支持国密。

【配置】

  1. 什么是系统配置

    狭义理解,系统配置是指节点配置中一些影响账本功能,并需账本节点共识的配置项。

  2. 系统配置有哪些维度?

    基于影响范围的维度分网络配置、群组配置。

  3. 群组配置都是可改的吗?

    从配置项是否可改的维度,分为:

    1)节点首次启动生成创世块后不能再修改

    2)通过发交易修改配置项实现账本内一致

    3)修改自身配置文件后,节点重启生效

  4. 群组配置用户可以改的涉及哪些配置?

    涉及2部分:

    1)交易共识动态可改:[consensus].max_trans_num,[consensus].node.X,[tx].gas_limit。

    2)配置改后重启可改:[sync].idle_wait_ms,[tx_pool].limit

  5. 群组配置更改途径是什么?

    交易共识动态可改可以通过控制修改。控制台进入路径: ~/web3sdk/dist/bin/web3sdk -c , [consensus].max_trans_num,[tx].gas_limit使用接口setSystemConfigByKey(ssc)更改,对于的配置项为tx_count_limit,tx_gas_limit。具体参见ssc -h 。[consensus].node.X的更改涉及到节点管理,控制台接口涉及到addMiner(am),addObserver(ao),removeNode(rn)。

  6. 群组配置查询途径是什么?

    交易共识动态可改群组配置项查询除了控制台外,还可以通过RPC接口查询。控制台详细使用方法请参考《SDK控制台》,RPC详细使用方法请参考《FISCO BCOS2.0 JSON-RPC 接口》

  7. 群组配置的本地配置是什么?

    群组配置改后重启可改项就是本地配置,nodeX/conf下的group.*.ini文件,更改重启生效。涉及配置项为[sync].idle_wait_ms(设置同步线程启动同步区块状态发送的时间间隔),[tx_pool].limit(交易池容量),[consensus].ttl(节点转发数)。

【监控】

  1. fisco 2.0 提供了哪些监控工具?

    搭链完成后会提供一个monitor.sh脚本,可以将其配置在定时任务中进行监控。除此之外可以搭建区块链浏览器进行监控。

【扩容】

  1. 扩容节点需要注意什么?

    扩容后的节点需要先启动同步区块,等待区块同步完成之后再加入组网。

【升级】

  1. 是否支持从1.3或1.5升级到2.0版本?

    不支持,由于版本差异较大,不支持大版本升级。

  2. 如何升级2.X版本?

    直接停止所有区块链节点,替换编译好的fisco-bcos二进制文件,重新启动即可。

四. API

【RPC接口】

  1. RPC接口有什么优点?

    搭建好区块链之后,可以只通过curl命令调用区块链接口,方便好用。

  2. RPC接口支持哪些功能?

    支持查看区块链的信息,发送消息等,具体可以参考《RPC接口文档》

【控制台】

  1. 什么是控制台?

    SDK控制台是FISCO BCOS2.0重要的交互式客户端工具,通过复用Java SDK的证书连接区块链节点。SDK控制台拥有丰富的命令,可以查询区块链状态,管理区块链节点,部署并调用合约等功能。

  2. 控制台帮助支持大小写吗?

    不支持,只支持小写。

  3. 加入记账列表或观察者列表报错:nodeID is not in network?

    节点加入记账列表和观察者列表的节点必须是连接peer的nodeID列表里面的成员。

  4. 删除节点操作报错:nodeID is not in group peers?

    节点删除操作中的节点必须是getGroupPeers里面展示的group的peers。

  5. 被删除的节点,是否可以同步group数据

    被删除的节点将不会再参与group内的共识、同步和出块,被删除的节点可以通过am/ao命令可以将退出的节点添加为共识/观察节点。

  6. 控制台返回超时处理需注意什么事项?

    切记不要立即做重复的操作,请认真确认交易是否操作成功,以免出现多笔交易。

  7. 设置和查询系统配置有什么注意事项?

    max_trans_num和gas_limit两个系统配置是写在tx_count_limit/tx_gas_limit表里的,手动修改group.X.genesis文件系统是无法动态获取的,只能通过控制台setSystemConfigByKey设置。

  8. sdk配置文件在一个群组内配置多个节点连接时,为啥查询控制台返回的信息不一致?

    当sdk配置文件在一个群组内配置多个节点连接时,由于群组内的某些节点在操作过程中可能退出群组,因此sdk轮询节点查询时,其返回信息可能不一致,属于正常现象。建议使用控制台时,配置一个节点或者保证配置的节点始终在群组中,这样在同步时间内查询的群组内信息保持一致。

  9. 统一节点属于不同的group,是否可以支持查询多group的信息?

    可以,在进入控制台时,输入要查看的groupID: ./web3sdk -c [groupID]

【java SDK】

  1. java要求的版本是?

    oracle jdk 1.8(open jdk 1.8不符合要求)

  2. 首次配置完成,发送交易失败的最常见原因是什么?

    applicationContext.xml中的ip、端口、群组号填错或者是缺少keystore.p12和ca.crt证书。