智能合约示例

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

通用存证合约

通用存证合约提供了对区块链账本KV的通用操作接口,支持对数据的读取、写入、历史查询。您可以访问链码源码自行打包成链码包使用,也可以直接下载我们已经打包好的链码:notary.1.2.cc(适用于 Fabric 1.4.x)notary.1.2.tar.gz(适用于 Fabric 2.x)

初始化参数

无初始化参数

接口

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

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

接口

create

创建新的任务流。

  • 参数列表
    • name: 任务的名称。
    • task: 经过JSON编码的任务内容,需要具有requiresdescription两个字段。
  • 返回值:
    • 成功时,返回成功创建的任务名称。
    • 失败时,返回错误原因。
  • 事件:
    • 触发事件 event-create-task,事件内容为经过JSON编码的任务内容。

get

获取任务流

  • 参数列表
    name: 任务的名称。
  • 返回值:
    • 成功时,返回经过JSON编码的任务内容。
    • 失败时,返回错误原因。

approve

同意某个任务

  • 参数列表
    name: 任务的名称。
  • 返回值:
    • 成功时,返回经过JSON编码的任务内容。
    • 失败时,返回错误原因。
  • 事件:
    • 同意任务后,任务满足结束条件时,触发事件 event-task-finished,事件内容为经过JSON编码的任务内容。
    • 同意任务后,任务未满足结束条件时,触发事件 event-approve-task,事件内容为经过JSON编码的任务内容。