トークン・タクソノミ・フレームワーク用のスキャフォールド済Goプロジェクト

ブロックチェーン・アプリケーション・ビルダーは、トークン仕様ファイルから入力を受け取り、完全に機能するスキャフォールド済チェーンコード・プロジェクトを生成します。

プロジェクトは、CRUDおよび非CRUDメソッドを含むトークン・ライフサイクル・クラスおよび関数を自動的に生成します。引数の検証、マーシャリング/アンマーシャリングおよび透過的永続性機能はすべて自動的にサポートされます。

トークンに直接関連しない、スキャフォールドされたプロジェクトおよびメソッドの詳細は、「スキャフォールド済Goチェーンコード・プロジェクト」を参照してください。

モデル

透過的永続性機能(または簡略化されたORM)は、OchainModelクラスで取得されます。

package src
type Digicur struct {
    AssetType               string                 `json:"AssetType" final:"otoken"`
    Token_id                string                 `json:"Token_id" id:"true" mandatory:"true" validate:"regexp=^[A-Za-z0-9][A-Za-z0-9_-]*$,max=16"`
    Token_name              string                 `json:"Token_name" final:"digicur"`
    Token_desc              string                 `json:"Token_desc" validate:"max=256"`
    Token_type              string                 `json:"Token_type" final:"fungible" validate:"regexp=^fungible$"`
    Behavior                []string               `json:"Behavior" final:"[\"divisible\",\"mintable\",\"transferable\",\"burnable\",\"holdable\",\"roles\"]"`
    Roles                   map[string]interface{} `json:"Roles" final:"{\"minter_role_name\":\"minter\",\"burner_role_name\":\"burner\",\"notary_role_name\":\"notary\"}"`
    Mintable                map[string]interface{} `json:"Mintable" final:"{\"Max_mint_quantity\":20000}"`
    Divisible               map[string]interface{} `json:"Divisible" final:"{\"Decimal\":1}"`
    Token_to_currency_ratio int                    `json:"Token_to_currency_ratio" validate:"int"`
    Currency_representation string                 `json:"Currency_representation" validate:"string"`
    Metadata                interface{}            `json:"Metadata,omitempty"`
}

コントローラ

メインコントローラは1つのみです。

type Controller struct {
    Ctx trxcontext.TrxContext
}

クラス、関数またはファイルはいくつでも作成できますが、メイン・コントローラ・クラスで定義されたメソッドのみが呼出し可能です。その他のメソッドは非表示です。

トークンSDKメソッドを使用して、ビジネス・アプリケーションのカスタム・メソッドを記述できます。

カスタム・メソッドで複数のトークンSDKメソッドを使用する場合は、状態データベースの同じキーと値のペアに影響するメソッドを使用しないでください。

かわりに、次のコード・スニペットに示すように、BulkTransferTokensメソッドを使用して、コール元アカウントから複数の勘定科目に転送します。

BulkTransferTokens(token_id string, flow: []map[string]interface{})

ノート:

状態データベースの同じキーと値のペアに影響を与える可能性がある複数のトークンSDKメソッドをカスタム・メソッドで使用する場合は、トークン・チェーンコードのMVCC最適化を有効にします。詳細は、「MVCCの最適化」を参照してください。

自動生成されたトークン・メソッド

ブロックチェーン・アプリケーション・ビルダーは、トークンおよびトークン・ライフサイクルをサポートするメソッドを自動的に生成します。これらのメソッドを使用して、トークンの初期化、ロールとアカウントの管理、およびその他のトークン・ライフサイクル・タスクを追加コーディングなしで行えます。コントローラ・メソッドを呼び出し可能にするには、パブリックである必要があります。パブリック・メソッド名は大文字で始まります。小文字で始まるメソッド名はプライベートです。

アクセス制御管理のメソッド

AddTokenAdmin
このメソッドは、ユーザーをチェーンコードのToken Adminとして追加します。このメソッドは、チェーンコードのToken Adminのみがコールできます。
func (t *Controller) AddTokenAdmin(org_id string, user_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Admin.AddAdmin", "TOKEN")
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Admin.AddTokenAdmin(org_id, user_id)
}
パラメータ:
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、チェーンコードのToken Adminとして追加されたユーザーの詳細を含むメッセージ。
戻り値の例:
{
    "msg": "Successfully added Token Admin (Org_Id: Org1MSP, User_Id: user1)"
}
RemoveTokenAdmin
このメソッドは、チェーンコードのToken Adminであるユーザーを削除します。このメソッドは、チェーンコードのToken Adminのみがコールできます。
func (t *Controller) RemoveTokenAdmin(org_id string, user_id string) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Admin.RemoveAdmin", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    return t.Ctx.Admin.RemoveAdmin(org_id, user_id)
}
パラメータ:
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、チェーンコードのToken Adminとして削除されたユーザーの詳細を含むメッセージ。
戻り値の例:
{"msg":"Successfuly removed Admin (Org_Id Org1MSP User_Id user1)"}
IsTokenAdmin
このメソッドは、関数のコール元がToken Adminの場合はブール値trueを返して、それ以外の場合はfalseを返します。Token AdminまたはOrg Adminは、ブロックチェーン・ネットワーク内の他のユーザーに対してこの関数をコールできます。他のユーザーは、自分のアカウントに対してのみこのメソッドをコールできます。
func (t *Controller) IsTokenAdmin(org_id string, user_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Admin.IsTokenAdmin", "TOKEN", map[string]string{"org_id": org_id, "user_id": user_id})
      if err != nil || !auth {
            return false, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Auth.IsUserTokenAdmin(org_id, user_id)
}
パラメータ:
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • コール元がToken Adminの場合はtrueを返し、そうでない場合はfalseを返します。
戻り値の例:
{"result":false}
GetAllTokenAdmins
このメソッドは、チェーンコードのToken Adminであるすべてのユーザーのリストを返します。このメソッドは、チェーンコードのToken AdminまたはOrg Adminのみがコールできます。
func (t *Controller) GetAllTokenAdmins() (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Admin.GetAllAdmins", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    return t.Ctx.Admin.GetAllAdmins()
}
パラメータ:
  • なし
戻り値:
  • 成功の場合、OrgIdおよびUserIdオブジェクトを含む管理者のJSONリスト。
戻り値の例:
{"admins":[{"OrgId":"Org1MSP","UserId":"admin"},{"OrgId":"Org1MSP","UserId":"user2"}]}
AddOrgAdmin
このメソッドは、ユーザーを組織のOrg Adminとして追加します。このメソッドは、チェーンコードのToken Adminまたは指定された組織のOrg Adminのみがコールできます。
func (t *Controller) AddOrgAdmin(org_id string, user_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Admin.AddOrgAdmin", "TOKEN", map[string]string{"org_id": org_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Admin.AddOrgAdmin(org_id, user_id)
}
パラメータ:
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、組織のOrg Adminとして追加されたユーザーの詳細を含むメッセージ。
戻り値の例:
{
    "msg": "Successfully added Org Admin (Org_Id: Org1MSP, User_Id: orgAdmin)"
}
RemoveOrgAdmin
このメソッドは、組織のOrg Adminであるユーザーを削除します。このメソッドは、チェーンコードのToken Adminまたは指定された組織のOrg Adminのみがコールできます。
func (t *Controller) RemoveOrgAdmin(org_id string, user_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Admin.RemoveOrgAdmin", "TOKEN", map[string]string{"org_id": org_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Admin.RemoveOrgAdmin(org_id, user_id)
}
パラメータ:
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、組織のOrg Adminとして削除されたユーザーの詳細を含むメッセージ。
戻り値の例:
{
    "msg": "Successfully removed Org Admin (Org_Id Org1MSP User_Id orgAdmin)"
}
GetOrgAdmins
このメソッドは、組織のOrg Adminであるすべてのユーザーのリストを返します。このメソッドは、チェーンコードのToken Adminまたは任意のOrg Adminのみがコールできます。
func (t *Controller) GetOrgAdmins() (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Admin.GetOrgAdmins", "TOKEN")
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Admin.GetAllOrgAdmins()
}
パラメータ:
  • なし
戻り値:
  • 成功の場合、OrgIdおよびUserIdオブジェクトを含むJSONリスト。
戻り値の例:
{
    "admins": [
        {
            "OrgId": "Org1MSP",
            "UserId": "orgadmin"
        },
        {
            "OrgId": "Org1MSP",
            "UserId": "orgadmin1"
        },
        {
            "OrgId": "Org1MSP",
            "UserId": "orgadmin2"
        }
    ]
}
AddTokenAdmin
このメソッドは、ユーザーをチェーンコードのToken Adminとして追加します。このメソッドは、チェーンコードのToken Adminのみがコールできます。
func (t *Controller) AddTokenAdmin(org_id string, user_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Admin.AddAdmin", "TOKEN")
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Admin.AddTokenAdmin(org_id, user_id)
}
パラメータ:
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、チェーンコードのToken Adminとして追加されたユーザーの詳細を含むメッセージ。
戻り値の例:
{
    "msg": "Successfully added Token Admin (Org_Id: Org1MSP, User_Id: user1)"
}
RemoveTokenAdmin
このメソッドは、チェーンコードのToken Adminであるユーザーを削除します。このメソッドは、チェーンコードのToken Adminのみがコールできます。
func (t *Controller) RemoveTokenAdmin(org_id string, user_id string) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Admin.RemoveAdmin", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    return t.Ctx.Admin.RemoveAdmin(org_id, user_id)
}
パラメータ:
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、チェーンコードのToken Adminとして削除されたユーザーの詳細を含むメッセージ。
戻り値の例:
{"msg":"Successfuly removed Admin (Org_Id Org1MSP User_Id user1)"}
IsTokenAdmin
このメソッドは、関数のコール元がToken Adminの場合はブール値trueを返して、それ以外の場合はfalseを返します。このファンクションをコールできるのは、Token AdminToken AuditorOrg AdminまたはOrg Auditorのみです。
func (t *Controller) IsTokenAdmin(org_id string, user_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Admin.IsTokenAdmin", "TOKEN", map[string]string{"org_id": org_id, "user_id": user_id})
      if err != nil || !auth {
            return false, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Auth.IsUserTokenAdmin(org_id, user_id)
}
パラメータ:
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • コール元がToken Adminの場合はtrueを返し、そうでない場合はfalseを返します。
戻り値の例:
{"result":false}
GetAllTokenAdmins
このメソッドは、チェーンコードのToken Adminであるすべてのユーザーのリストを返します。このメソッドは、Token AdminまたはToken Auditorのみがコールできます。
func (t *Controller) GetAllTokenAdmins() (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Admin.GetAllAdmins", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    return t.Ctx.Admin.GetAllAdmins()
}
パラメータ:
  • なし
戻り値:
  • 成功の場合、OrgIdおよびUserIdオブジェクトを含む管理者のJSONリスト。
戻り値の例:
{"admins":[{"OrgId":"Org1MSP","UserId":"admin"},{"OrgId":"Org1MSP","UserId":"user2"}]}
AddOrgAdmin
このメソッドは、ユーザーを組織のOrg Adminとして追加します。このメソッドは、チェーンコードのToken Adminまたは指定された組織のOrg Adminのみがコールできます。
func (t *Controller) AddOrgAdmin(org_id string, user_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Admin.AddOrgAdmin", "TOKEN", map[string]string{"org_id": org_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Admin.AddOrgAdmin(org_id, user_id)
}
パラメータ:
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、組織のOrg Adminとして追加されたユーザーの詳細を含むメッセージ。
戻り値の例:
{
    "msg": "Successfully added Org Admin (Org_Id: Org1MSP, User_Id: orgAdmin)"
}
RemoveOrgAdmin
このメソッドは、組織のOrg Adminであるユーザーを削除します。このメソッドは、チェーンコードのToken Adminまたは指定された組織のOrg Adminのみがコールできます。
func (t *Controller) RemoveOrgAdmin(org_id string, user_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Admin.RemoveOrgAdmin", "TOKEN", map[string]string{"org_id": org_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Admin.RemoveOrgAdmin(org_id, user_id)
}
パラメータ:
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、組織のOrg Adminとして削除されたユーザーの詳細を含むメッセージ。
戻り値の例:
{
    "msg": "Successfully removed Org Admin (Org_Id Org1MSP User_Id orgAdmin)"
}
GetOrgAdmins
このメソッドは、組織のOrg Adminであるすべてのユーザーのリストを返します。このメソッドは、Token AdminToken AuditorOrg AdminまたはOrg Auditorのみがコールできます。
func (t *Controller) GetOrgAdmins() (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Admin.GetOrgAdmins", "TOKEN")
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Admin.GetAllOrgAdmins()
}
パラメータ:
  • なし
戻り値:
  • 成功の場合、OrgIdおよびUserIdオブジェクトを含むJSONリスト。
戻り値の例:
{
    "admins": [
        {
            "OrgId": "Org1MSP",
            "UserId": "orgadmin"
        },
        {
            "OrgId": "Org1MSP",
            "UserId": "orgadmin1"
        },
        {
            "OrgId": "Org1MSP",
            "UserId": "orgadmin2"
        }
    ]
}
AddTokenAuditor
このメソッドは、ユーザーをチェーンコードのToken Auditorとして追加します。このメソッドは、チェーンコードのToken Adminのみがコールできます。
func (t *Controller) AddTokenAuditor(org_id string, user_id string) (interface{}, error)
パラメータ:
  • org_id: string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id: string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、チェーンコードのToken Auditorとして追加されたユーザーの詳細を含むメッセージ。
戻り値の例:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "f0888dd52f39dfa669275cc8f35d0b47b37b8407d384493d16970fcbb377f937",
        "payload": {
            "msg": "Successfully added Token Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 268
    }
}
RemoveTokenAuditor
このメソッドは、チェーンコードのToken Auditorであるユーザーを削除します。このメソッドは、チェーンコードのToken Adminのみがコールできます。
func (t *Controller) RemoveTokenAuditor(org_id string, user_id string) (interface{}, error)
パラメータ:
  • org_id: string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id: string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、チェーンコードのToken Auditorとして削除されたユーザーの詳細を含むメッセージ。
戻り値の例:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "2f01f48eceaf2dff175f98b96a5bdd22c949f48fc5683ce86d6141cc4892aee3",
        "payload": {
            "msg": "Successfully removed Token Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 270
    }
}
GetTokenAuditors
このメソッドは、チェーンコードのすべてのToken Auditorsを返します。このメソッドは、チェーンコードのToken AdminまたはToken Auditorのみがコールできます。
func (t *Controller) GetTokenAuditors() (interface{}, error)
戻り値の例:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "18eaa81b04d43db64f28287bab1cf6609e2a1d8ff84852ff73849ddb9a9dfba1",
        "payload": {
            "auditors": [
                {
                    "OrgId": "CB",
                    "UserId": "auditor_user_cb"
                }
            ]
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 269
    }
}
AddOrgAuditor
このメソッドは、チェーンコードのOrg Auditorとしてユーザーを追加します。このメソッドは、チェーンコードのToken AdminまたはOrg Adminのみがコールできます。
func (t *Controller) AddOrgAuditor(org_id string, user_id string) (interface{}, error)
パラメータ:
  • org_id: string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id: string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、チェーンコードのOrg Auditorとして追加されたユーザーの詳細を含むメッセージ。
戻り値の例:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "3d5ec46003c68c6208d43c82894bd6da5c0b763339cc5212e09b71d39d0d80e2",
        "payload": {
            "msg": "Successfully added Org Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 271
    }
}
RemoveOrgAuditor
このメソッドは、チェーンコードのOrg Auditorとしてユーザーを削除します。このメソッドは、チェーンコードのToken AdminまたはOrg Adminのみがコールできます。
func (t *Controller) RemoveOrgAuditor(org_id string, user_id string) (interface{}, error)
パラメータ:
  • org_id: string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id: string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、チェーンコードのOrg Auditorとして削除されたユーザーの詳細を含むメッセージ。
戻り値の例:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "713a120641afbc4dfaeac73b82c9fd51df6fcfd7d4d9a82553d3c487bf11f530",
        "payload": {
            "msg": "Successfully removed Org Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 273
    }
}
GetOrgAuditors
このメソッドは、チェーンコードのすべてのOrg Auditorsを返します。このメソッドは、Token AdminToken AuditorOrg AdminまたはOrg Auditorのみがコールできます。
func (t *Controller) GetOrgAuditors() (interface{}, error)
戻り値の例:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "07656bf434616d7a3d7fe4fb81dc80c8cc608991648adfd9f6f2f2b9f6ddf468",
        "payload": {
            "auditors": [
                {
                    "OrgId": "CB",
                    "UserId": "cb"
                },
                {
                    "OrgId": "CB",
                    "UserId": "issuer_user_cb"
                }
            ]
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 272
    }
}

トークン構成管理のメソッド

Init
このメソッドは、チェーンコードがデプロイされるときにコールされます。すべてのToken Adminは、必須のadminListパラメータのuser_idおよびorg_id情報によって識別されます。user_idは、インスタンス所有者またはインスタンスにログインしているユーザーのユーザー名および電子メールIDです。org_idは、現在のネットワーク組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) IDです。
Token Adminユーザーは、AddTokenAdminおよびRemoveTokenAdminメソッドをコールして、他のToken Adminユーザーを追加および削除できます。
func (t *Controller) Init(adminList []admin.TokenAdminAsset) (interface{}, error) {
    list, err := t.Ctx.Admin.InitAdmin(adminList)
    if err != nil {
        return nil, fmt.Errorf("initializing admin list failed %s", err.Error())
    }
    return list, nil
}
パラメータ:
  • adminList array – トークン管理者のリストを指定する{user_id, org_id}情報の配列。adminList配列は必須パラメータです。
パラメータの例(macOSおよびLinux CLI):
'[{"user_id":"userid", "org_id":"OrgMSPId"}]'
パラメータの例(Microsoft Windows CLI):
"[{\"user_id\":\"userid\", \"org_id\":\"OrgMSPId\"}]"
パラメータの例(Oracle Blockchain Platformコンソール):
["[{\"user_id\":\"userid\", \"org_id\":\"OrgMSPId\"}]"]
Initialize<Token Name>Token
このメソッドはトークンを作成し、トークン・プロパティを初期化します。アセットとそのプロパティは、状態データベースに保存されます。このメソッドは、チェーンコードのToken Adminのみがコールできます。
func (t *Controller) InitializeDigicurToken(asset Digicur) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.Save", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
    }
    return t.Ctx.Token.Save(&asset)
}
パラメータ:
  • asset <Token Class> – トークン・アセットがこのメソッドにパラメータとして渡されます。トークン・アセットのプロパティは異なる場合があり、トークン仕様ファイルに記述されています。仕様ファイルに読取り専用としてマークされたパラメータは含めないでください。

    Visual Studio CodeとCLIまたはPostmanコレクションを使用している場合は、assetパラメータを別の形式で指定します。

    Visual Studio Code: GUIを使用して、トークン・クラス・フィールドに対応する個々のパラメータを渡します。

    CLI / Postman: 次の例に示すように、トークン指定フィールドを含むシリアライズされたJSON文字列を渡します。

    "{\"token_id\":\"USD\",\"token_desc\":\"token_desc value\",\"Currency_Name\":\"Currency_Name value\"}"

戻り値:
  • 成功の場合、作成されたトークン・アセットのJSON表現。
戻り値の例:
{
    "AssetType": "otoken",
    "Token_id": "digiCurr101",
    "Token_name": "digicur",
    "Token_desc": "",
    "Token_type": "fungible",
    "Behavior": ["divisible", "mintable", "transferable", "burnable", "roles"],
    "Roles": {
        "minter_role_name": "minter"
    },
    "Mintable": {
        "Max_mint_quantity": 1000
    },
    "Divisible": {
        "Decimal": 2
    },
    "Currency_name": "",
    "Token_to_currency_ratio": 1
}
Update<Token Name>Token
このメソッドは、トークン・プロパティを更新します。トークン・アセットの作成後は、token_descプロパティおよびカスタム・プロパティのみを更新できます。このメソッドは、チェーンコードのToken Adminのみがコールできます。
func (t *Controller) UpdateDigicurToken(asset Digicur) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.Update", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
    }
    return t.Ctx.Token.Update(&asset)
}
パラメータ:
  • asset <Token Class> – トークン・アセットがこのメソッドにパラメータとして渡されます。トークン・アセットのプロパティは異なる場合があり、トークン仕様ファイルに記述されています。仕様ファイルに読取り専用としてマークされたパラメータは含めないでください。

    Visual Studio CodeとCLIまたはPostmanコレクションを使用している場合は、assetパラメータを別の形式で指定します。

    Visual Studio Code: GUIを使用して、トークン・クラス・フィールドに対応する個々のパラメータを渡します。

    CLI / Postman: 次の例に示すように、トークン指定フィールドを含むシリアライズされたJSON文字列を渡します。

    "{\"token_id\":\"USD\",\"token_desc\":\"token_desc value\",\"Currency_Name\":\"Currency_Name value\"}"

戻り値:
  • 成功の場合、トークン・アセットの更新されたJSON表現。
戻り値の例:
{
    "AssetType": "otoken",
    "Token_id": "digiCurr101",
    "Token_name": "digicur",
    "Token_desc": "Digital Currency equiv of dollar",
    "Token_type": "fungible",
    "Behavior": ["divisible", "mintable", "transferable", "burnable", "roles"],
    "Roles": {
        "minter_role_name": "minter"
    },
    "Mintable": {
        "Max_mint_quantity": 1000
    },
    "Divisible": {
        "Decimal": 2
    },
    "Currency_name": "",
    "Token_to_currency_ratio": 1
}
GetTokenDecimals
このメソッドは、フラクショナル・トークンに対して構成された小数点以下の桁数を返します。トークンに対してdivisible動作が指定されなかった場合、デフォルト値は0です。このメソッドは、チェーンコードのToken AdminまたはOrg Adminのみがコールできます。
func (t *Controller) GetTokenDecimals(token_id string) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.GetTokenDecimals", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
    }
    tokenDecimal, err := t.Ctx.Token.GetTokenDecimals(token_id)
    if err != nil {
        return nil, fmt.Errorf("Error in GetTokenDecimals %s", err.Error())
    }
    response := make(map[string]interface{})
    response["msg"] = fmt.Sprintf("Token Id: %s has %d decimal places.", token_id, tokenDecimal)
    return response, nil
}
パラメータ:
  • token_id string – トークンのID。
戻り値:
  • 成功の場合、トークンの小数点以下の桁数を示すJSON文字列。
戻り値の例:
{"msg":"Token Id: digiCurr101 has 1 decimal places."}
GetTokenById
このメソッドは、状態データベースに存在する場合、トークン・オブジェクトを返します。このメソッドは、チェーンコードのToken AdminまたはOrg Adminのみがコールできます。
func (t *Controller) GetTokenById(token_id string) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.Get", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    tokenAsset, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    return tokenAsset.Interface(), err
}
パラメータ:
  • token_id string – トークンのID。
戻り値:
  • 成功の場合、トークン・アセットを表すJSONオブジェクト。
戻り値の例:
{
    "AssetType": "otoken",
    "Token_id": "digiCurr101",
    "Token_name": "digicur",
    "Token_desc": "Digital Currency equiv of dollar",
    "Token_type": "fungible",
    "Behavior": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "Roles": {
        "minter_role_name": "minter"
    },
    "Mintable": {
        "Max_mint_quantity": 1000
    },
    "Divisible": {
        "Decimal": 2
    },
    "Currency_name": "",
    "Token_to_currency_ratio": 1
}
GetTokenHistory
このメソッドは、指定されたトークンIDのトークン履歴を返します。すべてのユーザーがこのメソッドをコールできます。
func (t *Controller) GetTokenHistory(token_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Token.GetTokenHistory", "TOKEN")
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Token.History(token_id)
}
パラメータ:
  • tokenId: string – トークンのID。
戻り値:
  • 成功の場合、トークン履歴を表すJSONオブジェクト。
戻り値の例:
[
    {
        "IsDelete": "false",
        "Timestamp": "2023-09-01T16:46:33Z",
        "TxId": "12333b8a4f63aa9b3a34072efcbd7df546c6d1e7d82a7a9596e899383656d6f7",
        "Value": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "Currency_name1": "",
            "Divisible": {
                "Decimal": 2
            },
            "Mintable": {
                "Max_mint_quantity": 1000
            },
            "Roles": {
                "minter_role_name": "minter"
            },
            "Token_desc": "updated description",
            "Token_id": "token",
            "Token_name": "fiatmoneytok",
            "Token_to_currency_ratio": 0,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    },
    {
        "IsDelete": "false",
        "Timestamp": "2023-09-01T16:04:25Z",
        "TxId": "99702e2dad7554a5ee4716a0d01d3e394cbce39bea8bade265d8911f30ebad0b",
        "Value": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "Currency_name1": "",
            "Divisible": {
                "Decimal": 2
            },
            "Mintable": {
                "Max_mint_quantity": 1000
            },
            "Roles": {
                "minter_role_name": "minter"
            },
            "Token_desc": "",
            "Token_id": "token",
            "Token_name": "fiatmoneytok",
            "Token_to_currency_ratio": 0,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    }
]
GetAllTokens
このメソッドは、状態データベースに格納されているすべてのトークンを返します。このメソッドは、チェーンコードのToken AdminまたはOrg Adminのみがコールできます。
func (t *Controller) GetAllTokens() (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.GetAllTokens", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    return t.Ctx.Token.GetAllTokens()
}
パラメータ:
  • なし
戻り値:
  • 成功の場合、すべてのトークン・アセットを表すJSONオブジェクト。
戻り値の例:
"payload": [
    {
        "key": "t1",
        "valueJson": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "holdable",
                "burnable",
                "roles"
            ],
            "Currency_name": "Currency_name value",
            "Divisible": {
                "Decimal": 8
            },
            "Mintable": {
                "Max_mint_quantity": 10000
            },
            "Roles": {
                "burner_role_name": "burner",
                "minter_role_name": "minter",
                "notary_role_name": "notary"
            },
            "Token_desc": "Token_desc value",
            "Token_id": "t1",
            "Token_name": "obptok",
            "Token_to_currency_ratio": 2,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    }
]
GetTokensByName
このメソッドは、指定された名前のすべてのトークン・オブジェクトを返します。このメソッドは、チェーンコードのToken AdminまたはOrg Adminのみがコールできます。このメソッドでは、Berkeley DB SQLリッチ問合せが使用され、リモートOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
func (t *Controller) GetTokensByName(token_name string) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.GetTokensByName", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    return t.Ctx.Token.GetTokensByName(token_name)
}
パラメータ:
  • token_name string – 取得するトークンの名前。この名前は、仕様ファイルのToken_nameプロパティに対応します。値は、トークンのクラス名です。
戻り値:
  • 成功の場合、名前と一致するすべてのトークン・アセットのJSONオブジェクト。
戻り値の例:
"payload": [
    {
        "key": "t1",
        "valueJson": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "holdable",
                "burnable",
                "roles"
            ],
            "Currency_name": "Currency_name value",
            "Divisible": {
                "Decimal": 8
            },
            "Mintable": {
                "Max_mint_quantity": 10000
            },
            "Roles": {
                "burner_role_name": "burner",
                "minter_role_name": "minter",
                "notary_role_name": "notary"
            },
            "Token_desc": "Token_desc value",
            "Token_id": "t1",
            "Token_name": "obptok",
            "Token_to_currency_ratio": 999,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    },
    {
        "key": "obp2",
        "valueJson": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "holdable",
                "burnable",
                "roles"
            ],
            "Currency_name": "",
            "Divisible": {
                "Decimal": 8
            },
            "Mintable": {
                "Max_mint_quantity": 10000
            },
            "Roles": {
                "burner_role_name": "burner",
                "minter_role_name": "minter",
                "notary_role_name": "notary"
            },
            "Token_desc": "",
            "Token_id": "obp2",
            "Token_name": "obptok",
            "Token_to_currency_ratio": 0,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    }
]
Init
このメソッドは、チェーンコードがデプロイされるときにコールされます。すべてのToken Adminは、必須のadminListパラメータのuser_idおよびorg_id情報によって識別されます。user_idは、インスタンス所有者またはインスタンスにログインしているユーザーのユーザー名および電子メールIDです。org_idは、現在のネットワーク組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) IDです。
Token Adminユーザーは、AddTokenAdminおよびRemoveTokenAdminメソッドをコールして、他のToken Adminユーザーを追加および削除できます。
func (t *Controller) Init(adminList []admin.TokenAdminAsset) (interface{}, error) {
    list, err := t.Ctx.Admin.InitAdmin(adminList)
    if err != nil {
        return nil, fmt.Errorf("initializing admin list failed %s", err.Error())
    }
    return list, nil
}
パラメータ:
  • adminList array – トークン管理者のリストを指定する{user_id, org_id}情報の配列。adminList配列は必須パラメータです。
パラメータの例(macOSおよびLinux CLI):
'[{"user_id":"userid", "org_id":"OrgMSPId"}]'
パラメータの例(Microsoft Windows CLI):
"[{\"user_id\":\"userid\", \"org_id\":\"OrgMSPId\"}]"
パラメータの例(Oracle Blockchain Platformコンソール):
["[{\"user_id\":\"userid\", \"org_id\":\"OrgMSPId\"}]"]
Initialize<Token Name>Token
このメソッドはトークンを作成し、トークン・プロパティを初期化します。アセットとそのプロパティは、状態データベースに保存されます。このメソッドは、チェーンコードのToken Adminのみがコールできます。
func (t *Controller) InitializeDigicurToken(asset Digicur) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.Save", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
    }
    return t.Ctx.Token.Save(&asset)
}
パラメータ:
  • asset <Token Class> – トークン・アセットがこのメソッドにパラメータとして渡されます。トークン・アセットのプロパティは異なる場合があり、トークン仕様ファイルに記述されています。仕様ファイルに読取り専用としてマークされたパラメータは含めないでください。

    Visual Studio CodeとCLIまたはPostmanコレクションを使用している場合は、assetパラメータを別の形式で指定します。

    Visual Studio Code: GUIを使用して、トークン・クラス・フィールドに対応する個々のパラメータを渡します。

    CLI / Postman: 次の例に示すように、トークン指定フィールドを含むシリアライズされたJSON文字列を渡します。

    "{\"token_id\":\"USD\",\"token_desc\":\"token_desc value\",\"Currency_Name\":\"Currency_Name value\"}"

戻り値:
  • 成功の場合、作成されたトークン・アセットのJSON表現。
戻り値の例:
{
    "AssetType": "otoken",
    "Token_id": "digiCurr101",
    "Token_name": "digicur",
    "Token_desc": "",
    "Token_type": "fungible",
    "Behavior": ["divisible", "mintable", "transferable", "burnable", "roles"],
    "Roles": {
        "minter_role_name": "minter"
    },
    "Mintable": {
        "Max_mint_quantity": 1000
    },
    "Divisible": {
        "Decimal": 2
    },
    "Currency_name": "",
    "Token_to_currency_ratio": 1
}
Update<Token Name>Token
このメソッドは、トークン・プロパティを更新します。トークン・アセットの作成後は、token_descプロパティおよびカスタム・プロパティのみを更新できます。このメソッドは、チェーンコードのToken Adminのみがコールできます。
func (t *Controller) UpdateDigicurToken(asset Digicur) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.Update", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
    }
    return t.Ctx.Token.Update(&asset)
}
パラメータ:
  • asset <Token Class> – トークン・アセットがこのメソッドにパラメータとして渡されます。トークン・アセットのプロパティは異なる場合があり、トークン仕様ファイルに記述されています。仕様ファイルに読取り専用としてマークされたパラメータは含めないでください。

    Visual Studio CodeとCLIまたはPostmanコレクションを使用している場合は、assetパラメータを別の形式で指定します。

    Visual Studio Code: GUIを使用して、トークン・クラス・フィールドに対応する個々のパラメータを渡します。

    CLI / Postman: 次の例に示すように、トークン指定フィールドを含むシリアライズされたJSON文字列を渡します。

    "{\"token_id\":\"USD\",\"token_desc\":\"token_desc value\",\"Currency_Name\":\"Currency_Name value\"}"

戻り値:
  • 成功の場合、トークン・アセットの更新されたJSON表現。
戻り値の例:
{
    "AssetType": "otoken",
    "Token_id": "digiCurr101",
    "Token_name": "digicur",
    "Token_desc": "Digital Currency equiv of dollar",
    "Token_type": "fungible",
    "Behavior": ["divisible", "mintable", "transferable", "burnable", "roles"],
    "Roles": {
        "minter_role_name": "minter"
    },
    "Mintable": {
        "Max_mint_quantity": 1000
    },
    "Divisible": {
        "Decimal": 2
    },
    "Currency_name": "",
    "Token_to_currency_ratio": 1
}
GetTokenDecimals
このメソッドは、フラクショナル・トークンに対して構成された小数点以下の桁数を返します。トークンに対してdivisible動作が指定されなかった場合、デフォルト値は0です。このメソッドは、Token AdminToken AuditorOrg AdminまたはOrg Auditorのみがコールできます。
func (t *Controller) GetTokenDecimals(token_id string) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.GetTokenDecimals", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
    }
    tokenDecimal, err := t.Ctx.Token.GetTokenDecimals(token_id)
    if err != nil {
        return nil, fmt.Errorf("Error in GetTokenDecimals %s", err.Error())
    }
    response := make(map[string]interface{})
    response["msg"] = fmt.Sprintf("Token Id: %s has %d decimal places.", token_id, tokenDecimal)
    return response, nil
}
パラメータ:
  • token_id string – トークンのID。
戻り値:
  • 成功の場合、トークンの小数点以下の桁数を示すJSON文字列。
戻り値の例:
{"msg":"Token Id: digiCurr101 has 1 decimal places."}
GetTokenById
このメソッドは、状態データベースに存在する場合、トークン・オブジェクトを返します。このメソッドは、Token AdminToken AuditorOrg AdminまたはOrg Auditorのみがコールできます。
func (t *Controller) GetTokenById(token_id string) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.Get", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    tokenAsset, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    return tokenAsset.Interface(), err
}
パラメータ:
  • token_id string – トークンのID。
戻り値:
  • 成功の場合、トークン・アセットを表すJSONオブジェクト。
戻り値の例:
{
    "AssetType": "otoken",
    "Token_id": "digiCurr101",
    "Token_name": "digicur",
    "Token_desc": "Digital Currency equiv of dollar",
    "Token_type": "fungible",
    "Behavior": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "Roles": {
        "minter_role_name": "minter"
    },
    "Mintable": {
        "Max_mint_quantity": 1000
    },
    "Divisible": {
        "Decimal": 2
    },
    "Currency_name": "",
    "Token_to_currency_ratio": 1
}
GetTokenHistory
このメソッドは、指定されたトークンIDのトークン履歴を返します。このメソッドは、Token AdminToken AuditorOrg AdminまたはOrg Auditorのみがコールできます。
func (t *Controller) GetTokenHistory(token_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Token.GetTokenHistory", "TOKEN")
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Token.History(token_id)
}
パラメータ:
  • tokenId: string – トークンのID。
戻り値:
  • 成功の場合、トークン履歴を表すJSONオブジェクト。
戻り値の例:
[
    {
        "IsDelete": "false",
        "Timestamp": "2023-09-01T16:46:33Z",
        "TxId": "12333b8a4f63aa9b3a34072efcbd7df546c6d1e7d82a7a9596e899383656d6f7",
        "Value": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "Currency_name1": "",
            "Divisible": {
                "Decimal": 2
            },
            "Mintable": {
                "Max_mint_quantity": 1000
            },
            "Roles": {
                "minter_role_name": "minter"
            },
            "Token_desc": "updated description",
            "Token_id": "token",
            "Token_name": "fiatmoneytok",
            "Token_to_currency_ratio": 0,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    },
    {
        "IsDelete": "false",
        "Timestamp": "2023-09-01T16:04:25Z",
        "TxId": "99702e2dad7554a5ee4716a0d01d3e394cbce39bea8bade265d8911f30ebad0b",
        "Value": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "Currency_name1": "",
            "Divisible": {
                "Decimal": 2
            },
            "Mintable": {
                "Max_mint_quantity": 1000
            },
            "Roles": {
                "minter_role_name": "minter"
            },
            "Token_desc": "",
            "Token_id": "token",
            "Token_name": "fiatmoneytok",
            "Token_to_currency_ratio": 0,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    }
]
GetAllTokens
このメソッドは、状態データベースに格納されているすべてのトークンを返します。このメソッドは、Token AdminToken AuditorOrg AdminまたはOrg Auditorのみがコールできます。
func (t *Controller) GetAllTokens() (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.GetAllTokens", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    return t.Ctx.Token.GetAllTokens()
}
パラメータ:
  • なし
戻り値:
  • 成功の場合、すべてのトークン・アセットを表すJSONオブジェクト。
戻り値の例:
"payload": [
    {
        "key": "t1",
        "valueJson": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "holdable",
                "burnable",
                "roles"
            ],
            "Currency_name": "Currency_name value",
            "Divisible": {
                "Decimal": 8
            },
            "Mintable": {
                "Max_mint_quantity": 10000
            },
            "Roles": {
                "burner_role_name": "burner",
                "minter_role_name": "minter",
                "notary_role_name": "notary"
            },
            "Token_desc": "Token_desc value",
            "Token_id": "t1",
            "Token_name": "obptok",
            "Token_to_currency_ratio": 2,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    }
]
GetTokensByName
このメソッドは、指定された名前のすべてのトークン・オブジェクトを返します。このメソッドは、Token AdminToken AuditorOrg AdminまたはOrg Auditorのみがコールできます。このメソッドでは、Berkeley DB SQLリッチ問合せが使用され、リモートOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
func (t *Controller) GetTokensByName(token_name string) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.GetTokensByName", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    return t.Ctx.Token.GetTokensByName(token_name)
}
パラメータ:
  • token_name string – 取得するトークンの名前。この名前は、仕様ファイルのToken_nameプロパティに対応します。値は、トークンのクラス名です。
戻り値:
  • 成功の場合、名前と一致するすべてのトークン・アセットのJSONオブジェクト。
戻り値の例:
"payload": [
    {
        "key": "t1",
        "valueJson": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "holdable",
                "burnable",
                "roles"
            ],
            "Currency_name": "Currency_name value",
            "Divisible": {
                "Decimal": 8
            },
            "Mintable": {
                "Max_mint_quantity": 10000
            },
            "Roles": {
                "burner_role_name": "burner",
                "minter_role_name": "minter",
                "notary_role_name": "notary"
            },
            "Token_desc": "Token_desc value",
            "Token_id": "t1",
            "Token_name": "obptok",
            "Token_to_currency_ratio": 999,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    },
    {
        "key": "obp2",
        "valueJson": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "holdable",
                "burnable",
                "roles"
            ],
            "Currency_name": "",
            "Divisible": {
                "Decimal": 8
            },
            "Mintable": {
                "Max_mint_quantity": 10000
            },
            "Roles": {
                "burner_role_name": "burner",
                "minter_role_name": "minter",
                "notary_role_name": "notary"
            },
            "Token_desc": "",
            "Token_id": "obp2",
            "Token_name": "obptok",
            "Token_to_currency_ratio": 0,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    }
]

アカウント管理のメソッド

CreateAccount
このメソッドは、指定されたユーザーおよびトークンのアカウントを作成します。任意の時点でトークンを持つすべてのユーザーに対してアカウントを作成する必要があります。アカウントは、残高、保留残高およびトランザクション履歴を追跡します。アカウントIDは英数字のセットです。アカウントIDは、oaccount~<token asset name>~が先頭付き、インスタンス所有者およびインスタンスにログインしているユーザーのユーザー名または電子メールID (user_id)と現在のネットワーク組織内のユーザーの会員サービス・プロバイダID (org_id)のハッシュが続きます。このメソッドは、チェーンコードのToken Adminまたは指定された組織のOrg Adminのみがコールできます。
unc (t *Controller) CreateAccount(org_id string, user_id string, token_type string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.CreateAccount", "TOKEN", map[string]string{"org_id": org_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.CreateAccount(org_id, user_id, token_type)
}
パラメータ:
  • org_id: string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id: string – ユーザーのユーザー名または電子メールID。
  • token_type: string – トークンのタイプ。fungibleである必要があります。
戻り値:
  • 成功の場合、作成されたアカウントのJSONオブジェクト。BapAccountVersionパラメータは、内部使用のためにアカウント・オブジェクトで定義されます。
戻り値の例:
{ 
   "AssetType":"oaccount",
   "AccountId":"oaccount~a73085a385bc96c4a45aa2dff032e7dede82c0664dee5f396b7c5854eeafd4bd",
   "BapAccountVersion": 0,
   "UserId":"user1",
   "OrgId":"Org1MSP",
   "AccountType":"fungible",
   "TokenId":"",
   "TokenName":"",
   "Balance":0,
   "BalanceOnHold":0,
   "OnHoldBurnBalance":0
}
AssociateTokenToAccount
このメソッドは、代替可能トークンをアカウントに関連付けます。このメソッドは、チェーンコードのToken Adminまたは関連する組織のOrg Adminのみがコールできます。
func (t *Controller) AssociateTokenToAccount(account_id string, token_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.AssociateToken", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.AssociateToken(account_id, token_id)
}
パラメータ:
  • account_id string – アカウントのID。
  • token_id string – トークンのID。
戻り値:
  • 成功の場合、更新されたアカウントのJSONオブジェクト。BapAccountVersionパラメータは、内部使用のためにアカウント・オブジェクトで定義されます。
戻り値の例:
{ 
"AssetType":"oaccount", 
"AccountId":"oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb", 
"BapAccountVersion": 0,
"UserId":"admin", 
"OrgId":"Org1MSP", 
"AccountType":"fungible", 
"TokenId":"token1", 
"TokenName":"loyaltok", 
"Balance":0, 
"BalanceOnHold":0, 
"OnHoldBurnBalance":0
}
GetAccount
このメソッドは、指定されたユーザーおよびトークンのアカウント詳細を返します。このメソッドは、チェーンコードのToken Admin、指定された組織のOrg AdminまたはアカウントのAccountOwnerのみがコールできます。
func (t *Controller) GetAccount(token_id string, org_id string, user_id string) (interface{}, error) {
      account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
      if err != nil {
            return nil, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccount", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.GetAccountWithStatus(account_id)
}
パラメータ:
  • token_id string – トークンのID。
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、次のプロパティを含むJSONアカウント・オブジェクト:
  • AccountId – ユーザー・アカウントのID。
  • UserId – ユーザーのユーザー名または電子メールID。
  • OrgId – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • TokenId – トークンのID。
  • Balance – アカウントの現在の残高。
  • BalanceOnHold – アカウントの現在の保留残高。
  • OnHoldBurnBalance– 書き込み承認待ちの現在の保留残高。
  • BapAccountVersion – 内部使用のためのアカウント・オブジェクト・パラメータ。
  • Status– ユーザー・アカウントの現在のステータス。
戻り値の例:
{
  "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
  "AssetType": "oaccount",
  "Balance": 95,
  "BalanceOnHold": 0,
  "OnHoldBurnBalance": 0,
  "BapAccountVersion": 8,
  "OrgId": "appdev",
  "Status": "active",
  "TokenId": "obp1",
  "TokenName": "obptok",
  "TokenType": "fungible",
  "UserId": "idcqa"
}
GetAccountHistory
このメソッドは、指定されたユーザーおよびトークンのアカウント履歴の詳細を返します。このメソッドは、チェーンコードのToken AdminまたはアカウントのAccountOwnerのみがコールできます。
func (t *Controller) GetAccountHistory(token_id string, org_id string, user_id string) (interface{}, error) {
      account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
      if err != nil {
            return nil, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.History", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.History(account_id)
}
パラメータ:
  • token_id string – トークンのID。
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、次のプロパティを含むJSONアカウント・オブジェクトの配列:
  • TxId – 台帳によって返されるトランザクションのトランザクションID。
  • Timestamp – トランザクションの時間。
  • IsDelete – レコードが削除されているかどうかを示すブール値。
  • Value– アカウント・オブジェクトのJSON文字列。BapAccountVersionパラメータは、内部使用のためにアカウント・オブジェクトで定義されます。
戻り値の例:
[
  {
      "IsDelete": "false",
      "Timestamp": "2023-08-28T19:31:15Z",
      "TxId": "adde470a63860ec1013bd5c5987e8a506a48942a91b0f39fc8e561374042bd27",
      "Value": {
          "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
          "AssetType": "oaccount",
          "Balance": 100,
          "BalanceOnHold": 0,
          "OnHoldBurnBalance": 0,
          "BapAccountVersion": 1,
          "OrgId": "Org1MSP",
          "TokenId": "t1",
          "TokenName": "obptok",
          "TokenType": "fungible",
          "UserId": "idcqa"
      }
  },
  {
      "IsDelete": "false",
      "Timestamp": "2023-08-28T19:30:23Z",
      "TxId": "8fbeda2ba60ba175091faae5ae369247775f2cba45c4d6d1ead6f0b05be84743",
      "Value": {
          "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
          "AssetType": "oaccount",
          "Balance": 0,
          "BalanceOnHold": 0,
          "OnHoldBurnBalance": 0,
          "BapAccountVersion": 0,
          "OrgId": "Org1MSP",
          "TokenId": "t1",
          "TokenName": "obptok",
          "TokenType": "fungible",
          "UserId": "idcqa"
      }
  },
  {
      "IsDelete": "false",
      "Timestamp": "2023-08-28T19:29:54Z",
      "TxId": "19bb296ae71709e91b097ba5d9ebd7f7522095880382fbf5913334a46a6026aa",
      "Value": {
          "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
          "AssetType": "oaccount",
          "Balance": 0,
          "BalanceOnHold": 0,
          "OnHoldBurnBalance": 0,
          "BapAccountVersion": 0,
          "OrgId": "Org1MSP",
          "TokenId": "",
          "TokenName": "",
          "TokenType": "fungible",
          "UserId": "idcqa"
      }
  }
]
GetAccountOnHoldBalance
このメソッドは、指定されたアカウントおよびトークンの現在の保留残高を返します。このメソッドは、チェーンコードのToken Admin、指定された組織のOrg AdminまたはアカウントのAccountOwnerのみがコールできます。
func (t *Controller) GetAccountOnHoldBalance(token_id string, org_id string, user_id string) (interface{}, error) {
      account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
      if err != nil {
            return nil, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccountOnHoldBalance", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      response, err := t.Ctx.Account.GetAccountOnHoldBalance(account_id)
      return response, err
}
パラメータ:
  • token_id string – トークンのID。
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、現在の保留残高のJSON表現。
戻り値の例:
{
    "holding_balance": 0,
    "msg": "Total Holding Balance of Account Id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id: Org1MSP, user_id: user1) is 0"
}
GetAllAccounts
このメソッドは、すべてのアカウントのリストを返します。このメソッドは、チェーンコードのToken Adminのみがコールできます。このメソッドでは、Berkeley DB SQLリッチ問合せが使用され、リモートOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
func (t *Controller) GetAllAccounts() (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAllAccounts", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    return t.Ctx.Account.GetAllAccounts()
}
パラメータ:
  • なし
戻り値:
  • 成功の場合、すべてのアカウントのJSON配列。
戻り値の例:
[
    {
        "key": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
        "valueJson": {
            "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
            "AssetType": "oaccount",
            "Balance": 100,
            "BalanceOnHold": 0,
            "OnHoldBurnBalance": 0,
            "BapAccountVersion": 1,
            "OrgId": "appdev",
            "TokenId": "t1",
            "TokenName": "obptok",
            "TokenType": "fungible",
            "UserId": "idcqa"
        }
    }
]
GetUserByAccountId
このメソッドは、指定されたアカウントのユーザー詳細(org_idおよびuser_id)を返します。このメソッドは、チェーンコードの任意のユーザーがコールできます。
func (t *Controller) GetUserByAccountId(account_id string) (interface{}, error) {
    return t.Ctx.Account.GetUserByAccountById(account_id)
}
パラメータ:
  • account_id string – アカウントのID。
戻り値:
  • 成功の場合、ユーザー詳細(org_idtoken_idおよびuser_id)のJSONオブジェクト。
戻り値の例:
{"org_id":"Org1MSP","token_id":"digiCurr101","user_id":"user1"}
GetAccountBalance
このメソッドは、指定されたアカウントおよびトークンの現在の残高を返します。このメソッドは、チェーンコードのToken Admin、指定された組織のOrg AdminまたはアカウントのAccountOwnerのみがコールできます。
func (t *Controller) GetAccountBalance(token_id string, org_id string, user_id string) (interface{}, error) {
      account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
      if err != nil {
            return nil, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccountBalance", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      response, err := t.Ctx.Account.GetAccountBalance(account_id)
      return response, err
}
パラメータ:
  • token_id string – トークンのID。
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、現在のアカウントの残高のJSON表現。
戻り値の例:
{"msg":"Current Balance of oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f is 0","user_balance":0}
GetAllOrgAccounts
このメソッドは、指定された組織に属するすべてのトークン・アカウントのリストを返します。このメソッドは、チェーンコードのToken Adminまたは指定された組織のOrg Adminのみがコールできます。
func (t *Controller) GetAllOrgAccounts(org_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAllOrgAccounts", "TOKEN", map[string]string{"org_id": org_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.GetAllOrgAccounts(org_id)
}
パラメータ:
  • org_id: string – 組織のメンバーシップ・サービス・プロバイダ(MSP) ID。
戻り値:
  • 成功の場合、指定した組織のすべてのアカウントのリスト。
戻り値の例:
[
    {
        "key": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
        "valueJson": {
            "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
            "AssetType": "oaccount",
            "Balance": 0,
            "BalanceOnHold": 0,
            "OnHoldBurnBalance": 0,
            "BapAccountVersion": 0,
            "OrgId": "appdev",
            "TokenId": "token",
            "TokenName": "fiatmoneytok",
            "TokenType": "fungible",
            "UserId": "idcqa"
        }
    },
    {
        "key": "oaccount~9c650574af9025a6106c8d12a801b079eda9ae2e3399fc2fbd5bd683d738a850",
        "valueJson": {
            "AccountId": "oaccount~9c650574af9025a6106c8d12a801b079eda9ae2e3399fc2fbd5bd683d738a850",
            "AssetType": "oaccount",
            "Balance": 0,
            "BalanceOnHold": 0,
            "OnHoldBurnBalance": 0,
            "BapAccountVersion": 0,
            "OrgId": "appdev",
            "TokenId": "token",
            "TokenName": "fiatmoneytok",
            "TokenType": "fungible",
            "UserId": "example_minter"
        }
    }
]
CreateAccount
このメソッドは、指定されたユーザーおよびトークンのアカウントを作成します。任意の時点でトークンを持つすべてのユーザーに対してアカウントを作成する必要があります。アカウントは、残高、保留残高およびトランザクション履歴を追跡します。アカウントIDは英数字のセットです。アカウントIDは、oaccount~<token asset name>~が先頭付き、インスタンス所有者およびインスタンスにログインしているユーザーのユーザー名または電子メールID (user_id)と現在のネットワーク組織内のユーザーの会員サービス・プロバイダID (org_id)のハッシュが続きます。このメソッドは、チェーンコードのToken Adminまたは指定された組織のOrg Adminのみがコールできます。
func (t *Controller) CreateAccount(org_id string, user_id string, token_type string, daily_limits ...account.AccountDailyLimits) (interface{}, error) {
auth, err := t.Ctx.Auth.CheckAuthorization("Account.CreateAccount", "TOKEN", map[string]string{"org_id": org_id})
if err != nil && !auth {
return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
}
return t.Ctx.Account.CreateAccount(org_id, user_id, token_type, daily_limits...)
}
パラメータ:
  • org_id: string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id: string – ユーザーのユーザー名または電子メールID。
  • token_type: string – トークンのタイプ。fungibleである必要があります。
  • daily_limits: JSON– 毎日トランザクションで使用できるトークンの最大量(max_daily_amount)および毎日完了できるトランザクションの最大数(max_daily_transactions)を指定するオブジェクト。

    Visual Studio CodeとCLIまたはPostmanコレクションを使用している場合は、daily_limitsパラメータを別の形式で指定します。

    Visual Studioコード: { "max_daily_amount": 1000, "max_daily_transactions": 100 }

    CLI /ポストマン: "{\"max_daily_amount\":1000,\"max_daily_transactions\":100}"

戻り値:
  • 成功の場合、作成されたアカウントのJSONオブジェクト。BapAccountVersionパラメータは、内部使用のためにアカウント・オブジェクトで定義されます。
戻り値の例:
{ 
   "AssetType":"oaccount",
   "AccountId":"oaccount~a73085a385bc96c4a45aa2dff032e7dede82c0664dee5f396b7c5854eeafd4bd",
   "BapAccountVersion": 0,
   "UserId":"user1",
   "OrgId":"Org1MSP",
   "AccountType":"fungible",
   "TokenId":"",
   "TokenName":"",
   "Balance":0,
   "BalanceOnHold":0,
   "OnHoldBurnBalance":0,
   "max_daily_amount": 1000,
   "max_daily_transactions": 100
}
AssociateTokenToAccount
このメソッドは、代替可能トークンをアカウントに関連付けます。このメソッドは、チェーンコードのToken Adminまたは関連する組織のOrg Adminのみがコールできます。
func (t *Controller) AssociateTokenToAccount(account_id string, token_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.AssociateToken", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.AssociateToken(account_id, token_id)
}
パラメータ:
  • account_id string – アカウントのID。
  • token_id string – トークンのID。
戻り値:
  • 成功の場合、更新されたアカウントのJSONオブジェクト。BapAccountVersionパラメータは、内部使用のためにアカウント・オブジェクトで定義されます。
戻り値の例:
{ 
"AssetType":"oaccount", 
"AccountId":"oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb", 
"BapAccountVersion": 0,
"UserId":"admin", 
"OrgId":"Org1MSP", 
"AccountType":"fungible", 
"TokenId":"token1", 
"TokenName":"loyaltok", 
"Balance":0, 
"BalanceOnHold":0, 
"OnHoldBurnBalance":0
}
GetAccount
このメソッドは、指定されたユーザーおよびトークンのアカウント詳細を返します。このメソッドは、Token AdminまたはToken Auditor、指定された組織のOrg AdminまたはOrg Auditor、またはアカウントのAccountOwnerのみがコールできます。
func (t *Controller) GetAccount(token_id string, org_id string, user_id string) (interface{}, error) {
      account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
      if err != nil {
            return nil, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccount", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.GetAccountWithStatus(account_id)
}
パラメータ:
  • token_id string – トークンのID。
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、次のプロパティを含むJSONアカウント・オブジェクト:
  • AccountId – ユーザー・アカウントのID。
  • UserId – ユーザーのユーザー名または電子メールID。
  • OrgId – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • TokenId – トークンのID。
  • Balance – アカウントの現在の残高。
  • BalanceOnHold – アカウントの現在の保留残高。
  • OnHoldBurnBalance– バーン承認待ちの現在の保留残高。
  • BapAccountVersion – 内部使用のためのアカウント・オブジェクト・パラメータ。
  • Status– ユーザー・アカウントの現在のステータス。
戻り値の例:
{
  "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
  "AssetType": "oaccount",
  "Balance": 95,
  "BalanceOnHold": 0,
  "OnHoldBurnBalance": 0,
  "BapAccountVersion": 8,
  "OrgId": "appdev",
  "Status": "active",
  "TokenId": "obp1",
  "TokenName": "obptok",
  "TokenType": "fungible",
  "UserId": "idcqa"
}
GetAccountHistory
このメソッドは、指定されたユーザーおよびトークンのアカウント履歴の詳細を返します。このメソッドは、チェーンコードのToken AdminまたはアカウントのAccountOwnerのみがコールできます。
func (t *Controller) GetAccountHistory(token_id string, org_id string, user_id string) (interface{}, error) {
      account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
      if err != nil {
            return nil, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.History", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.History(account_id)
}
パラメータ:
  • token_id string – トークンのID。
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、次のプロパティを含むJSONアカウント・オブジェクトの配列:
  • TxId – 台帳によって返されるトランザクションのトランザクションID。
  • Timestamp – トランザクションの時間。
  • IsDelete – レコードが削除されているかどうかを示すブール値。
  • Value– アカウント・オブジェクトのJSON文字列。BapAccountVersionパラメータは、内部使用のためにアカウント・オブジェクトで定義されます。
戻り値の例:
[
  {
      "IsDelete": "false",
      "Timestamp": "2023-08-28T19:31:15Z",
      "TxId": "adde470a63860ec1013bd5c5987e8a506a48942a91b0f39fc8e561374042bd27",
      "Value": {
          "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
          "AssetType": "oaccount",
          "Balance": 100,
          "BalanceOnHold": 0,
          "OnHoldBurnBalance": 0,
          "BapAccountVersion": 1,
          "OrgId": "Org1MSP",
          "TokenId": "t1",
          "TokenName": "obptok",
          "TokenType": "fungible",
          "UserId": "idcqa"
      }
  },
  {
      "IsDelete": "false",
      "Timestamp": "2023-08-28T19:30:23Z",
      "TxId": "8fbeda2ba60ba175091faae5ae369247775f2cba45c4d6d1ead6f0b05be84743",
      "Value": {
          "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
          "AssetType": "oaccount",
          "Balance": 0,
          "BalanceOnHold": 0,
          "OnHoldBurnBalance": 0,
          "BapAccountVersion": 0,
          "OrgId": "Org1MSP",
          "TokenId": "t1",
          "TokenName": "obptok",
          "TokenType": "fungible",
          "UserId": "idcqa"
      }
  },
  {
      "IsDelete": "false",
      "Timestamp": "2023-08-28T19:29:54Z",
      "TxId": "19bb296ae71709e91b097ba5d9ebd7f7522095880382fbf5913334a46a6026aa",
      "Value": {
          "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
          "AssetType": "oaccount",
          "Balance": 0,
          "BalanceOnHold": 0,
          "OnHoldBurnBalance": 0,
          "BapAccountVersion": 0,
          "OrgId": "Org1MSP",
          "TokenId": "",
          "TokenName": "",
          "TokenType": "fungible",
          "UserId": "idcqa"
      }
  }
]
GetAccountOnHoldBalance
このメソッドは、指定されたアカウントおよびトークンの現在の保留残高を返します。このメソッドは、Token AdminまたはToken Auditor、指定された組織のOrg AdminまたはOrg Auditor、または指定されたアカウント所有者によってのみコールできます。
func (t *Controller) GetAccountOnHoldBalance(token_id string, org_id string, user_id string) (interface{}, error) {
      account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
      if err != nil {
            return nil, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccountOnHoldBalance", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      response, err := t.Ctx.Account.GetAccountOnHoldBalance(account_id)
      return response, err
}
パラメータ:
  • token_id string – トークンのID。
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、現在の保留残高のJSON表現。
戻り値の例:
{
    "holding_balance": 0,
    "msg": "Total Holding Balance of Account Id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id: Org1MSP, user_id: user1) is 0"
}
GetAllAccounts
このメソッドは、すべてのアカウントのリストを返します。このメソッドは、チェーンコードのToken AdminまたはToken Auditorのみがコールできます。このメソッドでは、Berkeley DB SQLリッチ問合せが使用され、リモートOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
func (t *Controller) GetAllAccounts() (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAllAccounts", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    return t.Ctx.Account.GetAllAccounts()
}
パラメータ:
  • なし
戻り値:
  • 成功の場合、すべてのアカウントのJSON配列。
戻り値の例:
[
    {
        "key": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
        "valueJson": {
            "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
            "AssetType": "oaccount",
            "Balance": 100,
            "BalanceOnHold": 0,
            "OnHoldBurnBalance": 0,
            "BapAccountVersion": 1,
            "OrgId": "appdev",
            "TokenId": "t1",
            "TokenName": "obptok",
            "TokenType": "fungible",
            "UserId": "idcqa"
        }
    }
]
GetUserByAccountId
このメソッドは、指定されたアカウントのユーザー詳細(org_idおよびuser_id)を返します。このメソッドは、Token AdminまたはToken Auditor、あるいは指定された組織のOrg AdminまたはOrg Auditorによってのみコールできます。
func (t *Controller) GetUserByAccountId(account_id string) (interface{}, error) {
    return t.Ctx.Account.GetUserByAccountById(account_id)
}
パラメータ:
  • account_id string – アカウントのID。
戻り値:
  • 成功の場合、ユーザー詳細(org_idtoken_idおよびuser_id)のJSONオブジェクト。
戻り値の例:
{"org_id":"Org1MSP","token_id":"digiCurr101","user_id":"user1"}
GetAccountBalance
このメソッドは、指定されたアカウントおよびトークンの現在の残高を返します。このメソッドは、Token AdminまたはToken Auditor、指定された組織のOrg AdminまたはOrg Auditor、または指定されたアカウント所有者によってのみコールできます。
func (t *Controller) GetAccountBalance(token_id string, org_id string, user_id string) (interface{}, error) {
      account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
      if err != nil {
            return nil, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccountBalance", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      response, err := t.Ctx.Account.GetAccountBalance(account_id)
      return response, err
}
パラメータ:
  • token_id string – トークンのID。
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、現在のアカウントの残高のJSON表現。
戻り値の例:
{"msg":"Current Balance of oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f is 0","user_balance":0}
GetAllOrgAccounts
このメソッドは、指定された組織に属するすべてのトークン・アカウントのリストを返します。このメソッドは、Token AdminまたはToken Auditor、あるいは指定された組織のOrg AdminまたはOrg Auditorによってのみコールできます。
func (t *Controller) GetAllOrgAccounts(org_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAllOrgAccounts", "TOKEN", map[string]string{"org_id": org_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.GetAllOrgAccounts(org_id)
}
パラメータ:
  • org_id: string – 組織のメンバーシップ・サービス・プロバイダ(MSP) ID。
戻り値:
  • 成功の場合、指定した組織のすべてのアカウントのリスト。
戻り値の例:
[
    {
        "key": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
        "valueJson": {
            "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
            "AssetType": "oaccount",
            "Balance": 0,
            "BalanceOnHold": 0,
            "OnHoldBurnBalance": 0,
            "BapAccountVersion": 0,
            "OrgId": "appdev",
            "TokenId": "token",
            "TokenName": "fiatmoneytok",
            "TokenType": "fungible",
            "UserId": "idcqa"
        }
    },
    {
        "key": "oaccount~9c650574af9025a6106c8d12a801b079eda9ae2e3399fc2fbd5bd683d738a850",
        "valueJson": {
            "AccountId": "oaccount~9c650574af9025a6106c8d12a801b079eda9ae2e3399fc2fbd5bd683d738a850",
            "AssetType": "oaccount",
            "Balance": 0,
            "BalanceOnHold": 0,
            "OnHoldBurnBalance": 0,
            "BapAccountVersion": 0,
            "OrgId": "appdev",
            "TokenId": "token",
            "TokenName": "fiatmoneytok",
            "TokenType": "fungible",
            "UserId": "example_minter"
        }
    }
]

ロール管理のメソッド

AddRole
このメソッドは、指定されたユーザーおよびトークンにロールを追加します。このメソッドは、チェーンコードのToken Adminまたは指定されたロールも持つ指定された組織のOrg Adminのみがコールできます。
func (t *Controller) AddRole(token_id string, user_role string, org_id string, user_id string) (interface{}, error) {
      account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
      if err != nil {
            return nil, err
      }
      tokenAssetValue, err := t.getTokenObject(token_id)
      if err != nil {
            return nil, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Token.AddRoleMember", "TOKEN", map[string]string{"org_id": org_id, "token_id": token_id, "role": user_role})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Token.AddRoleMember(user_role, account_id, tokenAssetValue.Interface())
}
パラメータ:
  • token_id string – トークンのID。
  • user_role string – 指定したユーザーに追加するロールの名前。mintableおよびburnableの動作は、仕様ファイルのminter_role_nameおよびburner_role_nameプロパティに対応します。同様に、notaryロールは、仕様ファイルのnotary_role_nameプロパティに対応します。
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、アカウント詳細を含むメッセージ。
戻り値の例:
 {"msg":"Successfully added role minter to oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1)"}
RemoveRole
このメソッドは、指定されたユーザーおよびトークンからロールを削除します。このメソッドは、チェーンコードのToken Adminまたは指定されたロールも持つ指定された組織のOrg Adminのみがコールできます。
func (t *Controller) RemoveRole(token_id string, user_role string, org_id string, user_id string) (interface{}, error) {
      account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
      if err != nil {
            return nil, err
      }
      tokenAssetValue, err := t.getTokenObject(token_id)
      if err != nil {
            return nil, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Token.RemoveRoleMember", "TOKEN", map[string]string{"org_id": org_id, "token_id": token_id, "role": user_role})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Token.RemoveRoleMember(user_role, account_id, tokenAssetValue.Interface())
}
パラメータ:
  • token_id string – トークンのID。
  • user_role string – 指定したユーザーから削除するロールの名前。mintableおよびburnableの動作は、仕様ファイルのminter_role_nameおよびburner_role_nameプロパティに対応します。同様に、notaryロールは、仕様ファイルのnotary_role_nameプロパティに対応します。
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、アカウント詳細を含むメッセージ。
戻り値の例:
{"msg":"successfully removed member_id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1) from role minter"}
GetAccountsByRole
このメソッドは、指定されたロールおよびトークンのすべてのアカウントIDのリストを返します。このメソッドは、チェーンコードのToken Adminのみがコールできます。
func (t *Controller) GetAccountsByRole(token_id string, user_role string) (interface{}, error) {
    auth, err:= t.Ctx.Auth.CheckAuthorization("Role.GetAccountsByRole", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
    }
    return t.Ctx.Role.GetAccountsByRole(token_id, user_role)
}
パラメータ:
  • token_id string – トークンのID。
  • user_role string – 検索するロールの名前。
戻り値:
  • 成功の場合、アカウントIDのJSON配列。
戻り値の例:
{
    "accounts": [
        "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4"
    ]
}
GetAccountsByUser
このメソッドは、指定された組織IDとユーザーIDのすべてのアカウントIDのリストを返します。このメソッドは、チェーンコードのToken Admin、指定された組織のOrg Admin、またはパラメータで指定されたAccount Ownerのみがコールできます。
func (t *Controller) GetAccountsByUser(org_id string, user_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccountsByUser", "TOKEN", map[string]string{"org_id": org_id, "user_id": user_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.GetAccountsByUser(org_id, user_id)
}
パラメータ:
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、アカウントIDのJSON配列。
戻り値の例:
{
    "accounts": [
        "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4"
    ]
}
GetUsersByRole
このメソッドは、指定されたロールおよびトークンのすべてのユーザーのリストを返します。このメソッドは、チェーンコードのToken Adminまたはパラメータで指定されたAccount Ownerのみがコールできます。
func (t *Controller) GetUsersByRole(token_id string, user_role string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Role.GetUsersByRole", "TOKEN")
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Role.GetUsersByRole(token_id, user_role)
}
パラメータ:
  • token_id string – トークンのID。
  • user_role string – 検索するロールの名前。
戻り値:
  • 成功の場合、ユーザー・オブジェクト(org_idおよびuser_id)のJSON配列。
戻り値の例:
{"Users":[{"org_id":"Org1MSP","token_id":"digiCurr101","user_id":"user1"}]}
IsInRole
このメソッドは、ユーザーとトークンに指定したロールがあるかどうかを示すブール値を返します。このメソッドは、チェーンコードのToken Admin、指定された組織のOrg AdminまたはアカウントのAccountOwnerのみがコールできます。
func (t *Controller) IsInRole(token_id string, org_id string, user_id string, user_role string) (interface{}, error) {
      tokenAssetValue, err := t.getTokenObject(token_id)
      if err != nil {
            return nil, err
      }
      account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
      if err != nil {
            return nil, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Token.IsInRole", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      result, err := t.Ctx.Token.IsInRole(user_role, account_id, tokenAssetValue.Interface())
      if err != nil {
            return nil, fmt.Errorf("error in IsInRole %s", err.Error())
      }
      response := make(map[string]interface{})
      response["result"] = result
      return response, nil
}
パラメータ:
  • token_id string – トークンのID。
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
  • user_role string – 検索するロールの名前。
戻り値:
  • 成功の場合、ブール値の結果のJSON文字列。
戻り値の例:
{"result":false}
GetOrgAccountsByRole
このメソッドは、指定された組織内の指定されたロールを持つすべてのアカウントに関する情報を返します。このメソッドは、チェーンコードのToken Adminまたは指定された組織のOrg Adminのみがコールできます。
func (t *Controller) GetOrgAccountsByRole(token_id string, user_role string, org_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Role.GetOrgAccountsByRole", "TOKEN", map[string]string{"org_id": org_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Role.GetOrgAccountsByRole(token_id, user_role, org_id)
}
パラメータ:
  • token_id: string – トークンのID。
  • role: string – チェックするロールの名前。
  • org_id: string – 組織のメンバーシップ・サービス・プロバイダ(MSP) ID。
戻り値:
  • 成功の場合、指定した組織内の指定したロールを持つすべてのアカウントのリスト。
戻り値の例:
{
    "accounts": [
        "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
         "oaccount~9c650574af9025a6106c8d12a801b079eda9ae2e3399fc2fbd5bd683d738a850"
    ]
}
GetOrgUsersByRole
このメソッドは、指定された組織内の指定されたロールを持つすべてのユーザーに関する情報を返します。このメソッドは、チェーンコードのToken Adminまたは指定された組織のOrg Adminのみがコールできます。
func (t *Controller) GetOrgUsersByRole(token_id string, user_role string, org_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Role.GetOrgUsersByRole", "TOKEN", map[string]string{"org_id": org_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Role.GetOrgUsersByRole(token_id, user_role, org_id)
}
パラメータ:
  • token_id: string – トークンのID。
  • role: string – チェックするロールの名前。
  • org_id: string – 組織のメンバーシップ・サービス・プロバイダ(MSP) ID。
戻り値:
  • 成功の場合、指定した組織内の指定したロールを持つすべてのユーザーのリスト。
戻り値の例:
{
    "Users": [
        {
            "org_id": "Org1MSP",
            "token_id": "token",
            "user_id": "admin"
        },
        {
            "org_id": "Org1MSP",
            "token_id": "token",
            "user_id": "orgAdmin"
        }
    ]
}
AddRole
このメソッドは、指定されたユーザーおよびトークンにロールを追加します。このメソッドは、チェーンコードのToken Adminまたは指定されたロールも持つ指定された組織のOrg Adminのみがコールできます。
func (t *Controller) AddRole(token_id string, user_role string, org_id string, user_id string) (interface{}, error) {
      account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
      if err != nil {
            return nil, err
      }
      tokenAssetValue, err := t.getTokenObject(token_id)
      if err != nil {
            return nil, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Token.AddRoleMember", "TOKEN", map[string]string{"org_id": org_id, "token_id": token_id, "role": user_role})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Token.AddRoleMember(user_role, account_id, tokenAssetValue.Interface())
}
パラメータ:
  • token_id string – トークンのID。
  • user_role string – 指定したユーザーに追加するロールの名前。mintableおよびburnableの動作は、仕様ファイルのminter_role_nameおよびburner_role_nameプロパティに対応します。同様に、notaryロールは、仕様ファイルのnotary_role_nameプロパティに対応します。
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、アカウント詳細を含むメッセージ。
戻り値の例:
 {"msg":"Successfully added role minter to oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1)"}
RemoveRole
このメソッドは、指定されたユーザーおよびトークンからロールを削除します。このメソッドは、チェーンコードのToken Adminまたは指定されたロールも持つ指定された組織のOrg Adminのみがコールできます。
func (t *Controller) RemoveRole(token_id string, user_role string, org_id string, user_id string) (interface{}, error) {
      account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
      if err != nil {
            return nil, err
      }
      tokenAssetValue, err := t.getTokenObject(token_id)
      if err != nil {
            return nil, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Token.RemoveRoleMember", "TOKEN", map[string]string{"org_id": org_id, "token_id": token_id, "role": user_role})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Token.RemoveRoleMember(user_role, account_id, tokenAssetValue.Interface())
}
パラメータ:
  • token_id string – トークンのID。
  • user_role string – 指定したユーザーから削除するロールの名前。mintableおよびburnableの動作は、仕様ファイルのminter_role_nameおよびburner_role_nameプロパティに対応します。同様に、notaryロールは、仕様ファイルのnotary_role_nameプロパティに対応します。
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、アカウント詳細を含むメッセージ。
戻り値の例:
{"msg":"successfully removed member_id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1) from role minter"}
GetAccountsByRole
このメソッドは、指定されたロールおよびトークンのすべてのアカウントIDのリストを返します。このメソッドは、Token AdminまたはToken Auditorのみがコールできます。
func (t *Controller) GetAccountsByRole(token_id string, user_role string) (interface{}, error) {
    auth, err:= t.Ctx.Auth.CheckAuthorization("Role.GetAccountsByRole", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
    }
    return t.Ctx.Role.GetAccountsByRole(token_id, user_role)
}
パラメータ:
  • token_id string – トークンのID。
  • user_role string – 検索するロールの名前。
戻り値:
  • 成功の場合、アカウントIDのJSON配列。
戻り値の例:
{
    "accounts": [
        "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4"
    ]
}
GetAccountsByUser
このメソッドは、指定された組織IDとユーザーIDのすべてのアカウントIDのリストを返します。このメソッドは、指定された組織のToken AdminToken AuditorOrg AdminまたはOrg Auditor、またはパラメータで指定されたAccount Ownerのみがコールできます。
func (t *Controller) GetAccountsByUser(org_id string, user_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccountsByUser", "TOKEN", map[string]string{"org_id": org_id, "user_id": user_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.GetAccountsByUser(org_id, user_id)
}
パラメータ:
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、アカウントIDのJSON配列。
戻り値の例:
{
    "accounts": [
        "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4"
    ]
}
GetUsersByRole
このメソッドは、指定されたロールおよびトークンのすべてのユーザーのリストを返します。このメソッドは、Token AdminまたはToken Auditorのみがコールできます。
func (t *Controller) GetUsersByRole(token_id string, user_role string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Role.GetUsersByRole", "TOKEN")
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Role.GetUsersByRole(token_id, user_role)
}
パラメータ:
  • token_id string – トークンのID。
  • user_role string – 検索するロールの名前。
戻り値:
  • 成功の場合、ユーザー・オブジェクト(org_idおよびuser_id)のJSON配列。
戻り値の例:
{"Users":[{"org_id":"Org1MSP","token_id":"digiCurr101","user_id":"user1"}]}
IsInRole
このメソッドは、ユーザーとトークンに指定したロールがあるかどうかを示すブール値を返します。このメソッドは、Token AdminまたはToken Auditor、指定された組織のOrg AdminまたはOrg Auditor、または指定されたアカウント所有者によってのみコールできます。
func (t *Controller) IsInRole(token_id string, org_id string, user_id string, user_role string) (interface{}, error) {
      tokenAssetValue, err := t.getTokenObject(token_id)
      if err != nil {
            return nil, err
      }
      account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
      if err != nil {
            return nil, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Token.IsInRole", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      result, err := t.Ctx.Token.IsInRole(user_role, account_id, tokenAssetValue.Interface())
      if err != nil {
            return nil, fmt.Errorf("error in IsInRole %s", err.Error())
      }
      response := make(map[string]interface{})
      response["result"] = result
      return response, nil
}
パラメータ:
  • token_id string – トークンのID。
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
  • user_role string – 検索するロールの名前。
戻り値:
  • 成功の場合、ブール値の結果のJSON文字列。
戻り値の例:
{"result":false}
GetOrgAccountsByRole
このメソッドは、指定された組織内の指定されたロールを持つすべてのアカウントに関する情報を返します。このメソッドは、Token AdminToken AuditorOrg AdminまたはOrg Auditorのみがコールできます。
func (t *Controller) GetOrgAccountsByRole(token_id string, user_role string, org_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Role.GetOrgAccountsByRole", "TOKEN", map[string]string{"org_id": org_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Role.GetOrgAccountsByRole(token_id, user_role, org_id)
}
パラメータ:
  • token_id: string – トークンのID。
  • role: string – チェックするロールの名前。
  • org_id: string – 組織のメンバーシップ・サービス・プロバイダ(MSP) ID。
戻り値:
  • 成功の場合、指定した組織内の指定したロールを持つすべてのアカウントのリスト。
戻り値の例:
{
    "accounts": [
        "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
         "oaccount~9c650574af9025a6106c8d12a801b079eda9ae2e3399fc2fbd5bd683d738a850"
    ]
}
GetOrgUsersByRole
このメソッドは、指定された組織内の指定されたロールを持つすべてのユーザーに関する情報を返します。このメソッドは、Token AdminまたはToken Auditor、あるいは指定された組織のOrg AdminまたはOrg Auditorによってのみコールできます。
func (t *Controller) GetOrgUsersByRole(token_id string, user_role string, org_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Role.GetOrgUsersByRole", "TOKEN", map[string]string{"org_id": org_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Role.GetOrgUsersByRole(token_id, user_role, org_id)
}
パラメータ:
  • token_id: string – トークンのID。
  • role: string – チェックするロールの名前。
  • org_id: string – 組織のメンバーシップ・サービス・プロバイダ(MSP) ID。
戻り値:
  • 成功の場合、指定した組織内の指定したロールを持つすべてのユーザーのリスト。
戻り値の例:
{
    "Users": [
        {
            "org_id": "Org1MSP",
            "token_id": "token",
            "user_id": "admin"
        },
        {
            "org_id": "Org1MSP",
            "token_id": "token",
            "user_id": "orgAdmin"
        }
    ]
}

トランザクション履歴管理のメソッド

GetAccountTransactionHistory
このメソッドは、指定されたユーザーおよびトークンのアカウント・トランザクション履歴詳細の配列を返します。このメソッドは、チェーンコードのToken Admin、指定された組織のOrg AdminまたはアカウントのAccountOwnerのみがコールできます。
func (t *Controller) GetAccountTransactionHistory(token_id string, org_id string, user_id string) (interface{}, error) {
      account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
      if err != nil {
            return nil, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccountTransactionHistory", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }

      transactionArray, err := t.Ctx.Account.GetAccountTransactionHistory(account_id, org_id, user_id)
      return transactionArray, err
}
パラメータ:
  • token_id string – トークンのID。
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、次のプロパティを含むJSONアカウント・トランザクション・オブジェクトの配列:
  • balance – アカウント残高。
  • holding_id – 保留アカウントのID。
  • onhold_balance – 保留残高。
  • timestamp – トランザクションの時間。
  • token_id – トークンのID。
  • transacted_account – トランザクションが発生したアカウント。
  • transacted_amount – トランザクションの金額。
  • transaction_id – トランザクションのID。
  • transaction_type – トランザクションのタイプ。
戻り値の例:
[{
    "balance": 199,
    "onhold_balance": 0,
    "timestamp": "2021-08-16T17:42:32.905+05:30",
    "token_id": "digiCurr101",
    "transacted_account": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
    "transacted_amount": 1,
    "transaction_id": "otransaction~c8a9fa001aba6e0d8391b034655889df47eb5103713840b999a4ab41f5e57b38",
    "transaction_type": "DEBIT"
}, {
    "balance": 200,
    "onhold_balance": 0,
    "timestamp": "2021-08-16T17:41:59.262+05:30",
    "token_id": "digiCurr101",
    "transacted_account": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
    "transacted_amount": 100,
    "transaction_id": "otransaction~65a0bf8ae8108baa7495fbab91c205651c055e9f480f6808753287173026aa69",
    "transaction_type": "MINT"
}]
GetAccountTransactionHistoryWithFilters
このメソッドは、指定されたユーザーおよびトークンのアカウント・トランザクション履歴詳細の配列を返します。このメソッドは、チェーンコードのToken Admin、指定された組織のOrg AdminまたはアカウントのAccountOwnerのみがコールできます。このメソッドは、リモートOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
func (t *Controller) GetAccountTransactionHistoryWithFilters(token_id string, org_id string, user_id string, filters ...account.AccountHistoryFilters) (interface{}, error) {
      account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
      if err != nil {
            return nil, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccountTransactionHistoryWithFilters", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }

      // sample format of filter: []string{"3", "", "2022-01-16T15:16:36+00:00", "2022-01-17T15:16:36+00:00"}
      transactionArray, err := t.Ctx.Account.GetAccountTransactionHistoryWithFilters(account_id, org_id, user_id, filters...)
      return transactionArray, err
}
パラメータ:
  • token_id string – トークンのID。
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
  • filters: string – オプション・パラメータ。空の場合は、すべてのレコードが返されます。PageSizeプロパティは、返すレコード数を決定します。PageSizeが0の場合、デフォルトのページ・サイズは20です。Bookmarkプロパティは、返されるレコードの開始索引を決定します。詳細は、Hyperledger Fabricのドキュメントを参照してください。StartTimeおよびEndTimeプロパティは、RFC-3339形式で指定する必要があります。
次に例を示します:

ochain invoke GetAccountTransactionHistoryWithFilters 'token1' 'appbuilder12' 'user_minter' '{"PageSize":10,"Bookmark":"1","StartTime":"2022-01-25T17:41:42Z","EndTime":"2022-01-25T17:59:10Z"}'

[
  {
    "transaction_id": "otransaction~3f9c306b0ef6994885939c1a6eb5f063b06617ecb932d4a043f323ba53d55f9f",
    "transacted_amount": 200,
    "timestamp": "2022-02-15T18:27:13.000Z",
    "token_id": "token1",
    "transacted_account": "oaccount~obptok~26e046c8ba8b98da2cdabb78113d67200581ea3d4eea5aa324
1abd3598e05d05",
    "transaction_type": "DEBIT",
    "balance": 9200,
    "onhold_balance": 0
  },
  {
    "transaction_id": "otransaction~f1d37c3abd5c85c0a399f246d8eb68257c49ab4fe4cdfd3501908583c51c421e",
    "transacted_amount": 200,
    "timestamp": "2022-02-15T18:27:02.000Z",
    "token_id": "token1",
    "transaction_type": "BULKTRANSFER",
    "number_of_sub_transactions": 2,
    "balance": 9600,
    "onhold_balance": 0
  },
  {
    "transaction_id": "otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b",
    "transacted_amount": 200,
    "timestamp": "2022-02-15T18:26:57.000Z",
    "token_id": "token1",
    "transaction_type": "BULKTRANSFER",
    "number_of_sub_transactions": 2,
    "balance": 9800,
    "onhold_balance": 0
  },
  {
    "transaction_id": "otransaction~07331a1f7be99d6750973674a783da9ec9ca17df23747cdf52d388865d93f9a",
    "transacted_amount": 10000,
    "timestamp": "2022-02-15T18:26:30.000Z",
    "token_id": "token1",
    "transacted_account": "oaccount~obptok~88b62f329f20fffc6fc9231cb51019a5e9550c78b657123d140897
62397d2b55",
    "transaction_type": "MINT",
    "balance": 10000,
    "onhold_balance": 0
  }
]
GetSubTransactionsById
このメソッドは、指定されたトランザクションのサブトランザクション履歴詳細の配列を返します。
func (t *Controller) GetSubTransactionsById(transaction_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetSubTransactionsById", "TOKEN", map[string]string{"transaction_id": transaction_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.GetSubTransactionsById(transaction_id)
}
パラメータ:
  • transaction_id string – トランザクションのID。
次に例を示します:

ochain invoke GetAccountSubTransactionHistory 'otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b'

[
  {
    "transaction_id": "otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b~c4ca4238a0b923820dcc509a6f75849b",
    "transacted_amount": 100,
    "timestamp": "2022-02-15T18:26:57.000Z",
    "token_id": "token1",
    "transacted_account": "oaccount~obptok~6600eb38d365552b76f41d4186acece104f31eae331a440f963e6fa75b62ff21",
    "transaction_type": "DEBIT",
    "balance": 9900,
    "onhold_balance": 0
  },
  {
    "transaction_id": "otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b~c81e728d9d4c2f636f067f89cc14862c",
    "transacted_amount": 100,
    "timestamp": "2022-02-15T18:26:57.000Z",
    "token_id": "token1",
    "transacted_account": "oaccount~obptok~26e046c8ba8b98da2cdabb78113d67200581ea3d4eea5aa3241abd3598e05d05",
    "transaction_type": "DEBIT",
    "balance": 9800,
    "onhold_balance": 0
  }
]
GetSubTransactionsByIdWithFilters
このメソッドは、指定されたトランザクションのサブトランザクション履歴詳細の配列を返します。
func (t *Controller) GetSubTransactionsByIdWithFilters(transaction_id string, filters ...account.SubTransactionFilters) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetSubTransactionsByIdWithFilters", "TOKEN", map[string]string{"transaction_id": transaction_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.GetSubTransactionsByIdWithFilters(transaction_id, filters...)
}
パラメータ:
  • transaction_id string – トランザクションのID。
  • filters: string – オプション・パラメータ。空の場合は、すべてのレコードが返されます。PageSizeプロパティは、返すレコード数を決定します。PageSizeが0の場合、デフォルトのページ・サイズは20です。Bookmarkプロパティは、返されるレコードの開始索引を決定します。詳細は、Hyperledger Fabricのドキュメントを参照してください。StartTimeおよびEndTimeプロパティは、RFC-3339形式で指定する必要があります。
次に例を示します:

ochain invoke GetAccountSubTransactionHistoryWithFilters 'otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b' '{"PageSize":10,"Bookmark":"1"}'

[
{
"transaction_id": "otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b~c4ca4238a0b923820dcc509a6f75849b",
"transacted_amount": 100,
"timestamp": "2022-02-15T18:26:57.000Z",
"token_id": "token1",
"transacted_account": "oaccount~obptok~6600eb38d365552b76f41d4186acece104f31eae331a440f963e6fa75b62ff21",
"transaction_type": "DEBIT",
"balance": 9900,
"onhold_balance": 0
},
{
"transaction_id": "otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b~c81e728d9d4c2f636f067f89cc14862c",
"transacted_amount": 100,
"timestamp": "2022-02-15T18:26:57.000Z",
"token_id": "token1",
"transacted_account": "oaccount~obptok~26e046c8ba8b98da2cdabb78113d67200581ea3d4eea5aa3241abd3598e05d05",
"transaction_type": "DEBIT",
"balance": 9800,
"onhold_balance": 0
}
]
GetTransactionById
このメソッドは、Transactionアセットの履歴を返します。
func (t *Controller) GetTransactionById(transaction_id string) (interface{}, error) {
    return t.Ctx.Transaction.GetTransactionById(transaction_id)
}
パラメータ:
  • transaction_id string– トランザクション・アセットのID。
戻り値:
  • 成功の場合、トランザクションの履歴のJSON配列。
戻り値の例:
{
    "history": [
        {
            "IsDelete": "false",
            "Timestamp": "2021-08-16 20:19:05.028 +0530 IST",
            "TxId": "67042154a6853011d111b13f73943f06d2a6ae3cfb9a84cb104482c359eb2220",
            "Value": {
                "Amount": 3,
                "AssetType": "otransaction",
                "FromAccountId": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
                "HoldingId": "ohold~digicur~digiCurr101~op2",
                "NumberOfSubTransactions": 0,
                "Timestamp": "2021-08-16T20:19:05+05:30",
                "ToAccountId": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
                "TokenId": "digiCurr101",
                "TransactionId": "otransaction~67042154a6853011d111b13f73943f06d2a6ae3cfb9a84cb104482c359eb2220",
                "TransactionType": "RELEASEHOLD"
            }
        }
    ],
    "transaction_id": "otransaction~67042154a6853011d111b13f73943f06d2a6ae3cfb9a84cb104482c359eb2220"
}
DeleteHistoricalTransactions
このメソッドは、状態データベースから古いトランザクションを削除します。
func (t *Controller) DeleteHistoricalTransactions(timestamp string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Transaction.DeleteHistoricalTransactions", "TOKEN")
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Transaction.DeleteHistoricalTransactions(timestamp)
}
パラメータ:
  • timestamp string – トランザクションを削除するタイミングを示すタイムスタンプ。指定した時間より古いトランザクション・アセットが削除されます。
GetAccountTransactionHistoryWithFiltersFromRichHistDB
func (t *Controller) GetAccountTransactionHistoryWithFiltersFromRichHistDB(token_id string, org_id string, user_id string, custom_endPoint string, bearer_token string, filters ...account.AccountHistoryFilters) (interface{}, error) {
account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
if err != nil {
return nil, err
}
auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccountTransactionHistoryWithFilters", "TOKEN", map[string]string{"account_id": account_id})
if err != nil && !auth {
return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
}
// sample format of filter: []string{"3", "", "2022-01-16T15:16:36+00:00", "2022-01-17T15:16:36+00:00"}
transactionArray, err := t.Ctx.Account.GetAccountTransactionHistoryWithFiltersFromRichHistDB(account_id, org_id, user_id, custom_endPoint, bearer_token, filters...)
return transactionArray, err
}
パラメータ:
  • token_id: string – ミントするトークンのID。
  • org_id: string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id: string – ユーザーのユーザー名または電子メールID。
  • custom_endpoint– リッチ履歴データベースのRESTfulサービス・エンドポイント。
  • bearer_token– RESTfulサービス・エンドポイントのアクセス認可トークン。
  • filters: string – オプション・パラメータ。空の場合は、すべてのレコードが返されます。PageSizeプロパティは、返すレコード数を決定します。PageSizeが0の場合、デフォルトのページ・サイズは20です。Bookmarkプロパティは、返されるレコードの開始索引を決定します。詳細は、Hyperledger Fabricのドキュメントを参照してください。StartTimeおよびEndTimeプロパティは、RFC-3339形式で指定する必要があります。
GetAccountTransactionHistory
このメソッドは、指定されたユーザーおよびトークンのアカウント・トランザクション履歴詳細の配列を返します。このメソッドは、指定された組織のToken AdminまたはToken AuditorOrg AdminまたはOrg Auditor、または指定されたアカウント所有者によってのみコールできます。
func (t *Controller) GetAccountTransactionHistory(token_id string, org_id string, user_id string) (interface{}, error) {
account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
if err != nil {
return nil, err
}
auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccountTransactionHistory", "TOKEN", map[string]string{"account_id": account_id})
if err != nil && !auth {
return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
}



transactionArray, err := t.Ctx.Account.GetAccountTransactionHistory(account_id, org_id, user_id)
return transactionArray, err
}
パラメータ:
  • token_id: string – トークンのID。
  • org_id: string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id: string – ユーザーのユーザー名または電子メールID。
戻り値の例:
[
            {
                "transaction_id": "otransaction~64c5a4830949eae1424600f3d4a438c6f603a7c3ea31a68e374b899803999e22",
                "transacted_amount": 10,
                "timestamp": "2024-12-11T13:37:28.000Z",
                "balance": 550,
                "onhold_balance": 10,
                "token_id": "USD",
                "category": "category value",
                "description": "description value",
                "transacted_account": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0",
                "transaction_type": "REJECT_MINT",
                "transacted_org_id": "CB",
                "transacted_user_id'": "creator_user_cb"
            },
            {
                "transaction_id": "otransaction~a4537ef34a955b023b7c205b9abf06a6c79e4fdd761fb24f41b8eb34126b66c0",
                "transacted_amount": 10,
                "timestamp": "2024-12-11T13:36:32.000Z",
                "balance": 550,
                "onhold_balance": 10,
                "token_id": "USD",
                "description": "description value",
                "transacted_account": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0",
                "transaction_type": "APPROVE_MINT",
                "transacted_org_id": "CB",
                "transacted_user_id'": "creator_user_cb"
            },
            {
                "transaction_id": "otransaction~6237a759422bd9fb112742e8cd7e6450df5a74a32236d9b1005571afed8904a4",
                "transacted_amount": 10,
                "timestamp": "2024-12-11T13:36:18.000Z",
                "balance": 540,
                "onhold_balance": 10,
                "token_id": "USD",
                "category": "category value",
                "description": "description value",
                "transacted_account": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0",
                "transaction_type": "REQUEST_MINT",
                "transacted_org_id": "CB",
                "transacted_user_id'": "creator_user_cb"
            },
            {
                "transaction_id": "otransaction~06b35071415d74aa1a7c18449149c937d886cae76a832c44cf8d98e84586e76e",
                "transacted_amount": 10,
                "timestamp": "2024-12-11T13:35:46.000Z",
                "balance": 540,
                "onhold_balance": 10,
                "token_id": "USD",
                "category": "category value",
                "description": "description value",
                "transacted_account": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0",
                "transaction_type": "REQUEST_MINT",
                "transacted_org_id": "CB",
                "transacted_user_id'": "creator_user_cb"
            }
 ]
GetAccountTransactionHistoryWithFilters
このメソッドは、指定されたユーザーおよびトークンのアカウント・トランザクション履歴詳細のフィルタされた配列を返します。このメソッドは、指定された組織のToken AdminまたはToken AuditorOrg AdminまたはOrg Auditor、または指定されたアカウント所有者によってのみコールできます。
func (t *Controller) GetAccountTransactionHistoryWithFilters(token_id string, filters ...account.AccountHistoryFilters) (interface{}, error) {
org_id, err := t.Ctx.Model.GetTransientMapKeyAsString(constants.OrgIdCC)
if err != nil {
return nil, err
}
user_id, err := t.Ctx.Model.GetTransientMapKeyAsString(constants.UserIdCC)
if err != nil {
return nil, err
}
account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
if err != nil {
return nil, err
}
auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccountTransactionHistoryWithFilters", "TOKEN", map[string]string{"account_id": account_id})
if err != nil && !auth {
return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
}



// sample format of filter: []string{"3", "", "2022-01-16T15:16:36+00:00", "2022-01-17T15:16:36+00:00"}
transactionArray, err := t.Ctx.Account.GetReconciledTransactionHistory(account_id, org_id, user_id, filters...)
return transactionArray, err
}
パラメータ:
  • token_id: string – トークンのID。
  • org_id: string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id: string – ユーザーのユーザー名または電子メールID。
  • filters: string – オプション・パラメータ。空の場合は、すべてのレコードが返されます。PageSizeプロパティは、返すレコード数を決定します。PageSizeが0の場合、デフォルトのページ・サイズは20です。Bookmarkプロパティは、返されるレコードの開始索引を決定します。詳細は、Hyperledger Fabricのドキュメントを参照してください。StartTimeおよびEndTimeプロパティは、RFC-3339形式で指定する必要があります。
戻り値の例:
[
            {
                "transaction_id": "otransaction~64c5a4830949eae1424600f3d4a438c6f603a7c3ea31a68e374b899803999e22",
                "transacted_amount": 10,
                "timestamp": "2024-12-11T13:37:28.000Z",
                "balance": 550,
                "onhold_balance": 10,
                "token_id": "USD",
                "category": "category value",
                "description": "description value",
                "transacted_account": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0",
                "transaction_type": "REJECT_MINT",
                "transacted_org_id": "CB",
                "transacted_user_id'": "creator_user_cb"
            },
            {
                "transaction_id": "otransaction~a4537ef34a955b023b7c205b9abf06a6c79e4fdd761fb24f41b8eb34126b66c0",
                "transacted_amount": 10,
                "timestamp": "2024-12-11T13:36:32.000Z",
                "balance": 550,
                "onhold_balance": 10,
                "token_id": "USD",
                "description": "description value",
                "transacted_account": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0",
                "transaction_type": "APPROVE_MINT",
                "transacted_org_id": "CB",
                "transacted_user_id'": "creator_user_cb"
            },
            {
                "transaction_id": "otransaction~6237a759422bd9fb112742e8cd7e6450df5a74a32236d9b1005571afed8904a4",
                "transacted_amount": 10,
                "timestamp": "2024-12-11T13:36:18.000Z",
                "balance": 540,
                "onhold_balance": 10,
                "token_id": "USD",
                "category": "category value",
                "description": "description value",
                "transacted_account": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0",
                "transaction_type": "REQUEST_MINT",
                "transacted_org_id": "CB",
                "transacted_user_id'": "creator_user_cb"
            },
            {
                "transaction_id": "otransaction~06b35071415d74aa1a7c18449149c937d886cae76a832c44cf8d98e84586e76e",
                "transacted_amount": 10,
                "timestamp": "2024-12-11T13:35:46.000Z",
                "balance": 540,
                "onhold_balance": 10,
                "token_id": "USD",
                "category": "category value",
                "description": "description value",
                "transacted_account": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0",
                "transaction_type": "REQUEST_MINT",
                "transacted_org_id": "CB",
                "transacted_user_id'": "creator_user_cb"
            }
 ]
GetSubTransactionsById
このメソッドは、指定されたトランザクションのサブトランザクション履歴詳細の配列を返します。このメソッドは、トランザクションをコールしたToken AdminToken AuditorまたはAccountOwnerによってのみコールできます。
func (t *Controller) GetSubTransactionsById(transaction_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetSubTransactionsById", "TOKEN", map[string]string{"transaction_id": transaction_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.GetSubTransactionsById(transaction_id)
}
パラメータ:
  • transaction_id string – トランザクションのID。
次に例を示します:

ochain invoke GetAccountSubTransactionHistory 'otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b'

[
  {
    "transaction_id": "otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b~c4ca4238a0b923820dcc509a6f75849b",
    "transacted_amount": 100,
    "timestamp": "2022-02-15T18:26:57.000Z",
    "token_id": "token1",
    "transacted_account": "oaccount~obptok~6600eb38d365552b76f41d4186acece104f31eae331a440f963e6fa75b62ff21",
    "transaction_type": "DEBIT",
    "balance": 9900,
    "onhold_balance": 0
  },
  {
    "transaction_id": "otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b~c81e728d9d4c2f636f067f89cc14862c",
    "transacted_amount": 100,
    "timestamp": "2022-02-15T18:26:57.000Z",
    "token_id": "token1",
    "transacted_account": "oaccount~obptok~26e046c8ba8b98da2cdabb78113d67200581ea3d4eea5aa3241abd3598e05d05",
    "transaction_type": "DEBIT",
    "balance": 9800,
    "onhold_balance": 0
  }
]
GetSubTransactionsByIdWithFilters
このメソッドは、指定されたトランザクションのサブトランザクション履歴詳細の配列を返します。
func (t *Controller) GetSubTransactionsByIdWithFilters(transaction_id string, filters ...account.SubTransactionFilters) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetSubTransactionsByIdWithFilters", "TOKEN", map[string]string{"transaction_id": transaction_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.GetSubTransactionsByIdWithFilters(transaction_id, filters...)
}
パラメータ:
  • transaction_id string – トランザクションのID。
  • filters: string – オプション・パラメータ。空の場合は、すべてのレコードが返されます。PageSizeプロパティは、返すレコード数を決定します。PageSizeが0の場合、デフォルトのページ・サイズは20です。Bookmarkプロパティは、返されるレコードの開始索引を決定します。詳細は、Hyperledger Fabricのドキュメントを参照してください。StartTimeおよびEndTimeプロパティは、RFC-3339形式で指定する必要があります。
次に例を示します:

ochain invoke GetAccountSubTransactionHistoryWithFilters 'otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b' '{"PageSize":10,"Bookmark":"1"}'

[
{
"transaction_id": "otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b~c4ca4238a0b923820dcc509a6f75849b",
"transacted_amount": 100,
"timestamp": "2022-02-15T18:26:57.000Z",
"token_id": "token1",
"transacted_account": "oaccount~obptok~6600eb38d365552b76f41d4186acece104f31eae331a440f963e6fa75b62ff21",
"transaction_type": "DEBIT",
"balance": 9900,
"onhold_balance": 0
},
{
"transaction_id": "otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b~c81e728d9d4c2f636f067f89cc14862c",
"transacted_amount": 100,
"timestamp": "2022-02-15T18:26:57.000Z",
"token_id": "token1",
"transacted_account": "oaccount~obptok~26e046c8ba8b98da2cdabb78113d67200581ea3d4eea5aa3241abd3598e05d05",
"transaction_type": "DEBIT",
"balance": 9800,
"onhold_balance": 0
}
]
GetTransactionById
このメソッドは、Transactionアセットの履歴を返します。このメソッドは、指定された組織のToken AdminまたはToken AuditorOrg AdminまたはOrg Auditor、またはトランザクション参加者(送信者、受信者、公証人)によってのみコールできます。
func (t *Controller) GetTransactionById(transaction_id string) (interface{}, error) {
    return t.Ctx.Transaction.GetTransactionById(transaction_id)
}
パラメータ:
  • transaction_id string– トランザクション・アセットのID。
戻り値:
  • 成功の場合、トランザクションの履歴のJSON配列。
戻り値の例:
{
    "history": [
        {
            "IsDelete": "false",
            "Timestamp": "2021-08-16 20:19:05.028 +0530 IST",
            "TxId": "67042154a6853011d111b13f73943f06d2a6ae3cfb9a84cb104482c359eb2220",
            "Value": {
                "Amount": 3,
                "AssetType": "otransaction",
                "FromAccountId": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
                "HoldingId": "ohold~digicur~digiCurr101~op2",
                "NumberOfSubTransactions": 0,
                "Timestamp": "2021-08-16T20:19:05+05:30",
                "ToAccountId": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
                "TokenId": "digiCurr101",
                "TransactionId": "otransaction~67042154a6853011d111b13f73943f06d2a6ae3cfb9a84cb104482c359eb2220",
                "TransactionType": "RELEASEHOLD"
            }
        }
    ],
    "transaction_id": "otransaction~67042154a6853011d111b13f73943f06d2a6ae3cfb9a84cb104482c359eb2220"
}
DeleteHistoricalTransactions
このメソッドは、状態データベースから古いトランザクションを削除します。
func (t *Controller) DeleteHistoricalTransactions(timestamp string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Transaction.DeleteHistoricalTransactions", "TOKEN")
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Transaction.DeleteHistoricalTransactions(timestamp)
}
パラメータ:
  • timestamp string – トランザクションを削除するタイミングを示すタイムスタンプ。指定した時間より古いトランザクション・アセットが削除されます。

トークン動作管理のメソッド- ミント可能動作

IssueTokens
このメソッドはトークンをミントし、その後、メソッドのコール元がそれらのトークンを所有します。コール元には、アカウントとミンターのロールが必要です。ミント可能なトークンの数は、仕様ファイルのmintable動作のmax_mint_quantityプロパティによって制限されます。max_mint_quantityプロパティを指定しない場合、無制限の数のトークンをミントできます。数量は、仕様ファイルのdivisible動作のdecimalパラメータで指定された10進数値内にする必要があります。このメソッドは、ミンター・ロールを持つアカウントのAccountOwnerのみがコールできます。
func (t *Controller) IssueTokens(token_id string, quantity float64) (interface{}, error) {
    tokenAssetValue, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    return t.Ctx.Token.Mint(quantity, tokenAssetValue.Interface())
}
パラメータ:
  • token_id string – トークンのID。
  • quantity float64 – ミントするトークンの数。
戻り値:
  • 成功の場合、アカウント詳細を含むメッセージ。
戻り値の例:
{"msg":"Successfully minted 100 tokens to account oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1)"}
GetTotalMintedTokens
このメソッドは、指定されたトークンのミントされたトークンの合計数を返します。このメソッドは、チェーンコードのToken AdminまたはOrg Adminのみがコールできます。
func (t *Controller) GetTotalMintedTokens(token_id string) (interface{}, error) {
    tokenAssetValue, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.GetTotalMintedTokens", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
    }
    return t.Ctx.Token.GetTotalMintedTokens(tokenAssetValue.Interface())
}
パラメータ:
  • token_id string – トークンのID。
戻り値:
  • 成功の場合、トークンの合計数を示すJSON文字列。
戻り値の例:
{"msg":"total minted amount for token with id digiCurr101 is 1000","quantity":1000}
GetNetTokens
このメソッドは、指定されたトークンに対してシステムで使用可能なトークンの合計正味数を返します。正味トークン合計は、トークンのバーン後に残っているトークンの量です。等式では、正味トークン = ミントされたトークンの合計 - バーンされたトークンの合計です。トークンがバーンされていない場合、正味トークン数は、ミントされたトークンの合計と等しくなります。このメソッドは、チェーンコードのToken AdminまたはOrg Adminのみがコールできます。
func (t *Controller) GetNetTokens(token_id string) (interface{}, error) {
    tokenAssetValue, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.GetNetTokens", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
    }
    return t.Ctx.Token.GetNetTokens(tokenAssetValue.Interface())
}
パラメータ:
  • token_id string – トークンのID。
戻り値:
  • 成功の場合、トークンの正味数を示すJSON文字列。
戻り値の例:
{"msg":"net minted amount for token with id digiCurr101 is 1000","quantity":1000}
RequestMint
このメソッドは、指定された量のトークンを作成するために、ミニター公証書にリクエストを送信するためにミニターから呼び出すことができます。
func (t *Controller) RequestMint(token_id string, operation_id string, notary_org_id string, notary_user_id string, quantity float64, timeToExpiration string, info_details ...token.InfoDetails) (interface{}, error) {
tokenAssetValue, err := t.getTokenObject(token_id)
if err != nil {
return nil, err
}
notary_account_id, err := t.Ctx.Account.GenerateAccountId(token_id, notary_org_id, notary_user_id)
if err != nil {
return nil, fmt.Errorf("error in getting notary account id from org_id: %s and user_id: %s with token_id: %s, error %s ", notary_org_id, notary_user_id, token_id, err.Error())
 }
return t.Ctx.Token.Hold(operation_id, "", notary_account_id, quantity, timeToExpiration, tokenAssetValue.Interface(), constants.HoldMint, info_details...)
}
パラメータ:
  • token_id: string – ミントするトークンのID。
  • operation_id: string– ミント・リクエストを表す一意の操作ID。
  • notary_org_id: string– リクエストを処理するミニター公証人のメンバーシップ・サービス・プロバイダ(MSP) ID。
  • notary_user_id: string– リクエストを処理する通知書のユーザー名または電子メールID。
  • quantity: number– ミントするトークンの量。
  • TimeToExpiration– ミント・リクエストが期限切れになり、有効でなくなるまでの時間。
  • info_details: JSON– リクエストのカテゴリ(category)および説明(description)を指定するオブジェクト。

    Visual Studio CodeとCLIまたはPostmanコレクションを使用している場合は、info_detailsパラメータを別の形式で指定します。

    Visual Studioコード: { "category": "category value", "description": "description value" }

    CLI /ポストマン: "{\"category\":\"category value\",\"description\":\"description value\"}"

戻り値の例:
{
msg:
"AccountId oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (org_id: Org1MSP, user_id: admin) has successfully submitted request to mint 100 tokens",
}
ApproveMint
このメソッドは、ミント・リクエストを承認するためにミニター公証人によってコールできます。
func (t *Controller) ApproveMint(token_id string, operation_id string) (interface{}, error) {
tokenAssetValue, err := t.getTokenObject(token_id)
if err != nil {
return nil, err
}
return t.Ctx.Token.ExecuteHold(operation_id, tokenAssetValue.Interface())
}
パラメータ:
  • token_id: string – ミントするトークンのID。
  • operation_id: string– ミント・リクエストを表す一意の操作ID。
戻り値の例:
{
msg:
"Successfully minted 100 tokens to Account Id: oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (org_id: Org1MSP, user_id: admin)"
}
RejectMint
このメソッドは、ミント・リクエストを拒否するためにミニター公証人によってコールできます。
func (t *Controller) RejectMint(token_id string, operation_id string) (interface{}, error) {
tokenAssetValue, err := t.getTokenObject(token_id)
if err != nil {
return nil, err
}
return t.Ctx.Token.ReleaseHold(operation_id, tokenAssetValue.Interface())
}
パラメータ:
  • token_id: string – ミントするトークンのID。
  • operation_id: string– ミント・リクエストを表す一意の操作ID。
戻り値の例:
{
 msg: "Successfully rejected mint request with Operation Id 'operation1' to mint 100 tokens of token id token"
}
IssueTokens
このメソッドはトークンをミントし、その後、メソッドのコール元がそれらのトークンを所有します。
func (t *Controller) IssueTokens(token_id string, quantity float64, info_details ...token.InfoDetails) (interface{}, error) {
tokenAssetValue, err := t.getTokenObject(token_id)
if err != nil {
return nil, err
 }
return t.Ctx.Token.Mint(quantity, tokenAssetValue.Interface(), info_details...)
}
パラメータ:
  • token_id: string – トークンのID。
  • quantity – ミントするトークンの数。
  • info_details: JSON– リクエストのカテゴリ(category)および説明(description)を指定するオブジェクト。

    Visual Studio CodeとCLIまたはPostmanコレクションを使用している場合は、info_detailsパラメータを別の形式で指定します。

    Visual Studioコード: { "category": "category value", "description": "description value" }

    CLI /ポストマン: "{\"category\":\"category value\",\"description\":\"description value\"}"

戻り値の例:
{
msg:
"Successfully minted 100 tokens to Account Id: oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (Org-Id: Org1MSP, User-Id: admin)"
}
GetTotalMintedTokens
このメソッドは、指定されたトークンのミントされたトークンの合計数を返します。このメソッドは、Token AdminToken AuditorOrg AdminまたはOrg Auditorのみがコールできます。
func (t *Controller) GetTotalMintedTokens(token_id string) (interface{}, error) {
    tokenAssetValue, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.GetTotalMintedTokens", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
    }
    return t.Ctx.Token.GetTotalMintedTokens(tokenAssetValue.Interface())
}
パラメータ:
  • token_id string – トークンのID。
戻り値:
  • 成功の場合、トークンの合計数を示すJSON文字列。
戻り値の例:
{"msg":"total minted amount for token with id digiCurr101 is 1000","quantity":1000}
GetNetTokens
このメソッドは、指定されたトークンに対してシステムで使用可能なトークンの合計正味数を返します。正味トークン合計は、トークンのバーン後に残っているトークンの量です。等式では、正味トークン = ミントされたトークンの合計 - バーンされたトークンの合計です。トークンがバーンされていない場合、正味トークン数は、ミントされたトークンの合計と等しくなります。このメソッドは、Token AdminToken AuditorOrg AdminまたはOrg Auditorのみがコールできます。
func (t *Controller) GetNetTokens(token_id string) (interface{}, error) {
    tokenAssetValue, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.GetNetTokens", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
    }
    return t.Ctx.Token.GetNetTokens(tokenAssetValue.Interface())
}
パラメータ:
  • token_id string – トークンのID。
戻り値:
  • 成功の場合、トークンの正味数を示すJSON文字列。
戻り値の例:
{"msg":"net minted amount for token with id digiCurr101 is 1000","quantity":1000}

トークン動作管理のメソッド- 転送可能動作

TransferTokens
このメソッドは、トークンをコール元から指定されたアカウントに転送します。メソッドのコール元にはアカウントが必要です。数量は、仕様ファイルのdivisible動作のdecimalパラメータで指定された10進数値内にする必要があります。このメソッドは、アカウントのAccountOwnerのみがコールできます。
func (t *Controller) TransferTokens(token_id string, to_org_id string, to_user_id string, quantity float64) (interface{}, error) {
    tokenAssetValue, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    to_account_id, err := t.Ctx.Account.GenerateAccountId(token_id, to_org_id, to_user_id)
    if err != nil {
        return nil, err
    }
    return t.Ctx.Token.Transfer(to_account_id, quantity, tokenAssetValue.Interface())
}
パラメータ:
  • token_id string – トークンのID。
  • to_org_id string – 現在の組織内の受信者のメンバーシップ・サービス・プロバイダ(MSP) ID。
  • to_user_id string – 受信者のユーザー名または電子メールID。
  • quantity float64 – 転送するトークンの数。
戻り値:
  • 成功の場合、両方のアカウントの詳細を含むメッセージ。
戻り値の例:
{"msg":"successfully transferred 1 tokens from account oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1) to account oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (org_id : Org1MSP, user_id : admin)"}
BulkTransferTokens
このメソッドは、トークンを呼出し元アカウントからflowオブジェクトで指定されたアカウントに一括で転送します。The quantities must be within the decimal values specified by the decimal parameter of the divisible behavior in the specification file.The caller of this method must have an account already created.このメソッドは、アカウントのAccountOwnerのみがコールできます。
func (t *Controller) BulkTransferTokens(token_id string, flow[]map[string]interface{}) (interface{}, error) {
    tokenAssetValue, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    return t.Ctx.Token.BulkTransfer(flow, tokenAssetValue.Interface())
}
パラメータ:
  • token_id string – トークンのID。
  • flow[]map[string]interface{} – 受信者の詳細および数量を指定するJSONオブジェクトの配列。
    • to_org_id string – 現在の組織内の受信者のメンバーシップ・サービス・プロバイダ(MSP) ID。
    • to_user_id string – 受信者のユーザー名または電子メールID。
    • quantity float64 – 転送するトークンの数。
    Visual Studio CodeとCLIまたはPostmanコレクションを使用している場合は、flowパラメータを別の形式で指定します。
    Visual Studio Code:
    [
      { "to_org_id": "Org1MSP", "to_user_id": "user1", "quantity": 10 },
      { "to_org_id": "Org1MSP", "to_user_id": "user2", "quantity": 10 }
    ]
    
    CLI/Postman:
    "[{ \"to_org_id\": \"Org1MSP\", \"to_user_id\": \"user1\", \"quantity\": 10 }, { \"to_org_id\": \"Org1MSP\", \"to_user_id\": \"user2\", \"quantity\": 10 }]"
戻り値:
  • 成功を示すメッセージ。
戻り値の例:
{
    "from_account_id": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
    "msg": "Successfully transferred 2 tokens from Account Id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (Org-Id: Org1MSP, User-Id: user1)",
    "sub_transactions": [
        {
            "amount": 1,
            "to_account_id": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e"
        },
        {
            "amount": 1,
            "to_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df"
        }
    ]
}
TransferTokens
このメソッドは、トークンをコール元から指定されたアカウントに転送します。
func (t *Controller) TransferTokens(token_id string, to_org_id string, to_user_id string, quantity float64, info_details ...token.InfoDetails) (interface{}, error) {
tokenAssetValue, err := t.getTokenObject(token_id)
if err != nil {
return nil, err
}
to_account_id, err := t.Ctx.Account.GenerateAccountId(token_id, to_org_id, to_user_id)
if err != nil {
return nil, err
 }
return t.Ctx.Token.Transfer(to_account_id, quantity, tokenAssetValue.Interface(), info_details...)
}
パラメータ:
  • token_id: string – トークンのID。
  • to_org_id: string – 現在の組織内の受信者(受取人)のメンバーシップ・サービス・プロバイダ(MSP) ID。
  • to_user_id: string – 受信者のユーザー名または電子メールID。
  • quantity: number – 転送するトークンの数。
  • info_details: JSON– リクエストのカテゴリ(category)および説明(description)を指定するオブジェクト。

    Visual Studio CodeとCLIまたはPostmanコレクションを使用している場合は、info_detailsパラメータを別の形式で指定します。

    Visual Studioコード: { "category": "category value", "description": "description value" }

    CLI /ポストマン: "{\"category\":\"category value\",\"description\":\"description value\"}"

戻り値の例:
{
 msg: "Successfully transferred 100 tokens from account id: oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (Org-Id: Org1MSP, User-Id: admin) to account id: oaccount~7yuijg39b4e1e4136dd86a806020c97a930909325340481b8fdhjklliugbv699 (Org-Id: Org1MSP, User-Id: user)",
}
BulkTransferTokens
このメソッドは、トークンを呼出し元アカウントからflowオブジェクトで指定されたアカウントに一括で転送します。The quantities must be within the decimal values specified by the decimal parameter of the divisible behavior in the specification file.The caller of this method must have an account already created.このメソッドは、アカウントのAccountOwnerのみがコールできます。
func (t *Controller) BulkTransferTokens(token_id string, flow[]map[string]interface{}) (interface{}, error) {
    tokenAssetValue, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    return t.Ctx.Token.BulkTransfer(flow, tokenAssetValue.Interface())
}
パラメータ:
  • token_id string – トークンのID。
  • flow[]map[string]interface{} – 受信者の詳細および数量を指定するJSONオブジェクトの配列。
    • to_org_id string – 現在の組織内の受信者のメンバーシップ・サービス・プロバイダ(MSP) ID。
    • to_user_id string – 受信者のユーザー名または電子メールID。
    • quantity float64 – 転送するトークンの数。
    Visual Studio CodeとCLIまたはPostmanコレクションを使用している場合は、flowパラメータを別の形式で指定します。
    Visual Studio Code:
    [
      { "to_org_id": "Org1MSP", "to_user_id": "user1", "quantity": 10 },
      { "to_org_id": "Org1MSP", "to_user_id": "user2", "quantity": 10 }
    ]
    
    CLI/Postman:
    "[{ \"to_org_id\": \"Org1MSP\", \"to_user_id\": \"user1\", \"quantity\": 10 }, { \"to_org_id\": \"Org1MSP\", \"to_user_id\": \"user2\", \"quantity\": 10 }]"
戻り値:
  • 成功を示すメッセージ。
戻り値の例:
{
    "from_account_id": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
    "msg": "Successfully transferred 2 tokens from Account Id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (Org-Id: Org1MSP, User-Id: user1)",
    "sub_transactions": [
        {
            "amount": 1,
            "to_account_id": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e"
        },
        {
            "amount": 1,
            "to_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df"
        }
    ]
}

トークン動作管理メソッド- 保留可能動作

HoldTokens
このメソッドは、to_account_idアカウントを持つトークンの所有者のかわりに保留を作成します。保留の完了または解除を担当する公証人アカウントが指定されます。保留が作成されると、支払者から指定されたトークン残高が保留になります。保留残高は、保留が完了または解除されるまで転送できません。このメソッドのコール元には、すでにアカウントが作成されている必要があります。このメソッドは、アカウントのAccountOwnerのみがコールできます。
func (t *Controller) HoldTokens(token_id string, operation_id string, to_org_id string, to_user_id string, notary_org_id string, notary_user_id string, quantity float64, TimeToExpiration string) (interface{}, error) {
      tokenAssetValue, err := t.getTokenObject(token_id)
      if err != nil {
            return nil, err
      }
      notary_account_id, err := t.Ctx.Account.GenerateAccountId(token_id, notary_org_id, notary_user_id)
      if err != nil {
            return nil, fmt.Errorf("error in getting notary account id from org_id: %s and user_id: %s with token_id: %s, error %s ", notary_org_id, notary_user_id, token_id, err.Error())
      }
      to_account_id, err := t.Ctx.Account.GenerateAccountId(token_id, to_org_id, to_user_id)
      if err != nil {
            return nil, fmt.Errorf("error in getting to_account id from org_id: %s and user_id: %s with token_id: %s, error %s ", to_org_id, to_user_id, token_id, err.Error())
      }
      return t.Ctx.Token.Hold(operation_id, to_account_id, notary_account_id, quantity, TimeToExpiration, tokenAssetValue.Interface())
}
パラメータ:
  • token_id string – トークンのID。
  • operation_id string – 保留操作を識別する一意のID。通常、このIDはクライアント・アプリケーションによって渡されます。
  • to_org_id string – 現在の組織内の受信者のメンバーシップ・サービス・プロバイダ(MSP) ID。
  • to_user_id string – 受信者のユーザー名または電子メールID。
  • notary_org_id string – 現在の組織の公証人のメンバーシップ・サービス・プロバイダ(MSP) ID。
  • notary_user_id string – 公証人のユーザー名または電子メールID。
  • quantity float64 – 保留にするトークンの数。
  • time_to_expiration– 保留が失効する時間。永続的な保留の場合は0を指定します。それ以外の場合は、RFC-3339形式を使用します。たとえば、2021-06-02T12:46:06Zです。
戻り値:
  • 成功の場合、コール元のアカウントおよび保留詳細を含むメッセージ。
戻り値の例:
{"msg":"AccountId oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1) is successfully holding 2 tokens"}
ExecuteHoldTokens
このメソッドはトークンの保留を完了します。トークン所有者が以前に保留にした数量のトークンが受信者に転送されます。quantity値が実際の保留値より小さい場合、残りはトークンの元の所有者が再度使用できます。このメソッドは、notaryロールを持つAccountOwner IDのみがコールできます。保留は公証人のみが完了できます。
func (t *Controller) ExecuteHoldTokens(token_id string, operation_id string, quantity float64) (interface{} error) {
    tokenAssetValue, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    return t.Ctx.Token.ExecuteHold(operation_id, quantity, tokenAssetValue.Interface())
}
パラメータ:
  • token_id string – トークンのID。
  • operation_id string – 保留操作を識別する一意のID。通常、このIDはクライアント・アプリケーションによって渡されます。
  • quantity float64 – 転送する保留トークンの数。
戻り値:
  • 成功の場合、コール元のアカウントIDとトランザクションの数量を含むメッセージ。
戻り値の例:
{"msg":"Account Id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1) has successfully executed '1' tokens(digiCurr101) from the hold with Operation Id 'op1'"}
ReleaseHoldTokens
このメソッドは、トークンの保留を解除します。転送は行われず、すべての保留トークンは元の所有者が再度使用できます。このメソッドは、指定された期限内はnotaryロールを持つAccount Owner IDが、指定された期限後は支払者、受取人または公証人がコールできます。
func (t *Controller) ReleaseHoldTokens(token_id string, operation_id string) (interface{} error) {
    tokenAssetValue, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    return t.Ctx.Token.ReleaseHold(operation_id, tokenAssetValue.Interface())
}
パラメータ:
  • token_id string – トークンのID。
  • operation_id string – 保留操作を識別する一意のID。通常、このIDはクライアント・アプリケーションによって渡されます。
戻り値:
  • 成功の場合、保留が解除されたことを示すメッセージが表示されます。
戻り値の例:
{"msg":"Successfully released '3' tokens from Operation Id 'op2' to Account Id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1)"}
GetOnHoldIds
このメソッドは、指定されたアカウントのすべての保留IDのリストを返します。このメソッドは、チェーンコードのToken Admin、指定された組織のOrg AdminまたはアカウントのAccount Ownerがコールできます。
func (t *Controller) GetOnHoldIds(token_id string, org_id string, user_id string) (interface{}, error) {
      account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
      if err != nil {
            return nil, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetOnHoldIds", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.GetOnHoldIDs(account_id)
}
パラメータ:
  • token_id string – トークンのID。
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、保留IDのJSONリスト。保留IDは、oholdアセット・タイプ、トークン名、トークンIDおよび操作IDを連結した値です。
戻り値の例:
{"holding_ids":["ohold~loyaltok123~t1~op1"],"msg":"Holding Ids are: [ohold~loyaltok123~t1~op1]"}
GetOnHoldDetailsWithOperationId
このメソッドは、指定された操作IDおよびトークンの保留トランザクション詳細を返します。このメソッドは、だれでも呼び出すことができます。
func (t *Controller) GetOnHoldDetailsWithOperationId(token_id string, operation_id string) (interface{} error) {
    return t.Ctx.Hold.GetOnHoldDetailsWithOperationId(token_id, operation_id)
}
パラメータ:
  • token_id string – トークンのID。
  • operation_id string – 保留操作を識別する一意のID。通常、このIDはクライアント・アプリケーションによって渡されます。
戻り値:
  • 成功の場合、次のプロパティを含むJSON保留オブジェクト:
  • HoldingId – トランザクションの保留ID。
  • OperationId – 保留操作を識別する一意のID。通常、このIDはクライアント・アプリケーションによって渡されます。
  • FromAccountId – 保留トークンの現在の所有者のアカウントID。
  • ToAccountId – 受信者のアカウントID。
  • NotaryAccountId – 公証人のアカウントID。
  • TokenId – 保存されたトークンのID。
  • Quantity – 保留IDに対して保留されているトークンの量。
  • TimeToExpiration– 保留が期限切れになるまでの期間。
戻り値の例:
{
    "AssetType": "ohold",
    "HoldingId": "ohold~digicur~digiCurr101~op1",
    "OperationId": "op1",
    "TokenName": "digicur",
    "FromAccountId": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
    "ToAccountId": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e",
    "NotaryAccountId": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
    "TokenId": "digiCurr101",
    "Quantity": 2,
    "TimeToExpiration": "0"
}
GetOnHoldBalanceWithOperationId
このメソッドは、指定された操作IDおよびトークンの保留残高を返します。このメソッドは、だれでも呼び出すことができます。
func (t *Controller) GetOnHoldBalanceWithOperationId(token_id string, operation_id string) (interface{} error) {
    return t.Ctx.Hold.GetOnHoldBalanceWithOperationId(token_id, operation_id)
}
パラメータ:
  • token_id string – トークンのID。
  • operation_id string – 保留操作を識別する一意のID。通常、このIDはクライアント・アプリケーションによって渡されます。
戻り値:
  • 成功の場合、保留残高を示すJSON文字列。
戻り値の例:
{
	"holding_balance": 10,
	"msg": "Current Holding Balance of OperationId opr_121 for token digiCurr101 is : 10"
}
HoldTokens
このメソッドは、to_account_idアカウントを持つトークンの所有者のかわりに保留を作成します。
func (t *Controller) HoldTokens(token_id string, operation_id string, to_org_id string, to_user_id string, notary_org_id string, notary_user_id string, quantity float64, timeToExpiration string, info_details ...token.InfoDetails) (interface{}, error) {
tokenAssetValue, err := t.getTokenObject(token_id)
if err != nil {
return nil, err
}
notary_account_id, err := t.Ctx.Account.GenerateAccountId(token_id, notary_org_id, notary_user_id)
if err != nil {
return nil, fmt.Errorf("error in getting notary account id from org_id: %s and user_id: %s with token_id: %s, error %s ", notary_org_id, notary_user_id, token_id, err.Error())
}
to_account_id, err := t.Ctx.Account.GenerateAccountId(token_id, to_org_id, to_user_id)
if err != nil {
return nil, fmt.Errorf("error in getting to_account id from org_id: %s and user_id: %s with token_id: %s, error %s ", to_org_id, to_user_id, token_id, err.Error())
 }
return t.Ctx.Token.Hold(operation_id, to_account_id, notary_account_id, quantity, timeToExpiration, tokenAssetValue.Interface(), constants.HoldTransfer, info_details...)
}
パラメータ:
  • token_id: string – トークンのID。
  • operation_id: string – 保留操作を識別する一意のID。通常、このIDはクライアント・アプリケーションによって渡されます。
  • to_org_id: string – 現在の組織内の受信者のメンバーシップ・サービス・プロバイダ(MSP) ID。
  • to_user_id: string – 受信者のユーザー名または電子メールID。
  • notary_org_id: string – 現在の組織の公証人のメンバーシップ・サービス・プロバイダ(MSP) ID。
  • notary_user_id: string – 公証人のユーザー名または電子メールID。
  • quantity: number – 保留にするトークンの数。
  • time_to_expiration– 保留が失効する時間。永続的な保留の場合は0を指定します。それ以外の場合は、RFC-3339形式を使用します。たとえば、2021-06-02T12:46:06Zです。
  • info_details: JSON– リクエストのカテゴリ(category)および説明(description)を指定するオブジェクト。

    Visual Studio CodeとCLIまたはPostmanコレクションを使用している場合は、info_detailsパラメータを別の形式で指定します。

    Visual Studioコード: { "category": "category value", "description": "description value" }

    CLI /ポストマン: "{\"category\":\"category value\",\"description\":\"description value\"}"

戻り値の例:
{
msg:
"AccountId oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (Org-Id: Org1MSP, User-Id: admin) is successfully holding 100 tokens",
}
ExecuteHoldTokens
このメソッドはトークンの保留を完了します。トークン所有者が以前に保留にした数量のトークンが受信者に転送されます。quantity値が実際の保留値より小さい場合、残りはトークンの元の所有者が再度使用できます。このメソッドは、notaryロールを持つAccountOwner IDのみがコールできます。保留は公証人のみが完了できます。
func (t *Controller) ExecuteHoldTokens(token_id string, operation_id string, quantity float64) (interface{} error) {
    tokenAssetValue, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    return t.Ctx.Token.ExecuteHold(operation_id, quantity, tokenAssetValue.Interface())
}
パラメータ:
  • token_id string – トークンのID。
  • operation_id string – 保留操作を識別する一意のID。通常、このIDはクライアント・アプリケーションによって渡されます。
  • quantity float64 – 転送する保留トークンの数。
戻り値:
  • 成功の場合、コール元のアカウントIDとトランザクションの数量を含むメッセージ。
戻り値の例:
{"msg":"Account Id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1) has successfully executed '1' tokens(digiCurr101) from the hold with Operation Id 'op1'"}
ReleaseHoldTokens
このメソッドは、トークンの保留を解除します。転送は行われず、すべての保留トークンは元の所有者が再度使用できます。このメソッドは、指定された期限内はnotaryロールを持つAccount Owner IDが、指定された期限後は支払者、受取人または公証人がコールできます。
func (t *Controller) ReleaseHoldTokens(token_id string, operation_id string) (interface{} error) {
    tokenAssetValue, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    return t.Ctx.Token.ReleaseHold(operation_id, tokenAssetValue.Interface())
}
パラメータ:
  • token_id string – トークンのID。
  • operation_id string – 保留操作を識別する一意のID。通常、このIDはクライアント・アプリケーションによって渡されます。
戻り値:
  • 成功の場合、保留が解除されたことを示すメッセージが表示されます。
戻り値の例:
{"msg":"Successfully released '3' tokens from Operation Id 'op2' to Account Id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1)"}
GetOnHoldIds
このメソッドは、指定されたアカウントのすべての保留IDのリストを返します。このメソッドは、Token AdminまたはToken Auditor、指定された組織のOrg AdminまたはOrg Auditorまたは指定されたアカウント所有者がコールできます。
func (t *Controller) GetOnHoldIds(token_id string, org_id string, user_id string) (interface{}, error) {
      account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
      if err != nil {
            return nil, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetOnHoldIds", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.GetOnHoldIDs(account_id)
}
パラメータ:
  • token_id string – トークンのID。
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、保留IDのJSONリスト。保留IDは、oholdアセット・タイプ、トークン名、トークンIDおよび操作IDを連結した値です。
戻り値の例:
{"holding_ids":["ohold~loyaltok123~t1~op1"],"msg":"Holding Ids are: [ohold~loyaltok123~t1~op1]"}
GetOnHoldDetailsWithOperationId
このメソッドは、指定された操作IDおよびトークンの保留トランザクション詳細を返します。このメソッドは、Token AdminToken Auditorまたはトランザクション参加者(送信者、受信者、公証人)のみがコールできます。
func (t *Controller) GetOnHoldDetailsWithOperationId(token_id string, operation_id string) (interface{} error) {
    return t.Ctx.Hold.GetOnHoldDetailsWithOperationId(token_id, operation_id)
}
パラメータ:
  • token_id string – トークンのID。
  • operation_id string – 保留操作を識別する一意のID。通常、このIDはクライアント・アプリケーションによって渡されます。
戻り値:
  • 成功の場合、次のプロパティを含むJSON保留オブジェクト:
  • HoldingId – トランザクションの保留ID。
  • OperationId – 保留操作を識別する一意のID。通常、このIDはクライアント・アプリケーションによって渡されます。
  • FromAccountId – 保留トークンの現在の所有者のアカウントID。
  • ToAccountId – 受信者のアカウントID。
  • NotaryAccountId – 公証人のアカウントID。
  • TokenId – 保存されたトークンのID。
  • Quantity – 保留IDに対して保留されているトークンの量。
  • TimeToExpiration– 保留が期限切れになるまでの期間。
戻り値の例:
{
    "AssetType": "ohold",
    "HoldingId": "ohold~digicur~digiCurr101~op1",
    "OperationId": "op1",
    "TokenName": "digicur",
    "FromAccountId": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
    "ToAccountId": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e",
    "NotaryAccountId": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
    "TokenId": "digiCurr101",
    "Quantity": 2,
    "TimeToExpiration": "0"
}
GetOnHoldBalanceWithOperationId
このメソッドは、指定された操作IDおよびトークンの保留残高を返します。このメソッドは、Token AdminToken Auditorまたはトランザクション参加者(送信者、受信者、公証人)のみがコールできます。
func (t *Controller) GetOnHoldBalanceWithOperationId(token_id string, operation_id string) (interface{} error) {
    return t.Ctx.Hold.GetOnHoldBalanceWithOperationId(token_id, operation_id)
}
パラメータ:
  • token_id string – トークンのID。
  • operation_id string – 保留操作を識別する一意のID。通常、このIDはクライアント・アプリケーションによって渡されます。
戻り値:
  • 成功の場合、保留残高を示すJSON文字列。
戻り値の例:
{
	"holding_balance": 10,
	"msg": "Current Holding Balance of OperationId opr_121 for token digiCurr101 is : 10"
}

トークン動作管理のメソッド- バーン可能動作

BurnTokens
このメソッドは、トランザクション・コール元のアカウントからトークンを非アクティブ化またはバーンします。このメソッドのコール元には、アカウントとバーナー・ロールが必要です。数量は、仕様ファイルのdivisible動作のdecimalパラメータで指定された10進数値内にする必要があります。このメソッドは、バーナー・ロールを持つアカウントのAccount Ownerがコールできます。
func (t *Controller) BurnTokens(token_id string, quantity float64) (interface{} error) {
    tokenAssetValue, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    return t.Ctx.Token.Burn(quantity, tokenAssetValue.Interface())
}
パラメータ:
  • token_id string – トークンのID。
  • quantity float64 – バーンするトークンの数。
戻り値:
  • 成功の場合、バーンしたトークンの数量とアカウントIDを含む成功メッセージ。
戻り値の例:
{"msg":"Successfully burned 1 tokens from account id: oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e (org_id : Org1MSP, user_id : user2)"}
RequestBurn
このメソッドは、バーナーからコールして、指定した量のトークンを破棄するリクエストをバーナー公証書に送信できます。このトークンは、使用可能な残高以下である必要があります。バーン・リクエストが開始されると、指定された金額が使用可能な残高から即座に差し引かれ、onhold_burn_balanceフィールドに追加されます。リクエストが承認されると、トークンは書き込まれます。リクエストが拒否された場合、トークンはonhold_burn_balanceフィールドから使用可能な残高に返されます。
func (t *Controller) RequestBurn(token_id string, operation_id string, notary_org_id string, notary_user_id string, quantity float64, timeToExpiration string, info_details ...token.InfoDetails) (interface{}, error) {
tokenAssetValue, err := t.getTokenObject(token_id)
if err != nil {
return nil, err
}
notary_account_id, err := t.Ctx.Account.GenerateAccountId(token_id, notary_org_id, notary_user_id)
if err != nil {
return nil, fmt.Errorf("error in getting notary account id from org_id: %s and user_id: %s with token_id: %s, error %s ", notary_org_id, notary_user_id, token_id, err.Error())
 }
return t.Ctx.Token.Hold(operation_id, "", notary_account_id, quantity, timeToExpiration, tokenAssetValue.Interface(), constants.HoldBurn, info_details...)
}
パラメータ:
  • token_id: string– 書き込むトークンのID。
  • operation_id: string– バーン・リクエストを表す一意の操作ID。
  • notary_org_id: string– リクエストを処理するバーナー公証人のメンバーシップ・サービス・プロバイダ(MSP) ID。
  • notary_user_id: string– リクエストを処理するバーナー公証人のユーザー名または電子メールID。
  • quantity: number– 書き込むトークンの量。
  • time_to_expiration– 書き込み要求が期限切れになり、有効でなくなるまでの時間。
  • info_details: JSON– リクエストのカテゴリ(category)および説明(description)を指定するオブジェクト。

    Visual Studio CodeとCLIまたはPostmanコレクションを使用している場合は、info_detailsパラメータを別の形式で指定します。

    Visual Studioコード: { "category": "category value", "description": "description value" }

    CLI /ポストマン: "{\"category\":\"category value\",\"description\":\"description value\"}"

戻り値の例:
{
msg:
"AccountId oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (org_id: Org1MSP, user_id: admin) has successfully submitted request to mint 100 tokens",
}
ApproveBurn
このメソッドは、書き込み要求を承認するためにバーナー公証書によって呼び出すことができます。
func (t *Controller) ApproveBurn(token_id string, operation_id string) (interface{}, error) {
tokenAssetValue, err := t.getTokenObject(token_id)
if err != nil {
return nil, err
}
return t.Ctx.Token.ExecuteHold(operation_id, tokenAssetValue.Interface())
}
パラメータ:
  • token_id: string– 書き込むトークンのID。
  • operation_id: string– バーン・リクエストを表す一意の操作ID。
戻り値の例:
{
msg:
"Successfully burned 100 tokens from account id: oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (org_id: Org1MSP, user_id: admin)"
}
RejectBurn
このメソッドは、書き込み要求を拒否するためにバーナー公証書によって呼び出すことができます。
func (t *Controller) RejectBurn(token_id string, operation_id string) (interface{}, error) {
tokenAssetValue, err := t.getTokenObject(token_id)
if err != nil {
return nil, err
}
return t.Ctx.Token.ReleaseHold(operation_id, tokenAssetValue.Interface())
}
パラメータ:
  • token_id: string– 書き込むトークンのID。
  • operation_id: string– バーン・リクエストを表す一意の操作ID。
戻り値の例:
{
 msg: "Successfully rejected burn request with Operation Id 'operation1' to burn 100 tokens of token id token",
}
GetAccountOnHoldBurnBalance
このメソッドは、指定されたユーザーの保留バーン・バランスを返します。このメソッドは、Token AdminToken AuditorOrg AdminOrg Auditorまたはアカウント所有者によってのみコールできます。
func (t *Controller) GetAccountOnHoldBurnBalance(token_id string, org_id string, user_id string) (interface{}, error) {
    account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
    if err != nil {
        return nil, err
    }
    auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccountOnHoldBurnBalance", "TOKEN", map[string]string{"account_id": account_id})
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    response, err := t.Ctx.Account.GetAccountOnHoldBurnBalance(account_id)
    return response, err
}
パラメータ:
  • token_id: string– 書き込むトークンのID。
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値の例:
{
  "msg": "Total On Hold Burning Balance is: 10",
  "onhold_burn_balance": 10
}
BurnTokens
このメソッドは、トランザクション・コール元のアカウントからトークンを非アクティブ化またはバーンします。
func (t *Controller) BurnTokens(token_id string, quantity float64, info_details ...token.InfoDetails) (interface{}, error) {
tokenAssetValue, err := t.getTokenObject(token_id)
if err != nil {
return nil, err
 }
return t.Ctx.Token.Burn(quantity, tokenAssetValue.Interface(), info_details...)
}
パラメータ:
  • token_id: string – トークンのID。
  • quantity – バーンするトークンの数。
  • info_details: JSON– リクエストのカテゴリ(category)および説明(description)を指定するオブジェクト。

    Visual Studio CodeとCLIまたはPostmanコレクションを使用している場合は、info_detailsパラメータを別の形式で指定します。

    Visual Studioコード: { "category": "category value", "description": "description value" }

    CLI /ポストマン: "{\"category\":\"category value\",\"description\":\"description value\"}"

戻り値の例:
{
msg:
"Successfully burned 100 tokens from account id: oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (Org-Id: Org1MSP, User-Id: admin)"
}

カスタム・メソッド

トークンSDKメソッドを使用して、ビジネス・アプリケーションのカスタム・メソッドを記述できます。

トークンSDKメソッドを使用する場合は、必ず戻り値を追跡してください。また、二重支出を回避するために、状態データベース内の同じキーと値のペアに作用する複数の非同期関数を組み合せないでください。かわりに、BulkTransferTokensメソッドを使用して、1つのメソッドで複数の転送を行います。

次の例は、カスタム・メソッドでトークンSDKメソッドを使用する方法を示しています。BuyTicketメソッドがコールされると、20個のトークンがコール元のアカウントから販売者のアカウントに転送され、転送のトランザクション・メッセージが返されます。

func (t *Controller) BuyTicket(TokenId string, SellerOrgId string, SellerUserId string) (interface{}, error){
	token, err := t.Ctx.Token.Get(TokenId)
	if err != nil {
		return nil, err
	}
	
	/**
	* The following method t.Ctx.Account.GenerateAccountId(TokenId, SellerOrgId, SellerUserId) generates account id of the seller
	*/
	sellerAccountId, err := t.Ctx.Account.GenerateAccountId(TokenId, SellerOrgId, SellerUserId)
    if err != nil {
		return nil, err
	}   

	/**
	* The following method t.Ctx.Token.Transfer(sellerAccountId, 20, token) transfers the quantity 20 from caller's
	* account & to seller's account.
	*/
    transaction, err := t.Ctx.Token.Transfer(sellerAccountId, 20, token)
    if err != nil {
		return nil, err
	}
    return transaction, nil
}

トークンSDKメソッド

アクセス制御管理のメソッド

トークンSDKはアクセス制御機能を提供します。一部のメソッドは、トークンのToken AdminOrg AdminまたはAccountOwnerのみがコールできます。この機能を使用すると、目的のユーザーのみが操作を実行するようにできます。認可されていないアクセスではエラーが発生します。アクセス制御機能を使用するには、../lib/authモジュールからAuthorizationクラスをインポートします。
import { Authorization } from '../lib/auth';
AddAdmin
このメソッドは、トークン・チェーンコードのToken Adminとしてユーザーを追加します。
Ctx.AddAdmin(org_id string, user_id string) (interface{}, error)
パラメータ:
  • user_id – ユーザーのユーザー名または電子メールID。
  • org_id – 現在のネットワーク組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
戻り値:
  • 成功の場合、追加されたToken Adminユーザーの成功メッセージおよび詳細。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
{"msg":"Successfully added Admin (Org_Id: Org1MSP, User_Id: user2)"}
RemoveAdmin
このメソッドは、トークン・チェーンコードのToken Adminであるユーザーを削除します。
Ctx.RemoveAdmin(org_id string, user_id string) (interface{}, error)
パラメータ:
  • user_id – ユーザーのユーザー名または電子メールID。
  • org_id – 現在のネットワーク組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
戻り値:
  • 成功の場合、削除されたToken Adminユーザーの成功メッセージおよび詳細。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
{"msg":"Successfuly removed Admin (Org_Id Org1MSP User_Id user1)"}
IsUserTokenAdmin
このメソッドは、関数のコール元がToken Adminの場合、ブール値trueを返します。それ以外の場合、このメソッドはfalseを返します。
Ctx.Auth.IsUserTokenAdmin()  (bool, error)
パラメータ:
  • user_id – ユーザーのユーザー名または電子メールID。
  • org_id – 現在のネットワーク組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
戻り値:
  • ブール値のレスポンスおよびエラーが発生した場合、エラー・メッセージ。
戻り値の例:
{"result":false}
GetAllAdmins
このメソッドは、トークン・チェーンコードのToken Adminであるすべてのユーザーのリストを返します。
Ctx.GetAllAdmins() (interface{}, error)
パラメータ:
  • なし
戻り値:
  • 成功の場合、トークン・チェーンコードのToken Adminであるすべてのユーザーのリスト。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
[{"OrgId":"Org1MSP","UserId":"admin"},{"OrgId":"Org1MSP","UserId":"user1"}]
GetAllAdminUsers
このメソッドは、トークン・チェーンコードのToken Adminであるすべてのユーザーのリストを返します。
Ctx.Admin.GetAllAdminUsers() (interface{}, error) 
パラメータ:
  • なし
戻り値:
  • 成功の場合、map[string]interface{}形式のトークン・チェーンコードのToken Adminであるすべてのユーザーのリスト。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
{"admins":[{"OrgId":"Org1MSP","UserId":"admin"},{"OrgId":"Org1MSP","UserId":"user1"}]}
CheckAuthorization
このメソッドを使用して、チェーンコードにアクセス制御を追加します。自動生成されたトークン・メソッドの多くはアクセス制御を使用します。SDKレシーバとアクセス制御があるメソッドの間のマッピングは、oChainUtil.goファイルに記述されています。独自のアクセス制御を使用したり、アクセス制御を無効にするには、自動生成されたコントローラ・メソッドおよびカスタム・メソッドからアクセス制御コードを削除します。
var t TokenAccess
      var r RoleAccess
      var a AccountAccess
      var as AccountStatusAccess
      var h HoldAccess
      var ad AdminAccess
      var trx TransactionAccess
      var tc TokenConversionAccess
      var auth AuthAccess

      auth.IsTokenAdmin = []string{"Admin", "MultipleAccountOwner"}

      trx.DeleteHistoricalTransactions = []string{"Admin"}
      ad.AddAdmin = []string{"Admin"}
      ad.RemoveAdmin = []string{"Admin"}
      ad.GetAllAdmins = []string{"Admin", "OrgAdmin"}
      ad.AddOrgAdmin = []string{"Admin", "OrgAdminOrgIdCheck"}
      ad.RemoveOrgAdmin = []string{"Admin", "OrgAdminOrgIdCheck"}
      ad.GetOrgAdmins = []string{"Admin", "OrgAdmin"}
      ad.IsTokenAdmin = []string{"Admin", "MultipleAccountOwner", "OrgAdmin"}
      t.Save = []string{"Admin"}
      t.GetAllTokens = []string{"Admin", "OrgAdmin"}
      t.Update = []string{"Admin"}
      t.GetTokenDecimals = []string{"Admin", "OrgAdmin"}
      t.GetTokensByName = []string{"Admin", "OrgAdmin"}
      t.AddRoleMember = []string{"Admin", "OrgAdminRoleCheck"}
      t.RemoveRoleMember = []string{"Admin", "OrgAdminRoleCheck"}
      t.IsInRole = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      t.GetTotalMintedTokens = []string{"Admin", "OrgAdmin"}
      t.GetNetTokens = []string{"Admin", "OrgAdmin"}
      t.Get = []string{"Admin", "OrgAdmin"}
      t.GetTokenHistory = []string{"Admin", "OrgAdmin"}
      a.CreateAccount = []string{"Admin", "OrgAdminOrgIdCheck"}
      a.AssociateToken = []string{"Admin", "OrgAdminAccountIdCheck"}
      a.GetAllAccounts = []string{"Admin"}
      a.GetAllOrgAccounts = []string{"Admin", "OrgAdminOrgIdCheck"}
      a.GetAccount = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.History = []string{"Admin", "AccountOwner"}
      a.GetAccountTransactionHistory = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.GetAccountTransactionHistoryWithFilters = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.GetSubTransactionsById = []string{"Admin", "TransactionInvoker"}
      a.GetSubTransactionsByIdWithFilters = []string{"Admin", "TransactionInvoker"}
      a.GetAccountBalance = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.GetAccountOnHoldBalance = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.GetOnHoldIds = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.GetAccountsByUser = []string{"Admin", "OrgAdminOrgIdCheck", "MultipleAccountOwner"}

      as.Get = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      as.ActivateAccount = []string{"Admin", "OrgAdminOrgIdCheck"}
      as.SuspendAccount = []string{"Admin", "OrgAdminOrgIdCheck"}
      as.DeleteAccount = []string{"Admin", "OrgAdminOrgIdCheck"}

      r.GetAccountsByRole = []string{"Admin"}
      r.GetUsersByRole = []string{"Admin"}
      r.GetOrgAccountsByRole = []string{"Admin", "OrgAdminOrgIdCheck"}
      r.GetOrgUsersByRole = []string{"Admin", "OrgAdminOrgIdCheck"}

      tc.InitializeExchangePoolUser = []string{"Admin"}
      tc.AddConversionRate = []string{"Admin"}
      tc.UpdateConversionRate = []string{"Admin"}
      tc.GetConversionRate = []string{"Admin", "OrgAdmin", "AnyAccountOwner"}
      tc.GetConversionRateHistory = []string{"Admin", "OrgAdmin", "AnyAccountOwner"}
      tc.TokenConversion = []string{"Admin", "AnyAccountOwner"}
      tc.GetExchangePoolUser = []string{"Admin"}
Ctx.Auth.CheckAuthorization(classFuncName string, args ...string) (bool, error)
パラメータ:
  • classFuncName string – 受信者とメソッドの間のマップ値(oChainUtil.goファイルを参照)。
  • args – 可変引数。args[0]は定数TOKENで、args[1]account_id引数(必要な場合)です。
戻り値:
  • ブール値のレスポンスおよびエラーが発生した場合、エラー・メッセージ。
AddOrgAdmin
このメソッドは、ユーザーを組織のOrg Adminとして追加します。
Ctx.Admin.AddOrgAdmin(org_id, user_id) (interface{}, error)
パラメータ:
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、組織のOrg Adminとして追加されたユーザーの詳細を含むメッセージ。
戻り値の例:
{
    "msg": "Successfully added Org Admin (Org_Id: Org1MSP, User_Id: orgAdmin)"
}
RemoveOrgAdmin
このメソッドは、組織のOrg Adminであるユーザーを削除します。
Ctx.Admin.RemoveOrgAdmin(org_id, user_id) (interface{}, error)
パラメータ:
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、組織のOrg Adminとして削除されたユーザーの詳細を含むメッセージ。
戻り値の例:
{
    "msg": "Successfully removed Org Admin (Org_Id Org1MSP User_Id orgAdmin)"
}
GetOrgAdmins
このメソッドは、組織のOrg Adminであるすべてのユーザーのリストを返します。
Ctx.Admin.GetAllOrgAdmins() (interface{}, error)
パラメータ:
  • なし
戻り値:
  • 成功の場合、OrgIdおよびUserIdオブジェクトを含むJSONリスト。
戻り値の例:
{
    "admins": [
        {
            "OrgId": "Org1MSP",
            "UserId": "orgadmin"
        },
        {
            "OrgId": "Org1MSP",
            "UserId": "orgadmin1"
        },
        {
            "OrgId": "Org1MSP",
            "UserId": "orgadmin2"
        }
    ]
}
AddAdmin
このメソッドは、トークン・チェーンコードのToken Adminとしてユーザーを追加します。
Ctx.AddAdmin(org_id string, user_id string) (interface{}, error)
パラメータ:
  • user_id – ユーザーのユーザー名または電子メールID。
  • org_id – 現在のネットワーク組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
戻り値:
  • 成功の場合、追加されたToken Adminユーザーの成功メッセージおよび詳細。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
{"msg":"Successfully added Admin (Org_Id: Org1MSP, User_Id: user2)"}
RemoveAdmin
このメソッドは、トークン・チェーンコードのToken Adminであるユーザーを削除します。
Ctx.RemoveAdmin(org_id string, user_id string) (interface{}, error)
パラメータ:
  • user_id – ユーザーのユーザー名または電子メールID。
  • org_id – 現在のネットワーク組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
戻り値:
  • 成功の場合、削除されたToken Adminユーザーの成功メッセージおよび詳細。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
{"msg":"Successfuly removed Admin (Org_Id Org1MSP User_Id user1)"}
IsUserTokenAdmin
このメソッドは、関数のコール元がToken Adminの場合、ブール値trueを返します。それ以外の場合、このメソッドはfalseを返します。
Ctx.Auth.IsUserTokenAdmin()  (bool, error)
パラメータ:
  • user_id – ユーザーのユーザー名または電子メールID。
  • org_id – 現在のネットワーク組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
戻り値:
  • ブール値のレスポンスおよびエラーが発生した場合、エラー・メッセージ。
戻り値の例:
{"result":false}
GetAllAdmins
このメソッドは、トークン・チェーンコードのToken Adminであるすべてのユーザーのリストを返します。
Ctx.GetAllAdmins() (interface{}, error)
パラメータ:
  • なし
戻り値:
  • 成功の場合、トークン・チェーンコードのToken Adminであるすべてのユーザーのリスト。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
[{"OrgId":"Org1MSP","UserId":"admin"},{"OrgId":"Org1MSP","UserId":"user1"}]
GetAllAdminUsers
このメソッドは、トークン・チェーンコードのToken Adminであるすべてのユーザーのリストを返します。
Ctx.Admin.GetAllAdminUsers() (interface{}, error) 
パラメータ:
  • なし
戻り値:
  • 成功の場合、map[string]interface{}形式のトークン・チェーンコードのToken Adminであるすべてのユーザーのリスト。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
{"admins":[{"OrgId":"Org1MSP","UserId":"admin"},{"OrgId":"Org1MSP","UserId":"user1"}]}
CheckAuthorization
このメソッドを使用して、チェーンコードにアクセス制御を追加します。自動生成されたトークン・メソッドの多くはアクセス制御を使用します。SDKレシーバとアクセス制御があるメソッドの間のマッピングは、oChainUtil.goファイルに記述されています。独自のアクセス制御を使用したり、アクセス制御を無効にするには、自動生成されたコントローラ・メソッドおよびカスタム・メソッドからアクセス制御コードを削除します。
var t TokenAccess
      var r RoleAccess
      var a AccountAccess
      var as AccountStatusAccess
      var h HoldAccess
      var ad AdminAccess
      var trx TransactionAccess
      var tc TokenConversionAccess
      var auth AuthAccess

      auth.IsTokenAdmin = []string{"Admin", "MultipleAccountOwner"}

      trx.DeleteHistoricalTransactions = []string{"Admin"}
      ad.AddAdmin = []string{"Admin"}
      ad.RemoveAdmin = []string{"Admin"}
      ad.GetAllAdmins = []string{"Admin", "OrgAdmin"}
      ad.AddOrgAdmin = []string{"Admin", "OrgAdminOrgIdCheck"}
      ad.RemoveOrgAdmin = []string{"Admin", "OrgAdminOrgIdCheck"}
      ad.GetOrgAdmins = []string{"Admin", "OrgAdmin"}
      ad.IsTokenAdmin = []string{"Admin", "MultipleAccountOwner", "OrgAdmin"}
      t.Save = []string{"Admin"}
      t.GetAllTokens = []string{"Admin", "OrgAdmin"}
      t.Update = []string{"Admin"}
      t.GetTokenDecimals = []string{"Admin", "OrgAdmin"}
      t.GetTokensByName = []string{"Admin", "OrgAdmin"}
      t.AddRoleMember = []string{"Admin", "OrgAdminRoleCheck"}
      t.RemoveRoleMember = []string{"Admin", "OrgAdminRoleCheck"}
      t.IsInRole = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      t.GetTotalMintedTokens = []string{"Admin", "OrgAdmin"}
      t.GetNetTokens = []string{"Admin", "OrgAdmin"}
      t.Get = []string{"Admin", "OrgAdmin"}
      t.GetTokenHistory = []string{"Admin", "OrgAdmin"}
      a.CreateAccount = []string{"Admin", "OrgAdminOrgIdCheck"}
      a.AssociateToken = []string{"Admin", "OrgAdminAccountIdCheck"}
      a.GetAllAccounts = []string{"Admin"}
      a.GetAllOrgAccounts = []string{"Admin", "OrgAdminOrgIdCheck"}
      a.GetAccount = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.History = []string{"Admin", "AccountOwner"}
      a.GetAccountTransactionHistory = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.GetAccountTransactionHistoryWithFilters = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.GetSubTransactionsById = []string{"Admin", "TransactionInvoker"}
      a.GetSubTransactionsByIdWithFilters = []string{"Admin", "TransactionInvoker"}
      a.GetAccountBalance = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.GetAccountOnHoldBalance = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.GetOnHoldIds = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.GetAccountsByUser = []string{"Admin", "OrgAdminOrgIdCheck", "MultipleAccountOwner"}

      as.Get = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      as.ActivateAccount = []string{"Admin", "OrgAdminOrgIdCheck"}
      as.SuspendAccount = []string{"Admin", "OrgAdminOrgIdCheck"}
      as.DeleteAccount = []string{"Admin", "OrgAdminOrgIdCheck"}

      r.GetAccountsByRole = []string{"Admin"}
      r.GetUsersByRole = []string{"Admin"}
      r.GetOrgAccountsByRole = []string{"Admin", "OrgAdminOrgIdCheck"}
      r.GetOrgUsersByRole = []string{"Admin", "OrgAdminOrgIdCheck"}

      tc.InitializeExchangePoolUser = []string{"Admin"}
      tc.AddConversionRate = []string{"Admin"}
      tc.UpdateConversionRate = []string{"Admin"}
      tc.GetConversionRate = []string{"Admin", "OrgAdmin", "AnyAccountOwner"}
      tc.GetConversionRateHistory = []string{"Admin", "OrgAdmin", "AnyAccountOwner"}
      tc.TokenConversion = []string{"Admin", "AnyAccountOwner"}
      tc.GetExchangePoolUser = []string{"Admin"}
Ctx.Auth.CheckAuthorization(classFuncName string, args ...string) (bool, error)
パラメータ:
  • classFuncName string – 受信者とメソッドの間のマップ値(oChainUtil.goファイルを参照)。
  • args – 可変引数。args[0]は定数TOKENで、args[1]account_id引数(必要な場合)です。
戻り値:
  • ブール値のレスポンスおよびエラーが発生した場合、エラー・メッセージ。
AddOrgAdmin
このメソッドは、ユーザーを組織のOrg Adminとして追加します。
Ctx.Admin.AddOrgAdmin(org_id, user_id) (interface{}, error)
パラメータ:
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、組織のOrg Adminとして追加されたユーザーの詳細を含むメッセージ。
戻り値の例:
{
    "msg": "Successfully added Org Admin (Org_Id: Org1MSP, User_Id: orgAdmin)"
}
RemoveOrgAdmin
このメソッドは、組織のOrg Adminであるユーザーを削除します。
Ctx.Admin.RemoveOrgAdmin(org_id, user_id) (interface{}, error)
パラメータ:
  • org_id string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、組織のOrg Adminとして削除されたユーザーの詳細を含むメッセージ。
戻り値の例:
{
    "msg": "Successfully removed Org Admin (Org_Id Org1MSP User_Id orgAdmin)"
}
GetOrgAdmins
このメソッドは、組織のOrg Adminであるすべてのユーザーのリストを返します。
Ctx.Admin.GetAllOrgAdmins() (interface{}, error)
パラメータ:
  • なし
戻り値:
  • 成功の場合、OrgIdおよびUserIdオブジェクトを含むJSONリスト。
戻り値の例:
{
    "admins": [
        {
            "OrgId": "Org1MSP",
            "UserId": "orgadmin"
        },
        {
            "OrgId": "Org1MSP",
            "UserId": "orgadmin1"
        },
        {
            "OrgId": "Org1MSP",
            "UserId": "orgadmin2"
        }
    ]
}
AddTokenAuditor
このメソッドは、ユーザーをチェーンコードのToken Auditorとして追加します。
t.Ctx.Admin.AddTokenAuditor(org_id, user_id)
パラメータ:
  • org_id: string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id: string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、チェーンコードのToken Auditorとして追加されたユーザーの詳細を含むメッセージ。
戻り値の例:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "f0888dd52f39dfa669275cc8f35d0b47b37b8407d384493d16970fcbb377f937",
        "payload": {
            "msg": "Successfully added Token Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 268
    }
}
RemoveTokenAuditor
このメソッドは、チェーンコードのToken Auditorであるユーザーを削除します。
t.Ctx.Admin.RemoveTokenAuditor(org_id, user_id)
パラメータ:
  • org_id: string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id: string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、チェーンコードのToken Auditorとして削除されたユーザーの詳細を含むメッセージ。
戻り値の例:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "2f01f48eceaf2dff175f98b96a5bdd22c949f48fc5683ce86d6141cc4892aee3",
        "payload": {
            "msg": "Successfully removed Token Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 270
    }
}
GetTokenAuditors
このメソッドは、チェーンコードのすべてのToken Auditorsを返します。
t.Ctx.Admin.GetAllTokenAuditors()
戻り値の例:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "18eaa81b04d43db64f28287bab1cf6609e2a1d8ff84852ff73849ddb9a9dfba1",
        "payload": {
            "auditors": [
                {
                    "OrgId": "CB",
                    "UserId": "auditor_user_cb"
                }
            ]
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 269
    }
}
AddOrgAuditor
このメソッドは、チェーンコードのOrg Auditorとしてユーザーを追加します。
t.Ctx.Admin.AddOrgAuditor(org_id, user_id)
パラメータ:
  • org_id: string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id: string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、チェーンコードのOrg Auditorとして追加されたユーザーの詳細を含むメッセージ。
戻り値の例:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "3d5ec46003c68c6208d43c82894bd6da5c0b763339cc5212e09b71d39d0d80e2",
        "payload": {
            "msg": "Successfully added Org Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 271
    }
}
RemoveOrgAuditor
このメソッドは、チェーンコードのOrg Auditorとしてユーザーを削除します。
t.Ctx.Admin.RemoveOrgAuditor(org_id, user_id)
パラメータ:
  • org_id: string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id: string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、チェーンコードのOrg Auditorとして削除されたユーザーの詳細を含むメッセージ。
戻り値の例:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "713a120641afbc4dfaeac73b82c9fd51df6fcfd7d4d9a82553d3c487bf11f530",
        "payload": {
            "msg": "Successfully removed Org Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 273
    }
}
GetOrgAuditors
このメソッドは、チェーンコードのすべてのOrg Auditorsを返します。
t.Ctx.Admin.GetAllOrgAuditors()
戻り値の例:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "07656bf434616d7a3d7fe4fb81dc80c8cc608991648adfd9f6f2f2b9f6ddf468",
        "payload": {
            "auditors": [
                {
                    "OrgId": "CB",
                    "UserId": "cb"
                },
                {
                    "OrgId": "CB",
                    "UserId": "issuer_user_cb"
                }
            ]
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 272
    }
}

トークン構成管理のメソッド

Save
このメソッドはトークンを作成し、そのプロパティを状態データベースに保存します。
Ctx.Token.Save(args ...interface{}) (interface{}, error)
パラメータ:
  • token_id: string – 返すトークンのID。
  • args – 可変引数。最初の引数args[0]は、台帳に追加するために必要なタイプのトークンstructデータの参照です。
戻り値:
  • 成功の場合、状態データベースに保存されたトークンに関する詳細を含むinterface{}オブジェクト。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
{
    "AssetType": "otoken",
    "Token_id": "digiCurr101",
    "Token_name": "digicur",
    "Token_desc": "",
    "Token_type": "fungible",
    "Behavior": ["divisible", "mintable", "transferable", "burnable", "roles"],
    "Roles": {
        "minter_role_name": "minter"
    },
    "Mintable": {
        "Max_mint_quantity": 1000
    },
    "Divisible": {
        "Decimal": 2
    },
    "Currency_name": "",
    "Token_to_currency_ratio": 1
}
Update
このメソッドは、トークン・プロパティを更新します。トークン・アセットの作成後は、token_desc値とそのカスタム・プロパティのみを更新できます。
Ctx.Token.Update(args ...interface{}) (interface{}, error)
パラメータ:
  • 台帳で更新するために必要なタイプのトークンstructデータへの参照を含むアセット。
戻り値:
  • 成功の場合、トークン詳細を含むpromiseメッセージ。エラーの場合、エラー・メッセージ付きの拒否。
戻り値の例:
{
    "AssetType": "otoken",
    "Token_id": "digiCurr101",
    "Token_name": "digicur",
    "Token_desc": "Digital Currency equiv of dollar",
    "Token_type": "fungible",
    "Behavior": ["divisible", "mintable", "transferable", "burnable", "roles"],
    "Roles": {
        "minter_role_name": "minter"
    },
    "Mintable": {
        "Max_mint_quantity": 1000
    },
    "Divisible": {
        "Decimal": 2
    },
    "Currency_name": "",
    "Token_to_currency_ratio": 1
}
GetTokenDecimals
このメソッドは、フラクショナル・トークンで使用可能な小数点以下の桁数を返します。divisible動作が指定されていない場合、デフォルト値は0です。
Ctx.Token.GetTokenDecimals(token_id string) (int, error)
パラメータ:
  • なし
戻り値:
  • 成功の場合、トークンの小数点以下桁数(数値データ型)。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
1
Get
このメソッドは、状態データベースに存在する場合、トークン・オブジェクトを返します。このメソッドは、トークン・チェーンコードのToken Adminのみがコールできます。
Ctx.Get(Id string, result ...interface{}) (interface{}, error)
パラメータ:
  • token_id: string – 返すトークンのID。
  • result – 可変引数。最初の引数result[0]は、必要な型の空のTokenオブジェクトの参照です。
戻り値:
  • 成功の場合、トークン・アセット・データを含むマップ。可変引数result[0]には、トークン・データが含まれます。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
{
    "AssetType": "otoken",
    "Token_id": "digiCurr101",
    "Token_name": "digicur",
    "Token_desc": "Digital Currency equiv of dollar",
    "Token_type": "fungible",
    "Behavior": ["divisible", "mintable", "transferable", "burnable", "holdable", "roles"],
    "Roles": {
        "burner_role_name": "burner",
        "minter_role_name": "minter",
        "notary_role_name": "notary"
    },
    "Mintable": {
        "Max_mint_quantity": 20000
    },
    "Divisible": {
        "Decimal": 1
    },
    "Token_to_currency_ratio": 1,
    "Currency_representation": "DOLLAR"
}
History
このメソッドは、指定されたトークンIDのトークン履歴を返します。
Ctx.Token.History(tokenId string) (interface{}, error)
パラメータ:
  • tokenId: string – トークンのID。
戻り値:
  • 成功の場合、トークン履歴を表すJSON配列。
戻り値の例:
[
    {
        "IsDelete": "false",
        "Timestamp": "2023-09-01T16:46:33Z",
        "TxId": "12333b8a4f63aa9b3a34072efcbd7df546c6d1e7d82a7a9596e899383656d6f7",
        "Value": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "Currency_name1": "",
            "Divisible": {
                "Decimal": 2
            },
            "Mintable": {
                "Max_mint_quantity": 1000
            },
            "Roles": {
                "minter_role_name": "minter"
            },
            "Token_desc": "updated description",
            "Token_id": "token",
            "Token_name": "fiatmoneytok",
            "Token_to_currency_ratio": 0,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    },
    {
        "IsDelete": "false",
        "Timestamp": "2023-09-01T16:04:25Z",
        "TxId": "99702e2dad7554a5ee4716a0d01d3e394cbce39bea8bade265d8911f30ebad0b",
        "Value": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "Currency_name1": "",
            "Divisible": {
                "Decimal": 2
            },
            "Mintable": {
                "Max_mint_quantity": 1000
            },
            "Roles": {
                "minter_role_name": "minter"
            },
            "Token_desc": "",
            "Token_id": "token",
            "Token_name": "fiatmoneytok",
            "Token_to_currency_ratio": 0,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    }
]
GetAllTokens
このメソッドは、状態データベースに保存されているすべてのトークン・アセットを返します。このメソッドでは、Berkeley DB SQLリッチ問合せが使用され、リモートOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
Ctx.Token.GetAllTokens()  (interface{}, error)
パラメータ:
  • なし
戻り値:
  • 成功の場合、すべてのトークン・アセットのマップの配列。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
"payload": [
    {
        "key": "t1",
        "valueJson": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "holdable",
                "burnable",
                "roles"
            ],
            "Currency_name": "Currency_name value",
            "Divisible": {
                "Decimal": 8
            },
            "Mintable": {
                "Max_mint_quantity": 10000
            },
            "Roles": {
                "burner_role_name": "burner",
                "minter_role_name": "minter",
                "notary_role_name": "notary"
            },
            "Token_desc": "Token_desc value",
            "Token_id": "t1",
            "Token_name": "obptok",
            "Token_to_currency_ratio": 999,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    }
]
GetTokensByName
このメソッドは、指定された名前のすべてのトークン・アセットを返します。このメソッドでは、Berkeley DB SQLリッチ問合せが使用され、リモートOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
Ctx.Token.GetTokensByName(token_name string) (interface{}, error)
パラメータ:
  • token_name string – トークンの名前。これはモデルのToken_nameプロパティに対応します。値は、トークンのクラス名です。
戻り値:
  • 指定された名前のすべてのトークン・アセットのマップの配列を返します。
戻り値の例:
"payload": [
    {
        "key": "t1",
        "valueJson": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "holdable",
                "burnable",
                "roles"
            ],
            "Currency_name": "Currency_name value",
            "Divisible": {
                "Decimal": 8
            },
            "Mintable": {
                "Max_mint_quantity": 10000
            },
            "Roles": {
                "burner_role_name": "burner",
                "minter_role_name": "minter",
                "notary_role_name": "notary"
            },
            "Token_desc": "Token_desc value",
            "Token_id": "t1",
            "Token_name": "obptok",
            "Token_to_currency_ratio": 999,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    },
    {
        "key": "obp2",
        "valueJson": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "holdable",
                "burnable",
                "roles"
            ],
            "Currency_name": "",
            "Divisible": {
                "Decimal": 8
            },
            "Mintable": {
                "Max_mint_quantity": 10000
            },
            "Roles": {
                "burner_role_name": "burner",
                "minter_role_name": "minter",
                "notary_role_name": "notary"
            },
            "Token_desc": "",
            "Token_id": "obp2",
            "Token_name": "obptok",
            "Token_to_currency_ratio": 0,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    }
]
IsTokenType
このメソッドは、指定されたトークンIDのトークン・アセットが存在するかどうかをテストします。
Ctx.Model.IsTokenType(token_id: string) error
パラメータ:
  • token_id: string – チェックするトークンのID。
戻り値:
  • 指定されたIDのトークン・アセットが存在する場合、nilエラー。それ以外の場合は、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
nil
GetByRange
このメソッドは、fabricのgetStateByRangeメソッドを内部的にコールします。指定されたIDを持つアセットが台帳から返されても、このメソッドはアセットをコール元のアセット・タイプにキャストします。
Ctx.Token.GetByRange(startId string, endId string, asset ...interface{}) ([]map[string]interface{}, error)
パラメータ:
  • startId: string– 範囲の開始キー。このキーは範囲に含まれます。
  • endId: string– 範囲の終了キー。このキーは範囲から除外されます。
  • asset[0] – 必要なタイプのトークンの空のスライス。メソッドが正常に実行されると、リクエストされた結果が含まれます。
戻り値:
  • 成功の場合、token_id値が指定された範囲内にあるトークンのトークン・アセット詳細を含むマップのスライス。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
[{
    "Key": "oaccount~loyaltok123~a4bd3d8abfb1708198971311df77bb527233bcf9121ff95b0526bc056c4b8974",
    "Record": {
        "AccountId": "oaccount~loyaltok123~a4bd3d8abfb1708198971311df77bb527233bcf9121ff95b0526bc056c4b8974",
        "AssetType": "oaccount",
        "Balance": 99,
        "BalanceOnHold": 1,
        "OnHoldBurnBalance": 0,
        "BapAccountVersion": 0,
        "OrgId": "Org1MSP",
        "TokenId": "t1",
        "TokenName": "loyaltok123",
        "UserId": "u1"
    }
}, {
    "Key": "oaccount~loyaltok123~ac30c5ca924a2c7def61acf596d91e0cca70bc8cd233179df4efb2791b56336b",
    "Record": {
        "AccountId": "oaccount~loyaltok123~ac30c5ca924a2c7def61acf596d91e0cca70bc8cd233179df4efb2791b56336b",
        "AssetType": "oaccount",
        "Balance": 0,
        "BalanceOnHold": 0,
        "OnHoldBurnBalance": 0,
        "BapAccountVersion": 0,
        "OrgId": "Org1MSP",
        "TokenId": "t1",
        "TokenName": "loyaltok123",
        "UserId": "u2"
    }
}, {
    "Key": "oaccount~loyaltok123~aef96c40d99e09ef17f9bdda7038e8fbe829a327bae2b4d8d9fcf752190f3ff0",
    "Record": {
        "AccountId": "oaccount~loyaltok123~aef96c40d99e09ef17f9bdda7038e8fbe829a327bae2b4d8d9fcf752190f3ff0",
        "AssetType": "oaccount",
        "Balance": 0,
        "BapAccountVersion": 0,
        "BalanceOnHold": 0,
        "OnHoldBurnBalance": 0,
        "OrgId": "Org1MSP",
        "TokenId": "t1",
        "TokenName": "loyaltok123",
        "UserId": "admin"
    }
}, {
    "Key": "oadmin~Org1MSP~admin",
    "Record": {
        "AssetType": "oadmin",
        "Key": "oadmin~Org1MSP~admin",
        "OrgId": "Org1MSP",
        "UserId": "admin"
    }
}, {
    "Key": "ohold~loyaltok123~t1~op1",
    "Record": {
        "AssetType": "ohold",
        "FromAccountId": "oaccount~loyaltok123~a4bd3d8abfb1708198971311df77bb527233bcf9121ff95b0526bc056c4b8974",
        "HoldingId": "ohold~loyaltok123~t1~op1",
        "NotaryAccountId": "oaccount~loyaltok123~ac30c5ca924a2c7def61acf596d91e0cca70bc8cd233179df4efb2791b56336b",
        "OperationId": "op1",
        "Quantity": 1,
        "TimeToExpiration": "0",
        "ToAccountId": "oaccount~loyaltok123~aef96c40d99e09ef17f9bdda7038e8fbe829a327bae2b4d8d9fcf752190f3ff0",
        "TokenId": "t1",
        "TokenName": "loyaltok123"
    }
}, {
    "Key": "ometadata~loyaltok123~t1",
    "Record": {
        "AssetType": "ometadata",
        "Metadata_id": "ometadata~loyaltok123~t1",
        "Token_id": "t1",
        "Token_name": "loyaltok123",
        "Total_minted_amount": 100,
        "Total_supply": 100
    }
}, {
    "Key": "orole~t1~minter~oaccount~loyaltok123~a4bd3d8abfb1708198971311df77bb527233bcf9121ff95b0526bc056c4b8974",
    "Record": {
        "AccountID": "oaccount~loyaltok123~a4bd3d8abfb1708198971311df77bb527233bcf9121ff95b0526bc056c4b8974",
        "AssetType": "orole",
        "Key": "orole~t1~minter~oaccount~loyaltok123~a4bd3d8abfb1708198971311df77bb527233bcf9121ff95b0526bc056c4b8974",
        "RoleName": "minter",
        "TokenId": "t1"
    }
}, {
    "Key": "otransaction~4a774f6493f6521cab9eda96822cb3bb4103c0738ee2dbb9a193b868ace36fa5",
    "Record": {
        "Amount": 100,
        "AssetType": "otransaction",
        "FromAccountId": "",
        "HoldingId": "",
        "NumberOfSubTransactions": 0,
        "Timestamp": "2021-08-25T23:04:42+05:30",
        "ToAccountId": "oaccount~loyaltok123~a4bd3d8abfb1708198971311df77bb527233bcf9121ff95b0526bc056c4b8974",
        "TokenId": "t1",
        "TransactionId": "otransaction~4a774f6493f6521cab9eda96822cb3bb4103c0738ee2dbb9a193b868ace36fa5",
        "TransactionType": "MINT"
    }
}, {
    "Key": "otransaction~69f3cefbcb64b73f01a0eadff87169f456873ccebe61ca8da3eef3f465f0c129",
    "Record": {
        "Amount": 1,
        "AssetType": "otransaction",
        "FromAccountId": "oaccount~loyaltok123~a4bd3d8abfb1708198971311df77bb527233bcf9121ff95b0526bc056c4b8974",
        "HoldingId": "ohold~loyaltok123~t1~op1",
        "NumberOfSubTransactions": 0,
        "Timestamp": "2021-08-25T23:06:13+05:30",
        "ToAccountId": "oaccount~loyaltok123~aef96c40d99e09ef17f9bdda7038e8fbe829a327bae2b4d8d9fcf752190f3ff0",
        "TokenId": "t1",
        "TransactionId": "otransaction~69f3cefbcb64b73f01a0eadff87169f456873ccebe61ca8da3eef3f465f0c129",
        "TransactionType": "ONHOLD"
    }
}, {
    "Key": "t1",
    "Record": {
        "AssetType": "otoken",
        "Behavior": ["divisible", "mintable", "transferable", "burnable", "holdable", "roles"],
        "Currency_Name": "a",
        "Divisible": {
            "Decimal": 2
        },
        "Effective_From_Date": "2020-09-09T00:00:00Z",
        "Mintable": {
            "Max_mint_quantity": 10000
        },
        "Roles": {
            "minter_role_name": "minter"
        },
        "Token_To_Currency_Ratio": 1,
        "Token_desc": "",
        "Token_id": "t1",
        "Token_name": "loyaltok123",
        "Token_type": "fungible"
    }
}]

アカウント管理のメソッド

GenerateAccountId
このメソッドは、アカウントIDを返します。アカウントIDは英数字のセットです。アカウントIDは、oaccount~<token asset name>~が先頭に付き、インスタンス所有者およびインスタンスにログインしているユーザーのユーザー名または電子メールID (user_id)、現在のネットワーク組織内のユーザーの会員サービス・プロバイダID (org_id)および一意のトークンID (token_id)のハッシュが続きます。
Ctx.Account.GenerateAccountId(token_id string, org_id string, user_id string) (string, error)
パラメータ:
  • token_id: string – トークンのID。
  • org_id: string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id: string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、生成されたアカウントID。エラーの場合、エラー・メッセージ付きの拒否。
戻り値の例:
oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f
CreateAccount
このメソッドは、指定されたユーザーおよびトークンのアカウントを作成します。いずれかの時点でトークンを保有するすべてのユーザーはアカウントを持っている必要があります。アカウントは、ユーザーの残高、保留残高およびトランザクション履歴を追跡します。アカウントIDは英数字のセットです。アカウントIDは、oaccount~<token asset name>~が先頭付き、インスタンス所有者およびインスタンスにログインしているユーザーのユーザー名または電子メールID (user_id)と現在のネットワーク組織内のユーザーの会員サービス・プロバイダID (org_id)のハッシュが続きます。このメソッドは、チェーンコードのToken Adminのみがコールできます。
t.Ctx.Account.CreateAccount(org_id string, user_id string, token_type string)
パラメータ:
  • org_id: string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id: string – ユーザーのユーザー名または電子メールID。
  • token_type: string – トークンのタイプ。fungibleである必要があります。
戻り値:
  • 成功の場合、作成されたアカウント・オブジェクト。エラーの場合、エラー・メッセージ付きの拒否。
戻り値の例:
{
 "AssetType":"oaccount",
"AccountId":"oaccount~a73085a385bc96c4a45aa2dff032e7dede82c0664dee5f396b7c5854eeafd4bd",
   "UserId":"user1",
   "OrgId":"Org1MSP",
   "BapAccountVersion": 0,
   "AccountType":"fungible",
   "TokenId":"",
   "TokenName":"",
   "Balance":0,
   "BalanceOnHold":0,
   "OnHoldBurnBalance":0
}
AssociateToken
このメソッドは、代替可能トークンをアカウントに関連付けます。このメソッドは、チェーンコードのToken Adminのみがコールできます。
t.Ctx.Account.AssociateToken(account_id, token_id)
パラメータ:
  • account_id string – アカウントのID。
  • token_id string – トークンのID。
戻り値:
  • 成功の場合、更新されたアカウントのJSONオブジェクト。
戻り値の例:
{ 
"AssetType":"oaccount", 
"AccountId":"oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb", 
"BapAccountVersion": 0,
"UserId":"admin", 
"OrgId":"Org1MSP", 
"AccountType":"fungible", 
"TokenId":"token1", 
"TokenName":"loyaltok", 
"Balance":0, 
"BalanceOnHold":0, 
"OnHoldBurnBalance":0
}
GetAccountWithStatus
このメソッドは、指定されたアカウントのアカウントの詳細(アカウント・ステータスを含む)を返します。
Ctx.Account.GetAccountWithStatus(account_id string) (interface{}, error)
パラメータ:
  • account_id: string – アカウントのID。
戻り値:
  • 成功の場合、要求されたアカウントの詳細。エラーの場合、エラー・メッセージ付きの拒否。
戻り値の例:
{
  "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
  "AssetType": "oaccount",
  "Balance": 95,
  "BalanceOnHold": 0,
  "OnHoldBurnBalance": 0,
  "BapAccountVersion": 8,
  "OrgId": "appdev",
  "Status": "active",
  "TokenId": "obp1",
  "TokenName": "obptok",
  "TokenType": "fungible",
  "UserId": "idcqa"
}
GetAccount
このメソッドは、指定されたアカウントのアカウントの詳細を返します。
Ctx.Account.GetAccount(account_id string) (Account, error)
パラメータ:
  • account_id: string – アカウントのID。
戻り値:
  • 成功の場合、要求されたアカウントの詳細。エラーの場合、エラー・メッセージ付きの拒否。
戻り値の例:
{
    "AssetType": "oaccount",
    "BapAccountVersion": 0,
    "AccountId": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
    "UserId": "user1",
    "OrgId": "Org1MSP",
    "TokenId": "digiCurr101",
    "TokenName": "digicur",
    "Balance": 0,
    "BalanceOnHold": 0,
    "OnHoldBurnBalance": 0
}
GetAccountHistory
このメソッドは、指定されたアカウントのアカウント履歴詳細の配列を返します。
Ctx.Account.History(account_id string) ([]interface{}, error)
パラメータ:
  • account_id: string – アカウントのID。
戻り値:
  • 成功の場合、アカウント履歴の詳細を含むmap[string]interface{}配列。アカウント・データは、マップのValueキーの下に表示されます。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。戻り値は、GetAccountHistoryメソッドと同じです。
戻り値の例:
[
  {
      "IsDelete": "false",
      "Timestamp": "2023-08-28T19:31:15Z",
      "TxId": "adde470a63860ec1013bd5c5987e8a506a48942a91b0f39fc8e561374042bd27",
      "Value": {
          "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
          "AssetType": "oaccount",
          "Balance": 100,
          "BalanceOnHold": 0,
          "OnHoldBurnBalance": 0,
          "BapAccountVersion": 1,
          "OrgId": "Org1MSP",
          "TokenId": "t1",
          "TokenName": "obptok",
          "TokenType": "fungible",
          "UserId": "idcqa"
      }
  },
  {
      "IsDelete": "false",
      "Timestamp": "2023-08-28T19:30:23Z",
      "TxId": "8fbeda2ba60ba175091faae5ae369247775f2cba45c4d6d1ead6f0b05be84743",
      "Value": {
          "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
          "AssetType": "oaccount",
          "Balance": 0,
          "BalanceOnHold": 0,
          "OnHoldBurnBalance": 0,
          "BapAccountVersion": 0,
          "OrgId": "Org1MSP",
          "TokenId": "t1",
          "TokenName": "obptok",
          "TokenType": "fungible",
          "UserId": "idcqa"
      }
  },
  {
      "IsDelete": "false",
      "Timestamp": "2023-08-28T19:29:54Z",
      "TxId": "19bb296ae71709e91b097ba5d9ebd7f7522095880382fbf5913334a46a6026aa",
      "Value": {
          "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
          "AssetType": "oaccount",
          "Balance": 0,
          "BalanceOnHold": 0,
          "OnHoldBurnBalance": 0,
          "BapAccountVersion": 0,
          "OrgId": "Org1MSP",
          "TokenId": "",
          "TokenName": "",
          "TokenType": "fungible",
          "UserId": "idcqa"
      }
  }
]
GetAccountOnHoldBalance
このメソッドは、指定されたアカウントの保留残高を返します。
Ctx.Account.getAccountOnHoldBalance(account_id: string)
パラメータ:
  • account_id: string – アカウントのID。
戻り値:
  • 成功の場合、現在の保留残高と成功メッセージを含むpromiseオブジェクト。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
{
   "holding_balance":0,
   "msg":"Total Holding Balance of Account Id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id: Org1MSP, user_id: user1) is 0"
}
GetAllAccounts
このメソッドは、すべてのアカウントのリストを返します。このメソッドでは、Berkeley DB SQLリッチ問合せが使用され、リモートOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
Ctx.func (t *Controller) GetAllAccounts() (interface{}, error)
パラメータ:
  • なし
戻り値:
  • 成功の場合、すべてのアカウントをリストするJSON配列。
戻り値の例:
"payload": [
    {
        "key": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
        "valueJson": {
            "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
            "AssetType": "oaccount",
            "Balance": 100,
            "BalanceOnHold": 0,
            "OnHoldBurnBalance": 0, 
            "BapAccountVersion": 1,
            "OrgId": "appdev",
            "TokenId": "t1",
            "TokenName": "obptok",
            "TokenType": "fungible",
            "UserId": "idcqa"
        }
    }
]
GetUserByAccountId
このメソッドは、指定されたアカウントのユーザー詳細を返します。
Ctx.Account.GetUserByAccountById(account_id string) (interface{}, error)
パラメータ:
  • account_id: string – アカウントのID。
戻り値:
  • 成功の場合、3つのプロパティを含むJSONオブジェクトを含むpromise:
    • user_id – ユーザーのユーザー名または電子メールID。
    • org_id – 現在のネットワーク組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
    • token_id – トークンのID。
  • エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
{
   "org_id":"Org1MSP",
   "token_id":"digiCurr101",
   "user_id":"user1"
}
GetAccountBalance
このメソッドは、指定されたアカウントのアカウント残高を返します。
Ctx.GetAccountBalance(token_id string, org_id string, user_id string) (interface{}, error)
パラメータ:
  • account_id: string – アカウントのID。
戻り値:
  • 成功の場合、メッセージ文字列と現在の残高を含むインタフェース。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
{
    "msg": "Current Balance of +p2uaMTsU9D74l9XpHQ2c55ic/2gbO4NZITC4Zq4P8E= is: 200",
    "user_balance": 200
}
GetAllOrgAccounts
このメソッドは、指定された組織に属するすべてのトークン・アカウントのリストを返します。
Ctx.Account.GetAllOrgAccounts(org_id string) (interface{}, error)
パラメータ:
  • org_id: string – 組織のメンバーシップ・サービス・プロバイダ(MSP) ID。
戻り値:
  • 成功の場合、指定した組織のすべてのアカウントのリスト。
戻り値の例:
[
    {
        "key": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
        "valueJson": {
            "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
            "AssetType": "oaccount",
            "Balance": 0,
            "BalanceOnHold": 0,
            "OnHoldBurnBalance": 0,
            "BapAccountVersion": 0,
            "OrgId": "appdev",
            "TokenId": "token",
            "TokenName": "fiatmoneytok",
            "TokenType": "fungible",
            "UserId": "idcqa"
        }
    },
    {
        "key": "oaccount~9c650574af9025a6106c8d12a801b079eda9ae2e3399fc2fbd5bd683d738a850",
        "valueJson": {
            "AccountId": "oaccount~9c650574af9025a6106c8d12a801b079eda9ae2e3399fc2fbd5bd683d738a850",
            "AssetType": "oaccount",
            "Balance": 0,
            "BalanceOnHold": 0,
            "OnHoldBurnBalance": 0,
            "BapAccountVersion": 0,
            "OrgId": "appdev",
            "TokenId": "token",
            "TokenName": "fiatmoneytok",
            "TokenType": "fungible",
            "UserId": "example_minter"
        }
    }
]

ロール管理のメソッド

AddRoleMember
このメソッドは、指定されたユーザーおよびトークンにロールを追加します。
Ctx.Token.AddRoleMember(role string, account_id string, tokenAsset interface{}) (interface{}, error)
パラメータ:
  • role: string – 指定したユーザーに追加するロールの名前。mintableおよびburnableの動作は、仕様ファイルのminter_role_nameおよびburner_role_nameプロパティに対応します。同様に、notaryロールは、仕様ファイルのnotary_role_nameプロパティに対応します。
  • account_id: number – ロールを追加するアカウントID。
  • tokenAssettokenAsset引数には、操作するトークン・データの参照が含まれます。
戻り値:
  • 成功の場合、アカウントへのロールの追加を示す成功メッセージを含むマップが返されます。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
{
   "msg":"Successfully added role minter to oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1)"
}
RemoveRoleMember
このメソッドは、指定されたユーザーおよびトークンからロールを削除します。
Ctx.Token.RemoveRoleMember(role string, account_id string, tokenAsset interface{}) (interface{}, error)
パラメータ:
  • role: string – 指定したユーザーから削除するロールの名前。mintableおよびburnableの動作は、仕様ファイルのminter_role_nameおよびburner_role_nameプロパティに対応します。同様に、notaryロールは、仕様ファイルのnotary_role_nameプロパティに対応します。
  • account_id: number – ロールを削除するアカウントID。
  • tokenAssettokenAsset引数には、操作するトークン・データの参照が含まれます。
戻り値:
  • 成功の場合、アカウントからのロールの削除を示す成功メッセージを含むマップが返されます。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
{
  "msg":"successfully removed member_id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1) from role minter"
}
GetAccountsByRole
このメソッドは、指定されたロールおよびトークンのすべてのアカウントのリストを返します。
Ctx.Role.GetAccountsByRole(token_id string, user_role string) (interface{}, error)
パラメータ:
  • token_id: string – トークンのID。
  • role: string – 検索するロールの名前。
戻り値:
  • 成功の場合、アカウントIDのJSON配列。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
{"accounts":["oaccount~obptok~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f"]}
GetUsersByRole
このメソッドは、指定されたロールおよびトークンのすべてのユーザーのリストを返します。
Ctx.Role.GetUsersByRole(token_id string, user_role string) (interface{}, error)
パラメータ:
  • token_id: string – トークンのID。
  • role: string – 検索するロールの名前。
戻り値:
  • 成功の場合、ユーザー・オブジェクトのJSON配列。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
{
    "Users": [
        {
            "token_id":"digiCurr101",
            "user_id": "user1",
            "org_id": "Org1MSP"
        }
    ]
}
IsInRole
このメソッドは、ユーザーおよびトークンに指定されたロールがあるかどうかを示します。
Ctx.Token.IsInRole(role string, account_id string, tokenAsset interface{}) (bool, error)
パラメータ:
  • role: string – チェックするロールの名前。
  • account_id: number– チェックするアカウントID。
  • tokenAssettokenAsset引数には、操作するトークン・データの参照が含まれます。
戻り値:
  • 成功の場合、アカウントからのロールの削除を示す成功メッセージを含むマップが返されます。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
{
    "result": false
}
GetOrgAccountsByRole
このメソッドは、指定された組織内の指定されたロールを持つすべてのアカウントに関する情報を返します。
Ctx.Role.GetOrgAccountsByRole(token_id string, user_role string, org_id string) (interface{}, error)
パラメータ:
  • token_id: string – トークンのID。
  • role: string – チェックするロールの名前。
  • org_id: string – 組織のメンバーシップ・サービス・プロバイダ(MSP) ID。
戻り値:
  • 成功の場合、指定した組織内の指定したロールを持つすべてのアカウントのリスト。
戻り値の例:
{
    "accounts": [
        "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
         "oaccount~9c650574af9025a6106c8d12a801b079eda9ae2e3399fc2fbd5bd683d738a850"
    ]
}
GetOrgUsersByRole
このメソッドは、指定された組織内の指定されたロールを持つすべてのユーザーに関する情報を返します。
Ctx.Role.GetOrgUsersByRole(token_id string, user_role string, org_id string) (interface{}, error)
パラメータ:
  • token_id: string – トークンのID。
  • role: string – チェックするロールの名前。
  • org_id: string – 組織のメンバーシップ・サービス・プロバイダ(MSP) ID。
戻り値:
  • 成功の場合、指定した組織内の指定したロールを持つすべてのユーザーのリスト。
戻り値の例:
{
    "Users": [
        {
            "org_id": "Org1MSP",
            "token_id": "token",
            "user_id": "admin"
        },
        {
            "org_id": "Org1MSP",
            "token_id": "token",
            "user_id": "orgAdmin"
        }
    ]
}
RoleCheck
このメソッドは、指定されたアカウントIDがいずれかのロールのメンバーかどうかをチェックします。
Ctx.Token.RoleCheck(account_id string, tokenAsset interface{}) (bool, error)
パラメータ:
  • account_id: string– チェックするアカウントID。
  • tokenAssettokenAsset引数には、操作するトークン・データの参照が含まれます。
戻り値:
  • 指定したアカウントにロールがある場合、成功メッセージおよびブール値true。そうでない場合はブール値false。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
{ result: true }

トランザクション履歴管理のメソッド

GetAccountTransactionHistory
このメソッドは、指定されたアカウントのトランザクション履歴詳細の配列を返します。
Ctx.Account.GetAccountTransactionHistory(account_id string) (interface{}, error)
パラメータ:
  • account_id: string – アカウントのID。
戻り値:
  • 戻り値は、GetAccountTransactionHistoryメソッドと同じです。
  • 成功の場合、JSONアカウント・トランザクション・オブジェクトの配列。
  • エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
[
  {
      "NumberOfSubTransactions": 2,
      "balance": 160,
      "onhold_balance": 0,
      "timestamp": "2023-09-06T06:51:48Z",
      "token_id": "t1",
      "transacted_amount": 20,
      "transaction_id": "otransaction~bd3e8d7d0bcdbed0469a2fccfe95f7ebbeb1987d8385bccf5c84bf80251e748c",
      "transaction_type": "BULKTRANSFER"
  },
  {
      "balance": 180,
      "onhold_balance": 0,
      "timestamp": "2023-09-06T06:47:14Z",
      "token_id": "t1",
      "transacted_account": "oaccount~692a7465c01e36b694cb8ae86e6c6584240aa1f865fde54f95f32429eadd4097",
      "transacted_amount": 10,
      "transaction_id": "otransaction~250996f1df6a36a1b647f522efcaaf48fd70452d711c247fc4cd475b8e752b08",
      "transaction_type": "DEBIT"
  },
  {
      "balance": 190,
      "onhold_balance": 0,
      "timestamp": "2023-09-06T06:47:08Z",
      "token_id": "t1",
      "transacted_account": "oaccount~bb5a0b57d895327c8a8cd1f267310cbf3ae542bc854fab8188b5083a969d72fb",
      "transacted_amount": 10,
      "transaction_id": "otransaction~664325a25ae6b19b23693c66f83811184e0a78fabb49122359a2dbf209f32976",
      "transaction_type": "DEBIT"
  },
  {
      "balance": 200,
      "onhold_balance": 0,
      "timestamp": "2023-09-06T06:46:46Z",
      "token_id": "t1",
      "transacted_account": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
      "transacted_amount": 100,
      "transaction_id": "otransaction~7f49564b1eb61d4c8be0ef61cd5e635b533ca533907944e4ec500f390237fd6b",
      "transaction_type": "MINT"
  },
  {
      "balance": 100,
      "onhold_balance": 0,
      "timestamp": "2023-08-28T19:31:15Z",
      "token_id": "t1",
      "transacted_account": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
      "transacted_amount": 100,
      "transaction_id": "otransaction~adde470a63860ec1013bd5c5987e8a506a48942a91b0f39fc8e561374042bd27",
      "transaction_type": "MINT"
  }
]
GetAccountTransactionHistoryWithFilters
このメソッドは、指定されたトランザクションのトランザクション履歴詳細の配列を返します。このメソッドは、リモートOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
t.Ctx.Account.GetAccountTransactionHistoryWithFilters (transaction_id: string, filters?: SubTransactionFilters)
パラメータ:
  • Transaction_id: string – トランザクションのID。
  • filters: string – オプション・パラメータ。空の場合は、すべてのレコードが返されます。PageSizeプロパティは、返すレコード数を決定します。PageSizeが0の場合、デフォルトのページ・サイズは20です。Bookmarkプロパティは、返されるレコードの開始索引を決定します。詳細は、Hyperledger Fabricのドキュメントを参照してください。StartTimeおよびEndTimeプロパティは、RFC-3339形式で指定する必要があります。
次に例を示します:

ochain invoke GetAccountTransactionHistoryWithFilters 'token1' 'appbuilder12' 'user_minter' '{"PageSize":10,"Bookmark":"1","StartTime":"2022-01-25T17:41:42Z","EndTime":"2022-01-25T17:59:10Z"}'

[
    {
        "balance": 90,
        "onhold_balance": 0,
        "timestamp": "2022-04-20T19:43:36Z",
        "token_id": "tokenId",
        "transacted_account": "oaccount~7a4d67118e623a876b77c67e76b819269a8d4a509aece5d2263fb274a9beb3b8",
        "transacted_amount": 5,
        "transaction_id": "otransaction~dd9986d3686e52264935558e42026fbf8a9af48b06a3256a58b453f5ada4e636",
        "transaction_type": "DEBIT"
    },
    {
        "balance": 95,
        "onhold_balance": 0,
        "timestamp": "2022-04-20T19:43:22Z",
        "token_id": "tokenId",
        "transacted_account": "oaccount~0642308fc4c514c257ebf04326c63f990e2531bfd59d0b952056094da61e04ab",
        "transacted_amount": 5,
        "transaction_id": "otransaction~5e53424de3d691cf6b2a55ea3dc478c555d8784111c11847e594194d6c2e7755",
        "transaction_type": "DEBIT"
    },
    {
        "balance": 100,
        "onhold_balance": 0,
        "timestamp": "2022-04-20T19:42:54Z",
        "token_id": "tokenId",
        "transacted_account": "oaccount~b63935592a702d30bedb87ae97b9b1ba7d0f346716adc4f5a4192220bf410d4e",
        "transacted_amount": 100,
        "transaction_id": "otransaction~94c467825ce9f66cc69958d38b169022a69eebc66b75b7d6e0b0585af2c3c228",
        "transaction_type": "MINT"
    }
]
GetSubTransactionsById
このメソッドは、指定されたトランザクションのトランザクション履歴詳細の配列を返します。
t.Ctx.Account.GetSubTransactionsById(transaction_id string)
パラメータ:
  • transaction_id: string – トランザクションのID。
次に例を示します:

ochain invoke GetSubTransactionsById 'otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b'

[
    {
        "balance": 80,
        "onhold_balance": 0,
        "timestamp": "2022-04-21T05:02:33Z",
        "token_id": "tokenId",
        "transacted_account": "oaccount~7a4d67118e623a876b77c67e76b819269a8d4a509aece5d2263fb274a9beb3b8",
        "transacted_amount": 5,
        "transaction_id": "otransaction~33de5d63058d5e9abc011bc850878dfb7ac3080495729aed345c45b2f21735fa~c81e728d9d4c2f636f067f89cc14862c",
        "transaction_type": "DEBIT"
    },
    {
        "balance": 85,
        "onhold_balance": 0,
        "timestamp": "2022-04-21T05:02:33Z",
        "token_id": "tokenId",
        "transacted_account": "oaccount~0642308fc4c514c257ebf04326c63f990e2531bfd59d0b952056094da61e04ab",
        "transacted_amount": 5,
        "transaction_id": "otransaction~33de5d63058d5e9abc011bc850878dfb7ac3080495729aed345c45b2f21735fa~c4ca4238a0b923820dcc509a6f75849b",
        "transaction_type": "DEBIT"
    }
]
GetSubTransactionsByIdWithFilters
このメソッドは、指定されたトランザクションのトランザクション履歴詳細の配列を返します。
t.Ctx.Account.GetSubTransactionsByIdWithFilters(transaction_id string, filters ...SubTransactionFilters)
パラメータ:
  • transaction_id: string – トランザクションのID。
  • filters: string – オプション・パラメータ。空の場合は、すべてのレコードが返されます。PageSizeプロパティは、返すレコード数を決定します。PageSizeが0の場合、デフォルトのページ・サイズは20です。Bookmarkプロパティは、返されるレコードの開始索引を決定します。詳細は、Hyperledger Fabricのドキュメントを参照してください。StartTimeおよびEndTimeプロパティは、RFC-3339形式で指定する必要があります。
次に例を示します:

ochain invoke GetSubTransactionsByIdWithFilters 'otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b' '{"PageSize":10,"Bookmark":"1"}'

[
    {
        "balance": 80,
        "onhold_balance": 0,
        "timestamp": "2022-04-21T05:02:33Z",
        "token_id": "tokenId",
        "transacted_account": "oaccount~7a4d67118e623a876b77c67e76b819269a8d4a509aece5d2263fb274a9beb3b8",
        "transacted_amount": 5,
        "transaction_id": "otransaction~33de5d63058d5e9abc011bc850878dfb7ac3080495729aed345c45b2f21735fa~c81e728d9d4c2f636f067f89cc14862c",
        "transaction_type": "DEBIT"
    },
    {
        "balance": 85,
        "onhold_balance": 0,
        "timestamp": "2022-04-21T05:02:33Z",
        "token_id": "tokenId",
        "transacted_account": "oaccount~0642308fc4c514c257ebf04326c63f990e2531bfd59d0b952056094da61e04ab",
        "transacted_amount": 5,
        "transaction_id": "otransaction~33de5d63058d5e9abc011bc850878dfb7ac3080495729aed345c45b2f21735fa~c4ca4238a0b923820dcc509a6f75849b",
        "transaction_type": "DEBIT"
    }
]
GetTransactionById
このメソッドは、Transactionアセットの履歴を返します。
t.Ctx.Transaction.GetTransactionById(transaction_id string)
パラメータ:
  • transaction_id string– トランザクション・アセットのID。
戻り値の例:
{
    "history": [
        {
            "IsDelete": "false",
            "Timestamp": "2021-08-16 20:19:05.028 +0530 IST",
            "TxId": "67042154a6853011d111b13f73943f06d2a6ae3cfb9a84cb104482c359eb2220",
            "Value": {
                "Amount": 3,
                "AssetType": "otransaction",
                "FromAccountId": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
                "HoldingId": "ohold~digicur~digiCurr101~op2",
                "NumberOfSubTransactions": 0,
                "Timestamp": "2021-08-16T20:19:05+05:30",
                "ToAccountId": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
                "TokenId": "digiCurr101",
                "TransactionId": "otransaction~67042154a6853011d111b13f73943f06d2a6ae3cfb9a84cb104482c359eb2220",
                "TransactionType": "RELEASEHOLD"
            }
        }
    ],
    "transaction_id": "otransaction~67042154a6853011d111b13f73943f06d2a6ae3cfb9a84cb104482c359eb2220"
}
DeleteHistoricalTransactions
このメソッドは、状態データベースから古いトランザクションを削除します。
func (t *Controller) DeleteHistoricalTransactions(timestamp string) (interface{}, error)
パラメータ:
  • time_to_expiration: Date – トランザクションを削除するタイミングを示すタイムスタンプ。指定した時間より古いトランザクション・アセットが削除されます。
戻り値の例:
"payload": {
    "msg": "Successfuly deleted transaction older than date:2021-08-18T05:43:30Z",
    "transactions": [
        "otransaction~57d81f681aa215bb73d6c017d16be8b283d3fcb50051c85891a97d1d407fc342"
    ]
}

トークン動作管理のメソッド- ミント可能動作

Mint
このメソッドはトークンをミントし、その後、メソッドのコール元がそれらのトークンを所有します。コール元には、アカウントとミンターのロールが必要です。ミント可能なトークンの数は、仕様ファイルのmintable動作のmax_mint_quantityプロパティによって制限されます。max_mint_quantityプロパティを指定しない場合、無制限の数のトークンをミントできます。数量は、仕様ファイルのdivisible動作のdecimalパラメータで指定された10進数値内にする必要があります。このメソッドは、ミンター・ロールを持つアカウントのAccountOwnerのみがコールできます。
Ctx.Token.Mint(quantity float64, tokenAsset interface{}) (interface{}, error)
パラメータ:
  • quantity: number – ミントするトークンの合計数。
  • tokenAsset – ミントするトークン・アセットへの参照。
戻り値:
  • 成功の場合、成功メッセージ。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
{
  "msg":"Successfully minted 1000 tokens to Account Id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP, User-Id: admin)"
}
GetTotalMintedTokens
このメソッドは、ミントされたトークンの合計数を返します。
Ctx.Token.GetTotalMintedTokens(tokenAsset interface{}) (map[string]interface{}, error)
パラメータ:
  • tokenAssettokenAsset引数には、操作するトークン・データの参照が含まれます。
戻り値:
  • 成功の場合、成功メッセージと、数値データ型の合計ミント・トークンのマップ。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
{"msg":"total minted amount for token with id digiCurr101 is 0","quantity":0}
GetNetTokens
このメソッドは、指定されたトークンに対してシステムで使用可能なトークンの正味数量を返します。正味トークンは、トークンのバーン後に残存するトークンの数量です。等式では、正味トークン = ミントされたトークンの合計 - バーンされたトークンの合計です。トークンがバーンされていない場合、正味トークン数は、ミントされたトークンの合計と等しくなります。
Ctx.Token.GetNetTokens(tokenAsset interface{}) (map[string]interface{}, error)
パラメータ:
  • tokenAssettokenAsset引数には、操作するトークン・データの参照が含まれます。
戻り値:
  • 成功の場合、成功メッセージと数値データ型のトークンの正味数量のマップ。エラーの場合、エラー・メッセージ。
戻り値の例:
{"msg":"net minted amount for token with id digiCurr101 is 0","quantity":0}
GetMaxMintQuantity
このメソッドは、トークンの最大ミント可能量を返します。max_mint_quantity動作が指定されていない場合、デフォルト値は0で、任意の数のトークンをミントできます。
Ctx.Token.GetMaxMintQuantity(token_id string) (float64, error)
パラメータ:
  • token_id: string– チェックするトークンID。
戻り値:
  • 成功の場合、トークンの最大ミント可能量(数値データ型)。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
20000

トークン動作管理のメソッド- 転送可能動作

Transfer
このメソッドは、トークンをコール元から指定されたアカウントに転送します。メソッドのコール元にはアカウントが必要です。数量は、仕様ファイルのdivisible動作のdecimalパラメータで指定された10進数値内にする必要があります。このメソッドは、アカウントのAccountOwnerのみがコールできます。
Ctx.Token.Transfer(to_account_id string, quantity float64, tokenAsset interface{}) (interface{}, error)
パラメータ:
  • to_account_id: string – トークンを受け取るアカウントID。
  • quantity: number – 転送するトークンの合計数。
  • tokenAssettokenAsset引数には、操作するトークン・データの参照が含まれます。
戻り値:
  • 成功の場合、成功メッセージ。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。戻り値は、TransferTokensメソッドと同じです。
戻り値の例:
{     "msg":"Successfully transferred 50 tokens from account id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP,  User-Id: admin) to account id: oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (Org-Id: Org1MSP, User-Id: user1)"
}
BulkTransfer
このメソッドは、トークンを呼出し元アカウントからflowオブジェクトで指定されたアカウントに一括で転送します。このメソッドのコール元には、すでにアカウントが作成されている必要があります。
Ctx.Token.BulkTransfer(flow []map[string]interface{}, tokenAsset interface{}) (interface{}, error)
パラメータ:
  • flow: object[] – 受信者の詳細および数量を指定するJSONオブジェクトの配列。数量は、仕様ファイルのdivisible動作のdecimalパラメータで指定された10進数値内にする必要があります。たとえば:
    [{
    	"to_org_id": "Org1MSP",
    	"to_user_id": "user1",
    	"quantity": 10
    }, {
    	"to_org_id": "Org1MSP",
    	"to_user_id": "user2",
    	"quantity": 10
    }]
  • tokenAssettokenAsset引数には、操作するトークン・データの参照が含まれます。
戻り値:
  • 成功の場合、転送されたトークンの数を含む成功メッセージ。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
{
    "from_account_id": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
    "msg": "Successfully transferred 2 tokens from Account Id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (Org-Id: Org1MSP, User-Id: user1)",
    "sub_transactions": [
        {
            "amount": 1,
            "to_account_id": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e"
        },
        {
            "amount": 1,
            "to_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df"
        }
    ]
}

トークン動作管理メソッド- 保留可能動作

Hold
このメソッドは、to_account_idアカウントを持つトークンの所有者のかわりに保留を作成します。保留の完了または解除を担当する公証人アカウントが指定されます。保留が作成されると、支払者から指定されたトークン残高が保留になります。保留残高は、保留が完了または解除されるまで転送できません。このメソッドのコール元には、すでにアカウントが作成されている必要があります。
Ctx.Token.Hold(operation_id string, to_account_id string, notary_account_id string, quantity float64, TimeToExpiration string, tokenAsset)) (interface{}, error)
パラメータ:
  • operation_id: string – 保留操作を識別する一意のID。通常、このIDはクライアント・アプリケーションによって渡されます。
  • to_account_id: string – トークンを受け取るアカウントのID。
  • notary__account_id: string– 公証人アカウントのID。
  • quantity: number – 保留にするトークンの合計数。
  • time_to_expiration: date – 保留が期限切れになるまでの期間。永続的な保留の場合は0を指定します。それ以外の場合は、RFC-3339形式を使用します。たとえば、2021-06-02T12です。
  • tokenAssettokenAsset引数には、操作するトークン・データの参照が含まれます。
戻り値:
  • 成功の場合、成功メッセージ。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
{
 "msg": "account id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (org_id : Org1MSP, user_id : user1) is successfully holding 10 tokens",
}
ExecuteHold
このメソッドはトークンの保留を完了し、以前に保留にされていたトークンの指定数量を受信者に転送します。quantity値が実際の保留値より小さい場合、残りはトークンの元の所有者が再度使用できます。このメソッドは、notaryロールを持つAccountOwner IDのみがコールできます。
Ctx.Token.ExecuteHold(operation_id string, quantity float64, tokenAsset interface{}) (interface{}, error)
パラメータ:
  • operation_id: string – 保留操作を識別する一意のID。通常、このIDはクライアント・アプリケーションによって渡されます。
  • quantity: number – 保留にするトークンの合計数。
  • tokenAssettokenAsset引数には、操作するトークン・データの参照が含まれます。
戻り値:
  • 成功の場合、成功メッセージ。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
{"msg":"Account Id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1) has successfully executed '1' tokens(digiCurr101) from the hold with Operation Id 'op1'"}
ReleaseHold
このメソッドは、トークンの保留を解除します。転送は行われず、すべての保留トークンは元の所有者が再度使用できます。このメソッドは、指定された期限内はnotaryロールを持つAccount Owner IDが、指定された期限後は支払者、受取人または公証人がコールできます。
Ctx.Token.ReleaseHold(operation_id string, tokenAsset interface{}) (interface{}, error)
パラメータ:
  • operation_id: string – 保留操作を識別する一意のID。通常、このIDはクライアント・アプリケーションによって渡されます。
  • tokenAssettokenAsset引数には、操作するトークン・データの参照が含まれます。
戻り値:
  • 成功の場合、成功メッセージ。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
{"msg":"Successfully released '3' tokens from Operation Id 'op2' to Account Id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1)"}
GetOnHoldIds
このメソッドは、指定されたユーザーおよびトークンのすべての保留IDのリストを返します。
Ctx.Account.GetOnHoldIDs(account_id string) (map[string]interface{}, error)
パラメータ:
  • token_id – トークンのID。
  • org_id – 現在のネットワーク組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • user_id – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、保留IDのリストを含むJSONオブジェクト。保留IDは、アセット・タイプ(ohold)、トークン名、トークンIDおよび操作IDを連結して形成されます。
戻り値の例:
{"holding_ids":["ohold~loyaltok123~t1~op1"],"msg":"Holding Ids are: [ohold~loyaltok123~t1~op1]"}
GetOnHoldDetailsWithOperationID
このメソッドは、指定された操作IDおよびトークンの保留トランザクション詳細を返します。
Ctx.Hold.GetOnHoldDetailsWithOperationID(token_id string, operation_id string) (Hold, error)
パラメータ:
  • token_id: string – トークンのID。
  • operation_id: string – 保留操作を識別する一意のID。通常、このIDはクライアント・アプリケーションによって渡されます。
戻り値:
  • 戻り値は、GetOnHoldDetailsWithOperationIdメソッドと同じです。
  • 成功の場合、指定した操作IDおよびトークンの保留トランザクション詳細を含むpromiseオブジェクト。保留オブジェクトには次のプロパティが含まれます。
    • holding_id – トランザクションの保留ID。
    • operation_id: string – 保留操作を識別する一意のID。通常、このIDはクライアント・アプリケーションによって渡されます。
    • from_account_id – 保留トークンの現在の所有者のアカウントID。
    • to_account_id – 受信者のアカウントID。
    • notary_account_id – 公証人のアカウントID。
    • token_id: string– 保存されたトークンのID。
    • quantity – 保留IDに対して保留されているトークンの量。
    • time_to_expiration– 保留が期限切れになるまでの期間。
  • エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
{
    "AssetType": "ohold",
    "HoldingId": "ohold~digicur~digiCurr101~op1",
    "OperationId": "op1",
    "TokenName": "digicur",
    "FromAccountId": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
    "ToAccountId": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e",
    "NotaryAccountId": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
    "TokenId": "digiCurr101",
    "Quantity": 2,
    "TimeToExpiration": "0"
}
GetOnHoldBalanceWithOperationID
このメソッドは、指定された操作IDおよびトークンの保留残高を返します。
Ctx.Hold.GetOnHoldBalanceWithOperationID(token_id string, operation_id string) (map[string]interface{}, error)
パラメータ:
  • token_id: string – トークンのID。
  • operation_id: string – 保留操作を識別する一意のID。通常、このIDはクライアント・アプリケーションによって渡されます。
戻り値:
  • 成功の場合、指定された操作IDおよびトークンの保留残高。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
{
    "holding_balance": 10,
    "msg": "Current Holding Balance of OperationId opr_121 for token digiCurr101 is : 10"
}

トークン動作管理のメソッド- バーン可能動作

Burn
このメソッドは、トランザクション・コール元のアカウントからトークンを非アクティブ化またはバーンします。このメソッドのコール元には、アカウントとバーナー・ロールが必要です。数量は、仕様ファイルのdivisible動作のdecimalパラメータで指定された10進数値内にする必要があります。
Ctx.Token.Burn(quantity float64 , tokenAsset interface{}) (interface{}, error)
パラメータ:
  • quantity: number – バーンするトークンの合計数。
  • tokenAssettokenAsset引数には、操作するトークン・データの参照が含まれます。
戻り値:
  • 成功の場合、成功メッセージ。エラーの場合、エラー・メッセージを含むnil以外のエラー・オブジェクト。
戻り値の例:
{
 "msg":"Successfully burned 10 tokens from account id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP, User-Id: admin)"
}