This is a sample ethereum starter project.
In this project , We will issue an erc20 token.
开发架构层次初步设计如下图:
Picture1:
在上图中,用颜色标记出来的区域是需要进行相应的开发实现。主要包括两个部分:
- 智能合约的开发和测试,需要编写的文件有contract和test文件。
- java的整合智能合约层,需要编写的文件有service和controller层。
上图中的灰色部分是暂时为理解其原理的部分.
负责实现相应的智能合约业务,编写测试实例。
在开发中基于ganache进行开发调试,需要智能合约的开发者具有较好的js基础。
在编写智能合约的过程中,需要熟练contract和test的语法。
从图中可以看出,整合智能合约层主要分为三个部分:
- 自动生成的智能合约,通过web3命令行工具可以将solidity的智能合约自动转换(auto-generated)为java的智能合约,并提供deploy和call等函数。
- web3j的connector。通过web3j实现了与智能合约的连接,包括整合web3j实现与以太坊网络的通信,部署智能合约和智能合约内部函数的调用。
- controller和service层的实现。作为智能合约和前端的桥接。
为了加快开发,这个项目引用了infura来实现智能合约快速在rinkeby部署和调用。
开发结束后,可以在https://www.rinkeby.io/#explorer 查看相应的交易细节.
- solc(ubuntu下通过apt-get install安装,非npm包管理安装)
- web3(需要写入到系统环境变量中,负责自动生成java智能合约代码和提供api调用)
项目导入intellij后可以立即运行,并暴露出8080端口提供restful api供数据访问。
项目src下面主要包括两个重要的文件夹,其中
- resource/contract 是存放智能合约与相应测试的文件夹,使用truffle进行编写。
- main 下存放着相应的java代码。
附件中主要重要的脚本:
- generate.sh 自动生成智能合约的Bin和abi的文件,以及在指定目录生成智能合约的相应代码.
在项目中实现了基本的erc20的例子,包括智能合约的实现和java代码的实现.
为了方便查看与调用,在项目中配置swagger界面。http://localhost:8080/swagger-ui.html
在swagger-ui中调用相应的接口,可以在rinkeby testnet上查看到交易细节.
如图所示,我们在rinkeby发行了名为WEBBSHI的代币
在代码中,在resource/solidity内置了三个不错的学习案例,分别为:
- HumanToken
- BitDegreeToken&CrowdSale 真实发币案例
- zeppelin-solidity 非常多的社区认可的安全的solidity智能合约案例,涵盖代币,监管等等.