合约模板
使用模板
在HVM中,我们建议用户将合约组织为一个单独的项目,在合约编写完成后生成jar包和SDK交互,这样一方面让工程间的结构更加清晰,一方面使得合约能够在非java语言编写的SDK上使用。
为了方便用户编写合约,我们提供了maven工程的archetype来快速搭建一个合约工程项目。
创建工程
下面介绍如果使用常用开发工具Intellij IDEA
和Eclipse
创建合约模板工程。
Intellij IDEA
1、打开File->New->Project...->Maven
2、输入模板坐标
GroupId = cn.hyperchain
ArtifactId = java-contract-archetype
Version = 1.0.2
说明:请使用最新模板
Eclipse
1、打开File->New->Other->Maven->Maven Project
2、输入模板坐标
GroupId = cn.hyperchain
ArtifactId = java-contract-archetype
Version = 1.0.2
工程结构
根据用户的输入工程中将会自动创建对应的包结构,并存在一个示例合约SBank以及对应的交付接口。
下面简单介绍一下样例代码:
- Sbank.java: 合约主体类。需要继承BaseContract父类。合约主要功能是模拟了一个银行业务,提供了存钱、取钱和转账接口。
- ISBank.java: 交付接口类,继承了BaseContractInterface。用来交付给应用程序开发者,包含了合约拥有者想要对应用程序1(假设)暴露的接口。
- ISBank2.java: 交付接口类,继承了BaseContractInterface。用来交付给应用程序开发者,包含了合约拥有者想要对应用程序2(假设)暴露的接口。
- pom.xml: 用户需要根据编写的合约主体类修改pom中
<main-class></main-class>
属性,值应该为合约主体类的全限定类名。
无法使用模板
如果用户出于某种原因无法使用模板,则需要在自己创建的工程中添加如下依赖
<dependency>
<groupId>cn.hyperchain</groupId>
<artifactId>hvm-sdk</artifactId>
<!--请使用最新版本-->
<version>1.0.2</version>
</dependency>
此SDK中包含写合约需要用到的基础类,然后打包成对应的jar。打包参考