FISCO BCOS 控制台详解,飞一般的区块链体验

作者:廖飞强|FISCO BCOS 核心开发者

我们对Linux系统中的命令行终端已经很熟悉了,通过shell终端可以顺畅地使用Linux。类似地,FISCO BCOS联盟链中,也有这样的命令行终端,称为控制台。控制台是开发者探索区块链世界的助推器,其提供的各种功能有助于跨越横在区块链入门到精通之间的座座高山,带来“开箱即用”的顺滑体验。

Why: 为什么要做控制台?

体验环境影响用户从“入门到放弃”,或者“入门到精通”。

当学习一个新技术或产品时,除了读文档之外,尝试上手操作,获得第一手体验也尤为重要。如果体验环境配置复杂、操作繁琐,很可能导致用户从“入门到放弃”;而体验环境简单易配置、功能丰富,则会为用户迅速打开一扇新世界的大门,加速用户从入门到精通。

选择何种形式承载这种极速且友好的体验方式呢?如果我们有一个控制台,只要输入单条命令或代码,然后按下回车键就可以返回结果显示在用户面前。这种 “开箱即用”的效果,正是我们所期待的体验方式。

可以为FISCO BCOS实现极速体验的控制台吗?

FISCO BCOS 1.3版本其实已经具备快速体验的功能,由两部分组成,分别是ethconsole和Node.js工具。其中,ethconsole可以查询链上信息,包括节点、区块和交易信息;Node.js工具提供了部署和调用合约的模板js文件,协助用户实现合约的部署与调用。

但是这种体验方式还不够友好,那一版的ethconsole只能查询非常有限的链上信息,并不能发送交易和管理区块链,功能比较单一;通过Node.js工具需要手工编写部署和调用合约的模板js文件,操作较为繁琐,体验和ethconsole割裂,不那么顺畅。

因此,FISCO BCOS 2.0版本规划时,重点设计了FISCO BCOS 2.0控制台,目标是做一个易用、友好、且功能强大的全新控制台,给FISCO BCOS提供一种极速体验方式。

What: 控制台实现了哪些功能?

控制台每一个功能的实现都源于一个个朴素的操作,一切按实际需求出发,对用户有价值的功能,一一实现。

需求1:区块链是什么,在哪里?看得见吗?

实现查询区块链相关的一系列命令,让区块链看得见摸得着!例如查询区块高度、区块、交易、节点等等,并且根据不同参数,提供不同的查询方式以满足不同条件下的查询需求。

值得关注的是,对于交易和交易回执信息查询命令(getTransactionByHash,getTransactionReceipt等),提供按ABI定义解析详细数据的功能,让交易的输入、输出和event日志信息以解码的方式呈现,而不再是满屏十六进制的天文数字。

需求2:部署和调用合约是使用区块链最核心的诉求,控制台可以直接部署和调用合约吗?

必须可以。控制台推出之前,部署和调用合约有两种选择:一种是借助Node.js工具,即写Node.js客户端部署和调用合约;一种是使用Java SDK, 写Java 客户端部署和调用合约。这两种方式都很强大,但并不是为极速体验设计的,用户需要编写合约之外的部署和调用代码。

因此,控制台实现的效果是,用户写好合约,放入指定路径,在控制台输入一个命令(deploy)即可完成部署,再用call指令就能调用合约接口,不需要其他任何额外的工作(例如将solidity合约转为java代码,编写部署和调用合约的客户端代码等)。 deploy命令部署合约之后,会显示一个合约地址,考虑到后续调用合约时还会用到这个合约地址,控制台本地会记录部署的合约地址,并提供getDeployLog命令查看部署过的合约地址列表信息。

另外,FISCO BCOS区块链提供CNS功能,即合约命令服务功能。链上可以记录部署的合约名、版本号和对应的合约部署地址;部署合约时,指定合约名和版本号;调用合约时,指定合约名和版本号(若不指定,使用最近部署的合约版本号)。

这是一种更高级的部署和调用合约方式,也是推荐的部署和调用合约方式。因此控制台实现了利用CNS部署合约命令deployByCNS和利用CNS调用合约命令callByCNS。 值得关注的是,为了开发者便于查看处理信息和调试合约,控制台会自动解析合约的输出和event日志信息。

需求3:FISCO BCOS 2.0支持多群组,控制台可以在线切换群组吗?

控制台登录之后,其命令提示符前面显示当前群组号。通过提供switch命令在线切换多群组,即不需要退出控制台就能完成无缝切换。切换之后,命令提示符前面的群组号自动更新,而后可以在切换后的群组中发送命令。

需求4:控制台可以管理区块链吗?

FISCO BCOS 2.0 提供节点管理、系统参数管理、权限管理功能,控制台均提供对应的命令进行操作,方便用户通过简单的命令轻松管理区块链。 其中,节点管理的命令是addSealer(添加共识节点)、addObserver(添加观察节点)、removeNode(移除群组中的节点);系统参数管理的命令是setSystemConfigByKey(设置系统参数);权限管理有一系列的命令,管理区块链系统相关功能的操作权限,其具体是以grant开头的赋予权限命令,以revoke开头的撤销权限命令,以及以list开头的查询权限命令。

具体使用参考这里

需求5:可以不用写CRUD合约,操作区块链中的用户表吗?

FISCO BCOS 2.0提供分布式存储,其核心在于表存储设计。CRUD合约是面向表存储的一种合约写法,合约的数据存储在用户表中,合约接口面向表进行增删改查操作。 为了让用户不用写CRUD合约,就可体验分布式存储功能,控制台提供类似mysql语句的形式,提供创建表(create)、查看表(desc)和表的增删改查(insert, delete, update, select)命令。 创建表和增删改命令均是发送一条需要区块链节点共识的交易,与用户编写CRUD合约操作表等效。

需求6:控制台支持国密方式发生交易吗?

控制台提供修改配置文件的国密开关,并下载国密版合约编译器以及替换,这就成为了国密版控制台。因此,当区块链节点是国密版本时,控制台可以连接国密节点并支持部署和调用国密版合约,发送国密版交易。

需求7:…等你来提?

欢迎社区用户积极提意见、建议以及需求(issue或微信社群的方式),同时也可以直接提pull request到官方console仓库,修改和新增你们需要的功能,甚至可以fork源码然后单独定制个人或组织的控制台,开源社区的共建和共享依靠社区用户广泛而积极的参与。

Where: 控制台的价值在哪里

现在,用户只要启动控制台,就可以查询丰富的链上信息,快速部署和调用合约,轻松管理区块链,这些特性给用户带来什么价值呢?

  • 面向初学人员:不用搭建复杂的开发环境,只要简单的节点ip和端口配置,非常轻量级,就可以极速体验区块链功能。当启动控制台后便呈现出一个炫酷的FISCO BCOS标志图案时,会顿时感觉自己成功地与FISCO BCOS产生了第一次连接,从而信心倍增地继续探索区块链。

    配置和启动控制台请参考这里

  • 面向开发人员:开发人员可以利用控制台部署和调试合约,当写好合约后,可以在控制台先部署,采用call指令调用验证合约逻辑,观察合约运行过程和结果。如果业务端采用Java开发应用,可以利用控制台的合约编译工具将Solidity合约一键编译为Java客户端代码文件,供客户端的java工程调用。

  • 面向测试和运维人员:可以在搭建区块链环境后,利用控制台查看链状态,操作区块链配置,测试或检查相关区块链功能。

总之,控制台已成为FISCO BCOS的一个极速体验的窗口,一件强有力的利器,为用户持续带来实际价值


1、控制台已是FISCO BCOS SDK的一个标配功能,目前已提供Java版控制台(已单独成立了一个console仓库),Python版控制台和Node.js控制台。上文主要是针对Java版控制台进行的介绍,其他控制台相关功能大体相同。

2、控制台文档列表

Java版控制台使用文档

Python版控制台使用文档

Node.js版控制台使用文档