享受沉浸式Solidity编译体验,这个开源的编译插件值得一用

区块链应用开发过程中,智能合约编译环节总能出现一些“拦路虎”,影响开发者效率。比较典型的有:

  • 操作环境割裂,项目开发时,需要使用控制台等组件进行编译;

  • 操作繁琐,陷入合约的传入、编译物的拷出等许多拷贝操作;

  • 倘若合约需要修改,更是要反复进行上述操作,费时费力。


“如何轻快、便捷地编译智能合约,顺滑提速区块链应用开发效率?”的命题自然而然出现在团队的工作清单里。4月7日,我们在开源的区块链应用开发组件WeBankBlockchain-SmartDev中提供了解题思路,并打造了一款简单好用的智能合约编译插件WebankBlockchain-SmartDev-SCGP(SmartContractGradlePlugin),帮助用户在不跳出自己IDE窗口界面的情况下,便捷地编译Solidity智能合约。

  智能合约编译插件概述

WebankBlockchain-SmartDev-SCGP是一款专门用于编译Solidity智能合约的gradle插件。用户只需将这个插件配置在自己的区块链应用项目中,即可通过gradle命令来编译Solidity,而编译的产物如abi、bin、java合约等,将会被自动保存在项目中的适当位置。开发者不必安装控制台,也不必拷贝相应代码。

下图是编译插件的使用对比:

  关键特性一览

编译快捷

在应用开发过程中,如果需要编译智能合约,用户只需调用gradle指令,就可以将合约编译到本地,免去了任何拷贝的流程,可随时实现快捷编译。

引入轻量

gradle编译插件已经被存放在maven库中,开发者只需通过远程仓库,便可获取此插件。此外,基于“契约优于配置(Convention Over Configuration)”的原则,用户只需修改java包名等极少量配置项,其余配置项都采用默认配置,即可正常使用插件,无需再安装控制台等工具。

配置定制

在gradle编译插件的配置中,绝大多数配置都提供了默认选项。但是,用户也可以根据自己的需求,对这些配置进行定制,例如,可对编译产物进行选择、对编译输出路径进行选择。

国密兼容

在国密环境下,智能合约生成的二进制代码与非国密二进制存在差别。合约编译插件在编译的时候,既会基于ecdsa进行编译,也会基于国密进行编译。用户无需特别指定国密版本。

  使用示例

在进行区块链应用的开发时,不可避免的是对合约的调试和修改。这个时候,就如在Eclipse、IDEA等IDE中修改java一样,开发者们往往希望在合约修改后,合约能够立即生效,且能够看到改动效果。

WebankBlockchain-SmartDev-SCGP合约编译插件致力于提供类似的体验。下面是一个示例,在这个示例中,用户修改完合约后,就可以轻松获取编译物,从而进行调试。

创建业务工程

创建一个空的业务工程,里面的src/main/contracts里包含了智能合约:

插件配置

用户需要在build.gradle中按如下方式引入插件。可将这段代码直接放在build.gradle首部:

buildscript {
  repositories {
    mavenCentral() maven {
      url "http://maven.aliyun.com/nexus/content/groups/public/"
    }
    maven {
      url "https://oss.sonatype.org/content/repositories/snapshots"
    }
    mavenLocal()
  }
  dependencies {
    classpath 'com.webank:solc-gradle-plugin:1.0.0-SNAPSHOT'
  }
}
applyplugin: 'solc-gradle-plugin'


然后进行如下配置,下面的示例是配置包名:

solc {
  pkg = 'org.example.contracts'
}

完整的配置项如下:

配置项

必选

说明

onlyAbiBin

是否只输出abi和bin,而不输出java合约。默认false

pkg

java合约包名,如果生成java合约,需要配置

contracts

智能合约文件路径,默认为src/main/contracts

output

编译输出路径,默认为src/main

编译合约

进入java工程,并进行编译:

cd solc-plugin-example
gradle solc

编译过后,会发现abi、bin、smbin、java合约已经被拷贝到项目src/main中:

  • abi:编译生成的abi

  • bin:二进制文件,包含国密

  • java:java合约

后续调试

合约编译后,用户可基于最新的abi、bin、java合约进行开发。例如,用户可通过HelloWorld.java重新部署合约,然后进行调试等。

  即刻使用

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

文档地址:

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

github代码库地址:

https://github.com/WeBankBlockchain/SmartDev-SCGP

gitee代码库地址:

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

欢迎参与WeBankBlockchain的社区建设:

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

  • 欢迎提交代码(Pull requests)。

  • 提问和提交BUG。

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值