智能合约示例

本节给出了通用存证合约和简易审批合约的示例,为您进行智能合约开发提供方便。

通用存证合约

通用存证合约提供了对区块链账本KV的通用操作接口,支持对数据的读取、写入、历史查询。您可以访问链码源码,并参见打包链码打包成链码包进行使用,也可以直接下载我们已经打包好的链码。

初始化参数

无初始化参数

接口

get

查询区块链存证信息中某个key的当前内容。

  • 参数列表

    key:需要读取的存证Key。

  • 返回值:

    • 成功时,存证合约中key所存储的当前内容。

    • 失败时,返回错误原因。

put

向区块链中写入存证信息<key, value>, 如果存证key已经存在,则返回失败。

  • 参数列表

    • key:需要读取的存证Key。

    • value:需要存证的信息。

  • 返回值:

    • 成功时,返回存证的key。

    • 失败时,返回错误原因。

set

向区块链中写入存证信息<key, value>, 如果存证key已经存在,则覆盖旧的存证内容。

  • 参数列表

    • key:需要读取的存证Key。

    • value:需要存证的信息。

  • 返回值:

    • 成功时,返回存证的key。

    • 失败时,返回错误原因。

history

查询区块链存证信息中某个key的修改历史。

  • 参数列表

    key:需要读取的存证Key。

  • 返回值:

    • 成功时,返回key的修改历史(JSON编码)。

    • 失败时,返回错误原因。

简易审批合约

简易审批合约提供了基于区块链的简单任务审批接口,支持创建、查询和审批任务,当任务的状态发生变更时,会产生相应的区块链事件。您可以访问链码源码,并参见打包链码打包成链码包进行使用,也可以直接下载我们已经打包好的链码。

初始化参数

无初始化参数

数据结构

task

type Task struct {
    // 任务名称
    Name          string `json:"name"`
    // 任务的创建者
    Creator     string `json:"creator"`
    // 任务需要那些用户同意后,流程才能结束(用户表示方式: ${MSP_ID}.${USER_NAME})
    Requires    []string `json:"requires"`
    // 当前已经同意该任务的用户(用户表示方式: ${MSP_ID}.${USER_NAME})
    Approved      []string `json:"approved"`
    // 任务的描述
    Description string `json:"description"`
}

接口

create

创建新的任务流。

  • 参数列表

    • name:任务的名称。

    • task:经过JSON编码的任务内容,需要具有requiresdescription两个字段。

  • 返回值:

    • 成功时,返回成功创建的任务名称。

    • 失败时,返回错误原因。

  • 事件:

    • 触发事件 event-create-task,事件内容为经过JSON编码的任务内容。

get

获取任务流

  • 参数列表

    name:任务的名称。

  • 返回值:

    • 成功时,返回经过JSON编码的任务内容。

    • 失败时,返回错误原因。

approve

同意某个任务

  • 参数列表

    name:任务的名称。

  • 返回值:

    • 成功时,返回经过JSON编码的任务内容。

    • 失败时,返回错误原因。

  • 事件:

    • 同意任务后,任务满足结束条件时,触发事件 event-task-finished,事件内容为经过JSON编码的任务内容。

    • 同意任务后,任务未满足结束条件时,触发事件 event-approve-task,事件内容为经过JSON编码的任务内容。