月亮链 月亮链
Ctrl+D收藏月亮链

CON:如何快速构建区块链应用?这款脚手架支持一键生成_区块链工程专业学什么课程的

作者:

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

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

如何配置私钥和证书?

怎么访问区块链节点?

SDK的接口怎么用?

如何构建一笔交易?

怎么解析交易回执?

……

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

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

??应用开发脚手架简介

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

Aave社区正对“如何分配Aave Grants DAO收到的30万枚OP”提案进行投票:5月4日消息,Aave社区正对“如何分配Aave Grants DAO(AGD)收到的30万枚OP”提案进行温度检查投票,该提案目前支持率为99.97%,并将于5月8日结束。根据该提案,Aave社区去年创建了一个提案并成功收到了30万枚OP代币,作为激励基金OP Stimpack阶段0的一部分。这些代币将用于资助项目,以帮助Aave在Optimism上的发展。该提案旨在澄清收到的OP应如何分配并获得社区支持。

该提案建议分配最多10万枚OP用于当前AGD季度的赠款以及以Optimism为中心的事件和赏金,并将剩余的20万枚OP保留在AGD多签钱包中以用于AGD的未来季度赠款或分配。如果该提案获得此次投票通过,AGD将按照上述方式进行资金分配。不需要AIP或进一步的治理行动。[2023/5/4 14:42:34]

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

??关键特性一览

一键生成

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

Poly Network攻击者:想为Poly Network提供有关如何保护其网络安全的提示:金色财经报道,Poly Network攻击者再次发布了自问自答。攻击者称:“归还代币一直是计划中的。我对金钱不是很感兴趣。我知道人们受到攻击时会很痛苦,但他们不应该从这些攻击中学到一些东西吗?我在午夜之前宣布了退还的决定,所以相信我的人应该好好休息。我想为Poly Network提供有关如何保护他们网络安全的提示,以便他们在未来有资格管理这一10亿美金级别的项目。 Poly Network是一个设计良好的系统,它将处理更多资产。”对此网友表示,“在午夜之前”似乎暴露了该攻击者所处的地理区域。[2021/8/12 1:49:25]

高度封装

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

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

轻量配置

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

合约可选

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

大咖零距离 | 交易心理重塑:如何在爆仓后调整交易心态:10月22日19:30,由金色盘面主办、UP交易所独家赞助的《大咖零距离》正式开播。届时实盘大V铁头0707,将在《大咖零距离》直播间分享《交易心理重塑:如何在爆仓后调整交易心态》。敬请关注,欲进群观看直播扫描海报二维码报名即可![2019/10/22]

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

??如何使用

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

获取脚手架

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

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

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

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

其中:

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

声音 | 救助儿童会Paul Ronalds:慈善机构领导者也应去了解区块链等技术如何运作:根据Coincryptorama消息,救助儿童会首席执行官Paul Ronalds在关于区块链对慈善事业的潜在影响的小组讨论后表示,慈善机构对区块链的使用还处于初期阶段”,要在其潜力被夸大之前需要进行更多的讨论和研究。慈善机构面临的主要障碍之一是,当涉及区块链这种存储数据的方法时,行业领导者并不能很好理解,我们需要确保慈善机构领导者同样参与、了解数字世界以及如何运作区块链等技术,来帮助他们的做好慈善事业。[2018/9/3]

config.ini是启动相关配置。

run.sh是启动脚本。

配置脚手架

合约配置

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

项目配置

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

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

运行脚手架

直接启动脚本:

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

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

国际货币基金组织主席:最终幸存下来的加密资产可能会对人们如何储蓄产生重大影响:据bitcoinist消息,国际货币基金组织(IMF)主席拉加德(Christine Lagarde)在其新的博客文章中表示,最终幸存下来的加密资产可能会对我们如何储蓄,投资和支付账单产生重大影响。拉加德指出了加密货币能够进行快速和廉价的跨境金融交易的好处,并称比特币的基础技术——分布式账本技术可能会改变金融市场的运作方式。此外,拉加德指出,智能合约的革命性,可以移除中间商,而区块链技术能够安全地存储重要文件。最后,拉加德指出,在发展中的经济体,这种进步可以帮助确保产权,增加市场信心并促进投资。[2018/4/18]

|--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

其中:

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/上报。

标签:CON区块链WORHELLOConnector Coin区块链工程专业学什么课程的Auric NetworkHELLO币

欧易交易所热门资讯
RAY:Raydium平台上首个IDO项目Media Network公布募资细则_Raydium

Raydium官方宣布,其去中心化公募平台AcceleRaytor的第一个项目MediaNetwork将于4月29日北京时间21时启动,持续12小时.

1900/1/1 0:00:00
BTC:霍比特HBTC关于上线ZEN等6个3倍多空杠杆ETF交易对的公告_USDT

尊敬的社区用户:为满足广大用户交易需求,在新杠杆ETF产品基础上,霍比特交易所将于2021年4月22日12:00在杠杆ETF交易区上线新的杠杆ETF产品:ZEN3L/USDTZEN3S/USDT.

1900/1/1 0:00:00
区块链:星空财经与博链财经联合发起 Alias Capital_CAP

4月22日,星空财经&StarConsulting创始人JennyYang与博链财经创始人王晖在北京宣布,双方已于早些时候达成战略合并.

1900/1/1 0:00:00
数字货币:数字货币交易平台标准研究报告_中国允许买数字货币吗

数字货币交易所是为交易者提供的购买和出售数字货币并以其兑换法币或其它资产的实体平台,是连接区块链投资一级和二级市场的桥梁,是为个人和机构投资者提供购买和出售加密数字货币以及其它数字资产的平台.

1900/1/1 0:00:00
比特币:唐思哲:BTC日内继续看回调,ETH下方关注2400_GNFT价格

  这两天的行情依旧没有走出笔者说的空间,涨多少跌多少,在这种态势下切忌追涨杀跌,昨天以太坊先是一波反弹,直接上行到了2450上方,随后一波回调后继续反弹,晚间再次试探2445一线.

1900/1/1 0:00:00
HOMI:HomiEx(红米交易所)关于MKR3S、SOL3S杠杆ETF产品份额合并的公告_HOMERPEPE币

亲爱的用户:由于杠杆ETF产品MKR3S、SOL3S的净值已低于或接近0.050USDT,触发了HomiEx杠杆ETF产品份额合并机制.

1900/1/1 0:00:00