更新时间:2024-06-28 GMT+08:00
合约结构
Java语言合约由合约文件及依赖包构成,包含包声明、依赖包导入、智能合约的方法定义。
合约文件中,用户可自定义合约函数,需要实现Contract的init和invoke方法。
合约的结构如下:
package com.huawei.poissonchain; import com.huawei.huaweichain.contract.Contract; import com.huawei.huaweichain.contract.ContractException; import com.huawei.huaweichain.contract.ContractStub; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ExampleContract implements Contract { // 功能:合约的初始化(Init)接口,需要合约开发者在智能合约中实现此接口,供合约使用者在启动合约之后调用。注意,一般将合约启动时,首先需要执行且只需要执行一次的逻辑放到此方法中 // 入参:stub是智能合约SDK为本次合约执行交易准备的上下文对象,可以通过stub提供的API函数,获取交易请求相关信息、读写状态数据库、写日志等 // 返回值:需要返回给合约调用者(区块链客户端)的信息,没有信息需要返回时,返回值可以为null // 抛出异常:初始化过程的异常信息,可由合约编写者自行设定异常逻辑 @Override public byte[] init(ContractStub stub) throws ContractException { } // 功能:合约被调用(invoke)接口,需要合约开发者在智能合约中实现此接口,将主要的合约执行逻辑,放到此接口内,供合约使用者调用。 // 入参:stub是智能合约合约SDK为本次合约执行交易准备的上下文对象,可以通过stub提供的API函数,获取交易请求相关信息、读写状态数据库、写日志等 // 返回值:需要返回给合约调用者(区块链客户端)的信息,没有信息需要返回时,返回值可以为null // 抛出异常:初始化过程的异常信息,可由合约编写者自行设定异常逻辑 @Override public byte[] invoke(ContractStub stub) throws ContractException { } }
父主题: JAVA合约开发