木星链 木星链
Ctrl+D收藏木星链

CON:如何快速构建区块链应用?这款脚手架支持一键生成

作者:

时间:1900/1/1 0:00:00

在数字化、信息化的今天,区块链技术已经逐步走入各行各业。为了满足普适性的要求,区块链的应用开发理应更加简单顺手。但是我们发现目前区块链应用开发仍然存在着一定门槛,社区中不断涌现的疑问便是体现之一。

如何配置私钥和证书?

怎么访问区块链节点?

SDK的接口怎么用?

如何构建一笔交易?

怎么解析交易回执?

……

来自开发者的疑问各式各样,但如果开发者一直在处理这些问题,则会带来大量的时间开销,影响业务开发的进展。一门成熟的技术,应不断将重复的细节封装起来,让开发人员更加聚焦业务,提升业务快速上线、快速试错和快速迭代的效率。

微众银行自2015年深耕区块链,在技术攻关和应用开发上积攒了丰富的经验。为了让开发者能够在自己的业务中轻松引入区块链技术,微众银行区块链开发了区块链应用开发组件WeBankBlockchain-SmartDev。其所包含的子组件——区块链应用开发脚手架WebankBlockchain-SmartDev-Scaffold,更是通过一键生成应用项目,帮助开发者敏捷、高效地开发区块链应用。

??应用开发脚手架简介

一个典型的区块链应用项目后端,可以分为三块。业务逻辑部分由用户自行定义;代码部分包含了智能合约访问的功能,例如函数入参的封装、交易的构造和推送、链的访问等;资源部分则包含了合约、ABI、BIN。如下图所示:

直播|条子哥 > Chainlink如何在一年内将生态扩大了400%?:金色财经 · 直播主办的《 Focus 价值50》深度解析 6 大TOP50 项目,白话分享,刷新共识!6月16日16:30准时开播,本期Chainlink中国区负责人 条子哥将在直播间聊聊“Chainlink如何在一年内将生态扩大了400%?”,该项目刚刚被当选世界经济论坛技术先锋,感兴趣的朋友扫码移步收听![2020/6/16]

应用开发脚手架组件允许用户在写好智能合约的基础上,将智能合约转换为一个SpringBoot项目,这个项目已经涵盖了上图中蓝色和绿色的部分,用户只需要补充自己的业务逻辑即可,不必再去关心区块链访问的细节,大大缩短了开发时间。

??关键特性一览

一键生成

用户在开发完智能合约后,可以将智能合约直接拖入脚手架,只要轻量配置,就可以生成相关项目。并且,生成的项目已经包含了智能合约访问的必要逻辑。此外,该项目是SpringBoot项目,相关的配置、服务均已纳入到spring容器当中。

高度封装

脚手架在生成项目时,会对合约调用逻辑做高度的封装,用户可以像使用ORM框架操作数据库一样地操作智能合约。

在生成的项目中,每个合约都被单独封装到一个类中,每个函数对应合约的一个函数。其输入是java类型的输入,输出也是已解析的输出。此外,对于函数的输入参数,我们也已生成了相关的模型类,方便用户使用。

轻量配置

张春泉:区块链等如何与行业深度融合将是工业互联网发展关键要素:曙光云计算集团副总裁、中国科学院智慧城市产业联盟副秘书长张春泉表示,目前工业互联网发展呈现出新特征,一是在云计算技术架构支撑下,企业之间正从技术、产品和供应链的竞争逐步演进成为平台化的生态体系竞争。二是以工业互联网为支撑,助力企业迈向网络化、智能化的新阶段,构建数字化的工业生态和数字化的商业服务生态。三是新一轮的IT技术加速行业的深度融合,比如说标识解析、区块链等技术如何与行业深度融合,将是这一时期工业互联网发展的关键要素。(经济参考报)[2020/4/30]

用户在将智能合约拖入脚手架后,只需做少量的涉及项目名称、组名、合约选择器等内容的配置即可。而且这些配置依据“契约优于配置”的原则设置了默认值,用户可根据自己的实际需要进行调整。

合约可选

在开发具有一定复杂度的智能合约时,出于易升级、松耦合的目的,开发者通常会采用一定的手段将合约功能解耦,拆散到不同的合约中去。所以,在一组智能合约中,真正供外部访问的合约只占少数,多数合约都仅作为功能性合约来支撑整体业务。

而且,在后续应用开发时,真正需要开发的服务类也占少数。为了让项目聚焦在所需要的合约上,开发者可配置合约选择器,即指定所需要处理的合约,继而脚手架只会为这些合约生成相应的代码,避免了冗余代码。

??如何使用

下面给一个简单的例子,以说明脚手架的使用方法。

获取脚手架

听证会 | 扎克伯格:还未确定如何处理错误交易的最终政策:金色财经直播报道,在今日听证会上,议员Bil Foster询问了有关如何处理错误交易。扎克伯格说,他不确定是否已经为此制定了政策。已对此有所考虑,但还没有确定”最终政策。[2019/10/24]

从gihtub或gitee获取脚手架,以github为例:

git?clone?https://github.com/WeBankBlockchain/SmartDev-Scaffold.gitcd?tools

进入tools目录后,可以看到它的结构:

|--tools?|??|--contracts?|??|--|HelloWorld.sol?|??|--config.ini|??|--run.sh

其中:

contracts目录用于存放solidity合约文件,脚手架后续会读取该目录下的合约,以生成相对应的业务工程。可删除该目录下的默认合约,并将自己的业务合约拷贝到该目录下。

config.ini是启动相关配置。

run.sh是启动脚本。

配置脚手架

合约配置

本示例中,使用默认的HelloWorld合约。实际使用过程中,可删除contracts目录下的默认合约,并将自己的业务合约拷贝到该目录下。

项目配置

可以在config.ini中做项目配置,如下:

动态 | 印度官员赴日本等国学习监管机构如何处理加密货币问题:据bitcoin 9月3日消息,印度证券交易委员会(SEBI)在其2017 – 18年度报告中透露,它已派出一些官员前往日本、英国、瑞士三个国家,研究监管机构如何处理加密货币问题。印度证券监管机构此次行动旨在与国际监管机构合作,深入了解其加密机制和系统,以改善其自身管理流程。[2018/9/3]

###?项目名称artifact=demo###?组名称group=org.example###?所支持的合约列表,通常为空即可selector=

运行脚手架

直接启动脚本:

chmod?x?run.sh?bash?run.sh

运行成功后,会在tools目录下得到一个基于SpringBoot的项目工程,本示例是demo:

|--tools?|??|--demo?##?这是新生成的工程|??|--contracts

.├──?build.gradle├──?gradle│???└──?wrapper│???????├──?gradle-wrapper.jar│???????└──?gradle-wrapper.properties├──?settings.gradle└──?src????├──?main????│???├──?contracts????│???│???└──?HelloWorld.sol????│???├──?java????│???│???└──?org????│???│???????└──?example????│???│???????????└──?demo????│???│???????????????├──?Application.java????│???│???????????????├──?config????│???│???????????????│???├──?ContractConfig.java????│???│???????????????│???├──?SdkBeanConfig.java????│???│???????????????│???└──?SystemConfig.java????│???│???????????????├──?model????│???│???????????????│???├──?CommonResponse.java????│???│???????????????│???└──?bo????│???│???????????????│???????└──?HelloWorldSetInputBO.java????│???│???????????????├──?service????│???│???????????????│???└──?HelloWorldService.java????│???│???????????????└──?utils????│???│???????????????????└──?IOUtil.java????│???└──?resources????│???????├──?abi????│???????│???└──?HelloWorld.abi????│???????├──?application.properties????│???????├──?bin????│???????│???├──?ecc????│???????│???│???└──?HelloWorld.bin????│???????│???└──?sm????│???????│???????└──?HelloWorld.bin????│???????└──?conf????└──?test????????└──?java????????????├──?org????????????│???└──?example????????????│???????└──?demo????????????│???????????└──?DemoPkey.java????????????└──?org.example.demo

动态 | 欧盟议会报告揭示银行如何打败比特币:7月24日消息,欧洲议会政策部发布的一份报告中解释了央行发行的加密货币如何胜过比特币。ECON委员会在报告中称,中央银行发行的数字货币将对当前的加密货币市场产生重大影响,并将私人发行的数字货币(如比特币)与中央银行发行的数字货币区分开,将它们相互对立。报告还指出:中央银行和商业银行基本上可以通过阻止用户访问交易所或钱包或通过拒绝服务,来对比特币7708.68以及其他加密货币进行定价。[2018/7/24]

其中:

config目录包含了Bean配置类。

service目录中包含了智能合约访问类,一个类对应一个合约。

bo目录包含了合约函数输入参数的封装POJO类。

src/main/resource/conf目录用于存放证书信息。

应用开发

生成项目工程后,可以进行DAPP开发。下面以前文所提及的demo项目工程为例进行说明。

部署合约

使用控制台等方式部署HelloWorld合约,可得到它的地址。

证书拷贝

将配置文件拷贝到生成工程的conf目录或src/main/resources/conf目录下。该业务工程会自动在这些路径下搜索证书。

配置连接节点

修改application.properties时,填写如下信息:

system.peers=127.0.0.1:20200system.groupId=1system.certPath=src/main/resources/conf###?前述合约部署地址system.contract.helloWorldAddress=###?私钥明文,如为空,会自动生成一个system.hexPrivateKey=server.port=8080

补全业务处理逻辑

一个完整的DAPP应包含至少三层架构。本示例补全一个Controller。但需说明的是,它仅仅是展示交易的结果。示例如下:

@("hello")public?class?HelloController?{????????}

编译工程

进入目录后,执行编译:

cd?demogradle?build?-x?test

运行jar包

启动项目后,可在浏览器内输入:

http://127.0.0.1:8080/hello/set?n=hello

返回示例:

0x1c8b283daef12b38632e8a6b8fe4d798e053feb5128d9eaf2be77c324645763b

??即刻使用

上述相关代码和技术文档已更新,欢迎体验和star支持。如需咨询技术问题,欢迎关注本公众号,对话框回复进技术交流群。

文档地址:

https://smartdev-doc.readthedocs.io/zh_CN/latest/docs/WeBankBlockchain-SmartDev-Scaffold/index.html

github代码库地址:

https://github.com/WeBankBlockchain/SmartDev-Scaffold?

gitee代码库地址:

https://gitee.com/WeBankBlockchain/SmartDev-Scaffold

欢迎参与WeBankBlockchain的社区建设:

如项目对您有帮助,欢迎点亮我们的小星星(点击项目左上方Star按钮)。

欢迎提交代码(Pullrequests)。

提问和提交BUG。

如果发现代码存在安全漏洞,可通过以下地址

https://security.webank.com/上报。

标签:CONHELLOELLO区块链AlphaconHello KittyHELLO玩区块链的都是什么人

以太坊交易所热门资讯
数字货币:中币(ZB)研究院:加拿大银行正加快研究数字货币

本文由中币研究院原创编辑4月23日消息,加拿大央行行长麦克勒姆表示,加拿大银行正加快研究数字货币的工作,关于数字货币的决定将由政府做出.

1900/1/1 0:00:00
区块链:区块链教育平台 DISCIPLINA 与 APYSwap、HAPI 达成合作

链闻消息,区块链教育平台DISCIPLINA与去中心化跨链交换机池代币化协议APYSwap、区块链网络安全平台HAPI达成合作.

1900/1/1 0:00:00
BIT:关于 BingoEx 永续3.0系统更新迁移完成公告

密码密码最好设置得复杂且唯一,长度至少8位,密码建议包含大写小写字母、数字或特殊符号,且无明显规律,最好不要包含您的姓名、邮箱名、您的生日、手机等易被他人获取的信息.

1900/1/1 0:00:00
COIN:关于GRN下线的公告

尊敬的用户:因GRN项目方经营策略调整,应项目方要求GRN将从CoinBene下线。具体安排如下:1、CoinBene将于2021年4月23日11:00下线GRN/BTC交易对,已暂停GRN充值.

1900/1/1 0:00:00
GATE:Gate.io 将上线 Ampleforth Governance Token(FORTH) 交易的公告

Gate.io将于2021年4月22日12:00上线AmpleforthGovernanceToken(FORTH)交易。安普尔福斯是一个变基货币-完全独立于最后的银行和贷方.

1900/1/1 0:00:00
比特币:CCR炒币机器人:入场炒币之前,我们需要做什么?

如果你对区块链技术的信仰是坚定不移的,对区块链改变未来是充满信心的,那么在这个时候反而给大家提供了一个上车的机会.

1900/1/1 0:00:00