区块链技术近年来在国内迅速发展,并在众多领域开展探索并有不少应用落地。作为一门新型技术,区块链技术在助力企业效率提升的同时,在人力成本、联盟链兼容等方面仍然需要释放更多可能性。
如何降低区块链的开发成本、使其更高效便捷地应用到产业当中,成为提升企业区块链应用价值的关键所在。而目前在区块链在实际应用开发过程中仍面临诸多痛点。
为此,微众银行区块链在多年技术研究和应用实践的基础上,积极分析、总结行业需求,研发了一套区块链应用开发组件WeBankBlockchain-SmartDev,用低代码方式在不影响原有业务的基础上,解决区块链与原有应用之间的连接问题。
研发区块链应用开发组件的初衷在于打造低代码开发的组件库,全方位助力开发者高效、敏捷地开发区块链应用。
该组件包含了一套开放、轻量的开发组件集,覆盖合约开发、编译、应用开发等环节,开发者可根据自己的情况选择相应开发工具,提升开发效率。
其中包括WeBankBlockchain-SmartDev-Contract智能合约库组件、WebankBlockchain-SmartDev-SCGP(SmartContractGradlePlugin) 智能合约编译插件、WebankBlockchain-SmartDev-Scaffold区块链应用开发脚手架组件等。
对开发者友好的一键式应用开发脚手架、合约模板等功能,便捷区块链应用开发,让开发过程朝“低代码”模式迈进。
区块链应用开发组件特性与原理
这款应用开发组件从2020年初开始筹划,在 DAPP的开发过程中也存在过各种各样问题。在解决这些问题的过程中积累了一些经验,我们将这些经验成功复用到应用开发组件中,下面我们一起看看应用开发组件的特性及原理。
首先是智能合约库,它包含了基础类型层,结构数据层、通用功能层、上层业务层。
-
基础类型层:它包含数学运算、字符串相关操作、数组操作和地址操作等。
-
数据结构层:它包含一些数据结构,例如可迭代映射、链表等
-
通用功能层:它包含一些crud合约,还有一些密码学操作。
-
上层业务层:包含溯源,存证等业务模板。
其次是合约编译插件。传统的操作方式是上传合约到控制台,跑脚本,再将合约的内容拷贝出来,频繁的编译和调试过程需花费大量的时间。而合约编辑插件只需执行简单的指令,全自动生成放到指定的位置,不用做额外拷贝。
组件根据当前的环境,选择对应的jar包,把 Solidity文件读取出来并编译,编译会输出三个内容,分别是ABI、BIN、Java合约。其中 ABI是接口,智能合约的接口定义;BIN是合约二进制,它包含国密版的二进制和非国密版的二进制;Java合约包含通过Java的方式去调用智能合约接口。
最后是应用开发脚手架,脚手架生成通用的DAPP项目结构。
首先,它包含合约、ABI和BIN关于合约相关的一些资源文件。
其次就是代码,可以分成两部分:connection,config,utils,这些是用来连接区块链和FISCO BCOS。
再其次是service和POJO。service对应的是智能合约的调用,POJO是智能合约的函数输入。service的方法对应的是智能合约中的函数,调用service的方法,会自动进行拼装交易、回执解析。
脚手架的原理包含如下几点,首先进行一些通用的检测,然后生成模板文件,对智能合约进行编译,解析ABI的每一个合约的每一个函数,读取它的参数,拼装成对应的Java类,最后生成项目的构建。
区块链应用开发组件工具实操
实操演示可配合视频回放享用
点击观看
首先访问智能合约库地址,它包括上层业务,基础类型、数据结构、通用功能层,可以看到一些库文件,还有一些demo,很方便去调用库里的文件。
其次是合约编译插件的实操。合约编辑插件其实使用起来也是很简单的,首先打开官方文档,对builg.gradle进行依赖等配置,然后执行gradle solc即可,插件会读取到项目的hello world合约,默认会从contract来读取合约, 然后生成ABI和Java合约。
最后是应用开发脚手架演示。先将脚手架的代码给拷贝下来。进入tools目录,在contract已经默认放了合约,然后是config.ini,这里可以定义一些常用的内容,比如项目名、group组、编译编译器的版本、solidity版本等,我们可以按需改这些内容。在windows和UNIX环境下会提供一个bat文件和shell文件。
我们来看下生成的项目。这是一个springboot项目,里面有对应的依赖,包括像Java SDK,springboot等,从生成的代码看,最核心的代码是hello world service,它对应hello world合约,service则对应着合约里面的set和get函数,调用set函数或者get函数,从而调用对应的智能合约。
从resource目录可知,里面包含了智能合约的输入和输出。同时也有conf目录,帮助大家将链的节点上的一些证书拖下来,可以放在conf目录。application、properties是springboot的比较标准的配置文件。
从test目录可知, test里面会放了一些常用的功能,比如生成私钥,部署一个合约,开发者可以根据自己的想法,把这些功能放到demo里。这就是脚手架生成的demo项目,它包含很多以智能合约为核心的功能。
最后,欢迎大家一起共同建设区块链应用开发组件,智能合约库长期征集合约库代码,里面有几十个任务任大家挑选,完成任务还将获得礼品,欢迎参与!
点击阅读原文参与智能合约库活动。
体验WeBankBlockchain-SmartDev:
SmartDev-Contract 智能合约库组件
https://github.com/WeBankBlockchain/SmartDev-Contract
SmartDev-SCGP 合约编译插件
https://github.com/WeBankBlockchain/SmartDev-SCGP
SmartDev-Scaffold 应用开发脚手架
https://github.com/WeBankBlockchain/SmartDev-Scaffold
《超话区块链》
《超话区块链》是由FISCO BCOS 开源社区推出的直播活动,每周四晚8点,社区邀请一位技术极客或应用先锋,做客直播间分享开发实践或应用心得。作为社区固定栏目,《超话区块链》已举办近百场,从技术研讨到产业应用均有触达,欢迎大家自荐或推荐朋友到直播间分享。公众号对话框回复小助手入群观看直播。
FISCO BCOS的代码完全开源且免费
下载地址↓↓↓
https://github.com/FISCO-BCOS/FISCO-BCOS