Alibaba Cloud Blockchain as a Service (BaaS) には、Hyperledger Fabric 上で動作するすぐに使えるスマートコントラクトの例が 2 つ用意されています。1 つはチェーン上でのデータ公証に使用する汎用預託コントラクト、もう 1 つはブロックチェーンによる承認ワークフローを実現するシンプル承認コントラクトです。これらのコントラクトをそのまま使用するか、またはご自身のチェーンコード開発の出発点として活用してください。
一般デポジット契約
汎用預託コントラクトは、ブロックチェーン台帳に対してキーと値のペアを読み書きするための汎用インターフェイスを提供します。追加専用(append-only)および上書き(overwrite)の 2 種類の書き込みモードをサポートしており、変更履歴のクエリも可能です。
チェーンコードはソースリポジトリから取得するか、以下の事前パッケージ済みバージョンをダウンロードしてください。
notary.1.2.cc — Hyperledger Fabric 1.4.x 向け
notary.1.2.tar.gz — Hyperledger Fabric 2.x 向け
パッケージング手順については、「チェーンコードのパッケージ化」をご参照ください。
初期化パラメーター
なし。
API オペレーション
get
指定されたキーに格納されている現在の値を読み取ります。
| Parameter | Type | Description |
|---|---|---|
key | string | 読み取るキー |
Returns:
成功時:キーに格納されている現在の値
失敗時:エラーの原因
put
キーと値のペアをブロックチェーンに書き込みます。キーがすでに存在する場合は失敗します。put を使用すると、一度記録されたレコードは上書きできない「一回限りの書き込み」セマンティクスを強制できます。
| Parameter | Type | Description |
|---|---|---|
key | string | 書き込むキー |
value | string | 格納するデータ |
Returns:
成功時:書き込まれたキー
失敗時:エラーの原因
set
キーと値のペアをブロックチェーンに書き込みます。キーがすでに存在する場合は、既存の値を上書きします。レコードを更新する必要がある場合は set を使用してください。
| Parameter | Type | Description |
|---|---|---|
key | string | 書き込むキー |
value | string | 格納するデータ |
Returns:
成功時:書き込まれたキー
失敗時:エラーの原因
history
指定されたキーの変更履歴を JSON 形式のリストとして返します。
| Parameter | Type | Description |
|---|---|---|
key | string | クエリキー |
Returns:
成功時:キーの変更履歴(JSON 形式)
失敗時:エラーの原因
シンプル承認コントラクト
シンプル承認コントラクトは、ブロックチェーン上でタスク承認ワークフローを実装します。タスクは必要な承認者のリストとともに作成され、すべての承認者が承認した時点でタスクは完了状態となり、完了イベントが発行されます。すべての状態トランジションはチェーン上に記録されるため、改ざん検知可能な監査証跡が提供されます。
チェーンコードはソースリポジトリから取得するか、以下の事前パッケージ済みバージョンをダウンロードしてください。
task.1.4.cc — Hyperledger Fabric 1.4.x 向け
task.1.4.tar.gz — Hyperledger Fabric 2.x 向け
パッケージング手順については、「チェーンコードのパッケージ化」をご参照ください。
初期化パラメーター
なし。
データ構造
このコントラクトは、各タスクを以下のフィールドを持つ Task 構造体として格納します。
type Task struct {
Name string `json:"name"` // タスク名
Creator string `json:"creator"` // タスク作成者の ID
Requires []string `json:"requires"` // 承認が必要な ID のリスト。形式:${MSP_ID}.${USER_NAME}
Approved []string `json:"approved"` // 承認済みの ID のリスト。形式:${MSP_ID}.${USER_NAME}
Description string `json:"description"` // タスクの説明
}チェーン上のタスクデータを解析したりイベントをサブスクライブしたりする際は、json:"..." タグに示されている JSON フィールド名を使用してください。
API オペレーション
create
新しいタスクを作成し、作成イベントを発行します。
| Parameter | Type | Description |
|---|---|---|
name | string | タスク名 |
task | string | JSON 形式のタスクオブジェクト。必須フィールド:requires および description |
Returns:
成功時:作成されたタスクの名前
失敗時:エラーの原因
Events:
event-create-task— 成功時に発行。ペイロードは JSON 形式
get
タスクの現在の状態を取得します。
| Parameter | Type | Description |
|---|---|---|
name | string | 取得対象のタスク名 |
Returns:
成功時:JSON 形式の
Taskオブジェクトとしてのタスク失敗時:エラーの原因
approve
呼び出し元の ID によるタスク承認を記録します。コントラクトは、各呼び出し後にすべての必要な承認者が承認済みかどうかをチェックします。
| Parameter | Type | Description |
|---|---|---|
name | string | 承認対象のタスク名 |
Returns:
成功時:更新後のタスク(JSON 形式の
Taskオブジェクト)失敗時:エラーの原因
Events:
event-task-finished— すべての承認者が承認済みの場合に発行。ペイロードは JSON 形式event-approve-task— 承認が記録されたがタスクがまだ完了していない場合に発行。ペイロードは JSON 形式
次のステップ
チェーンコードのデプロイ — これらのコントラクトを Fabric ネットワークにパッケージ化してインストールします