更新时间: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 {
    }
}

相关文档