토큰 분류법 프레임워크에 대한 비계 TypeScript 프로젝트

Blockchain App Builder는 토큰 사양 파일에서 입력을 가져와 완전히 작동하는 스캐폴드 체인 코드 프로젝트를 생성합니다.

이 프로젝트는 CRUD 및 비CRUD 메소드를 포함한 토큰 수명 주기 클래스 및 함수를 자동으로 생성합니다. 인수 검증, 마셜링/마셜링 해제 및 투명한 지속성 기능이 모두 자동으로 지원됩니다.

스캐폴딩된 프로젝트 및 토큰과 직접 관련이 없는 방법에 대한 자세한 내용은 Scaffolded TypeScript Chaincode Project를 참조하십시오.

모델

토큰화된 모든 모델 클래스는 Token 클래스를 확장하며 OchainModel 클래스를 확장합니다. Token 클래스는 ../lib/token에서 임포트됩니다. 투명한 지속성 기능 또는 단순화된 ORM은 OchainModel 클래스에서 캡처됩니다.

import * as yup from 'yup';
import { Id, Mandatory, Validate, ReadOnly } from '../lib/decorators';
import { Token } from '../lib/token';
 
@Id('token_id')
export class Digicur extends Token<Digicur> {
 
    public readonly assetType = 'otoken';
 
    @Mandatory()
    @Validate(yup.string().required().matches(/^[A-Za-z0-9][A-Za-z0-9_-]*$/).max(16))
    public token_id: string;
 
    @ReadOnly('digicur')
    public token_name: string;
 
    @Validate(yup.string().trim().max(256))
    public token_desc: string;
 
    @ReadOnly('fungible')
    public token_type: string;
 
    @ReadOnly(["divisible","mintable","transferable","burnable","holdable","roles"])
    public behaviors: string[];
 
    @ReadOnly({minter_role_name: "minter", burner_role_name: "burner", notary_role_name: "notary"})
    public roles: object;
 
    @ReadOnly({max_mint_quantity: 20000})
    public mintable: object;
 
    @ReadOnly({decimal: 1})
    public divisible: object;
 
    @Validate(yup.number())
    public token_to_currency_ratio: number;
 
    @Validate(yup.string())
    public currency_representation: string;
 
}

제어기

기본 컨트롤러 클래스는 OchainController 클래스를 확장합니다. 주 컨트롤러는 하나만 있습니다.

export class DigiCurrCCController extends OchainController{

원하는 수의 클래스, 함수 또는 파일을 만들 수 있지만 기본 컨트롤러 클래스에 정의된 메소드만 호출할 수 있습니다. 다른 방법은 숨겨져 있습니다.

토큰 SDK 메소드를 사용하여 업무용 응용 프로그램에 대한 커스텀 메소드를 작성할 수 있습니다.

자동으로 생성된 토큰 메소드

Blockchain App Builder는 토큰 및 토큰 수명 주기를 지원하는 메소드를 자동으로 생성합니다. 이러한 방법을 사용하여 추가 코딩 없이 토큰을 초기화하고, 역할 및 계정을 관리하고, 기타 토큰 수명 주기 작업을 완료할 수 있습니다. 컨트롤러 메소드에는 호출할 수 있는 @Validator(...params) 데코레이터가 있어야 합니다.

액세스 제어 관리 방법

addTokenAdmin
이 메소드는 사용자를 체인코드의 Token Admin로 추가합니다. 이 메소드는 체인 코드의 Token Admin에 의해서만 호출될 수 있습니다.
@Validator(yup.string(), yup.string())
public async addTokenAdmin(org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization('ADMIN.addAdmin', 'TOKEN');
    return await this.Ctx.Admin.addAdmin(org_id, user_id);
}
매개변수:
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 체인 코드의 Token Admin로 추가된 사용자의 세부정보를 포함하는 메시지입니다.
반환 값 예제:
{"msg":"Successfully added Admin (Org_Id: Org1MSP, User_Id: User1)"}
removeTokenAdmin
이 메소드는 사용자를 체인코드의 Token Admin로 제거합니다. 이 메소드는 체인 코드의 Token Admin에 의해서만 호출될 수 있습니다.
@Validator(yup.string(), yup.string())
public async removeTokenAdmin(org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization('ADMIN.removeAdmin', 'TOKEN');
    return await this.Ctx.Admin.removeAdmin(org_id, user_id);
}
매개변수:
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 체인 코드의 Token Admin로 제거된 사용자의 세부정보를 포함하는 메시지입니다.
반환 값 예제:
{"msg": "Successfully removed Admin (Org_Id: Org1MSP, User_Id: User1)"}
isTokenAdmin
이 메소드는 함수 호출자가 Token Admin인 경우 부울 값 true를 반환하고, 그렇지 않은 경우 false를 반환합니다. Token Admin 또는 Org Admin는 블록체인 네트워크의 다른 사용자에서 이 기능을 호출할 수 있습니다. 다른 사용자는 자신의 계정에서만 이 메소드를 호출할 수 있습니다.
@Validator(yup.string(), yup.string())
  public async isTokenAdmin(org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization("ADMIN.isUserTokenAdmin", "TOKEN");
    return await this.Ctx.Auth.isUserTokenAdmin(org_id, user_id);
  }
매개변수:
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 이 메소드는 호출자가 Token Admin인 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다.
getAllTokenAdmins
이 메소드는 체인 코드의 Token Admin인 모든 사용자 목록을 반환합니다. 이 메소드는 체인 코드의 Token Admin 또는 Org Admin에 의해서만 호출될 수 있습니다.
@Validator()
public async getAllTokenAdmins() {
    await this.Ctx.Auth.checkAuthorization('ADMIN.getAllAdmins', 'TOKEN');
    return await this.Ctx.Admin.getAllAdmins();
}
매개변수:
  • 없음
반환값:
  • 성공 시 orgIduserId 객체를 포함하는 JSON 형식의 admins 배열입니다.
반환 값 예제:
{"admins":[{"org_id":"Org1MSP","user_id":"admin"}]}
addOrgAdmin
이 메소드는 사용자를 조직의 Org Admin로 추가합니다. 이 메소드는 체인 코드의 Token Admin 또는 지정된 조직의 Org Admin에 의해서만 호출될 수 있습니다.
@Validator(yup.string(), yup.string())
  public async addOrgAdmin(org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization("ADMIN.addOrgAdmin", "TOKEN", { org_id });
    return await this.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에 의해서만 호출될 수 있습니다.
@Validator(yup.string(), yup.string())
  public async removeOrgAdmin(org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization("ADMIN.removeOrgAdmin", "TOKEN", { org_id });
    return await this.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에 의해서만 호출될 수 있습니다.
  @Validator()
  public async getOrgAdmins() {
    await this.Ctx.Auth.checkAuthorization("ADMIN.getOrgAdmins", "TOKEN");
    return await this.Ctx.Admin.getAllOrgAdmins();
  }
매개변수:
  • 없음
반환값:
  • 성공 시 orgIduserId 객체를 포함하는 JSON 형식의 배열입니다.
반환 값 예제:
{
    "admins": [
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin"
        },
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin1"
        },
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin2"
        }
    ]
}
addTokenAdmin
이 메소드는 사용자를 체인코드의 Token Admin로 추가합니다. 이 메소드는 체인 코드의 Token Admin에 의해서만 호출될 수 있습니다.
@Validator(yup.string(), yup.string())
public async addTokenAdmin(org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization('ADMIN.addAdmin', 'TOKEN');
    return await this.Ctx.Admin.addAdmin(org_id, user_id);
}
매개변수:
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 체인 코드의 Token Admin로 추가된 사용자의 세부정보를 포함하는 메시지입니다.
반환 값 예제:
{"msg":"Successfully added Admin (Org_Id: Org1MSP, User_Id: User1)"}
removeTokenAdmin
이 메소드는 사용자를 체인코드의 Token Admin로 제거합니다. 이 메소드는 체인 코드의 Token Admin에 의해서만 호출될 수 있습니다.
@Validator(yup.string(), yup.string())
public async removeTokenAdmin(org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization('ADMIN.removeAdmin', 'TOKEN');
    return await this.Ctx.Admin.removeAdmin(org_id, user_id);
}
매개변수:
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 체인 코드의 Token Admin로 제거된 사용자의 세부정보를 포함하는 메시지입니다.
반환 값 예제:
{"msg": "Successfully removed Admin (Org_Id: Org1MSP, User_Id: User1)"}
isTokenAdmin
이 메소드는 함수 호출자가 Token Admin인 경우 부울 값 true를 반환하고, 그렇지 않은 경우 false를 반환합니다. Token Admin, Token Auditor, Org Admin 또는 Org Auditor는 블록체인 네트워크의 다른 사용자로부터 이 기능을 호출할 수 있다. 다른 사용자는 자신의 계정에서만 이 메소드를 호출할 수 있습니다.
@Validator(yup.string(), yup.string())
  public async isTokenAdmin(org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization("ADMIN.isUserTokenAdmin", "TOKEN");
    return await this.Ctx.Auth.isUserTokenAdmin(org_id, user_id);
  }
매개변수:
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 이 메소드는 호출자가 Token Admin인 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다.
getAllTokenAdmins
이 메소드는 체인 코드의 Token Admin인 모든 사용자 목록을 반환합니다. 이 메소드는 체인 코드의 Token Admin 또는 Token Auditor에 의해서만 호출될 수 있습니다.
@Validator()
public async getAllTokenAdmins() {
    await this.Ctx.Auth.checkAuthorization('ADMIN.getAllAdmins', 'TOKEN');
    return await this.Ctx.Admin.getAllAdmins();
}
매개변수:
  • 없음
반환값:
  • 성공 시 orgIduserId 객체를 포함하는 JSON 형식의 admins 배열입니다.
반환 값 예제:
{"admins":[{"org_id":"Org1MSP","user_id":"admin"}]}
addOrgAdmin
이 메소드는 사용자를 조직의 Org Admin로 추가합니다. 이 메소드는 체인 코드의 Token Admin 또는 지정된 조직의 Org Admin에 의해서만 호출될 수 있습니다.
@Validator(yup.string(), yup.string())
  public async addOrgAdmin(org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization("ADMIN.addOrgAdmin", "TOKEN", { org_id });
    return await this.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에 의해서만 호출될 수 있습니다.
@Validator(yup.string(), yup.string())
  public async removeOrgAdmin(org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization("ADMIN.removeOrgAdmin", "TOKEN", { org_id });
    return await this.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, Token Auditor, 임의의 Org Admin 또는 임의의 Org Auditor를 통해서만 호출할 수 있습니다.
  @Validator()
  public async getOrgAdmins() {
    await this.Ctx.Auth.checkAuthorization("ADMIN.getOrgAdmins", "TOKEN");
    return await this.Ctx.Admin.getAllOrgAdmins();
  }
매개변수:
  • 없음
반환값:
  • 성공 시 orgIduserId 객체를 포함하는 JSON 형식의 배열입니다.
반환 값 예제:
{
    "admins": [
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin"
        },
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin1"
        },
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin2"
        }
    ]
}
addTokenAuditor
이 메소드는 사용자를 체인코드의 Token Auditor로 추가합니다. 이 메소드는 체인 코드의 Token Admin에 의해서만 호출될 수 있습니다.
public async addTokenAuditor(org_id: string, user_id: string)
매개변수:
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 체인 코드의 Token Auditor로 추가된 사용자의 세부정보를 포함하는 메시지입니다.
반환 값 예제:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "cd81f6c4c9e7c18ece357dbf5c139ef66ef2d6566be3b14de5f6d0a3fd4bb2f0",
        "payload": {
            "msg": "Successfully added Token Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20009",
        "blockNumber": 196
    }
}
removeTokenAuditor
이 메소드는 사용자를 체인코드의 Token Auditor로 제거합니다. 이 메소드는 체인 코드의 Token Admin에 의해서만 호출될 수 있습니다.
public async removeTokenAuditor(org_id: string, user_id: string)
매개변수:
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 체인 코드의 Token Auditor로 제거된 사용자의 세부정보를 포함하는 메시지입니다.
반환 값 예제:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "a886a6040fbc76374a3c78c89ab0ffc9f7b8391cc5239b169bf3b878cf40c67b",
        "payload": {
            "msg": "Successfully removed Token Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 219
    }
}
getTokenAuditors
이 메소드는 체인 코드의 모든 Token Auditors를 반환합니다. 이 메소드는 체인코드의 Token Admin 또는 Token Auditor에 의해서만 호출될 수 있습니다.
public async getTokenAuditors()
반환 값 예제:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "payload": {
            "auditors": [
                {
                    "org_id": "CB",
                    "user_id": "auditor_user_cb"
                }
            ]
        },
        "encode": "JSON"
    }
}
addOrgAuditor
이 메소드는 사용자를 체인코드의 Org Auditor로 추가합니다. 이 메소드는 체인코드의 Token Admin 또는 Org Admin에 의해서만 호출될 수 있습니다.
public async addOrgAuditor(org_id: string, user_id: string)
매개변수:
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 체인 코드의 Org Auditor로 추가된 사용자의 세부정보를 포함하는 메시지입니다.
반환 값 예제:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "44bbad35a1478cb714e32f7cfd551897868a203520aab9cea5771d3aadc1cf03",
        "payload": {
            "msg": "Successfully added Org Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20009",
        "blockNumber": 198
    }
}
removeOrgAuditor
이 메소드는 사용자를 체인코드의 Org Auditor로 제거합니다. 이 메소드는 체인코드의 Token Admin 또는 Org Admin에 의해서만 호출될 수 있습니다.
public async removeOrgAuditor(org_id: string, user_id: string)
매개변수:
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 체인 코드의 Org Auditor로 제거된 사용자의 세부정보를 포함하는 메시지입니다.
반환 값 예제:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "c3bc720461004a53b37c68d4bb264858b88d980bc093a0a3ebb62a32974fb306",
        "payload": {
            "msg": "Successfully removed Org Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 221
    }
}
getOrgAuditors
이 메소드는 체인 코드의 모든 Org Auditors를 반환합니다. 이 메소드는 Token Admin, Token Auditor, Org Admin 또는 Org Auditor를 통해서만 호출할 수 있습니다.
public async getOrgAuditors()
반환 값 예제:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "payload": {
            "auditors": [
                {
                    "org_id": "FI1",
                    "user_id": "auditor_user_fi1"
                },
                {
                    "org_id": "FI2",
                    "user_id": "auditor_user_fi2"
                }
            ]
        },
        "encode": "JSON"
    }
}

토큰 구성 관리 방법

init
이 메소드는 체인 코드가 배치되거나 업그레이드될 때 호출됩니다. 모든 Token Admin는 필수 adminList 매개변수의 user_idorg_id 정보로 식별됩니다. user_id은 인스턴스 소유자 또는 인스턴스에 로그인한 사용자의 사용자 이름 또는 전자메일 ID입니다. org_id는 현재 네트워크 조직에 있는 사용자의 멤버쉽 서비스 제공자(MSP) ID입니다.
모든 Token Admin 사용자는 addAdminremoveAdmin 메소드를 호출하여 다른 Token Admin 사용자를 추가 및 제거할 수 있습니다.
public async init(adminList: TokenAdminAsset[]) {
    await this.Ctx.Admin.initAdmin(adminList);
    return;
}
매개변수:
  • 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에 의해서만 호출될 수 있습니다.
@Validator(Digicur)
    public async initializeDigicurToken(token_asset: Digicur) {
        await this.Ctx.Auth.checkAuthorization('TOKEN.save', 'TOKEN');
        return await this.Ctx.Token.save(token_asset)
    }
매개변수:
  • asset <Token Class> – 토큰 자산이 이 메소드에 매개변수로 전달됩니다. 토큰 자산의 속성은 다를 수 있으며 토큰 사양 파일에 설명되어 있습니다. 사양 파일에 읽기 전용으로 표시된 매개변수는 포함하지 마십시오.

    Visual Studio Code와 CLI 또는 Postman 컬렉션을 사용하는 경우 asset 매개변수를 다른 형식으로 지정합니다.

    Visual Studio 코드: 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_type": "fungible",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter"
    },
    "mintable": {
        "max_mint_quantity": 1000
    },
    "divisible": {
        "decimal": 2
    },
    "currency_name": "DOLLAR",
    "token_to_currency_ratio": 1
}
update<Token Name>Token
이 메소드는 토큰 속성을 업데이트합니다. 토큰 자산이 생성된 후에는 token_desc 속성 및 사용자정의 속성만 업데이트할 수 있습니다. 이 메소드는 체인 코드의 Token Admin에 의해서만 호출될 수 있습니다.
@Validator(Digicur)
public async updateDigicurToken(token_asset: Digicur) {
    await this.Ctx.Auth.checkAuthorization('TOKEN.update', 'TOKEN');
    return await this.Ctx.Token.update(token_asset);
}
매개변수:
  • asset <Token Class> – 토큰 자산이 이 메소드에 매개변수로 전달됩니다. 토큰 자산의 속성은 다를 수 있으며 토큰 사양 파일에 설명되어 있습니다. 사양 파일에 읽기 전용으로 표시된 매개변수는 포함하지 마십시오.

    Visual Studio Code와 CLI 또는 Postman 컬렉션을 사용하는 경우 asset 매개변수를 다른 형식으로 지정합니다.

    Visual Studio 코드: 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",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter"
    },
    "mintable": {
        "max_mint_quantity": 1000
    },
    "divisible": {
        "decimal": 2
    },
    "currency_name": "DOLLAR",
    "token_to_currency_ratio": 1
}
getTokenDecimals
이 메소드는 소수 토큰에 대해 구성된 소수 자릿수를 반환합니다. 토큰에 대해 divisible 동작이 지정되지 않은 경우 기본값은 0입니다. 이 메소드는 체인코드의 Token Admin 또는 Org Admin에 의해서만 호출될 수 있습니다.
@Validator(yup.string())
public async getTokenDecimals(token_id: string) {
    const token_asset = await this.getTokenObject(token_id);
    await this.Ctx.Auth.checkAuthorization('TOKEN.getDecimals', 'TOKEN');
    return {
        msg: `Token Id: ${token_id} has ${this.Ctx.Token.getDecimals(token_asset)} decimal places.`
    };
}
매개변수:
  • token_id: string – 토큰 ID입니다.
반환값:
  • 성공 시 토큰 소수점 자릿수를 보여주는 JSON 문자열입니다.
반환 값 예제:
{"msg":"Token Id: digiCurr101 has 1 decimal places."}
getTokenById
이 메소드는 상태 데이터베이스에 있는 경우 토큰 객체를 반환합니다. 이 메소드는 체인 코드의 Token Admin 또는 Org Admin에 의해서만 호출될 수 있습니다.
@Validator(yup.string())
public async getTokenById(token_id: string) {
    await this.Ctx.Auth.checkAuthorization('TOKEN.get', 'TOKEN');
    const token = await this.getTokenObject(token_id);
    return token;
}
매개변수:
  • token_id: string – 토큰 ID입니다.
반환값:
  • 성공 시 토큰 자산을 나타내는 JSON 객체입니다.
반환 값 예제:
{
    "assetType": "otoken",
    "token_id": "digiCurr101",
    "token_name": "digicur",
    "token_desc": "Digital Currency equiv of dollar",
    "token_type": "fungible",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter"
        "burner_role_name": "burner",
        "notary_role_name": "notary"
    },
    "mintable": {
        "max_mint_quantity": 2000
    },
    "divisible": {
        "decimal": 1
    },
    "currency_name": "DOLLAR",
    "token_to_currency_ratio": 1
}
getTokenHistory
이 메소드는 지정된 토큰 ID에 대한 토큰 기록을 반환합니다. 모든 유저가 이 메소드를 호출할 수 있습니다.
  @Validator(yup.string())
  public async getTokenHistory(tokenId: string) {
    await this.Ctx.Auth.checkAuthorization("TOKEN.getTokenHistory", "TOKEN");
    return await this.Ctx.Token.history(tokenId);
  }
매개변수:
  • tokenId: string – 토큰 ID입니다.
반환값:
  • 성공 시 토큰 내역을 나타내는 JSON 객체입니다.
반환 값 예제:

[
    {
        "trxId": "0d75f09446a60088afb948c6aca046e261fddcd43df416076201cdc5565f1a35",
        "timeStamp": "2023-09-01T16:48:41.000Z",
        "value": {
            "assetType": "otoken",
            "token_id": "token",
            "token_name": "fiatmoneytok",
            "token_desc": "updatedDesc",
            "token_standard": "ttf+",
            "token_type": "fungible",
            "token_unit": "fractional",
            "behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter"
            },
            "mintable": {
                "max_mint_quantity": 1000
            },
            "divisible": {
                "decimal": 2
            }
        }
    },
    {
        "trxId": "3666344878b043b65d5b821cc79c042ba52aec467618800df5cf14eac69f72fa",
        "timeStamp": "2023-08-31T20:24:55.000Z",
        "value": {
            "assetType": "otoken",
            "token_id": "token",
            "token_name": "fiatmoneytok",
            "token_standard": "ttf+",
            "token_type": "fungible",
            "token_unit": "fractional",
            "behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter"
            },
            "mintable": {
                "max_mint_quantity": 1000
            },
            "divisible": {
                "decimal": 2
            }
        }
    }
]
getAllTokens
이 메소드는 상태 데이터베이스에 저장된 모든 토큰을 반환합니다. 이 메소드는 체인 코드의 Token Admin 또는 Org Admin에 의해서만 호출될 수 있습니다. 이 방법은 Berkeley DB SQL 리치 쿼리를 사용하며 원격 Oracle Blockchain Platform 네트워크에 연결된 경우에만 호출할 수 있습니다.
@Validator()
public async getAllTokens() {
    await this.Ctx.Auth.checkAuthorization('TOKEN.getAllTokens', 'TOKEN');
    return await this.Ctx.Token.getAllTokens();
}
매개변수:
  • 없음
반환값:
  • 성공 시 모든 토큰 자산을 나타내는 JSON 객체입니다.
getTokensByName
이 메소드는 지정된 이름을 가진 모든 토큰 객체를 반환합니다. 이 메소드는 체인코드의 Token Admin 또는 Org Admin에 의해서만 호출될 수 있습니다. 이 방법은 Berkeley DB SQL 리치 쿼리를 사용하며 원격 Oracle Blockchain Platform 네트워크에 연결된 경우에만 호출할 수 있습니다.
@Validator(yup.string())
public async getTokensByName(token_name: string) {
    await this.Ctx.Auth.checkAuthorization('TOKEN.getTokensByName', 'TOKEN');
    return await this.Ctx.Token.getTokensByName(token_name);
}
매개변수:
  • token_name: string – 검색할 토큰의 이름입니다. 이름은 사양 파일의 token_name 속성에 해당합니다. 값은 토큰의 클래스 이름입니다.
반환값:
  • 성공 시 이름과 일치하는 모든 토큰 자산의 JSON 객체입니다.
init
이 메소드는 체인 코드가 배치되거나 업그레이드될 때 호출됩니다. 모든 Token Admin는 필수 adminList 매개변수의 user_idorg_id 정보로 식별됩니다. user_id은 인스턴스 소유자 또는 인스턴스에 로그인한 사용자의 사용자 이름 또는 전자메일 ID입니다. org_id는 현재 네트워크 조직에 있는 사용자의 멤버쉽 서비스 제공자(MSP) ID입니다.
모든 Token Admin 사용자는 addAdminremoveAdmin 메소드를 호출하여 다른 Token Admin 사용자를 추가 및 제거할 수 있습니다.
public async init(adminList: TokenAdminAsset[]) {
    await this.Ctx.Admin.initAdmin(adminList);
    return;
}
매개변수:
  • 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에 의해서만 호출될 수 있습니다.
@Validator(Digicur)
    public async initializeDigicurToken(token_asset: Digicur) {
        await this.Ctx.Auth.checkAuthorization('TOKEN.save', 'TOKEN');
        return await this.Ctx.Token.save(token_asset)
    }
매개변수:
  • asset <Token Class> – 토큰 자산이 이 메소드에 매개변수로 전달됩니다. 토큰 자산의 속성은 다를 수 있으며 토큰 사양 파일에 설명되어 있습니다. 사양 파일에 읽기 전용으로 표시된 매개변수는 포함하지 마십시오.

    Visual Studio Code와 CLI 또는 Postman 컬렉션을 사용하는 경우 asset 매개변수를 다른 형식으로 지정합니다.

    Visual Studio 코드: 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_type": "fungible",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter"
    },
    "mintable": {
        "max_mint_quantity": 1000
    },
    "divisible": {
        "decimal": 2
    },
    "currency_name": "DOLLAR",
    "token_to_currency_ratio": 1
}
update<Token Name>Token
이 메소드는 토큰 속성을 업데이트합니다. 토큰 자산이 생성된 후에는 token_desc 속성 및 사용자정의 속성만 업데이트할 수 있습니다. 이 메소드는 체인 코드의 Token Admin에 의해서만 호출될 수 있습니다.
@Validator(Digicur)
public async updateDigicurToken(token_asset: Digicur) {
    await this.Ctx.Auth.checkAuthorization('TOKEN.update', 'TOKEN');
    return await this.Ctx.Token.update(token_asset);
}
매개변수:
  • asset <Token Class> – 토큰 자산이 이 메소드에 매개변수로 전달됩니다. 토큰 자산의 속성은 다를 수 있으며 토큰 사양 파일에 설명되어 있습니다. 사양 파일에 읽기 전용으로 표시된 매개변수는 포함하지 마십시오.

    Visual Studio Code와 CLI 또는 Postman 컬렉션을 사용하는 경우 asset 매개변수를 다른 형식으로 지정합니다.

    Visual Studio 코드: 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",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter"
    },
    "mintable": {
        "max_mint_quantity": 1000
    },
    "divisible": {
        "decimal": 2
    },
    "currency_name": "DOLLAR",
    "token_to_currency_ratio": 1
}
getTokenDecimals
이 메소드는 소수 토큰에 대해 구성된 소수 자릿수를 반환합니다. 토큰에 대해 divisible 동작이 지정되지 않은 경우 기본값은 0입니다. 이 메소드는 Token Admin, Token Auditor, Org Admin 또는 Org Auditor를 통해서만 호출할 수 있습니다.
@Validator(yup.string())
public async getTokenDecimals(token_id: string) {
    const token_asset = await this.getTokenObject(token_id);
    await this.Ctx.Auth.checkAuthorization('TOKEN.getDecimals', 'TOKEN');
    return {
        msg: `Token Id: ${token_id} has ${this.Ctx.Token.getDecimals(token_asset)} decimal places.`
    };
}
매개변수:
  • token_id: string – 토큰 ID입니다.
반환값:
  • 성공 시 토큰 소수점 자릿수를 보여주는 JSON 문자열입니다.
반환 값 예제:
{"msg":"Token Id: digiCurr101 has 1 decimal places."}
getTokenById
이 메소드는 상태 데이터베이스에 있는 경우 토큰 객체를 반환합니다. 이 메소드는 Token Admin, Token Auditor, Org Admin 또는 Org Auditor를 통해서만 호출할 수 있습니다.
@Validator(yup.string())
public async getTokenById(token_id: string) {
    await this.Ctx.Auth.checkAuthorization('TOKEN.get', 'TOKEN');
    const token = await this.getTokenObject(token_id);
    return token;
}
매개변수:
  • token_id: string – 토큰 ID입니다.
반환값:
  • 성공 시 토큰 자산을 나타내는 JSON 객체입니다.
반환 값 예제:
{
    "assetType": "otoken",
    "token_id": "digiCurr101",
    "token_name": "digicur",
    "token_desc": "Digital Currency equiv of dollar",
    "token_type": "fungible",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter"
        "burner_role_name": "burner",
        "notary_role_name": "notary"
    },
    "mintable": {
        "max_mint_quantity": 2000
    },
    "divisible": {
        "decimal": 1
    },
    "currency_name": "DOLLAR",
    "token_to_currency_ratio": 1
}
getTokenHistory
이 메소드는 지정된 토큰 ID에 대한 토큰 기록을 반환합니다. 이 메소드는 Token Admin, Token Auditor, Org Admin 또는 Org Auditor를 통해서만 호출할 수 있습니다.
  @Validator(yup.string())
  public async getTokenHistory(tokenId: string) {
    await this.Ctx.Auth.checkAuthorization("TOKEN.getTokenHistory", "TOKEN");
    return await this.Ctx.Token.history(tokenId);
  }
매개변수:
  • tokenId: string – 토큰 ID입니다.
반환값:
  • 성공 시 토큰 내역을 나타내는 JSON 객체입니다.
반환 값 예제:

[
    {
        "trxId": "0d75f09446a60088afb948c6aca046e261fddcd43df416076201cdc5565f1a35",
        "timeStamp": "2023-09-01T16:48:41.000Z",
        "value": {
            "assetType": "otoken",
            "token_id": "token",
            "token_name": "fiatmoneytok",
            "token_desc": "updatedDesc",
            "token_standard": "ttf+",
            "token_type": "fungible",
            "token_unit": "fractional",
            "behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter"
            },
            "mintable": {
                "max_mint_quantity": 1000
            },
            "divisible": {
                "decimal": 2
            }
        }
    },
    {
        "trxId": "3666344878b043b65d5b821cc79c042ba52aec467618800df5cf14eac69f72fa",
        "timeStamp": "2023-08-31T20:24:55.000Z",
        "value": {
            "assetType": "otoken",
            "token_id": "token",
            "token_name": "fiatmoneytok",
            "token_standard": "ttf+",
            "token_type": "fungible",
            "token_unit": "fractional",
            "behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter"
            },
            "mintable": {
                "max_mint_quantity": 1000
            },
            "divisible": {
                "decimal": 2
            }
        }
    }
]
getAllTokens
이 메소드는 상태 데이터베이스에 저장된 모든 토큰을 반환합니다. 이 메소드는 Token Admin, Token Auditor, Org Admin 또는 Org Auditor를 통해서만 호출할 수 있습니다. 이 방법은 Berkeley DB SQL 리치 쿼리를 사용하며 원격 Oracle Blockchain Platform 네트워크에 연결된 경우에만 호출할 수 있습니다.
@Validator()
public async getAllTokens() {
    await this.Ctx.Auth.checkAuthorization('TOKEN.getAllTokens', 'TOKEN');
    return await this.Ctx.Token.getAllTokens();
}
매개변수:
  • 없음
반환값:
  • 성공 시 모든 토큰 자산을 나타내는 JSON 객체입니다.
getTokensByName
이 메소드는 지정된 이름을 가진 모든 토큰 객체를 반환합니다. 이 메소드는 Token Admin, Token Auditor, Org Admin 또는 Org Auditor를 통해서만 호출할 수 있습니다. 이 방법은 Berkeley DB SQL 리치 쿼리를 사용하며 원격 Oracle Blockchain Platform 네트워크에 연결된 경우에만 호출할 수 있습니다.
@Validator(yup.string())
public async getTokensByName(token_name: string) {
    await this.Ctx.Auth.checkAuthorization('TOKEN.getTokensByName', 'TOKEN');
    return await this.Ctx.Token.getTokensByName(token_name);
}
매개변수:
  • token_name: string – 검색할 토큰의 이름입니다. 이름은 사양 파일의 token_name 속성에 해당합니다. 값은 토큰의 클래스 이름입니다.
반환값:
  • 성공 시 이름과 일치하는 모든 토큰 자산의 JSON 객체입니다.

계정 관리 방법

createAccount
이 메소드는 지정된 사용자 및 토큰의 계정을 만듭니다. 언제든지 토큰을 가질 사용자에 대해 계정을 만들어야 합니다. 계정은 잔액, 보류 중인 잔액 및 트랜잭션 기록을 추적합니다. 계정 ID는 oaccount~<token asset name>~ 앞에 오는 영숫자 문자 집합으로, 인스턴스 소유자 또는 인스턴스에 로그인한 사용자의 사용자 이름 또는 전자메일 ID(user_id), 현재 네트워크 조직에 있는 사용자의 멤버쉽 서비스 제공자 ID(org_id)가 해시됩니다. 이 메소드는 체인 코드의 Token Admin 또는 지정된 조직의 Org Admin에 의해서만 호출될 수 있습니다.
  @Validator(yup.string(), yup.string(), yup.string())
  public async createAccount(org_id: string, user_id: string, token_type: string) {
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.createAccount", "TOKEN", { org_id });
    return await this.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",
  "account_id": "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
  "bapAccountVersion": 0,
  "user_id": "admin",
  "org_id": "Org1MSP",
  "token_type": "fungible",
  "token_id": "",
  "token_name": "",
  "balance": 0,
  "onhold_balance": 0
}
associateTokenToAccount
이 방법은 대체 가능한 토큰을 계정에 연결합니다. 이 메소드는 체인 코드의 Token Admin 또는 관련 조직의 Org Admin에 의해서만 호출될 수 있습니다.
  @Validator(yup.string(), yup.string())
  public async associateTokenToAccount(account_id: string, token_id: string) {
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.associateToken", "TOKEN", { account_id });
    return await this.Ctx.Account.associateToken(account_id, token_id);
  }
매개변수:
  • account_id: string – 계정의 ID입니다.
  • token_id: string – 토큰 ID입니다.
반환값:
  • 성공 시 업데이트된 계정의 JSON 객체입니다. bapAccountVersion 매개변수는 내부용으로 계정 객체에 정의됩니다.
반환 값 예제:
{
    "assetType": "oaccount",
    "account_id": "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
    "bapAccountVersion": 0,
    "user_id": "admin",
    "org_id": "Org1MSP",
    "token_type": "fungible",
    "token_id": "fungible",
    "token_name": "fiatmoneytok",
    "balance": 0,
    "onhold_balance": 0
}
getAccount
이 메소드는 지정된 사용자 및 토큰에 대한 계정 세부정보를 반환합니다. 이 메소드는 체인 코드의 Token Admin, 지정된 조직의 Org Admin 또는 계정의 AccountOwner에 의해서만 호출될 수 있습니다.
@Validator(yup.string(), yup.string(), yup.string())
public async getAccount(token_id: string, org_id: string, user_id: string) {
  const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
  await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccount", "TOKEN", { account_id });
  return await this.Ctx.Account.getAccountWithStatus(account_id);
}
매개변수:
  • token_id: string – 토큰 ID입니다.
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 다음 속성을 포함하는 JSON 계정 객체입니다.
  • account_id – 사용자 계정의 ID입니다.
  • user_id – 사용자의 사용자 이름 또는 전자메일 ID입니다.
  • org_id – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • token_id – 토큰 ID입니다.
  • token_name – 토큰의 이름입니다.
  • balance – 계정의 현재 잔액입니다.
  • onhold_balance – 계정의 현재 보류 잔액입니다.
  • bapAccountVersion – 내부용 계정 객체 매개변수입니다.
  • status – 사용자 계정의 최신 상태입니다.
반환 값 예제:
{
  "bapAccountVersion": 0,
  "assetType": "oaccount",
  "status": "active",
  "account_id": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
  "user_id": "idcqa",
  "org_id": "appdev",
  "token_type": "fungible",
  "token_id": "t1",
  "token_name": "obptok",
  "balance": 0,
  "onhold_balance": 0
}
getAccountHistory
이 메소드는 지정된 사용자 및 토큰에 대한 계정 기록 세부정보를 반환합니다. 이 메소드는 체인 코드의 Token Admin 또는 계정의 AccountOwner에 의해서만 호출될 수 있습니다.
  @Validator(yup.string(), yup.string(), yup.string())
  public async getAccountHistory(token_id: string, org_id: string, user_id: string) {
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.history", "TOKEN", { account_id });
    return await this.Ctx.Account.history(account_id);
  }
매개변수:
  • token_id: string – 토큰 ID입니다.
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 다음 속성을 포함하는 JSON 계정 객체의 배열입니다.
  • trxId – 원장에서 반환된 트랜잭션의 트랜잭션 ID입니다.
  • timeStamp – 트랜잭션 시간입니다.
  • value – 계정 객체의 JSON 문자열입니다.
반환 값 예제:
[
    {
      "trxId":"2gsdh17fff222467e5667be042e33ce18e804b3e065cca15de306f837e416d7c3e",
      "timeStamp":1629718288,
      "value":{
         "assetType":"oaccount",
         "account_id":"oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
         "user_id":"user1",
         "org_id":"Org1MSP",
         "token_id":"digiCurr101",
         "token_name":"digicur",
         "balance":100,
         "onhold_balance":0,
         "bapAccountVersion": 1
   },
   {
      "trxId":"9fd07fff222467e5667be042e33ce18e804b3e065cca15de306f837e416d7c3e",
      "timeStamp":1629718288,
      "value":{
         "assetType":"oaccount",
         "account_id":"oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
         "user_id":"user1",
         "org_id":"Org1MSP",
         "token_id":"digiCurr101",
         "token_name":"digicur",
         "balance":0,
         "onhold_balance":0,
         "bapAccountVersion": 0
      }
   }
]
getAccountOnHoldBalance
이 방법은 지정된 계정 및 토큰에 대한 현재 보류 잔액을 반환합니다. 이 메소드는 체인 코드의 Token Admin, 지정된 조직의 Org Admin 또는 계정의 AccountOwner에 의해서만 호출될 수 있습니다.
  @Validator(yup.string(), yup.string(), yup.string())
  public async getAccountOnHoldBalance(token_id: string, org_id: string, user_id: string) {
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountOnHoldBalance", "TOKEN", { account_id });
    return await this.Ctx.Account.getAccountOnHoldBalance(account_id);
  }
매개변수:
  • token_id: string – 토큰 ID입니다.
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 현재 보류 중인 잔액의 JSON 표현입니다.
반환 값 예제:
{"msg":"Total Holding Balance is: 0","holding_balance":0}
getAllAccounts
이 방법은 모든 계정 목록을 반환합니다. 이 메소드는 체인 코드의 Token Admin에 의해서만 호출될 수 있습니다. 이 방법은 Berkeley DB SQL 리치 쿼리를 사용하며 원격 Oracle Blockchain Platform 네트워크에 연결된 경우에만 호출할 수 있습니다.
@Validator()
public async getAllAccounts() {
    await this.Ctx.Auth.checkAuthorization('ACCOUNT.getAllAccounts', 'TOKEN');
    return await this.Ctx.Account.getAllAccounts();
}
매개변수:
  • 없음
반환값:
  • 성공 시 모든 계정의 JSON 배열입니다.
getUserByAccountId
이 메소드는 지정된 계정에 대한 사용자 세부정보(org_iduser_id)를 반환합니다. 이 메소드는 체인코드의 모든 사용자가 호출할 수 있습니다.
@Validator(yup.string())
public async getUserByAccountId(account_id: string) {
    return await this.Ctx.Account.getUserByAccountId(account_id);
}
매개변수:
  • account_id: string – 계정의 ID입니다.
반환값:
  • 성공 시 사용자 세부정보의 JSON 객체(org_id, token_iduser_id)입니다.
반환 값 예제:
{
    "token_id": "digiCurr101",
    "user_id": "user1",
    "org_id": "Org1MSP"
}
getAccountBalance
이 메서드는 지정된 계정과 토큰의 현재 잔액을 반환합니다. 이 메소드는 체인 코드의 Token Admin, 지정된 조직의 Org Admin 또는 계정의 AccountOwner에 의해서만 호출될 수 있습니다.
  @Validator(yup.string(), yup.string(), yup.string())
  public async getAccountBalance(token_id: string, org_id: string, user_id: string) {
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountBalance", "TOKEN", { account_id });
    return await this.Ctx.Account.getAccountBalance(account_id);
  }
매개변수:
  • token_id: string – 토큰 ID입니다.
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 현재 계정 잔액의 JSON 표현입니다.
반환 값 예제:
{"msg":"Current Balance is: 0","user_balance":0}
getAllOrgAccounts
이 메소드는 지정된 조직에 속하는 모든 토큰 계정 목록을 반환합니다. 이 메소드는 체인 코드의 Token Admin 또는 지정된 조직의 Org Admin에 의해서만 호출될 수 있습니다.
  @Validator(yup.string())
  public async getAllOrgAccounts(org_id: string) {
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAllOrgAccounts", "TOKEN", { org_id });
    return await this.Ctx.Account.getAllOrgAccounts(org_id);
  }
매개변수:
  • org_id: string – 조직의 멤버쉽 서비스 제공자(MSP) ID입니다.
반환값:
  • 성공 시 지정된 조직에 대한 모든 계정 목록이 표시됩니다.
반환 값 예제:
[
    {
        "key": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
        "valueJson": {
            "bapAccountVersion": 0,
            "assetType": "oaccount",
            "account_id": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
            "user_id": "idcqa",
            "org_id": "appdev",
            "token_type": "fungible",
            "token_id": "token",
            "token_name": "fiatmoneytok",
            "balance": 0,
            "onhold_balance": 0
        }
    },
    {
        "key": "oaccount~620fcf5deb5fd5a65c0b5b10fda129de0f629ccd232c5891c130e24a574df50a",
        "valueJson": {
            "bapAccountVersion": 0,
            "assetType": "oaccount",
            "account_id": "oaccount~620fcf5deb5fd5a65c0b5b10fda129de0f629ccd232c5891c130e24a574df50a",
            "user_id": "example_minter",
            "org_id": "appdev",
            "token_type": "fungible",
            "token_id": "token",
            "token_name": "fiatmoneytok",
            "balance": 0,
            "onhold_balance": 0
        }
    }
]
createAccount
이 메소드는 지정된 사용자 및 토큰의 계정을 만듭니다. 언제든지 토큰을 가질 사용자에 대해 계정을 만들어야 합니다. 계정은 잔액, 보류 중인 잔액 및 트랜잭션 기록을 추적합니다. 계정 ID는 oaccount~<token asset name>~ 앞에 오는 영숫자 문자 집합으로, 인스턴스 소유자 또는 인스턴스에 로그인한 사용자의 사용자 이름 또는 전자메일 ID(user_id), 현재 네트워크 조직에 있는 사용자의 멤버쉽 서비스 제공자 ID(org_id)가 해시됩니다. 이 메소드는 체인 코드의 Token Admin 또는 지정된 조직의 Org Admin에 의해서만 호출될 수 있습니다.
@Validator(yup.string(), yup.string(), yup.string(), yup.object().nullable())

public async createAccount(org_id: string, user_id: string, token_type: string, daily_limits: DailyLimits) {
await this.Ctx.Auth.checkAuthorization("ACCOUNT.createAccount", "TOKEN", { org_id });
return await this.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/Postman: "{\"max_daily_amount\":1000,\"max_daily_transactions\":100}"

반환값:
  • 성공 시 생성된 계정의 JSON 객체입니다. bapAccountVersion 매개변수는 내부용으로 계정 객체에 정의됩니다.
반환 값 예제:
{
  "assetType": "oaccount",
  "account_id": "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
  "bapAccountVersion": 0,
  "user_id": "admin",
  "org_id": "Org1MSP",
  "token_type": "fungible",
  "token_id": "",
  "token_name": "",
  "balance": 0,
  "onhold_balance": 0,
  "onhold_burn_balance": 0,
  "max_daily_amount": 1000,
  "max_daily_transactions": 100
}
associateTokenToAccount
이 방법은 대체 가능한 토큰을 계정에 연결합니다. 이 메소드는 체인 코드의 Token Admin 또는 관련 조직의 Org Admin에 의해서만 호출될 수 있습니다.
  @Validator(yup.string(), yup.string())
  public async associateTokenToAccount(account_id: string, token_id: string) {
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.associateToken", "TOKEN", { account_id });
    return await this.Ctx.Account.associateToken(account_id, token_id);
  }
매개변수:
  • account_id: string – 계정의 ID입니다.
  • token_id: string – 토큰 ID입니다.
반환값:
  • 성공 시 업데이트된 계정의 JSON 객체입니다. bapAccountVersion 매개변수는 내부용으로 계정 객체에 정의됩니다.
반환 값 예제:
{
    "assetType": "oaccount",
    "account_id": "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
    "bapAccountVersion": 0,
    "user_id": "admin",
    "org_id": "Org1MSP",
    "token_type": "fungible",
    "token_id": "fungible",
    "token_name": "fiatmoneytok",
    "balance": 0,
    "onhold_balance": 0
}
getAccount
이 메소드는 지정된 사용자 및 토큰에 대한 계정 세부정보를 반환합니다. 이 메소드는 지정된 조직의 Token Admin 또는 Token Auditor, Org Admin 또는 Org Auditor 또는 계정의 AccountOwner에 의해서만 호출될 수 있습니다.
@Validator(yup.string(), yup.string(), yup.string())
public async getAccount(token_id: string, org_id: string, user_id: string) {
  const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
  await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccount", "TOKEN", { account_id });
  return await this.Ctx.Account.getAccountWithStatus(account_id);
}
매개변수:
  • token_id: string – 토큰 ID입니다.
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 다음 속성을 포함하는 JSON 계정 객체입니다.
  • account_id – 사용자 계정의 ID입니다.
  • user_id – 사용자의 사용자 이름 또는 전자메일 ID입니다.
  • org_id – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • token_id – 토큰 ID입니다.
  • token_name – 토큰의 이름입니다.
  • balance – 계정의 현재 잔액입니다.
  • onhold_balance – 계정의 현재 보류 잔액입니다.
  • bapAccountVersion – 내부용 계정 객체 매개변수입니다.
  • status – 사용자 계정의 최신 상태입니다.
반환 값 예제:
{
  "bapAccountVersion": 0,
  "assetType": "oaccount",
  "status": "active",
  "account_id": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
  "user_id": "idcqa",
  "org_id": "appdev",
  "token_type": "fungible",
  "token_id": "t1",
  "token_name": "obptok",
  "balance": 0,
  "onhold_balance": 0
}
getAccountHistory
이 메소드는 지정된 사용자 및 토큰에 대한 계정 기록 세부정보를 반환합니다. 이 메소드는 체인 코드의 Token Admin 또는 계정의 AccountOwner에 의해서만 호출될 수 있습니다.
  @Validator(yup.string(), yup.string(), yup.string())
  public async getAccountHistory(token_id: string, org_id: string, user_id: string) {
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.history", "TOKEN", { account_id });
    return await this.Ctx.Account.history(account_id);
  }
매개변수:
  • token_id: string – 토큰 ID입니다.
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 다음 속성을 포함하는 JSON 계정 객체의 배열입니다.
  • trxId – 원장에서 반환된 트랜잭션의 트랜잭션 ID입니다.
  • timeStamp – 트랜잭션 시간입니다.
  • value – 계정 객체의 JSON 문자열입니다.
반환 값 예제:
[
    {
      "trxId":"2gsdh17fff222467e5667be042e33ce18e804b3e065cca15de306f837e416d7c3e",
      "timeStamp":1629718288,
      "value":{
         "assetType":"oaccount",
         "account_id":"oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
         "user_id":"user1",
         "org_id":"Org1MSP",
         "token_id":"digiCurr101",
         "token_name":"digicur",
         "balance":100,
         "onhold_balance":0,
         "bapAccountVersion": 1
   },
   {
      "trxId":"9fd07fff222467e5667be042e33ce18e804b3e065cca15de306f837e416d7c3e",
      "timeStamp":1629718288,
      "value":{
         "assetType":"oaccount",
         "account_id":"oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
         "user_id":"user1",
         "org_id":"Org1MSP",
         "token_id":"digiCurr101",
         "token_name":"digicur",
         "balance":0,
         "onhold_balance":0,
         "bapAccountVersion": 0
      }
   }
]
getAccountOnHoldBalance
이 방법은 지정된 계정 및 토큰에 대한 현재 보류 잔액을 반환합니다. 이 메소드는 지정된 조직의 Token Admin 또는 Token Auditor, Org Admin 또는 Org Auditor 또는 계정의 AccountOwner에 의해서만 호출될 수 있습니다.
  @Validator(yup.string(), yup.string(), yup.string())
  public async getAccountOnHoldBalance(token_id: string, org_id: string, user_id: string) {
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountOnHoldBalance", "TOKEN", { account_id });
    return await this.Ctx.Account.getAccountOnHoldBalance(account_id);
  }
매개변수:
  • token_id: string – 토큰 ID입니다.
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 현재 보류 중인 잔액의 JSON 표현입니다.
반환 값 예제:
{"msg":"Total Holding Balance is: 0","holding_balance":0}
getAllAccounts
이 방법은 모든 계정 목록을 반환합니다. 이 메소드는 Token Admin 또는 Token Auditor에 의해서만 호출될 수 있습니다. 이 방법은 Berkeley DB SQL 리치 쿼리를 사용하며 원격 Oracle Blockchain Platform 네트워크에 연결된 경우에만 호출할 수 있습니다.
@Validator()
public async getAllAccounts() {
    await this.Ctx.Auth.checkAuthorization('ACCOUNT.getAllAccounts', 'TOKEN');
    return await this.Ctx.Account.getAllAccounts();
}
매개변수:
  • 없음
반환값:
  • 성공 시 모든 계정의 JSON 배열입니다.
getUserByAccountId
이 메소드는 지정된 계정에 대한 사용자 세부정보(org_iduser_id)를 반환합니다. 이 메소드는 Token Admin 또는 Token Auditor 또는 지정된 조직의 Org Admin 또는 Org Auditor에 의해 호출될 수 있습니다.
@Validator(yup.string())
public async getUserByAccountId(account_id: string) {
    return await this.Ctx.Account.getUserByAccountId(account_id);
}
매개변수:
  • account_id: string – 계정의 ID입니다.
반환값:
  • 성공 시 사용자 세부정보의 JSON 객체(org_id, token_iduser_id)입니다.
반환 값 예제:
{
    "token_id": "digiCurr101",
    "user_id": "user1",
    "org_id": "Org1MSP"
}
getAccountBalance
이 메서드는 지정된 계정과 토큰의 현재 잔액을 반환합니다. 이 메소드는 지정된 조직의 Token Admin 또는 Token Auditor, Org Admin 또는 Org Auditor 또는 계정의 AccountOwner에 의해서만 호출될 수 있습니다.
  @Validator(yup.string(), yup.string(), yup.string())
  public async getAccountBalance(token_id: string, org_id: string, user_id: string) {
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountBalance", "TOKEN", { account_id });
    return await this.Ctx.Account.getAccountBalance(account_id);
  }
매개변수:
  • token_id: string – 토큰 ID입니다.
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 현재 계정 잔액의 JSON 표현입니다.
반환 값 예제:
{"msg":"Current Balance is: 0","user_balance":0}
getAllOrgAccounts
이 메소드는 지정된 조직에 속하는 모든 토큰 계정 목록을 반환합니다. 이 메소드는 Token Admin 또는 Token Auditor 또는 지정된 조직의 Org Admin 또는 Org Auditor에 의해서만 호출될 수 있습니다.
  @Validator(yup.string())
  public async getAllOrgAccounts(org_id: string) {
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAllOrgAccounts", "TOKEN", { org_id });
    return await this.Ctx.Account.getAllOrgAccounts(org_id);
  }
매개변수:
  • org_id: string – 조직의 멤버쉽 서비스 제공자(MSP) ID입니다.
반환값:
  • 성공 시 지정된 조직에 대한 모든 계정 목록이 표시됩니다.
반환 값 예제:
[
    {
        "key": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
        "valueJson": {
            "bapAccountVersion": 0,
            "assetType": "oaccount",
            "account_id": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
            "user_id": "idcqa",
            "org_id": "appdev",
            "token_type": "fungible",
            "token_id": "token",
            "token_name": "fiatmoneytok",
            "balance": 0,
            "onhold_balance": 0
        }
    },
    {
        "key": "oaccount~620fcf5deb5fd5a65c0b5b10fda129de0f629ccd232c5891c130e24a574df50a",
        "valueJson": {
            "bapAccountVersion": 0,
            "assetType": "oaccount",
            "account_id": "oaccount~620fcf5deb5fd5a65c0b5b10fda129de0f629ccd232c5891c130e24a574df50a",
            "user_id": "example_minter",
            "org_id": "appdev",
            "token_type": "fungible",
            "token_id": "token",
            "token_name": "fiatmoneytok",
            "balance": 0,
            "onhold_balance": 0
        }
    }
]

역할 관리 방법

addRole
이 메소드는 지정된 사용자 및 토큰에 롤을 추가합니다. 이 메소드는 체인 코드의 Token Admin 또는 지정된 롤을 보유한 지정된 조직의 Org Admin에 의해서만 호출될 수 있습니다.
  @Validator(yup.string(), yup.string(), yup.string(), yup.string())
  public async addRole(token_id: string, role: string, org_id: string, user_id: string) {
    const token_asset = await this.getTokenObject(token_id);
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("TOKEN.addRoleMember", "TOKEN", { token_id, org_id, role });
    return await this.Ctx.Token.addRoleMember(role, account_id, token_asset);
  }
매개변수:
  • token_id: string – 토큰 ID입니다.
  • role: string – 지정된 사용자에 추가할 역할의 이름입니다. mintableburnable 동작은 사양 파일의 minter_role_nameburner_role_name 속성에 해당합니다. 마찬가지로 notary 역할은 사양 파일의 notary_role_name 속성에 해당합니다.
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공하면 계정 세부정보가 포함된 메시지가 표시됩니다.
반환 값 예제:
{"msg":"Successfully added role 'minter' to Account Id: oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (Org-Id: Org1MSP, User-Id: user1)"}
removeRole
이 방법은 지정된 사용자 및 토큰에서 역할을 제거합니다. 이 메소드는 체인 코드의 Token Admin 또는 지정된 롤을 보유한 지정된 조직의 Org Admin에 의해서만 호출될 수 있습니다.
  @Validator(yup.string(), yup.string(), yup.string(), yup.string())
  public async removeRole(token_id: string, role: string, org_id: string, user_id: string) {
    const token_asset = await this.getTokenObject(token_id);
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("TOKEN.removeRoleMember", "TOKEN", { token_id, org_id, role });
    return await this.Ctx.Token.removeRoleMember(role, account_id, token_asset);
  }
매개변수:
  • token_id: string – 토큰 ID입니다.
  • role: string – 지정된 사용자로부터 제거할 역할의 이름입니다. mintableburnable 동작은 사양 파일의 minter_role_nameburner_role_name 속성에 해당합니다. 마찬가지로 notary 역할은 사양 파일의 notary_role_name 속성에 해당합니다.
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공하면 계정 세부정보가 포함된 메시지가 표시됩니다.
반환 값 예제:
{"msg":"Successfully removed role 'minter' from Account Id: oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (Org-Id: Org1MSP, User-Id: user1)"}
getAccountsByRole
이 메소드는 지정된 롤과 토큰에 대한 모든 계정 ID 목록을 반환합니다. 이 메소드는 체인 코드의 Token Admin에 의해서만 호출될 수 있습니다.
@Validator(yup.string(), yup.string())
public async getAccountsByRole(token_id: string, role: string) {
   await this.Ctx.Auth.checkAuthorization('ROLE.getAccountsByRole', 'TOKEN');
   return await this.Ctx.Role.getAccountsByRole(token_id, role);
}
매개변수:
  • token_id: string – 토큰 ID입니다.
  • role: string – 검색할 역할의 이름입니다.
반환값:
  • 성공 시 계정 ID의 JSON 배열입니다.
반환 값 예제:
{"accounts":["oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f"]}
getAccountsByUser
이 메소드는 지정된 조직 ID 및 사용자 ID에 대한 모든 계정 ID 목록을 반환합니다. 이 메소드는 체인 코드의 Token Admin, 지정된 조직의 Org Admin 또는 매개변수에 지정된 Account Owner에 의해서만 호출될 수 있습니다.
  @Validator(yup.string(), yup.string())
  public async getAccountsByUser(org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountsByUser", "TOKEN", { org_id, user_id });
    return await this.Ctx.Account.getAccountsByUser(org_id, user_id);
  }
매개변수:
  • org_id string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 계정 ID의 JSON 배열입니다.
반환 값 예제:
{"accounts":["oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f"]}
getUsersByRole
이 메소드는 지정된 롤 및 토큰에 대한 모든 사용자 목록을 반환합니다. 이 메소드는 체인 코드의 Token Admin에 의해서만 호출될 수 있습니다.
@Validator(yup.string(), yup.string())
public async getUsersByRole(token_id: string, role: string) {
    await this.Ctx.Auth.checkAuthorization('ROLE.getUsersByRole', 'TOKEN');
    return await this.Ctx.Role.getUsersByRole(token_id, role);
}
매개변수:
  • token_id: string – 토큰 ID입니다.
  • role: string – 검색할 역할의 이름입니다.
반환값:
  • 성공 시 사용자 객체의 JSON 배열(org_id, token_iduser_id)입니다.
반환 값 예제:
{"users":[{"token_id":"digiCurr101","user_id":"user1","org_id":"Org1MSP"}]}
isInRole
이 메소드는 사용자 및 토큰이 지정된 롤을 가지는지 여부를 나타내는 부울 값을 반환합니다. 이 메소드는 체인 코드의 Token Admin, 계정의 AccountOwner 또는 지정된 조직의 Org Admin에 의해서만 호출될 수 있습니다.
  @Validator(yup.string(), yup.string(), yup.string(), yup.string())
  public async isInRole(token_id: string, org_id: string, user_id: string, role: string) {
    const token_asset = await this.getTokenObject(token_id);
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("TOKEN.isInRole", "TOKEN", { account_id });
    return { result: await this.Ctx.Token.isInRole(role, account_id, token_asset) };
  }
매개변수:
  • token_id: string – 토큰 ID입니다.
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
  • role: string – 검색할 역할의 이름입니다.
반환값:
  • 성공 시 부울 결과의 JSON 문자열입니다.
반환 값 예제:
{"result":"false"}
getOrgAccountsByRole
이 방법은 지정된 조직에서 지정된 역할을 가진 모든 고객사에 대한 정보를 반환합니다. 이 메소드는 체인 코드의 Token Admin 또는 지정된 조직의 Org Admin에 의해서만 호출될 수 있습니다.
   @Validator(yup.string(), yup.string(), yup.string())
  public async getOrgAccountsByRole(token_id: string, role: string, org_id: string) {
    await this.Ctx.Auth.checkAuthorization("ROLE.getOrgAccountsByRole", "TOKEN", { org_id });
    return await this.Ctx.Role.getOrgAccountsByRole(token_id, role, org_id);
  }
매개변수:
  • token_id: string – 토큰 ID입니다.
  • role: string – 확인할 역할의 이름입니다.
  • org_id: string – 조직의 멤버쉽 서비스 제공자(MSP) ID입니다.
반환값:
  • 성공 시 지정된 조직에서 지정된 역할을 가진 모든 고객사의 리스트입니다.
반환 값 예제:
{
    "accounts": [
        "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
        "oaccount~9c650574af9025a6106c8d12a801b079eda9ae2e3399fc2fbd5bd683d738a850"
    ]
}
getOrgUsersByRole
이 메소드는 지정된 조직에서 지정된 롤을 가진 모든 사용자에 대한 정보를 반환합니다. 이 메소드는 체인 코드의 Token Admin 또는 지정된 조직의 Org Admin에 의해서만 호출될 수 있습니다.
  @Validator(yup.string(), yup.string(), yup.string())
  public async getOrgUsersByRole(token_id: string, role: string, org_id: string) {
    await this.Ctx.Auth.checkAuthorization("ROLE.getOrgUsersByRole", "TOKEN", { org_id });
    return await this.Ctx.Role.getOrgUsersByRole(token_id, role, org_id);
  }
매개변수:
  • token_id: string – 토큰 ID입니다.
  • role: string – 확인할 역할의 이름입니다.
  • org_id: string – 조직의 멤버쉽 서비스 제공자(MSP) ID입니다.
반환값:
  • 성공 시 지정된 조직에서 지정된 역할을 가진 모든 사용자 목록입니다.
반환 값 예제:
{
    "users": [
        {
            "token_id": "token",
            "user_id": "admin",
            "org_id": "Org1MSP"
        },
        {
            "token_id": "token",
            "user_id": "orgAdmin",
            "org_id": "Org1MSP"
        }
    ]
}
addRole
이 메소드는 지정된 사용자 및 토큰에 롤을 추가합니다. 이 메소드는 체인 코드의 Token Admin 또는 지정된 롤을 보유한 지정된 조직의 Org Admin에 의해서만 호출될 수 있습니다.
  @Validator(yup.string(), yup.string(), yup.string(), yup.string())
  public async addRole(token_id: string, role: string, org_id: string, user_id: string) {
    const token_asset = await this.getTokenObject(token_id);
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("TOKEN.addRoleMember", "TOKEN", { token_id, org_id, role });
    return await this.Ctx.Token.addRoleMember(role, account_id, token_asset);
  }
매개변수:
  • token_id: string – 토큰 ID입니다.
  • role: string – 지정된 사용자에 추가할 역할의 이름입니다. mintableburnable 동작은 사양 파일의 minter_role_nameburner_role_name 속성에 해당합니다. 마찬가지로 notary 역할은 사양 파일의 notary_role_name 속성에 해당합니다.
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공하면 계정 세부정보가 포함된 메시지가 표시됩니다.
반환 값 예제:
{"msg":"Successfully added role 'minter' to Account Id: oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (Org-Id: Org1MSP, User-Id: user1)"}
removeRole
이 방법은 지정된 사용자 및 토큰에서 역할을 제거합니다. 이 메소드는 체인 코드의 Token Admin 또는 지정된 롤을 보유한 지정된 조직의 Org Admin에 의해서만 호출될 수 있습니다.
  @Validator(yup.string(), yup.string(), yup.string(), yup.string())
  public async removeRole(token_id: string, role: string, org_id: string, user_id: string) {
    const token_asset = await this.getTokenObject(token_id);
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("TOKEN.removeRoleMember", "TOKEN", { token_id, org_id, role });
    return await this.Ctx.Token.removeRoleMember(role, account_id, token_asset);
  }
매개변수:
  • token_id: string – 토큰 ID입니다.
  • role: string – 지정된 사용자로부터 제거할 역할의 이름입니다. mintableburnable 동작은 사양 파일의 minter_role_nameburner_role_name 속성에 해당합니다. 마찬가지로 notary 역할은 사양 파일의 notary_role_name 속성에 해당합니다.
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공하면 계정 세부정보가 포함된 메시지가 표시됩니다.
반환 값 예제:
{"msg":"Successfully removed role 'minter' from Account Id: oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (Org-Id: Org1MSP, User-Id: user1)"}
getAccountsByRole
이 메소드는 지정된 롤과 토큰에 대한 모든 계정 ID 목록을 반환합니다. 이 메소드는 Token Admin 또는 Token Auditor에 의해서만 호출될 수 있습니다.
@Validator(yup.string(), yup.string())
public async getAccountsByRole(token_id: string, role: string) {
   await this.Ctx.Auth.checkAuthorization('ROLE.getAccountsByRole', 'TOKEN');
   return await this.Ctx.Role.getAccountsByRole(token_id, role);
}
매개변수:
  • token_id: string – 토큰 ID입니다.
  • role: string – 검색할 역할의 이름입니다.
반환값:
  • 성공 시 계정 ID의 JSON 배열입니다.
반환 값 예제:
{"accounts":["oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f"]}
getAccountsByUser
이 메소드는 지정된 조직 ID 및 사용자 ID에 대한 모든 계정 ID 목록을 반환합니다. 이 메소드는 Token Admin 또는 Token Auditor, 지정된 조직의 Org Admin 또는 Org Auditor 또는 매개변수에 지정된 Account Owner에 의해서만 호출될 수 있습니다.
  @Validator(yup.string(), yup.string())
  public async getAccountsByUser(org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountsByUser", "TOKEN", { org_id, user_id });
    return await this.Ctx.Account.getAccountsByUser(org_id, user_id);
  }
매개변수:
  • org_id string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 계정 ID의 JSON 배열입니다.
반환 값 예제:
{"accounts":["oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f"]}
getUsersByRole
이 메소드는 지정된 롤 및 토큰에 대한 모든 사용자 목록을 반환합니다. 이 메소드는 Token Admin 또는 Token Auditor에 의해서만 호출될 수 있습니다.
@Validator(yup.string(), yup.string())
public async getUsersByRole(token_id: string, role: string) {
    await this.Ctx.Auth.checkAuthorization('ROLE.getUsersByRole', 'TOKEN');
    return await this.Ctx.Role.getUsersByRole(token_id, role);
}
매개변수:
  • token_id: string – 토큰 ID입니다.
  • role: string – 검색할 역할의 이름입니다.
반환값:
  • 성공 시 사용자 객체의 JSON 배열(org_id, token_iduser_id)입니다.
반환 값 예제:
{"users":[{"token_id":"digiCurr101","user_id":"user1","org_id":"Org1MSP"}]}
isInRole
이 메소드는 사용자 및 토큰이 지정된 롤을 가지는지 여부를 나타내는 부울 값을 반환합니다. 이 메소드는 지정된 조직의 Token Admin 또는 Token Auditor, 계정의 AccountOwner 또는 Org Admin 또는 Org Auditor에 의해서만 호출될 수 있습니다.
  @Validator(yup.string(), yup.string(), yup.string(), yup.string())
  public async isInRole(token_id: string, org_id: string, user_id: string, role: string) {
    const token_asset = await this.getTokenObject(token_id);
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("TOKEN.isInRole", "TOKEN", { account_id });
    return { result: await this.Ctx.Token.isInRole(role, account_id, token_asset) };
  }
매개변수:
  • token_id: string – 토큰 ID입니다.
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
  • role: string – 검색할 역할의 이름입니다.
반환값:
  • 성공 시 부울 결과의 JSON 문자열입니다.
반환 값 예제:
{"result":"false"}
getOrgAccountsByRole
이 방법은 지정된 조직에서 지정된 역할을 가진 모든 고객사에 대한 정보를 반환합니다. 이 메소드는 Token Admin, Token Auditor, Org Admin 또는 Org Auditor에 의해서만 호출될 수 있습니다.
   @Validator(yup.string(), yup.string(), yup.string())
  public async getOrgAccountsByRole(token_id: string, role: string, org_id: string) {
    await this.Ctx.Auth.checkAuthorization("ROLE.getOrgAccountsByRole", "TOKEN", { org_id });
    return await this.Ctx.Role.getOrgAccountsByRole(token_id, role, org_id);
  }
매개변수:
  • token_id: string – 토큰 ID입니다.
  • role: string – 확인할 역할의 이름입니다.
  • org_id: string – 조직의 멤버쉽 서비스 제공자(MSP) ID입니다.
반환값:
  • 성공 시 지정된 조직에서 지정된 역할을 가진 모든 고객사의 리스트입니다.
반환 값 예제:
{
    "accounts": [
        "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
        "oaccount~9c650574af9025a6106c8d12a801b079eda9ae2e3399fc2fbd5bd683d738a850"
    ]
}
getOrgUsersByRole
이 메소드는 지정된 조직에서 지정된 롤을 가진 모든 사용자에 대한 정보를 반환합니다. 이 메소드는 지정된 조직의 Org Admin 또는 Org Auditor에 의해서만 Token Admin 또는 Token Auditor에 의해서만 호출될 수 있습니다.
  @Validator(yup.string(), yup.string(), yup.string())
  public async getOrgUsersByRole(token_id: string, role: string, org_id: string) {
    await this.Ctx.Auth.checkAuthorization("ROLE.getOrgUsersByRole", "TOKEN", { org_id });
    return await this.Ctx.Role.getOrgUsersByRole(token_id, role, org_id);
  }
매개변수:
  • token_id: string – 토큰 ID입니다.
  • role: string – 확인할 역할의 이름입니다.
  • org_id: string – 조직의 멤버쉽 서비스 제공자(MSP) ID입니다.
반환값:
  • 성공 시 지정된 조직에서 지정된 역할을 가진 모든 사용자 목록입니다.
반환 값 예제:
{
    "users": [
        {
            "token_id": "token",
            "user_id": "admin",
            "org_id": "Org1MSP"
        },
        {
            "token_id": "token",
            "user_id": "orgAdmin",
            "org_id": "Org1MSP"
        }
    ]
}

트랜잭션 내역 관리 방법

getAccountTransactionHistory
이 메소드는 지정된 사용자 및 토큰에 대한 계정 트랜잭션 내역 세부정보 배열을 반환합니다. 이 메소드는 체인 코드의 Token Admin, 지정된 조직의 Org Admin 또는 계정의 AccountOwner에 의해서만 호출될 수 있습니다.
 @Validator(yup.string(), yup.string(), yup.string())
  public async getAccountTransactionHistory(token_id: string, org_id: string, user_id: string) {
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountTransactionHistory", "TOKEN", { account_id });
    return await this.Ctx.Account.getAccountTransactionHistory(account_id, org_id, user_id.toLowerCase());
  }
매개변수:
  • token_id: string – 토큰 ID입니다.
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 다음 속성을 포함하는 JSON 계정 트랜잭션 객체의 배열입니다.
  • transaction_id – 트랜잭션의 ID입니다.
  • transacted_account – 트랜잭션이 발생한 계정입니다.
  • transaction_type – 트랜잭션의 유형입니다.
  • transacted_amount – 트랜잭션 금액입니다.
  • timestamp – 트랜잭션 시간입니다.
  • balance – 거래 시 계정 잔액입니다.
  • onhold_balance – 거래 시 보류 중인 잔액입니다.
  • token_id – 토큰 ID입니다.
  • holding_idholdTokens 메소드에서 반환되는 고유 식별자입니다.
반환 값 예제:
[
    {
        "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
        "transacted_amount": 20,
        "timestamp": "2021-08-17T06:04:24.000Z",
        "balance": 930,
        "onhold_balance": 0,
        "token_id": "digiCurr101",
        "transaction_type": "BULKTRANSFER",
        "sub_transactions": [
            {
                "transacted_account": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
                "transaction_type": "DEBIT",
                "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c4ca4238a0b923820dcc509a6f75849b",
                "transacted_amount": 10
            },
            {
                "transacted_account": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e",
                "transaction_type": "DEBIT",
                "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c81e728d9d4c2f636f067f89cc14862c",
                "transacted_amount": 10
            }
        ]
    },
    {
        "transaction_id": "otransaction~757864d5369bd0539d044caeb3bb4898db310fd7aa740f45a9938771903d43da",
        "transacted_amount": 50,
        "timestamp": "2021-08-17T06:02:44.000Z",
        "balance": 950,
        "onhold_balance": 0,
        "token_id": "digiCurr101",
        "transacted_account": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
        "transaction_type": "DEBIT"
    }
]
getAccountTransactionHistoryWithFilters
이 메소드는 지정된 사용자 및 토큰에 대한 계정 트랜잭션 내역 세부정보 배열을 반환합니다. 이 메소드는 체인 코드의 Token Admin, 지정된 조직의 Org Admin 또는 계정의 AccountOwner에 의해서만 호출될 수 있습니다. 이 방법은 원격 Oracle Blockchain Platform 네트워크에 연결된 경우에만 호출할 수 있습니다.
  @Validator(yup.string(), yup.string(), yup.string(), yup.object().nullable())
  public async getAccountTransactionHistoryWithFilters(token_id: string, org_id: string, user_id: string, filters?: Filters) {
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountTransactionHistoryWithFilters", "TOKEN", { account_id });
    return await this.Ctx.Account.getAccountTransactionHistoryWithFilters(account_id, org_id, user_id.toLowerCase(), filters);
  }
매개변수:
  • token_id: string – 토큰 ID입니다.
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
  • filters: string – 선택적 매개변수입니다. 비어 있으면 모든 레코드가 반환됩니다. PageSize 속성은 반환할 레코드 수를 결정합니다. PageSize가 0이면 기본 페이지 크기는 20입니다. Bookmark 속성은 반환할 레코드의 시작 인덱스를 결정합니다. 자세한 내용은 Hyperledger Fabric 설명서를 참조하십시오. StartTimeEndTime 등록 정보는 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~672897b5a4fa78b421c000e4d6d4f71f3d46529bfbb5b4be10bf5471dc35ce89",
    "transacted_amount": 5,
    "timestamp": "2022-04-20T15:46:04.000Z",
    "token_id": "tokenId",
    "transacted_account": "oaccount~16c38d804413ebabf416360d374f76c973d4e71c74adfde73cc40c7c274883b8",
    "transaction_type": "DEBIT",
    "balance": 90,
    "onhold_balance": 0
  },
  {
    "transaction_id": "otransaction~467bb67a33aaffca4487f33dcd46c9844efdb5421a2e7b6aa2d53152eb2c6d85",
    "transacted_amount": 5,
    "timestamp": "2022-04-20T15:45:47.000Z",
    "token_id": "tokenId",
    "transacted_account": "oaccount~fbf95683b21bbc91a22205819ac1e2e9c90355d536821ed3fe22b7d23915c248",
    "transaction_type": "DEBIT",
    "balance": 95,
    "onhold_balance": 0
  },
  {
    "transaction_id": "otransaction~c6d56ce54a9bbe24597d1d10448e39316dc6f16328bf3c5b0c8ef10e1dfeb397",
    "transacted_amount": 100,
    "timestamp": "2022-04-20T15:44:26.000Z",
    "token_id": "tokenId",
    "transacted_account": "oaccount~deb5fb0906c40506f6c2d00c573b774e01a53dd91499e651d92ac4778b6add6a",
    "transaction_type": "MINT",
    "balance": 100,
    "onhold_balance": 0
  }
]
getSubTransactionsById
이 메소드는 지정된 사용자 및 토큰에 대한 계정 트랜잭션 내역 세부정보 배열을 반환합니다. 이 메소드는 체인 코드의 Token Admin 또는 계정의 AccountOwner에 의해서만 호출될 수 있습니다.
  @Validator(yup.string())
  public async getSubTransactionsById(transaction_id: string) {
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getSubTransactionsById", "TOKEN", { transaction_id });
    return await this.Ctx.Account.getSubTransactionsById(transaction_id);
  }
매개변수:
  • transaction_id: string – 대량 이전 트랜잭션의 ID입니다.
반환값:
  • 지정된 대량 이전 트랜잭션 ID에 대한 JSON 형식의 계정 하위 트랜잭션 객체 배열입니다.
예:

ochain invoke GetAccountSubTransactionHistory 'otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b'

[
    {
        "transacted_account": "oaccount~16c38d804413ebabf416360d374f76c973d4e71c74adfde73cc40c7c274883b8",
        "transaction_type": "DEBIT",
        "transaction_id": "otransaction~6e0f8fe4a6430322170b9c619b04b6c9f1c8d257923f611b866bdf69d7fe6cb8~c81e728d9d4c2f636f067f89cc14862c",
        "transacted_amount": 5,
        "timestamp": "2022-04-20T15:52:21.000Z",
        "token_id": "token1",
        "balance": 80,
        "onhold_balance": 0
    },
    {
        "transacted_account": "oaccount~fbf95683b21bbc91a22205819ac1e2e9c90355d536821ed3fe22b7d23915c248",
        "transaction_type": "DEBIT",
        "transaction_id": "otransaction~6e0f8fe4a6430322170b9c619b04b6c9f1c8d257923f611b866bdf69d7fe6cb8~c4ca4238a0b923820dcc509a6f75849b",
        "transacted_amount": 5,
        "timestamp": "2022-04-20T15:52:21.000Z",
        "token_id": "token1",
        "balance": 85,
        "onhold_balance": 0
    }
]
getSubTransactionsByIdWithFilters
이 방법은 지정된 트랜잭션에 대한 계정 하위 트랜잭션 기록 세부정보의 배열을 반환합니다.
  @Validator(yup.string(), yup.object().nullable())
  public async getSubTransactionsByIdWithFilters(transaction_id: string, filters?: SubTransactionFilters) {
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getSubTransactionsByIdWithFilters", "TOKEN", { transaction_id });
    return await this.Ctx.Account.getSubTransactionsByIdWithFilters(transaction_id, filters);
  } 
매개변수:
  • transaction_id: string – 트랜잭션의 ID입니다.
  • filters: string – 선택적 매개변수입니다. 비어 있으면 모든 레코드가 반환됩니다. PageSize 속성은 반환할 레코드 수를 결정합니다. PageSize가 0이면 기본 페이지 크기는 20입니다. Bookmark 속성은 반환할 레코드의 시작 인덱스를 결정합니다. 자세한 내용은 Hyperledger Fabric 설명서를 참조하십시오. StartTimeEndTime 등록 정보는 RFC-3339 형식으로 지정해야 합니다.
반환값:
  • 지정된 대량 이전 트랜잭션 ID에 대한 JSON 형식의 계정 하위 트랜잭션 객체 배열입니다.
예:

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

[
  {
    "transaction_id": "otransaction~6e0f8fe4a6430322170b9c619b04b6c9f1c8d257923f611b866bdf69d7fe6cb8~c81e728d9d4c2f636f067f89cc14862c",
    "transacted_amount": 5,
    "timestamp": "2022-04-20T15:52:21.000Z",
    "token_id": "tokenId",
    "transacted_account": "oaccount~16c38d804413ebabf416360d374f76c973d4e71c74adfde73cc40c7c274883b8",
    "transaction_type": "DEBIT",
    "balance": 80,
    "onhold_balance": 0
  },
  {
    "transaction_id": "otransaction~6e0f8fe4a6430322170b9c619b04b6c9f1c8d257923f611b866bdf69d7fe6cb8~c4ca4238a0b923820dcc509a6f75849b",
    "transacted_amount": 5,
    "timestamp": "2022-04-20T15:52:21.000Z",
    "token_id": "tokenId",
    "transacted_account": "oaccount~fbf95683b21bbc91a22205819ac1e2e9c90355d536821ed3fe22b7d23915c248",
    "transaction_type": "DEBIT",
    "balance": 85,
    "onhold_balance": 0
  }
]
getTransactionById
이 메소드는 Transaction 자산의 내역을 반환합니다.
@Validator(yup.string())
    public async getTransactionById(transaction_id: string) {
        return await this.Ctx.Transaction.getTransactionById(transaction_id);
    }
매개변수:
  • transaction_id string – 거래 자산의 ID입니다.
반환값:
  • 성공 시 트랜잭션에 대한 기록의 JSON 배열입니다.
반환 값 예제:
{
    "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
    "history": [
        {
            "trxId": "68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
            "timeStamp": 1629180264,
            "value": {
                "assetType": "otransaction",
                "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
                "token_id": "digiCurr101",
                "from_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
                "to_account_id": "",
                "transaction_type": "BULKTRANSFER",
                "amount": 20,
                "timestamp": "2021-08-17T06:04:24.000Z",
                "number_of_sub_transactions": 2,
                "holding_id": ""
            }
        }
    ],
    "sub_transactions": [
        {
            "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c4ca4238a0b923820dcc509a6f75849b",
            "history": [
                {
                    "trxId": "68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
                    "timeStamp": 1629180264,
                    "value": {
                        "assetType": "otransaction",
                        "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c4ca4238a0b923820dcc509a6f75849b",
                        "token_id": "digiCurr101",
                        "from_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
                        "to_account_id": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
                        "transaction_type": "TRANSFER",
                        "amount": 10,
                        "timestamp": "2021-08-17T06:04:24.000Z",
                        "number_of_sub_transactions": 0,
                        "holding_id": ""
                    }
                }
            ]
        },
        {
            "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c81e728d9d4c2f636f067f89cc14862c",
            "history": [
                {
                    "trxId": "68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
                    "timeStamp": 1629180264,
                    "value": {
                        "assetType": "otransaction",
                        "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c81e728d9d4c2f636f067f89cc14862c",
                        "token_id": "digiCurr101",
                        "from_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
                        "to_account_id": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e",
                        "transaction_type": "TRANSFER",
                        "amount": 10,
                        "timestamp": "2021-08-17T06:04:24.000Z",
                        "number_of_sub_transactions": 0,
                        "holding_id": ""
                    }
                }
            ]
        }
    ]
}
deleteHistoricalTransactions
이 방법은 상태 데이터베이스에서 이전 트랜잭션을 삭제합니다.
@Validator(yup.date())
    public async deleteHistoricalTransactions(time_to_expiration: Date) {
        await this.Ctx.Auth.checkAuthorization('TRANSACTION.deleteTransactions', 'TOKEN');
        return await this.Ctx.Transaction.deleteTransactions(time_to_expiration);
    }
매개변수:
  • time_to_expiration Date – 트랜잭션 삭제 시기를 나타내는 시간 기록입니다. 지정된 시간보다 오래된 트랜잭션 자산이 삭제됩니다.
반환 값 예제:
"payload": {
    "msg": "Successfuly deleted transaction older than date: Thu Aug 19 2021 11:19:36 GMT+0000 (Coordinated Universal Time).",
    "transactions": [
        "otransaction~ec3366dd48b4ce2838f820f2f138648e6e55a07226713e59b411ff31b0d21058"
    ]
}
getAccountTransactionHistoryWithFiltersFromRichHistDB
데이터를 풍부한 기록 데이터베이스와 동기화한 다음 체인코드 API 호출을 사용하여 데이터를 인출할 수 있습니다. 이 메소드는 풍부한 기록 데이터베이스에서 트랜잭션 기록을 패치(fetch)합니다. 이 방법을 사용하려면 먼저 Oracle Blockchain Platform Digital Assets EditionOracle Database View Definitions for Wholesale CBDC에 설명된 대로 ORDS(Oracle REST Data Services) 및 OAuth를 사용으로 설정하여 Oracle Autonomous Database를 실행해야 합니다.
@GetMethod()
@Validator(yup.string(), yup.string(), yup.string(), yup.string(), yup.string(), yup.object().nullable())
public async getAccountTransactionHistoryWithFiltersFromRichHistDB(token_id: string, org_id: string, user_id: string, custom_endpoint: string, bearer_token: string, filters?: Filters) {
const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountTransactionHistoryWithFilters", "TOKEN", { account_id });
return await this.Ctx.Account.getAccountTrxHistoryWithFiltersFromRichHistDB(account_id, org_id, user_id.toLowerCase(), custom_endpoint, bearer_token, filters);
}
매개변수:
  • 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 설명서를 참고하세요. StartTimeEndTime 등록 정보는 RFC-3339 형식으로 지정해야 합니다.
getAccountTransactionHistory
이 메소드는 지정된 사용자 및 토큰에 대한 계정 트랜잭션 내역 세부정보 배열을 반환합니다. 이 메소드는 지정된 조직의 Token Admin 또는 Token Auditor, Org Admin 또는 Org Auditor 또는 계정의 AccountOwner에 의해서만 호출될 수 있습니다.
@GetMethod()
@Validator(yup.string(), yup.string(), yup.string())
public async getAccountTransactionHistory(token_id: string, org_id: string, user_id: string) {
const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountTransactionHistory", "TOKEN", { account_id });
return await this.Ctx.Account.getAccountTransactionHistory(account_id, org_id, user_id.toLowerCase());
}
매개변수:
  • 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 Auditor, Org Admin 또는 Org Auditor 또는 계정의 AccountOwner에 의해서만 호출될 수 있습니다.
@GetMethod()
@Validator(yup.string(), yup.string(), yup.string(), yup.object().nullable())
public async getAccountTransactionHistoryWithFilters(token_id: string, org_id: string, user_id: string, filters?: Filters) {
const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountTransactionHistoryWithFilters", "TOKEN", { account_id });
return await this.Ctx.Account.getAccountTransactionHistoryWithFilters(account_id, org_id, user_id.toLowerCase(), filters);
}
매개변수:
  • token_id: string – 토큰 ID입니다.
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
  • filters: string – 선택적 매개변수입니다. 비어 있으면 모든 레코드가 반환됩니다. PageSize 속성은 반환할 레코드 수를 결정합니다. PageSize가 0이면 기본 페이지 크기는 20입니다. Bookmark 속성은 반환할 레코드의 시작 인덱스를 결정합니다. 자세한 내용은 Hyperledger Fabric 설명서를 참조하십시오. StartTimeEndTime 등록 정보는 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 Admin, Token Auditor 또는 AccountOwner에 의해서만 호출될 수 있습니다.
  @Validator(yup.string())
  public async getSubTransactionsById(transaction_id: string) {
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getSubTransactionsById", "TOKEN", { transaction_id });
    return await this.Ctx.Account.getSubTransactionsById(transaction_id);
  }
매개변수:
  • transaction_id: string – 대량 이전 트랜잭션의 ID입니다.
반환값:
  • 지정된 대량 이전 트랜잭션 ID에 대한 JSON 형식의 계정 하위 트랜잭션 객체 배열입니다.
예:

ochain invoke GetAccountSubTransactionHistory 'otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b'

[
    {
        "transacted_account": "oaccount~16c38d804413ebabf416360d374f76c973d4e71c74adfde73cc40c7c274883b8",
        "transaction_type": "DEBIT",
        "transaction_id": "otransaction~6e0f8fe4a6430322170b9c619b04b6c9f1c8d257923f611b866bdf69d7fe6cb8~c81e728d9d4c2f636f067f89cc14862c",
        "transacted_amount": 5,
        "timestamp": "2022-04-20T15:52:21.000Z",
        "token_id": "token1",
        "balance": 80,
        "onhold_balance": 0
    },
    {
        "transacted_account": "oaccount~fbf95683b21bbc91a22205819ac1e2e9c90355d536821ed3fe22b7d23915c248",
        "transaction_type": "DEBIT",
        "transaction_id": "otransaction~6e0f8fe4a6430322170b9c619b04b6c9f1c8d257923f611b866bdf69d7fe6cb8~c4ca4238a0b923820dcc509a6f75849b",
        "transacted_amount": 5,
        "timestamp": "2022-04-20T15:52:21.000Z",
        "token_id": "token1",
        "balance": 85,
        "onhold_balance": 0
    }
]
getSubTransactionsByIdWithFilters
이 방법은 지정된 트랜잭션에 대한 계정 하위 트랜잭션 기록 세부정보의 배열을 반환합니다.
  @Validator(yup.string(), yup.object().nullable())
  public async getSubTransactionsByIdWithFilters(transaction_id: string, filters?: SubTransactionFilters) {
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getSubTransactionsByIdWithFilters", "TOKEN", { transaction_id });
    return await this.Ctx.Account.getSubTransactionsByIdWithFilters(transaction_id, filters);
  } 
매개변수:
  • transaction_id: string – 트랜잭션의 ID입니다.
  • filters: string – 선택적 매개변수입니다. 비어 있으면 모든 레코드가 반환됩니다. PageSize 속성은 반환할 레코드 수를 결정합니다. PageSize가 0이면 기본 페이지 크기는 20입니다. Bookmark 속성은 반환할 레코드의 시작 인덱스를 결정합니다. 자세한 내용은 Hyperledger Fabric 설명서를 참고하세요. StartTimeEndTime 등록 정보는 RFC-3339 형식으로 지정해야 합니다.
반환값:
  • 지정된 대량 이전 트랜잭션 ID에 대한 JSON 형식의 계정 하위 트랜잭션 객체 배열입니다.
예:

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

[
  {
    "transaction_id": "otransaction~6e0f8fe4a6430322170b9c619b04b6c9f1c8d257923f611b866bdf69d7fe6cb8~c81e728d9d4c2f636f067f89cc14862c",
    "transacted_amount": 5,
    "timestamp": "2022-04-20T15:52:21.000Z",
    "token_id": "tokenId",
    "transacted_account": "oaccount~16c38d804413ebabf416360d374f76c973d4e71c74adfde73cc40c7c274883b8",
    "transaction_type": "DEBIT",
    "balance": 80,
    "onhold_balance": 0
  },
  {
    "transaction_id": "otransaction~6e0f8fe4a6430322170b9c619b04b6c9f1c8d257923f611b866bdf69d7fe6cb8~c4ca4238a0b923820dcc509a6f75849b",
    "transacted_amount": 5,
    "timestamp": "2022-04-20T15:52:21.000Z",
    "token_id": "tokenId",
    "transacted_account": "oaccount~fbf95683b21bbc91a22205819ac1e2e9c90355d536821ed3fe22b7d23915c248",
    "transaction_type": "DEBIT",
    "balance": 85,
    "onhold_balance": 0
  }
]
getTransactionById
이 메소드는 Transaction 자산의 내역을 반환합니다. 이 메소드는 Token Admin 또는 Token Auditor, 지정된 조직의 Org Admin 또는 Org Auditor 또는 트랜잭션 참가자(발신자, 수신자 또는 공증인)에 의해서만 호출될 수 있습니다.
@Validator(yup.string())
    public async getTransactionById(transaction_id: string) {
        return await this.Ctx.Transaction.getTransactionById(transaction_id);
    }
매개변수:
  • transaction_id string – 거래 자산의 ID입니다.
반환값:
  • 성공 시 트랜잭션에 대한 기록의 JSON 배열입니다.
반환 값 예제:
{
    "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
    "history": [
        {
            "trxId": "68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
            "timeStamp": 1629180264,
            "value": {
                "assetType": "otransaction",
                "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
                "token_id": "digiCurr101",
                "from_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
                "to_account_id": "",
                "transaction_type": "BULKTRANSFER",
                "amount": 20,
                "timestamp": "2021-08-17T06:04:24.000Z",
                "number_of_sub_transactions": 2,
                "holding_id": ""
            }
        }
    ],
    "sub_transactions": [
        {
            "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c4ca4238a0b923820dcc509a6f75849b",
            "history": [
                {
                    "trxId": "68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
                    "timeStamp": 1629180264,
                    "value": {
                        "assetType": "otransaction",
                        "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c4ca4238a0b923820dcc509a6f75849b",
                        "token_id": "digiCurr101",
                        "from_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
                        "to_account_id": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
                        "transaction_type": "TRANSFER",
                        "amount": 10,
                        "timestamp": "2021-08-17T06:04:24.000Z",
                        "number_of_sub_transactions": 0,
                        "holding_id": ""
                    }
                }
            ]
        },
        {
            "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c81e728d9d4c2f636f067f89cc14862c",
            "history": [
                {
                    "trxId": "68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
                    "timeStamp": 1629180264,
                    "value": {
                        "assetType": "otransaction",
                        "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c81e728d9d4c2f636f067f89cc14862c",
                        "token_id": "digiCurr101",
                        "from_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
                        "to_account_id": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e",
                        "transaction_type": "TRANSFER",
                        "amount": 10,
                        "timestamp": "2021-08-17T06:04:24.000Z",
                        "number_of_sub_transactions": 0,
                        "holding_id": ""
                    }
                }
            ]
        }
    ]
}
deleteHistoricalTransactions
이 방법은 상태 데이터베이스에서 이전 트랜잭션을 삭제합니다.
@Validator(yup.date())
    public async deleteHistoricalTransactions(time_to_expiration: Date) {
        await this.Ctx.Auth.checkAuthorization('TRANSACTION.deleteTransactions', 'TOKEN');
        return await this.Ctx.Transaction.deleteTransactions(time_to_expiration);
    }
매개변수:
  • time_to_expiration Date – 트랜잭션 삭제 시기를 나타내는 시간 기록입니다. 지정된 시간보다 오래된 트랜잭션 자산이 삭제됩니다.
반환 값 예제:
"payload": {
    "msg": "Successfuly deleted transaction older than date: Thu Aug 19 2021 11:19:36 GMT+0000 (Coordinated Universal Time).",
    "transactions": [
        "otransaction~ec3366dd48b4ce2838f820f2f138648e6e55a07226713e59b411ff31b0d21058"
    ]
}

토큰 동작 관리 방법 - 실행 가능한 동작

issueTokens
이 메소드는 메소드의 호출자가 소유하는 토큰을 민트합니다. 호출자는 계정과 minter 롤을 가져야 합니다. 주석 처리할 수 있는 토큰 수는 사양 파일에서 mintable 동작의 max_mint_quantity 속성에 의해 제한됩니다. max_mint_quantity 등록 정보가 지정되지 않은 경우 토큰을 개수 제한 없이 조롱할 수 있습니다. 수량은 사양 파일에서 divisible 동작의 decimal 매개변수에 의해 지정된 십진수 값 내에 있어야 합니다. 이 메소드는 minter 롤을 가진 계정의 AccountOwner에 의해서만 호출될 수 있습니다.
@Validator(yup.string(), yup.number().positive())
public async issueTokens(token_id: string, quantity: number) {
    const token_asset = await this.getTokenObject(token_id);
    return await this.Ctx.Token.mint(quantity, token_asset);
}
매개변수:
  • token_id: string – 토큰 ID입니다.
  • quantity – 민트할 토큰 수입니다.
반환값:
  • 성공하면 계정 세부정보가 포함된 메시지가 표시됩니다.
반환 값 예제:
{
    "msg": "Successfully minted 1000 tokens to Account Id: \
oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP, User-Id: user1)  ",
}
getTotalMintedTokens
이 메소드는 지정된 토큰에 대해 민트된 토큰의 총 수를 반환합니다. 이 메소드는 체인 코드의 Token Admin 또는 Org Admin에 의해서만 호출될 수 있습니다.
@Validator(yup.string())
 public async getTotalMintedTokens(token_id: string) {
     const token_asset = await this.getTokenObject(token_id);
     await this.Ctx.Auth.checkAuthorization('TOKEN.getTotalMintedTokens', 'TOKEN');
     const totalMintedTokens = await this.Ctx.Token.getTotalMintedTokens(token_asset);
     return {
         msg: `Total minted token for Token Id: ${token_id} is ${totalMintedTokens} tokens.`,
         quantity: totalMintedTokens
     };
 }
매개변수:
  • token_id: string – 토큰 ID입니다.
반환값:
  • 성공 시 총 토큰 수를 나타내는 JSON 문자열입니다.
반환 값 예제:
{"msg":"Total minted token for Token Id: digiCurr101 is 100 tokens.","quantity":100}
getNetTokens
이 메소드는 지정된 토큰에 대해 시스템에서 사용 가능한 총 순 토큰 수를 반환합니다. 순 토큰 합계는 토큰이 레코딩된 후 남은 토큰의 양입니다. 방정식 형식: net tokens = total minted tokens - total burned tokens. 토큰이 레코딩되지 않으면 순 토큰 수가 민트된 총 토큰 수와 같습니다. 이 메소드는 체인 코드의 Token Admin 또는 Org Admin에 의해서만 호출될 수 있습니다.
@Validator(yup.string())
public async getNetTokens(token_id: string) {
	const token_asset = await this.getTokenObject(token_id);
	await this.Ctx.Auth.checkAuthorization('TOKEN.getNetTokens', 'TOKEN');
	const netTokens = await this.Ctx.Token.getNetTokens(token_asset);
	return {
		msg: `Net supply of token for Token Id: ${token_id} is ${netTokens} tokens.`,
		quantity: netTokens
	};
}
매개변수:
  • token_id: string – 토큰 ID입니다.
반환값:
  • 성공 시 순 토큰 수를 나타내는 JSON 문자열입니다.
반환 값 예제:
{"msg":"Net supply of token for Token Id: digiCurr101 is 0 tokens.","quantity":0}
requestMint
이 메서드는 광부가 지정된 양의 토큰을 만들기 위해 광부 공증에 요청을 보내기 위해 호출할 수 있습니다.
@Validator(yup.string(), yup.string(), yup.string(), yup.string(), yup.number().positive(), yup.date(), yup.object().nullable())
public async requestMint( token_id: string, operation_id: string, notary_org_id: string, notary_user_id: string, quantity: number, time_to_expiration: Date, info_details?: InfoDetails) {

const token_asset = await this.getTokenObject(token_id);
const notary_account_id = await this.Ctx.Account.generateAccountId(token_id, notary_org_id, notary_user_id);
return await this.Ctx.Token.hold(operation_id, null, notary_account_id, quantity, time_to_expiration, token_asset, HoldOperationType.MINT, 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/Postman: "{\"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
이 메서드는 민팅 요청을 승인하기 위해 광부 공증인이 호출할 수 있습니다.
@Validator(yup.string(), yup.string())
public async approveMint(token_id: string, operation_id: string) {
const token_asset = await this.getTokenObject(token_id);
return await this.Ctx.Token.executeHold(operation_id, token_asset);
}
매개변수:
  • 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
이 메서드는 민팅 요청을 거부하기 위해 광부 공증인이 호출할 수 있습니다.
@Validator(yup.string(), yup.string())
public async rejectMint(token_id: string, operation_id: string) {
const token_asset = await this.getTokenObject(token_id);
return await this.Ctx.Token.releaseHold(operation_id, token_asset);
}
매개변수:
  • 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
이 메소드는 메소드의 호출자가 소유하는 토큰을 민트합니다.
@Validator(yup.string(), yup.number().positive(), yup.object().nullable())
public async issueTokens(token_id: string, quantity: number, info_details?: InfoDetails) {
const token_asset = await this.getTokenObject(token_id);
return await this.Ctx.Token.mint(quantity, token_asset, 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/Postman: "{\"category\":\"category value\",\"description\":\"description value\"}"

반환 값 예제:
{
msg:
"Successfully minted 100 tokens to Account Id: oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (Org-Id: Org1MSP, User-Id: admin)"
}
getTotalMintedTokens
이 메소드는 지정된 토큰에 대해 민트된 토큰의 총 수를 반환합니다. 이 메소드는 Token Admin, Token Auditor, Org Admin 또는 Org Auditor에 의해서만 호출될 수 있습니다.
@Validator(yup.string())
 public async getTotalMintedTokens(token_id: string) {
     const token_asset = await this.getTokenObject(token_id);
     await this.Ctx.Auth.checkAuthorization('TOKEN.getTotalMintedTokens', 'TOKEN');
     const totalMintedTokens = await this.Ctx.Token.getTotalMintedTokens(token_asset);
     return {
         msg: `Total minted token for Token Id: ${token_id} is ${totalMintedTokens} tokens.`,
         quantity: totalMintedTokens
     };
 }
매개변수:
  • token_id: string – 토큰 ID입니다.
반환값:
  • 성공 시 총 토큰 수를 나타내는 JSON 문자열입니다.
반환 값 예제:
{"msg":"Total minted token for Token Id: digiCurr101 is 100 tokens.","quantity":100}
getNetTokens
이 메소드는 지정된 토큰에 대해 시스템에서 사용 가능한 총 순 토큰 수를 반환합니다. 순 토큰 합계는 토큰이 레코딩된 후 남은 토큰의 양입니다. 방정식 형식: net tokens = total minted tokens - total burned tokens. 토큰이 레코딩되지 않으면 순 토큰 수가 민트된 총 토큰 수와 같습니다. 이 메소드는 Token Admin, Token Auditor, Org Admin 또는 Org Auditor에 의해서만 호출될 수 있습니다.
@Validator(yup.string())
public async getNetTokens(token_id: string) {
	const token_asset = await this.getTokenObject(token_id);
	await this.Ctx.Auth.checkAuthorization('TOKEN.getNetTokens', 'TOKEN');
	const netTokens = await this.Ctx.Token.getNetTokens(token_asset);
	return {
		msg: `Net supply of token for Token Id: ${token_id} is ${netTokens} tokens.`,
		quantity: netTokens
	};
}
매개변수:
  • token_id: string – 토큰 ID입니다.
반환값:
  • 성공 시 순 토큰 수를 나타내는 JSON 문자열입니다.
반환 값 예제:
{"msg":"Net supply of token for Token Id: digiCurr101 is 0 tokens.","quantity":0}

토큰 동작 관리 방법 - 이전 가능한 동작

transferTokens
이 방법은 호출자의 토큰을 지정된 계정으로 전송합니다. 메소드 호출자는 계정을 가져야 합니다. 수량은 사양 파일에서 divisible 동작의 decimal 매개변수에 의해 지정된 십진수 값 내에 있어야 합니다. 이 메소드는 계정의 AccountOwner에 의해서만 호출될 수 있습니다.
@Validator(yup.string(), yup.string(), yup.string(), yup.number().positive())
public async transferTokens(token_id: string, to_org_id: string, to_user_id: string, quantity: number) {
   const token_asset = await this.getTokenObject(token_id);
   const to_account_id = await this.Ctx.Account.generateAccountId(token_id, to_org_id, to_user_id);
   return await this.Ctx.Token.transfer(to_account_id, quantity, token_asset);
}
매개변수:
  • token_id: string – 토큰 ID입니다.
  • to_org_id: string – 현재 조직에서 수신자(수취인)의 멤버쉽 서비스 제공자(MSP) ID입니다.
  • to_user_id: string – 수신자의 사용자 이름 또는 전자 메일 ID입니다.
  • quantity: number – 전송할 토큰 수입니다.
반환값:
  • 성공 시 지급인 및 수취인 계정에 대한 세부정보가 포함된 메시지입니다.
반환 값 예제:
{
    "msg": "Successfully transferred 400 tokens from account id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP, User-Id: user1) to account id: oaccount~digicur~682bb71de419602af74e3f226345ef308445ca51010737900c112435f676152df (Org-Id: Org1MSP, User-Id: user2) ",
}
bulkTransferTokens
이 메소드는 호출자 계정에서 flow 객체에 지정된 계정으로 토큰을 대량으로 전송합니다. 수량은 이 메소드의 사양 file.The 호출자에서 divisible 동작의 decimal 매개변수에 의해 지정된 십진수 값 내에 있어야 합니다. 계정이 이미 생성되어 있어야 합니다. 이 메소드는 계정의 AccountOwner에 의해서만 호출될 수 있습니다.
@Validator(yup.string(), yup.array().of(yup.object()))
public async bulkTransferTokens(token_id: string, flow: object[]) {
     const token_asset = await this.getTokenObject(token_id);
     return await this.Ctx.Token.bulkTransfer(flow, token_asset);
}
매개변수:
  • token_id: string – 토큰 ID입니다.
  • flow : object[] – 수신기 및 수량을 지정하는 JSON 객체의 배열입니다.
    • to_orgId: string – 현재 조직에서 수신자의 MSP(멤버쉽 서비스 제공자) ID입니다.
    • userId: string – 수신자의 사용자 이름 또는 전자 메일 ID입니다.
    • quantity: number – 전송할 토큰 수입니다.
    Visual Studio Code와 CLI 또는 Postman 컬렉션을 사용하는 경우 flow 매개변수를 다른 형식으로 지정합니다.
    Visual Studio 코드:
    [
      { "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 }]"
반환값:
  • 성공을 나타내는 메시지입니다.
반환 값 예제:
{
    "msg": "Successfully transferred 20 tokens from Account Id           'oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df' (Org-Id: Org1MSP, User-Id: admin).",
    "from_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
    "sub_transactions": [
        {
            "to_account_id": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
            "amount": 10
        },
        {
            "to_account_id": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e",
            "amount": 10
        }
    ]
}
transferTokens
이 방법은 호출자의 토큰을 지정된 계정으로 전송합니다.
@Validator(yup.string(), yup.string(), yup.string(), yup.number().positive(), yup.object().nullable())
public async transferTokens(token_id: string, to_org_id: string, to_user_id: string, quantity: number, info_details?: InfoDetails) {
const token_asset = await this.getTokenObject(token_id);
const to_account_id = await this.Ctx.Account.generateAccountId(token_id, to_org_id, to_user_id);
return await this.Ctx.Token.transfer(to_account_id, quantity, token_asset, 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/Postman: "{\"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 객체에 지정된 계정으로 토큰을 대량으로 전송합니다. 수량은 이 메소드의 사양 file.The 호출자에서 divisible 동작의 decimal 매개변수에 의해 지정된 십진수 값 내에 있어야 합니다. 계정이 이미 생성되어 있어야 합니다. 이 메소드는 계정의 AccountOwner에 의해서만 호출될 수 있습니다.
@Validator(yup.string(), yup.array().of(yup.object()))
public async bulkTransferTokens(token_id: string, flow: object[]) {
     const token_asset = await this.getTokenObject(token_id);
     return await this.Ctx.Token.bulkTransfer(flow, token_asset);
}
매개변수:
  • token_id: string – 토큰 ID입니다.
  • flow : object[] – 수신기 및 수량을 지정하는 JSON 객체의 배열입니다.
    • to_orgId: string – 현재 조직에서 수신자의 MSP(멤버쉽 서비스 제공자) ID입니다.
    • userId: string – 수신자의 사용자 이름 또는 전자 메일 ID입니다.
    • quantity: number – 전송할 토큰 수입니다.
    Visual Studio Code와 CLI 또는 Postman 컬렉션을 사용하는 경우 flow 매개변수를 다른 형식으로 지정합니다.
    Visual Studio 코드:
    [
      { "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 }]"
반환값:
  • 성공을 나타내는 메시지입니다.
반환 값 예제:
{
    "msg": "Successfully transferred 20 tokens from Account Id           'oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df' (Org-Id: Org1MSP, User-Id: admin).",
    "from_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
    "sub_transactions": [
        {
            "to_account_id": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
            "amount": 10
        },
        {
            "to_account_id": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e",
            "amount": 10
        }
    ]
}

토큰 동작 관리 방법 - 보류 가능한 동작

holdTokens
이 방법은 to_account_id 계정을 사용하여 토큰 소유자를 대신하여 보류를 생성합니다. 공증 계정이 지정되어 보류를 완료하거나 해제합니다. 보류가 생성되면 지급인의 지정된 토큰 잔액이 보류됩니다. 보류가 완료되거나 해제될 때까지 보류 잔액을 이전할 수 없습니다. 이 메소드의 호출자는 이미 생성된 계정을 가져야 합니다. 이 메소드는 계정의 AccountOwner에 의해서만 호출될 수 있습니다.
@Validator(yup.string(), yup.string(), yup.string(), yup.string(), yup.string(), yup.string(), yup.number().positive(), yup.date())
public async holdTokens(
    token_id: string,
    operation_id: string,
    to_org_id: string,
    to_user_id: string,
    notary_org_id: string,
    notary_user_id: string,
    quantity: number,
    time_to_expiration: Date
) {
    const token_asset = await this.getTokenObject(token_id);
    const to_account_id = await this.Ctx.Account.generateAccountId(token_id, to_org_id, to_user_id);
    const notary_account_id = await this.Ctx.Account.generateAccountId(token_id, notary_org_id, notary_user_id);
    return await this.Ctx.Token.hold(operation_id, to_account_id, notary_account_id, quantity, time_to_expiration, token_asset);
}
매개변수:
  • 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를 예를 들 수 있습니다.
반환값:
  • 성공하면 발신자의 계정이 포함된 메시지와 세부 정보가 유지됩니다.
반환 값 예제:
{
  "msg":"AccountId oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP , User-Id: admin) is   successfully holding 10 tokens"
}
executeHoldTokens
이 메소드는 토큰에 대한 보류를 완료합니다. 토큰 소유자가 이전에 보유한 토큰의 수량이 수신자에게 이전됩니다. quantity 값이 실제 보류 값보다 작은 경우 토큰의 원래 소유자가 나머지 금액을 다시 사용할 수 있습니다. 이 메소드는 지정된 작업 ID에 대해 notary 롤을 가진 AccountOwner ID로만 호출할 수 있습니다. 홀드는 공증인에 의해서만 완성될 수 있다.
@Validator(yup.string(), yup.string(), yup.number().positive())
public async executeHoldTokens(token_id: string, operation_id: string, quantity: number) {
    const token_asset = await this.getTokenObject(token_id);
    return await this.Ctx.Token.executeHold(operation_id, quantity, token_asset);
}
매개변수:
  • token_id: string – 토큰 ID입니다.
  • operation_id: string – 보류 작업을 식별하는 고유 ID입니다. 일반적으로 이 ID는 클라이언트 응용 프로그램에서 전달합니다.
  • quantity: number – 전송할 보류 중인 토큰 수입니다.
반환값:
  • 성공 시 발신자의 계정 ID 및 트랜잭션 수량을 포함하는 메시지입니다.
반환 값 예제:
{
 "msg":"Account Id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP, User-Id: admin) is successfully executed '10' tokens from Operation Id 'opr_121'."
}
releaseHoldTokens
이 방법은 토큰 보류를 해제합니다. 전송이 완료되지 않았으며 모든 보유 토큰을 원래 소유자가 다시 사용할 수 있습니다. 이 메소드는 지정된 시간 제한 내에 notary 롤이 있는 AccountOwner ID 또는 지정된 시간 제한 이후 지급인, 수취인 또는 공증인이 호출할 수 있습니다.
@Validator(yup.string(), yup.string())
public async releaseHoldTokens(token_id: string, operation_id: string) {
    const token_asset = await this.getTokenObject(token_id);
    return await this.Ctx.Token.releaseHold(operation_id, token_asset);
}
매개변수:
  • token_id: string – 토큰 ID입니다.
  • operation_id: string – 보류 작업을 식별하는 고유 ID입니다. 일반적으로 이 ID는 클라이언트 응용 프로그램에서 전달합니다.
반환값:
  • 성공 시 보류가 해제되었음을 나타내는 메시지입니다.
반환 값 예제:
{
 "msg":"Successfully released '10' tokens from Operation Id 'opr_121' to Account Id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP, User-Id: user1)."
}
getOnHoldIds
이 메소드는 지정된 계정에 대한 모든 보유 ID 목록을 반환합니다. 이 메소드는 체인 코드의 Token Admin, 지정된 조직의 Org Admin 또는 계정의 AccountOwner에 의해 호출될 수 있습니다.
  @Validator(yup.string(), yup.string(), yup.string())
  public async getOnHoldIds(token_id: string, org_id: string, user_id: string) {
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getOnHoldIds", "TOKEN", { account_id });
    return await this.Ctx.Account.getOnHoldIds(account_id);
  }
매개변수:
  • token_id: string – 토큰 ID입니다.
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 보유 ID의 JSON 목록입니다.
반환 값 예제:
{"msg":"Holding Ids are: ohold~digicur~digiCurr101~opr_121","holding_ids":["ohold~digicur~digiCurr101~opr_121"]}
getOnHoldDetailsWithOperationId
이 메소드는 지정된 작업 ID 및 토큰에 대해 보류 중인 트랜잭션 세부정보를 반환합니다. 이 메소드는 누구나 호출할 수 있습니다.
@Validator(yup.string(), yup.string())
public async getOnHoldDetailsWithOperationId(token_id: string, operation_id: string) {
    return await this.Ctx.Hold.getOnHoldDetailsWithOperationId(token_id, operation_id);
}
매개변수:
  • token_id: string – 토큰 ID입니다.
  • operation_id: string – 보류 작업을 식별하는 고유 ID입니다. 일반적으로 이 ID는 클라이언트 응용 프로그램에서 전달합니다.
반환값:
  • 성공 시 다음 속성을 포함하는 JSON 보류 객체입니다.
  • 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 – 보류가 만료될 때까지의 기간입니다.
반환 값 예제:
{
    "assetType": "ohold",
    "holding_id": "ohold~digicur~digiCurr101~opr_121",
    "operation_id": "opr_121",
    "token_name": "digicur",
    "from_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
    "to_account_id": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
    "notary_account_id": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e",
    "token_id": "digiCurr101",
    "quantity": 10,
    "time_to_expiration": "2022-08-01T18:30:00.000Z"
}
getOnHoldBalanceWithOperationId
이 메소드는 지정된 작업 ID 및 토큰에 대해 보류 중인 잔액을 반환합니다. 이 메소드는 누구나 호출할 수 있습니다.
@Validator(yup.string(), yup.string())
public async getOnHoldBalanceWithOperationId(token_id: string, operation_id: string) {
    return await this.Ctx.Hold.getOnHoldBalanceWithOperationId(token_id, operation_id);
}
매개변수:
  • token_id: string – 토큰 ID입니다.
  • operation_id: string – 보류 작업을 식별하는 고유 ID입니다. 일반적으로 이 ID는 클라이언트 응용 프로그램에서 전달합니다.
반환값:
  • 성공 시 보류 잔액을 나타내는 JSON 문자열입니다.
반환 값 예제:
{
	"msg": "Current Holding Balance of Operation 'opr_121' for token 'digiCurr101' is: 10",
	"holding_balance": 10
}
holdTokens
이 방법은 to_account_id 계정을 사용하여 토큰 소유자를 대신하여 보류를 생성합니다.
@Validator(yup.string(), yup.string(), yup.string(), yup.string(), yup.string(), yup.string(), yup.number().positive(), yup.date(), yup.object().nullable())
  public async holdTokens( token_id: string, operation_id: string, to_org_id: string, to_user_id: string, notary_org_id: string, notary_user_id: string, quantity: number, time_to_expiration: Date, info_details?: InfoDetails) {
    const token_asset = await this.getTokenObject(token_id);
    const to_account_id = await this.Ctx.Account.generateAccountId(token_id, to_org_id, to_user_id);
    const notary_account_id = await this.Ctx.Account.generateAccountId(token_id, notary_org_id, notary_user_id);
    return await this.Ctx.Token.hold(operation_id, to_account_id, notary_account_id, quantity, time_to_expiration, token_asset, HoldOperationType.TRANSFER, 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/Postman: "{\"category\":\"category value\",\"description\":\"description value\"}"

반환 값 예제:
{
msg:
"AccountId oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (Org-Id: Org1MSP, User-Id: admin) is successfully holding 100 tokens",
}
executeHoldTokens
이 메소드는 토큰에 대한 보류를 완료합니다. 토큰 소유자가 이전에 보유한 토큰의 수량이 수신자에게 이전됩니다. quantity 값이 실제 보류 값보다 작은 경우 토큰의 원래 소유자가 나머지 금액을 다시 사용할 수 있습니다. 이 메소드는 지정된 작업 ID에 대해 notary 롤을 가진 AccountOwner ID로만 호출할 수 있습니다. 홀드는 공증인에 의해서만 완성될 수 있다.
@Validator(yup.string(), yup.string(), yup.number().positive())
public async executeHoldTokens(token_id: string, operation_id: string, quantity: number) {
    const token_asset = await this.getTokenObject(token_id);
    return await this.Ctx.Token.executeHold(operation_id, quantity, token_asset);
}
매개변수:
  • token_id: string – 토큰 ID입니다.
  • operation_id: string – 보류 작업을 식별하는 고유 ID입니다. 일반적으로 이 ID는 클라이언트 응용 프로그램에서 전달합니다.
  • quantity: number – 전송할 보류 중인 토큰 수입니다.
반환값:
  • 성공 시 발신자의 계정 ID 및 트랜잭션 수량을 포함하는 메시지입니다.
반환 값 예제:
{
 "msg":"Account Id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP, User-Id: admin) is successfully executed '10' tokens from Operation Id 'opr_121'."
}
releaseHoldTokens
이 방법은 토큰 보류를 해제합니다. 전송이 완료되지 않았으며 모든 보유 토큰을 원래 소유자가 다시 사용할 수 있습니다. 이 메소드는 지정된 시간 제한 내에 notary 롤이 있는 AccountOwner ID 또는 지정된 시간 제한 이후 지급인, 수취인 또는 공증인이 호출할 수 있습니다.
@Validator(yup.string(), yup.string())
public async releaseHoldTokens(token_id: string, operation_id: string) {
    const token_asset = await this.getTokenObject(token_id);
    return await this.Ctx.Token.releaseHold(operation_id, token_asset);
}
매개변수:
  • token_id: string – 토큰 ID입니다.
  • operation_id: string – 보류 작업을 식별하는 고유 ID입니다. 일반적으로 이 ID는 클라이언트 응용 프로그램에서 전달합니다.
반환값:
  • 성공 시 보류가 해제되었음을 나타내는 메시지입니다.
반환 값 예제:
{
 "msg":"Successfully released '10' tokens from Operation Id 'opr_121' to Account Id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP, User-Id: user1)."
}
getOnHoldIds
이 메소드는 지정된 계정에 대한 모든 보유 ID 목록을 반환합니다. 이 메소드는 체인 코드의 Token Admin 또는 Token Auditor, 지정된 조직의 Org Admin 또는 Org Auditor 또는 계정의 AccountOwner에 의해 호출될 수 있습니다.
  @Validator(yup.string(), yup.string(), yup.string())
  public async getOnHoldIds(token_id: string, org_id: string, user_id: string) {
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getOnHoldIds", "TOKEN", { account_id });
    return await this.Ctx.Account.getOnHoldIds(account_id);
  }
매개변수:
  • token_id: string – 토큰 ID입니다.
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 보유 ID의 JSON 목록입니다.
반환 값 예제:
{"msg":"Holding Ids are: ohold~digicur~digiCurr101~opr_121","holding_ids":["ohold~digicur~digiCurr101~opr_121"]}
getOnHoldDetailsWithOperationId
이 메소드는 지정된 작업 ID 및 토큰에 대해 보류 중인 트랜잭션 세부정보를 반환합니다. 이 메소드는 체인코드의 Token Admin 또는 Token Auditor 또는 트랜잭션 참가자(발신자, 수신자, 공증)에 의해 호출될 수 있습니다.
@Validator(yup.string(), yup.string())
public async getOnHoldDetailsWithOperationId(token_id: string, operation_id: string) {
    return await this.Ctx.Hold.getOnHoldDetailsWithOperationId(token_id, operation_id);
}
매개변수:
  • token_id: string – 토큰 ID입니다.
  • operation_id: string – 보류 작업을 식별하는 고유 ID입니다. 일반적으로 이 ID는 클라이언트 응용 프로그램에서 전달합니다.
반환값:
  • 성공 시 다음 속성을 포함하는 JSON 보류 객체입니다.
  • 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 – 보류가 만료될 때까지의 기간입니다.
반환 값 예제:
{
    "assetType": "ohold",
    "holding_id": "ohold~digicur~digiCurr101~opr_121",
    "operation_id": "opr_121",
    "token_name": "digicur",
    "from_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
    "to_account_id": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
    "notary_account_id": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e",
    "token_id": "digiCurr101",
    "quantity": 10,
    "time_to_expiration": "2022-08-01T18:30:00.000Z"
}
getOnHoldBalanceWithOperationId
이 메소드는 지정된 작업 ID 및 토큰에 대해 보류 중인 잔액을 반환합니다. 이 메소드는 체인코드의 Token Admin 또는 Token Auditor 또는 트랜잭션 참가자(발신자, 수신자, 공증)에 의해 호출될 수 있습니다.
@Validator(yup.string(), yup.string())
public async getOnHoldBalanceWithOperationId(token_id: string, operation_id: string) {
    return await this.Ctx.Hold.getOnHoldBalanceWithOperationId(token_id, operation_id);
}
매개변수:
  • token_id: string – 토큰 ID입니다.
  • operation_id: string – 보류 작업을 식별하는 고유 ID입니다. 일반적으로 이 ID는 클라이언트 응용 프로그램에서 전달합니다.
반환값:
  • 성공 시 보류 잔액을 나타내는 JSON 문자열입니다.
반환 값 예제:
{
	"msg": "Current Holding Balance of Operation 'opr_121' for token 'digiCurr101' is: 10",
	"holding_balance": 10
}

토큰 동작 관리 방법 - 굽기 가능 동작

burnTokens
이 메소드는 트랜잭션 호출자의 계정에서 토큰을 비활성화하거나 레코딩합니다. 이 메소드의 호출자는 계정과 버너 롤을 가져야 합니다. 수량은 사양 파일에서 divisible 동작의 decimal 매개변수에 의해 지정된 십진수 값 내에 있어야 합니다. 이 메소드는 버너 롤이 있는 계정의 AccountOwner에서 호출할 수 있습니다.
@Validator(yup.string(), yup.number().positive())
public async burnTokens(token_id: string, quantity: number) {
    const token_asset = await this.getTokenObject(token_id);
    return await this.Ctx.Token.burn(quantity, token_asset);
}
매개변수:
  • token_id: string – 토큰 ID입니다.
  • quantity – 레코딩할 토큰 수입니다.
반환값:
  • 성공 시 레코딩된 토큰 수와 계정 ID가 포함된 성공 메시지입니다.
반환 값 예제:
{
    "msg": "Successfully burned 10 tokens from account id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP, User-Id: admin)"
}
requestBurn
이 방법은 버너가 지정된 양의 토큰을 폐기하라는 요청을 버너 공증에 보내기 위해 호출할 수 있으며, 이는 사용 가능한 잔액보다 작거나 같아야 합니다. 레코딩 요청이 시작되면 지정된 금액이 사용 가능한 잔액에서 즉시 공제되고 onhold_burn_balance 필드에 추가됩니다. 요청이 승인되면 토큰이 레코딩됩니다. 요청이 거부되면 토큰이 onhold_burn_balance 필드에서 사용 가능한 잔액으로 반환됩니다.
@Validator(yup.string(), yup.string(), yup.string(), yup.string(), yup.number().positive(), yup.date(), yup.object().nullable())

public async requestBurn( token_id: string, operation_id: string, notary_org_id: string, notary_user_id: string, quantity: number, time_to_expiration: Date, info_details?: InfoDetails ) {

const token_asset = await this.getTokenObject(token_id);
const notary_account_id = await this.Ctx.Account.generateAccountId(token_id, notary_org_id, notary_user_id);
return await this.Ctx.Token.hold(operation_id, null, notary_account_id, quantity, time_to_expiration, token_asset, HoldOperationType.BURN, null, description);
}
매개변수:
  • 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/Postman: "{\"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
이 메서드는 레코딩 요청을 승인하기 위해 버너 공증에 의해 호출 될 수 있습니다.
@Validator(yup.string(), yup.string())
public async approveBurn(token_id: string, operation_id: string) {
const token_asset = await this.getTokenObject(token_id);
return await this.Ctx.Token.executeHold(operation_id, token_asset);
}
매개변수:
  • 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
이 메서드는 레코딩 요청을 거부하기 위해 버너 공증에 의해 호출 될 수 있습니다.
@Validator(yup.string(), yup.string())
public async rejectBurn(token_id: string, operation_id: string) {
const token_asset = await this.getTokenObject(token_id);
return await this.Ctx.Token.releaseHold(operation_id, token_asset);
}
매개변수:
  • 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 Admin, Token Auditor, Org Admin, Org Auditor 또는 계정 소유자에 의해서만 호출될 수 있습니다.
@GetMethod()
@Validator(yup.string(), yup.string(), yup.string())
public async getAccountOnHoldBurnBalance(token_id: string, org_id: string, user_id: string) {
  const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
  await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountOnHoldBurnBalance", "TOKEN", { account_id });
  return await this.Ctx.Account.getAccountOnHoldBurnBalance(account_id);
}
매개변수:
  • 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
이 메소드는 트랜잭션 호출자의 계정에서 토큰을 비활성화하거나 레코딩합니다.
@Validator(yup.string(), yup.number().positive(), yup.object().nullable())

public async burnTokens(token_id: string, quantity: number, info_details?: InfoDetails) {
const token_asset = await this.getTokenObject(token_id);
return await this.Ctx.Token.burn(quantity, token_asset, 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/Postman: "{\"category\":\"category value\",\"description\":\"description value\"}"

반환 값 예제:
{
msg:
"Successfully burned 100 tokens from account id: oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (Org-Id: Org1MSP, User-Id: admin)"
}

사용자정의 방법

토큰 SDK 메소드를 사용하여 업무용 응용 프로그램에 대한 커스텀 메소드를 작성할 수 있습니다.

이중 지출을 피하려면 상태 데이터베이스의 동일한 키-값 쌍에서 작동하는 여러 비동기 함수를 결합하지 마십시오. 대신 bulkTransferTokens 메소드를 사용하여 한 가지 방법으로 다중 전송을 수행합니다.

다음 예에서는 사용자정의 메소드에서 토큰 SDK 메소드를 사용하는 방법을 보여줍니다. buyTicket 메소드가 호출되면 호출자 계정에서 판매자 계정으로 20개의 토큰을 전송하고 전송의 트랜잭션 메시지를 반환합니다.

@Validator(yup.string(), yup.string(), yup.string(), yup.string(), yup.string())
public async buyTicket(token_id: string, seller_org_id: string, seller_user_id: string) {
	const token = await this.getTokenObject(token_id);

	/**
	* The following method this.Ctx.Account.generateAccountId(token_id, seller_org_id, seller_user_id) generates account id of the seller.
	*/
	const seller_account_id = await this.Ctx.Account.generateAccountId(token_id, seller_org_id, seller_user_id);

	/**
	* The following method this.Ctx.Token.transfer(seller_account_id, 20, token) transfers the quantity 20 from caller's
	* account & to seller's account.
	*/
	const transaction = await this.Ctx.Token.transfer(seller_account_id, 20, token);

	return transaction;
}

사용자정의 메소드에서 둘 이상의 토큰 SDK 메소드를 사용하는 경우 상태 데이터베이스에서 동일한 키-값 쌍에 영향을 주는 메소드를 사용하지 마십시오. 다음 예에서는 잘못된 다중 전송 방법을 보여줍니다.

@Validator(yup.string(), yup.string(), yup.string(), yup.string(), yup.string())
public async sendTokens(token_id: string, user1_org_id: string, user1_user_id: string, user2_org_id: string, user2_user_id: string) {
    const token = await this.getTokenObject(token_id);
    const user1_account_id = await Account.generateAccountId(token_id, user1_org_id, user1_user_id);
    const user2_account_id = await Account.generateAccountId(token_id, user2_org_id, user2_user_id);
    await token.transfer(user1_account_id, 20);
    await token.transfer(user2_account_id, 30);
}

대신 다음 코드 조각에 표시된 것처럼 bulkTransferTokens 메소드를 사용하여 호출자의 계정에서 다중 계정으로 이전합니다.

bulkTransferTokens(token_id: string, flow: object[])

주:

사용자 정의 메소드에서 상태 데이터베이스의 동일한 키-값 쌍에 영향을 줄 수 있는 토큰 SDK 메소드를 두 개 이상 사용하는 경우 토큰 체인코드에 대해 MVCC 최적화를 사용으로 설정합니다. 자세한 내용은 MVCC Optimization을 참조하십시오.

토큰 SDK 메소드

액세스 제어 관리 방법

토큰 SDK는 액세스 제어 기능을 제공합니다. 일부 메소드는 토큰의 Token Admin, Org Admin 또는 AccountOwner에 의해서만 호출될 수 있습니다. 이 기능을 사용하여 작업이 의도한 사용자만 수행되도록 할 수 있습니다. 권한 없는 액세스로 인해 오류가 발생합니다. 액세스 제어 함수를 사용하려면 ../lib/auth 모듈에서 Authorization 클래스를 임포트합니다.
import { Authorization } from '../lib/auth';
addAdmin
이 메소드는 사용자를 토큰 체인코드의 Token Admin로 추가합니다.
Ctx.Admin.addAdmin(org_id: string, user_id: string)
매개변수:
  • user_id – 사용자의 사용자 이름 또는 전자메일 ID입니다.
  • org_id – 현재 네트워크 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
반환값:
  • 성공 시 토큰 체인 코드의 Token Admin로 추가된 사용자에 대한 세부정보를 나열하는 JSON 객체가 포함된 약속 메시지입니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
{
    "msg": "Successfully added Admin (Org_Id: Org1MSP, User_Id: user1)"
}
removeAdmin
이 메소드는 토큰 체인코드의 Token Admin인 사용자를 제거합니다.
Ctx.Admin.removeAdmin(org_id: string, user_id: string)
매개변수:
  • user_id – 사용자의 사용자 이름 또는 전자메일 ID입니다.
  • org_id – 현재 네트워크 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
반환값:
  • 성공 시 더 이상 토큰 체인 코드의 Token Admin가 아닌 사용자에 대한 세부정보를 나열하는 JSON 객체가 포함된 약속 메시지입니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
{
    "msg": "Successfully removed Admin (Org_Id: Org1MSP, User_Id: user1)"
}
isUserTokenAdmin
이 메소드는 함수 호출자가 Token Admin인 경우 부울 값 true를 반환합니다. 그렇지 않으면 메소드가 false를 반환합니다.
Ctx.Auth.isUserTokenAdmin()
매개변수:
  • user_id – 사용자의 사용자 이름 또는 전자메일 ID입니다.
  • org_id – 현재 네트워크 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
반환값:
  • 오류가 발생한 경우 부울 응답 및 오류 메시지입니다.
getAllAdmins
이 메소드는 토큰 체인 코드의 Token Admin인 모든 사용자 목록을 반환합니다.
Ctx.Admin.getAllAdmins()
매개변수:
  • 없음
반환값:
  • 성공 시 토큰 체인코드의 Token Admin인 모든 사용자에 대한 세부정보를 나열하는 JSON 객체에 대한 약속입니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
{
    "admins": [
        {
            "orgId": "Org1MSP",
            "userId": "admin"
        }
    ]
}
checkAuthorization
이 방법을 사용하여 작업에 액세스 제어 검사를 추가합니다. 특정 토큰 메소드는 토큰의 Token Admin 또는 AccountOwner 또는 다중 계정을 가진 사용자의 경우 MultipleAccountOwner에 의해서만 실행할 수 있습니다. 액세스 제어 매핑은 ../lib/constant.ts 파일에 설명되어 있습니다. ../lib/constant.ts 파일을 편집하여 액세스 제어를 수정할 수 있습니다. 자체 액세스 제어를 사용하거나 액세스 제어를 사용 안함으로 설정하려면 자동으로 생성된 제어기 방법 및 사용자 정의 방법에서 액세스 제어 코드를 제거합니다.
export const TOKENACCESS = {
  ADMIN: {
    isUserTokenAdmin: ["Admin", "OrgAdmin"],
    addTokenAdmin: ["Admin"],
    removeTokenAdmin: ["Admin"],
    getAllAdmins: ["Admin", "OrgAdmin"],
    addOrgAdmin: ["Admin", "OrgAdminForOrgId"],
    removeOrgAdmin: ["Admin", "OrgAdminForOrgId"],
    getOrgAdmins: ["Admin", "OrgAdmin"],
  },
  TOKEN: {
    save: ["Admin"],
    getAllTokens: ["Admin", "OrgAdmin"],
    get: ["Admin", "OrgAdmin"],
    update: ["Admin"],
    getDecimals: ["Admin", "OrgAdmin"],
    getTokensByName: ["Admin", "OrgAdmin"],
    addRoleMember: ["Admin", "OrgAdminRoleCheck"],
    removeRoleMember: ["Admin", "OrgAdminRoleCheck"],
    isInRole: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    getTotalMintedTokens: ["Admin", "OrgAdmin"],
    getNetTokens: ["Admin", "OrgAdmin"],
    getTokenHistory: ["Admin", "OrgAdmin"],
  },
  ROLE: {
    getAccountsByRole: ["Admin"],
    getOrgAccountsByRole: ["Admin", "OrgAdminForOrgId"],
    getUsersByRole: ["Admin"],
    getOrgUsersByRole: ["Admin", "OrgAdminForOrgId"],
  },
  TRANSACTION: {
    deleteTransactions: ["Admin"],
  },ACCOUNT: {
    createAccount: ["Admin", "OrgAdminForOrgId"],
    associateToken: ["Admin", "OrgAdminForAccountId"],
    getAllAccounts: ["Admin"],
    getAllOrgAccounts: ["Admin", "OrgAdminForOrgId"],
    getAccountsByUser: ["Admin", "OrgAdminForOrgId", "MultipleAccountOwner"],
    getAccount: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    history: ["Admin", "AccountOwner"],
    getAccountTransactionHistory: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    getAccountTransactionHistoryWithFilters: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    getSubTransactionsById: ["Admin", "TransactionInvoker"],
    getSubTransactionsByIdWithFilters: ["Admin", "TransactionInvoker"],
    getAccountBalance: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    getAccountOnHoldBalance: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    getOnHoldIds: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    getConversionHistory: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
  },
  ACCOUNT_STATUS: {
    get: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    history: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    activateAccount: ["Admin", "OrgAdminForOrgId"],
    suspendAccount: ["Admin", "OrgAdminForOrgId"],
    deleteAccount: ["Admin", "OrgAdminForOrgId"],
  },
  TOKEN_CONVERSION: {
    initializeExchangePoolUser: ["Admin"],
    addConversionRate: ["Admin"],
    updateConversionRate: ["Admin"],
    getConversionRate: ["Admin", "OrgAdmin", "AnyAccountOwner"],
    getConversionRateHistory: ["Admin", "OrgAdmin", "AnyAccountOwner"],
    tokenConversion: ["Admin", "AnyAccountOwner"],
    getExchangePoolUser: ["Admin"],
  },
}
await this.Ctx.Auth.checkAuthorization(<parameters>);
매개변수:
  • classFuncName: string../lib/constant.ts 파일에 설명된 대로 클래스와 메소드 사이의 맵 값입니다.
  • ...argsargs[0]가 상수 'TOKEN'을 사용하고 args[1]account_id을 사용하여 AccountOwner에 대한 액세스 제어 검사를 추가하는 변수 인수입니다. MultipleAccountOwner에 대한 액세스 제어 검사를 추가하려면 args[1]org_id를 사용하고 args[2]user_id를 사용합니다.
반환값:
  • 성공 시, 약속이 있습니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
addOrgAdmin
이 메소드는 사용자를 조직의 Org Admin로 추가합니다.
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인 사용자를 제거합니다.
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인 모든 사용자 목록을 반환합니다.
Ctx.Admin.getAllOrgAdmins()
매개변수:
  • 없음
반환값:
  • 성공 시 orgIduserId 객체를 포함하는 JSON 형식의 배열입니다.
반환 값 예제:
{
    "admins": [
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin"
        },
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin1"
        },
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin2"
        }
    ]
}
addAdmin
이 메소드는 사용자를 토큰 체인코드의 Token Admin로 추가합니다.
Ctx.Admin.addAdmin(org_id: string, user_id: string)
매개변수:
  • user_id – 사용자의 사용자 이름 또는 전자메일 ID입니다.
  • org_id – 현재 네트워크 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
반환값:
  • 성공 시 토큰 체인 코드의 Token Admin로 추가된 사용자에 대한 세부정보를 나열하는 JSON 객체가 포함된 약속 메시지입니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
{
    "msg": "Successfully added Admin (Org_Id: Org1MSP, User_Id: user1)"
}
removeAdmin
이 메소드는 토큰 체인코드의 Token Admin인 사용자를 제거합니다.
Ctx.Admin.removeAdmin(org_id: string, user_id: string)
매개변수:
  • user_id – 사용자의 사용자 이름 또는 전자메일 ID입니다.
  • org_id – 현재 네트워크 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
반환값:
  • 성공 시 더 이상 토큰 체인 코드의 Token Admin가 아닌 사용자에 대한 세부정보를 나열하는 JSON 객체가 포함된 약속 메시지입니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
{
    "msg": "Successfully removed Admin (Org_Id: Org1MSP, User_Id: user1)"
}
isUserTokenAdmin
이 메소드는 함수 호출자가 Token Admin인 경우 부울 값 true를 반환합니다. 그렇지 않으면 메소드가 false를 반환합니다.
Ctx.Auth.isUserTokenAdmin()
매개변수:
  • user_id – 사용자의 사용자 이름 또는 전자메일 ID입니다.
  • org_id – 현재 네트워크 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
반환값:
  • 오류가 발생한 경우 부울 응답 및 오류 메시지입니다.
getAllAdmins
이 메소드는 토큰 체인 코드의 Token Admin인 모든 사용자 목록을 반환합니다.
Ctx.Admin.getAllAdmins()
매개변수:
  • 없음
반환값:
  • 성공 시 토큰 체인코드의 Token Admin인 모든 사용자에 대한 세부정보를 나열하는 JSON 객체에 대한 약속입니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
{
    "admins": [
        {
            "orgId": "Org1MSP",
            "userId": "admin"
        }
    ]
}
checkAuthorization
이 방법을 사용하여 작업에 액세스 제어 검사를 추가합니다. 특정 토큰 메소드는 토큰의 Token Admin 또는 AccountOwner 또는 다중 계정을 가진 사용자의 경우 MultipleAccountOwner에 의해서만 실행할 수 있습니다. 액세스 제어 매핑은 ../lib/constant.ts 파일에 설명되어 있습니다. ../lib/constant.ts 파일을 편집하여 액세스 제어를 수정할 수 있습니다. 자체 액세스 제어를 사용하거나 액세스 제어를 사용 안함으로 설정하려면 자동으로 생성된 제어기 방법 및 사용자 정의 방법에서 액세스 제어 코드를 제거합니다.
export const TOKENACCESS = {
  ADMIN: {
    isUserTokenAdmin: ["Admin", "OrgAdmin"],
    addTokenAdmin: ["Admin"],
    removeTokenAdmin: ["Admin"],
    getAllAdmins: ["Admin", "OrgAdmin"],
    addOrgAdmin: ["Admin", "OrgAdminForOrgId"],
    removeOrgAdmin: ["Admin", "OrgAdminForOrgId"],
    getOrgAdmins: ["Admin", "OrgAdmin"],
  },
  TOKEN: {
    save: ["Admin"],
    getAllTokens: ["Admin", "OrgAdmin"],
    get: ["Admin", "OrgAdmin"],
    update: ["Admin"],
    getDecimals: ["Admin", "OrgAdmin"],
    getTokensByName: ["Admin", "OrgAdmin"],
    addRoleMember: ["Admin", "OrgAdminRoleCheck"],
    removeRoleMember: ["Admin", "OrgAdminRoleCheck"],
    isInRole: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    getTotalMintedTokens: ["Admin", "OrgAdmin"],
    getNetTokens: ["Admin", "OrgAdmin"],
    getTokenHistory: ["Admin", "OrgAdmin"],
  },
  ROLE: {
    getAccountsByRole: ["Admin"],
    getOrgAccountsByRole: ["Admin", "OrgAdminForOrgId"],
    getUsersByRole: ["Admin"],
    getOrgUsersByRole: ["Admin", "OrgAdminForOrgId"],
  },
  TRANSACTION: {
    deleteTransactions: ["Admin"],
  },ACCOUNT: {
    createAccount: ["Admin", "OrgAdminForOrgId"],
    associateToken: ["Admin", "OrgAdminForAccountId"],
    getAllAccounts: ["Admin"],
    getAllOrgAccounts: ["Admin", "OrgAdminForOrgId"],
    getAccountsByUser: ["Admin", "OrgAdminForOrgId", "MultipleAccountOwner"],
    getAccount: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    history: ["Admin", "AccountOwner"],
    getAccountTransactionHistory: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    getAccountTransactionHistoryWithFilters: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    getSubTransactionsById: ["Admin", "TransactionInvoker"],
    getSubTransactionsByIdWithFilters: ["Admin", "TransactionInvoker"],
    getAccountBalance: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    getAccountOnHoldBalance: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    getOnHoldIds: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    getConversionHistory: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
  },
  ACCOUNT_STATUS: {
    get: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    history: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    activateAccount: ["Admin", "OrgAdminForOrgId"],
    suspendAccount: ["Admin", "OrgAdminForOrgId"],
    deleteAccount: ["Admin", "OrgAdminForOrgId"],
  },
  TOKEN_CONVERSION: {
    initializeExchangePoolUser: ["Admin"],
    addConversionRate: ["Admin"],
    updateConversionRate: ["Admin"],
    getConversionRate: ["Admin", "OrgAdmin", "AnyAccountOwner"],
    getConversionRateHistory: ["Admin", "OrgAdmin", "AnyAccountOwner"],
    tokenConversion: ["Admin", "AnyAccountOwner"],
    getExchangePoolUser: ["Admin"],
  },
}
await this.Ctx.Auth.checkAuthorization(<parameters>);
매개변수:
  • classFuncName: string../lib/constant.ts 파일에 설명된 대로 클래스와 메소드 사이의 맵 값입니다.
  • ...argsargs[0]가 상수 'TOKEN'을 사용하고 args[1]account_id을 사용하여 AccountOwner에 대한 액세스 제어 검사를 추가하는 변수 인수입니다. MultipleAccountOwner에 대한 액세스 제어 검사를 추가하려면 args[1]org_id를 사용하고 args[2]user_id를 사용합니다.
반환값:
  • 성공 시, 약속이 있습니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
addOrgAdmin
이 메소드는 사용자를 조직의 Org Admin로 추가합니다.
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인 사용자를 제거합니다.
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인 모든 사용자 목록을 반환합니다.
Ctx.Admin.getAllOrgAdmins()
매개변수:
  • 없음
반환값:
  • 성공 시 orgIduserId 객체를 포함하는 JSON 형식의 배열입니다.
반환 값 예제:
{
    "admins": [
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin"
        },
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin1"
        },
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin2"
        }
    ]
}
addTokenAuditor
이 메소드는 사용자를 체인코드의 Token Auditor로 추가합니다.
this.Ctx.Admin.addTokenAuditor(org_id, user_id)
매개변수:
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 체인 코드의 Token Auditor로 추가된 사용자의 세부정보를 포함하는 메시지입니다.
반환 값 예제:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "cd81f6c4c9e7c18ece357dbf5c139ef66ef2d6566be3b14de5f6d0a3fd4bb2f0",
        "payload": {
            "msg": "Successfully added Token Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20009",
        "blockNumber": 196
    }
}
removeTokenAuditor
이 메소드는 사용자를 체인코드의 Token Auditor로 제거합니다.
this.Ctx.Admin.removeTokenAuditor(org_id, user_id)
매개변수:
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 체인 코드의 Token Auditor로 제거된 사용자의 세부정보를 포함하는 메시지입니다.
반환 값 예제:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "a886a6040fbc76374a3c78c89ab0ffc9f7b8391cc5239b169bf3b878cf40c67b",
        "payload": {
            "msg": "Successfully removed Token Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 219
    }
}
getTokenAuditors
이 메소드는 체인 코드의 모든 Token Auditors를 반환합니다.
this.Ctx.Admin.getAllTokenAuditors()
반환 값 예제:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "payload": {
            "auditors": [
                {
                    "org_id": "CB",
                    "user_id": "auditor_user_cb"
                }
            ]
        },
        "encode": "JSON"
    }
}
addOrgAuditor
이 메소드는 사용자를 체인코드의 Org Auditor로 추가합니다.
this.Ctx.Admin.addOrgAuditor(org_id, user_id)
매개변수:
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 체인 코드의 Org Auditor로 추가된 사용자의 세부정보를 포함하는 메시지입니다.
반환 값 예제:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "44bbad35a1478cb714e32f7cfd551897868a203520aab9cea5771d3aadc1cf03",
        "payload": {
            "msg": "Successfully added Org Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20009",
        "blockNumber": 198
    }
}
removeOrgAuditor
이 메소드는 사용자를 체인코드의 Org Auditor로 제거합니다.
this.Ctx.Admin.removeOrgAuditor(org_id, user_id)
매개변수:
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 체인 코드의 Org Auditor로 제거된 사용자의 세부정보를 포함하는 메시지입니다.
반환 값 예제:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "c3bc720461004a53b37c68d4bb264858b88d980bc093a0a3ebb62a32974fb306",
        "payload": {
            "msg": "Successfully removed Org Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 221
    }
}
getOrgAuditors
이 메소드는 체인 코드의 모든 Org Auditors를 반환합니다.
this.Ctx.Admin.getAllOrgAuditors()
반환 값 예제:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "payload": {
            "auditors": [
                {
                    "org_id": "FI1",
                    "user_id": "auditor_user_fi1"
                },
                {
                    "org_id": "FI2",
                    "user_id": "auditor_user_fi2"
                }
            ]
        },
        "encode": "JSON"
    }
}

토큰 구성 관리 방법

save
이 메소드는 토큰을 생성하고 해당 속성을 상태 데이터베이스에 저장합니다.
Ctx.Token.save(token: <Instance of Token Class>,extraMetadata?:any)
매개변수:
  • token: <Instance of Token Class> – 작동할 토큰 자산입니다.
반환값:
  • 성공 시 토큰 세부정보가 포함된 약속 메시지입니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
{
   "assetType":"otoken",
   "token_id":"digiCurr101",
   "token_name":"digicur",
   "token_type":"fungible",
   "behaviors":[
      "divisible",
      "mintable",
      "transferable",
      "burnable",
      "roles"
   ],
   "roles":{
      "minter_role_name":"minter"
   },
   "mintable":{
      "max_mint_quantity":1000
   },
   "divisible":{
      "decimal":2
   },
   "currency_name":"DOLLAR",
   "token_to_currency_ratio":1
}
update
이 메소드는 토큰 속성을 업데이트합니다. 토큰 자산이 생성된 후에는 token_desc 값과 해당 사용자정의 속성만 업데이트합니다.
Ctx.Token.update(token: <Instance of Token Class>)
매개변수:
  • token: <Instance of Token Class> – 작동할 토큰 자산입니다.
반환값:
  • 성공 시 토큰 세부정보가 포함된 약속 메시지입니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
{
   "assetType":"otoken",
   "token_id":"digiCurr101",
   "token_name":"digicur",
   "token_desc":"Digital Currency equiv of dollar",
   "token_type":"fungible",
   "behaviors":[
      "divisible",
      "mintable",
      "transferable",
      "burnable",
      "roles"
   ],
   "roles":{
      "minter_role_name":"minter"
   },
   "mintable":{
      "max_mint_quantity":1000
   },
   "divisible":{
      "decimal":2
   },
   "currency_name":"DOLLAR",
   "token_to_currency_ratio":1
}
getTokenDecimals
이 메소드는 소수 토큰에 사용할 수 있는 소수 자릿수를 반환합니다. divisible 동작이 지정되지 않은 경우 기본값은 0입니다.
Ctx.Token.getTokenDecimals(token_id: string)
매개변수:
  • token_id: string – 토큰 ID입니다.
반환값:
  • 성공 시 토큰의 소수 자릿수가 숫자 데이터 유형입니다. 오류가 발생하면 오류 메시지와 함께 반환됩니다.
반환 값 예제:
1
get
이 메소드는 상태 데이터베이스에 있는 경우 토큰 객체를 반환합니다.
Ctx.Token.get(token_id: string)
매개변수:
  • token_id: string – 반환할 토큰의 ID입니다.
반환값:
  • 성공 시 토큰의 JSON 표현에 대한 약속입니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
{
    "assetType": "otoken",
    "token_id": "token1",
    "token_name": "account",
    "token_desc": "Token 1",
    "token_type": "fungible",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "holdable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner",
        "notary_role_name": "notary"
    },
    "mintable": {
        "max_mint_quantity": 20000
    },
    "divisible": {
        "decimal": 1
    },
    "token_to_currency_ratio": 2,
    "currency_representation": "EURO"
}
history
이 메소드는 지정된 토큰에 대한 기록을 반환합니다.
Ctx.Token.history(tokenId)
매개변수:
  • tokenId: string – 토큰 ID입니다.
반환값:
  • 성공 시 지정된 토큰에 대한 계정 기록 세부정보 배열이 포함된 약속입니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
[
    {
        "trxId": "0d75f09446a60088afb948c6aca046e261fddcd43df416076201cdc5565f1a35",
        "timeStamp": "2023-09-01T16:48:41.000Z",
        "value": {
            "assetType": "otoken",
            "token_id": "token",
            "token_name": "fiatmoneytok",
            "token_desc": "updatedDesc",
            "token_standard": "ttf+",
            "token_type": "fungible",
            "token_unit": "fractional",
            "behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter"
            },
            "mintable": {
                "max_mint_quantity": 1000
            },
            "divisible": {
                "decimal": 2
            }
        }
    },
    {
        "trxId": "3666344878b043b65d5b821cc79c042ba52aec467618800df5cf14eac69f72fa",
        "timeStamp": "2023-08-31T20:24:55.000Z",
        "value": {
            "assetType": "otoken",
            "token_id": "token",
            "token_name": "fiatmoneytok",
            "token_standard": "ttf+",
            "token_type": "fungible",
            "token_unit": "fractional",
            "behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter"
            },
            "mintable": {
                "max_mint_quantity": 1000
            },
            "divisible": {
                "decimal": 2
            }
        }
    }
]
getAllTokens
이 메소드는 상태 데이터베이스에 저장된 모든 토큰 자산을 반환합니다. 이 방법은 Berkeley DB SQL 리치 쿼리를 사용하며 원격 Oracle Blockchain Platform 네트워크에 연결된 경우에만 호출할 수 있습니다.
Ctx.Token.getAllTokens()
매개변수:
  • 없음
반환값:
  • 성공하면 모든 토큰 자산에 대한 약속을 반환합니다. 오류 발생 시 오류 메시지를 반환합니다.
반환 값 예제:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "98e0a0a115803d25b843d630e6b23c435a192a03eb0a301fc9375f05da49a8b2",
        "payload": [
            {
                "key": "token1",
                "valueJson": {
                    "assetType": "otoken",
                    "token_id": "token1",
                    "token_name": "vtok",
                    "token_type": "fungible",
                    "behaviours": [
                        "divisible",
                        "mintable",
                        "transferable",
                        "burnable",
                        "holdable",
                        "roles"
                    ],
                    "roles": {
                        "burner_role_name": "burner",
                        "notary_role_name": "notary"
                    },
                    "mintable": {
                        "max_mint_quantity": 0
                    },
                    "divisible": {
                        "decimal": 1
                    }
                }
            }
        ],
        "encode": "JSON"
    }
}
getTokensByName
이 메소드는 지정된 이름을 가진 모든 토큰 자산을 반환합니다. 이 방법은 Berkeley DB SQL 리치 쿼리를 사용하며 원격 Oracle Blockchain Platform 네트워크에 연결된 경우에만 호출할 수 있습니다.
Ctx.Token.getTokensByName(token_name: string)
매개변수:
  • token_name: string – 모델의 Token_name 속성에 해당하는 토큰의 이름입니다. 값은 토큰의 클래스 이름입니다.
반환값:
  • 지정된 이름의 모든 토큰 자산의 배열을 JSON 형식으로 반환합니다.
반환 값 예제:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "98e0a0a115803d25b843d630e6b23c435a192a03eb0a301fc9375f05da49a8b2",
        "payload": [
            {
                "key": "token1",
                "valueJson": {
                    "assetType": "otoken",
                    "token_id": "token1",
                    "token_name": "vtok",
                    "token_type": "fungible",
                    "behaviours": [
                        "divisible",
                        "mintable",
                        "transferable",
                        "burnable",
                        "holdable",
                        "roles"
                    ],
                    "roles": {
                        "burner_role_name": "burner",
                        "notary_role_name": "notary"
                    },
                    "mintable": {
                        "max_mint_quantity": 0
                    },
                    "divisible": {
                        "decimal": 1
                    }
                }
            }
        ],
        "encode": "JSON"
    }
}
isTokenType
이 메소드는 지정된 ID를 가진 토큰 자산이 존재하는지 여부를 나타냅니다.
Ctx.Token.isTokenType(token_id: string)
매개변수:
  • token_id: string – 확인할 토큰의 ID입니다.
반환값:
  • 성공 시 지정된 ID의 토큰 자산이 존재할 경우 true로 약속합니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
true
getByRange
이 메소드는 내부적으로 패브릭 getStateByRange 메소드를 호출합니다. 지정된 ID의 자산이 원장에서 반환되더라도 이 메소드는 자산을 호출자 자산 유형으로 변환합니다.
<Token ClassCtx.Token.getByRange(start_token_id: string, end_token_id: string, token_class_reference?: <Instance of Token Class> )
매개변수:
  • startId: string – 범위의 시작 키입니다. 이 키는 범위에 포함됩니다.
  • endId: string – 범위의 끝 키입니다. 이 키는 범위에서 제외됩니다.
  • token: <Instance of Token Class> – 작동할 토큰 자산입니다.
반환값:
  • 성공 시 <Token Class> 배열에 대한 약속입니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
예:
@validator(yup.string(), yup.string())
public async getDigiCurrGetByRange(start_token_id: string, end_token_id: string) {
   return await this.Ctx.Token.getByRange(start_token_id, end_token_id, DigiCurr);
}
반환 값 예제:
[
    {
        "assetType": "otoken",
        "token_id": "token1",
        "token_name": "digicur",
        "token_desc": "Token 1",
        "token_type": "fungible",
        "behaviors": [
            "divisible",
            "mintable",
            "transferable",
            "burnable",
            "holdable",
            "roles"
        ],
        "roles": {
            "minter_role_name": "minter",
            "burner_role_name": "burner",
            "notary_role_name": "notary"
        },
        "mintable": {
            "max_mint_quantity": 20000
        },
        "divisible": {
            "decimal": 0
        },
        "token_to_currency_ratio": 1.5,
        "currency_representation": "USD"
    },
    {
        "assetType": "otoken",
        "token_id": "token2",
        "token_name": "digicur",
        "token_desc": "Token2",
        "token_type": "fungible",
        "behaviors": [
            "divisible",
            "mintable",
            "transferable",
            "burnable",
            "holdable",
            "roles"
        ],
        "roles": {
            "minter_role_name": "minter",
            "burner_role_name": "burner",
            "notary_role_name": "notary"
        },
        "mintable": {
            "max_mint_quantity": 20000
        },
        "divisible": {
            "decimal": 0
        },
        "token_to_currency_ratio": 1,
        "currency_representation": "EURO"
    }
]

계정 관리 방법

getCallerAccountId
이 메소드는 호출자의 계정 ID를 반환합니다.
Ctx.Account.getCallerAccountId(token_id: string)
매개변수:
  • tokenId: string – 토큰 ID입니다.
반환값:
  • 성공 시 호출자 계정 ID에 대한 약속입니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f
generateAccountId
이 메소드는 oaccount~<token asset name>~ 접두어가 붙은 영숫자 문자 집합인 계정 ID와 인스턴스 소유자 또는 인스턴스에 로그인한 사용자의 사용자 이름 또는 전자메일 ID(user_id), 현재 네트워크 조직에 있는 사용자의 멤버쉽 서비스 제공자 ID(org_id) 및 고유 토큰 ID(token_id)의 해시를 반환합니다.
Ctx.Account.generateAccountId(token_id: string, org_id: string, user_id: string)
매개변수:
  • tokenId: string – 토큰 ID입니다.
  • orgId: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • userId: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 생성된 계정 ID가 있는 약속입니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f
createAccount
이 메소드는 지정된 사용자 및 토큰의 계정을 만듭니다. 토큰이 있는 모든 사용자는 계정을 가져야 합니다. 계정은 사용자의 잔액, 보류 중인 잔액 및 트랜잭션 내역을 추적합니다. 계정 ID는 oaccount~<token asset name>~ 앞에 오는 영숫자 문자 집합으로, 인스턴스 소유자 또는 인스턴스에 로그인한 사용자의 사용자 이름 또는 전자메일 ID(user_id), 현재 네트워크 조직에 있는 사용자의 멤버쉽 서비스 제공자 ID(org_id)가 해시됩니다. 이 메소드는 체인 코드의 Token Admin 또는 지정된 조직의 Org Admin에 의해서만 호출될 수 있습니다.
this.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이어야 합니다.
반환값:
  • 성공 시 JSON 형식의 새 계정 객체입니다.
반환 값 예제:
{
  "assetType": "oaccount",
  "bapAccountVersion": 0,
  "account_id": "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
  "user_id": "admin",
  "org_id": "Org1MSP",
  "token_type": "fungible",
  "token_id": "",
  "token_name": "",
  "balance": 0,
  "onhold_balance": 0
}
associateTokenToAccount
이 방법은 대체 가능한 토큰을 계정에 연결합니다. 이 메소드는 체인 코드의 Token Admin 또는 관련 조직의 Org Admin에 의해서만 호출될 수 있습니다.
async associateTokenToAccount(account_id: string, token_id: string)
매개변수:
  • account_id: string – 계정의 ID입니다.
  • token_id: string – 토큰 ID입니다.
반환값:
  • 성공 시 업데이트된 계정의 JSON 객체입니다.
반환 값 예제:
{
    "assetType": "oaccount",
    "bapAccountVersion": 0,
    "account_id": "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
    "user_id": "admin",
    "org_id": "Org1MSP",
    "token_type": "fungible",
    "token_id": "fungible",
    "token_name": "fiatmoneytok",
    "balance": 0,
    "onhold_balance": 0
}
getAccountWithStatus
이 방법은 계정 상태를 포함하여 지정된 계정에 대한 계정 세부정보를 반환합니다.
Ctx.Account.getAccountWithStatus(account_id: string)
매개변수:
  • account_id: string – 계정의 ID입니다.
반환값:
  • 성공 시 계정 세부정보에 대한 약속입니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
{
  "bapAccountVersion": 0,
  "assetType": "oaccount",
  "status": "active",
  "account_id": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
  "user_id": "idcqa",
  "org_id": "appdev",
  "token_type": "fungible",
  "token_id": "t1",
  "token_name": "obptok",
  "balance": 0,
  "onhold_balance": 0
}
getAccount
이 방법은 지정된 계정에 대한 계정 세부정보를 반환합니다.
Ctx.Account.getAccount(account_id: string)
매개변수:
  • account_id: string – 계정의 ID입니다.
반환값:
  • 성공 시 계정 세부정보에 대한 약속입니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
{
   "assetType":"oaccount",
   "bapAccountVersion": 0,
   "account_id":"oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
   "user_id":"user1",
   "org_id":"Org1MSP",
   "token_id":"digiCurr101",
   "token_name":"digicur",
   "balance":0,
   "onhold_balance":0
}
history
이 메소드는 지정된 계정에 대한 계정 기록 세부 정보의 배열을 반환합니다.
Ctx.Account.history(account_id: string)
매개변수:
  • account_id: string – 계정의 ID입니다.
반환값:
  • 성공 시 계정 기록 세부정보 배열에 대한 약속입니다. 오류 발생 시 오류 메시지가 포함된 거부입니다. 반환 값은 getAccountHistory 메소드와 동일합니다.
반환 값 예제:
[
    {
      "trxId":"2gsdh17fff222467e5667be042e33ce18e804b3e065cca15de306f837e416d7c3e",
      "timeStamp":1629718288,
      "value":{
         "assetType":"oaccount",
         "account_id":"oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
         "user_id":"user1",
         "org_id":"Org1MSP",
         "token_id":"digiCurr101",
         "token_name":"digicur",
         "balance":100,
         "onhold_balance":0,
         "bapAccountVersion": 1
   },
   {
      "trxId":"9fd07fff222467e5667be042e33ce18e804b3e065cca15de306f837e416d7c3e",
      "timeStamp":1629718288,
      "value":{
         "assetType":"oaccount",
         "account_id":"oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
         "user_id":"user1",
         "org_id":"Org1MSP",
         "token_id":"digiCurr101",
         "token_name":"digicur",
         "balance":0,
         "onhold_balance":0,
         "bapAccountVersion": 0
      }
   }
]
getAccountOnHoldBalance
이 방법은 지정된 계정에 대한 보류 잔액을 반환합니다.
Ctx.Account.getAccountOnHoldBalance(account_id: string)
매개변수:
  • account_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
이 방법은 모든 계정 목록을 반환합니다. 이 방법은 Berkeley DB SQL 리치 쿼리를 사용하며 원격 Oracle Blockchain Platform 네트워크에 연결된 경우에만 호출할 수 있습니다.
Ctx.Account.getAllAccounts()
매개변수:
  • 없음
반환값:
  • 성공 시 모든 계정을 나열하는 JSON 객체에 대한 약속입니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
[
           {
               "key": "oaccount~digicur~2e2ef3375ae347cbd7b4d3d7be5cece803f9c36a184aaf2b8d332c5d2dcead52",
               "valueJson": {
                   "assetType": "oaccount",
                   "account_id": "oaccount~digicur~2e2ef3375ae347cbd7b4d3d7be5cece803f9c36a184aaf2b8d332c5d2dcead52",
                   "user_id": "admin",
                   "org_id": "Org1MSP",
                   "token_id": "digiCurr101",
                   "token_name": "digicur",
                   "bapAccountVersion": 0,
                   "balance": 0,
                   "onhold_balance": 0
               }
           },
           {
               "key": "oaccount~digicur~30080c7e5ba94035af57fbbccbbb495e92515e4b2b3dbcd476eb1c0343e4da65",
               "valueJson": {
                   "assetType": "oaccount",
                   "account_id": "oaccount~digicur~30080c7e5ba94035af57fbbccbbb495e92515e4b2b3dbcd476eb1c0343e4da65",
                   "bapAccountVersion": 0,
                   "user_id": "user1",
                   "org_id": "Org1MSP",
                   "token_id": "digiCurr101",
                   "token_name": "digicur",
                   "balance": 0,
                   "onhold_balance": 0
               }
           },
           {
               "key": "oaccount~digicur~cbde438258cb01a82f71a9a9f8029243c40c6d836a505432120529c2b3c2ff0c",
               "valueJson": {
                   "assetType": "oaccount",
                   "account_id": "oaccount~digicur~cbde438258cb01a82f71a9a9f8029243c40c6d836a505432120529c2b3c2ff0c",
                   "bapAccountVersion": 0,
                   "user_id": "user2",
                   "org_id": "Org1MSP",
                   "token_id": "digiCurr101",
                   "token_name": "digicur",
                   "balance": 0,
                   "onhold_balance": 0
               }
           },
           {
               "key": "oaccount~digicur~ecbc3aefcc562d3049c988717940195b30297e95012b7824bbd33a57ca50a626",
               "valueJson": {
                   "assetType": "oaccount",
                   "account_id": "oaccount~digicur~ecbc3aefcc562d3049c988717940195b30297e95012b7824bbd33a57ca50a626",
                   "bapAccountVersion": 0,
                   "user_id": "user3",
                   "org_id": "Org1MSP",
                   "token_id": "digiCurr101",
                   "token_name": "digicur",
                   "balance": 500,
                   "onhold_balance": 0
               }
           }
       ]
getUserByAccountId
이 메소드는 지정된 계정에 대한 사용자 세부 정보를 반환합니다.
Ctx.Account.getUserByAccountId(account_id: string)
매개변수:
  • account_id: string – 계정의 ID입니다.
반환값:
  • 성공 시 3개의 속성을 포함하는 JSON 객체에 대한 약속:
    • user_id – 사용자의 사용자 이름 또는 전자메일 ID입니다.
    • org_id – 현재 네트워크 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
    • token_id – 토큰 ID입니다.
  • 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
{
   "token_id": "digiCurr101",
   "user_id": "user1",
   "org_id": "Org1MSP"
}
getAccountBalance
이 방법은 지정된 계정에 대한 계정 잔액을 반환합니다.
Ctx.Account.getAccountBalance(account_id: string)
매개변수:
  • account_id: string – 계정의 ID입니다.
반환값:
  • 성공 시 두 개의 속성을 포함하는 JSON 객체가 포함된 약속 메시지:
    • msg – 현재 잔액을 보여주는 메시지입니다.
    • user_balance – 현재 잔액의 숫자 값입니다.
  • 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
{
    "msg": "Current Balance is: 200",
    "user_balance": 200
}
getAllOrgAccounts
이 메소드는 지정된 조직에 속하는 모든 토큰 계정 목록을 반환합니다.
Ctx.Account.getAllOrgAccounts(org_id: string) 
매개변수:
  • org_id: string – 조직의 멤버쉽 서비스 제공자(MSP) ID입니다.
반환값:
  • 성공 시 지정된 조직에 대한 모든 계정 목록이 표시됩니다.
반환 값 예제:
[
    {
        "key": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
        "valueJson": {
            "bapAccountVersion": 0,
            "assetType": "oaccount",
            "account_id": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
            "user_id": "idcqa",
            "org_id": "appdev",
            "token_type": "fungible",
            "token_id": "token",
            "token_name": "fiatmoneytok",
            "balance": 0,
            "onhold_balance": 0
        }
    },
    {
        "key": "oaccount~620fcf5deb5fd5a65c0b5b10fda129de0f629ccd232c5891c130e24a574df50a",
        "valueJson": {
            "bapAccountVersion": 0,
            "assetType": "oaccount",
            "account_id": "oaccount~620fcf5deb5fd5a65c0b5b10fda129de0f629ccd232c5891c130e24a574df50a",
            "user_id": "example_minter",
            "org_id": "appdev",
            "token_type": "fungible",
            "token_id": "token",
            "token_name": "fiatmoneytok",
            "balance": 0,
            "onhold_balance": 0
        }
    }
]

역할 관리 방법

addRoleMember
이 메소드는 지정된 사용자 및 토큰에 롤을 추가합니다.
Ctx.Token.addRoleMember(role: string, account_id: string, token: <Instance of Token Class>)
매개변수:
  • role: string – 지정된 사용자에 추가할 역할의 이름입니다. mintableburnable 동작은 사양 파일의 minter_role_nameburner_role_name 속성에 해당합니다. 마찬가지로 notary 역할은 사양 파일의 notary_role_name 속성에 해당합니다.
  • account_id: number – 역할을 추가할 계정 ID입니다.
  • token: <Instance of Token Class> – 작동할 토큰 자산입니다.
반환값:
  • 성공하면 성공 메시지가 있는 약속입니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
{
    "msg":"Successfully added role minter to oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id :          Org1MSP, user_id : user1)"
}
removeRoleMember
이 방법은 지정된 사용자 및 토큰에서 역할을 제거합니다.
Ctx.Token.removeRoleMember(role: string, account_id: string, token: <Instance of Token Class>)
매개변수:
  • role: string – 지정된 사용자로부터 제거할 역할의 이름입니다. mintableburnable 동작은 사양 파일의 minter_role_nameburner_role_name 속성에 해당합니다. 마찬가지로 notary 역할은 사양 파일의 notary_role_name 속성에 해당합니다.
  • account_id: number – 역할을 제거할 계정 ID입니다.
  • token: <Instance of Token Class> – 작동할 토큰 자산입니다.
반환값:
  • 성공하면 성공 메시지가 있는 약속입니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
{
  "msg":"successfully removed member_id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1) from role minter"
}
getAccountsByRole
이 메소드는 지정된 롤과 토큰에 대한 모든 계정 목록을 반환합니다.
Ctx.Role.getAccountsByRole(token_id: string, role: string)
매개변수:
  • token_id: string – 토큰 ID입니다.
  • role: string – 검색할 역할의 이름입니다.
반환값:
  • 성공 시 지정된 역할 및 토큰에 대한 모든 계정을 나열하는 JSON 객체에 대한 약속입니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
{
    "accounts": [
        "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
        "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f"
    ]
}
getAccountsByUser
이 메소드는 지정된 사용자에 대한 모든 계정 ID 목록을 반환합니다.
async getAccountsByUser(org_id: string, user_id: string)
매개변수:
  • org_id string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 계정 ID의 JSON 배열입니다.
반환 값 예제:
{"accounts":["oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f"]}
getUsersByRole
이 메소드는 지정된 롤 및 토큰에 대한 모든 사용자 목록을 반환합니다.
Ctx.Role.getUsersByRole(token_id: string, role: string)
매개변수:
  • token_id: string – 토큰 ID입니다.
  • role: string – 검색할 역할의 이름입니다.
반환값:
  • 성공 시 지정된 역할 및 토큰에 대한 모든 사용자를 나열하는 JSON 객체에 대한 약속입니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
{
   "users":[
      {
         "token_id":"digiCurr101",
         "user_id":"user1",
         "org_id":"Org1MSP"
      }
   ]
}
isInRole
이 메소드는 사용자 및 토큰에 지정된 롤이 있는지 여부를 나타냅니다.
Ctx.Token.isInRole(role: string, account_id: string, token: <Instance of Token Class>)
매개변수:
  • role: string – 확인할 역할의 이름입니다.
  • account_id: number – 확인할 계정 ID입니다.
  • token: <Instance of Token Class> – 작동할 토큰 자산입니다.
반환값:
  • 성공 시 사용자에게 역할이 있는 경우 true로 약속하고, 사용자에게 역할이 없는 경우 false로 약속합니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
{"result":"true"}
getOrgAccountsByRole
이 방법은 지정된 조직에서 지정된 역할을 가진 모든 고객사에 대한 정보를 반환합니다.
Ctx.Role.getOrgAccountsByRole(token_id: string, role: string, org_id: string)
매개변수:
  • token_id: string – 토큰 ID입니다.
  • role: string – 확인할 역할의 이름입니다.
  • org_id: string – 조직의 멤버쉽 서비스 제공자(MSP) ID입니다.
반환값:
  • 성공 시 지정된 조직에서 지정된 역할을 가진 모든 고객사의 리스트입니다.
반환 값 예제:
{
    "accounts": [
        "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
        "oaccount~9c650574af9025a6106c8d12a801b079eda9ae2e3399fc2fbd5bd683d738a850"
    ]
}
getOrgUsersByRole
이 메소드는 지정된 조직에서 지정된 롤을 가진 모든 사용자에 대한 정보를 반환합니다.
Ctx.Role.getOrgUsersByRole(token_id: string, role: string, org_id: string)
매개변수:
  • token_id: string – 토큰 ID입니다.
  • role: string – 확인할 역할의 이름입니다.
  • org_id: string – 조직의 멤버쉽 서비스 제공자(MSP) ID입니다.
반환값:
  • 성공 시 지정된 조직에서 지정된 역할을 가진 모든 사용자 목록입니다.
반환 값 예제:
{
    "users": [
        {
            "token_id": "token",
            "user_id": "admin",
            "org_id": "Org1MSP"
        },
        {
            "token_id": "token",
            "user_id": "orgAdmin",
            "org_id": "Org1MSP"
        }
    ]
}
roleCheck
이 방법은 제공된 계정 ID가 역할의 구성원인지 확인합니다.
Ctx.Token.roleCheck(account_id: string, token: <Instance of Token Class>)
매개변수:
  • account_id: string – 확인할 계정 ID입니다.
  • token: <Instance of Token Class> – 작동할 토큰 자산입니다.
반환값:
  • 계정 ID가 역할의 일부인 경우 true를 반환합니다. 그렇지 않으면 false를 반환합니다.
반환 값 예제:
{ result: true }

트랜잭션 내역 관리 방법

getAccountTransactionHistory
이 메소드는 지정된 계정에 대한 트랜잭션 기록 세부정보의 배열을 반환합니다.
Ctx.Account.getAccountTransactionHistory(account_id: string)
매개변수:
  • account_id: string – 계정의 ID입니다.
반환값:
  • 반환 값은 getAccountTransactionHistory 메소드와 동일합니다.
  • 성공 시 계정 트랜잭션 객체 배열에 대한 약속:
    • transaction_id – 트랜잭션의 ID입니다.
    • transacted_account – 트랜잭션이 발생한 계정입니다.
    • transaction_type – 트랜잭션의 유형입니다.
    • transacted_amount – 트랜잭션 금액입니다.
    • timestamp – 트랜잭션 시간입니다.
    • balance – 거래 시 계정 잔액입니다.
    • onhold_balance – 거래 시 보류 중인 잔액입니다.
    • sub_transactions – 대량 전송의 경우 대량 전송의 일부인 트랜잭션 목록입니다.
    • holding_idholdTokens 메소드에서 반환되는 고유 식별자입니다.
    • token_id – 토큰 ID입니다.
  • 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
[
   {
      "transaction_id":"otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
      "transacted_amount":20,
      "timestamp":"2021-08-17T06:04:24.000Z",
      "balance":60,
      "onhold_balance":0,
      "token_id":"digiCurr101",
      "transaction_type":"BULKTRANSFER",
      "sub_transactions":[
         {
            "transacted_account":"oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
            "transaction_type":"CREDIT",
            "transaction_id":"otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c4ca4238a0b923820dcc509a6f75849b",
            "transacted_amount":10
         }
      ]
   },
   {
      "transaction_id":"otransaction~757864d5369bd0539d044caeb3bb4898db310fd7aa740f45a9938771903d43da",
      "transacted_amount":50,
      "timestamp":"2021-08-17T06:02:44.000Z",
      "balance":50,
      "onhold_balance":0,
      "token_id":"digiCurr101",
      "transacted_account":"oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
      "transaction_type":"CREDIT"
   }
]
getAccountTransactionHistoryWithFilters
이 메소드는 지정된 계정에 대한 트랜잭션 기록 세부정보의 배열을 반환합니다. 이 방법은 원격 Oracle Blockchain Platform 네트워크에 연결된 경우에만 호출할 수 있습니다.
await this.Ctx.Account.getAccountTransactionHistoryWithFilters(account_id: string, filters?: Filters)
매개변수:
  • account_id: string – 계정의 ID입니다.
  • filters: string – 선택적 매개변수입니다. 비어 있으면 모든 레코드가 반환됩니다. PageSize 속성은 반환할 레코드 수를 결정합니다. PageSize가 0이면 기본 페이지 크기는 20입니다. Bookmark 속성은 반환할 레코드의 시작 인덱스를 결정합니다. 자세한 내용은 Hyperledger Fabric 설명서를 참조하십시오. StartTimeEndTime 등록 정보는 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~672897b5a4fa78b421c000e4d6d4f71f3d46529bfbb5b4be10bf5471dc35ce89",
        "transacted_amount": 5,
        "timestamp": "2022-04-20T15:46:04.000Z",
        "token_id": "token1",
        "transacted_account": "oaccount~16c38d804413ebabf416360d374f76c973d4e71c74adfde73cc40c7c274883b8",
        "transaction_type": "DEBIT",
        "balance": 90,
        "onhold_balance": 0
    },
    {
        "transaction_id": "otransaction~467bb67a33aaffca4487f33dcd46c9844efdb5421a2e7b6aa2d53152eb2c6d85",
        "transacted_amount": 5,
        "timestamp": "2022-04-20T15:45:47.000Z",
        "token_id": "token1",
        "transacted_account": "oaccount~fbf95683b21bbc91a22205819ac1e2e9c90355d536821ed3fe22b7d23915c248",
        "transaction_type": "DEBIT",
        "balance": 95,
        "onhold_balance": 0
    },
    {
        "transaction_id": "otransaction~c6d56ce54a9bbe24597d1d10448e39316dc6f16328bf3c5b0c8ef10e1dfeb397",
        "transacted_amount": 100,
        "timestamp": "2022-04-20T15:44:26.000Z",
        "token_id": "token1",
        "transacted_account": "oaccount~deb5fb0906c40506f6c2d00c573b774e01a53dd91499e651d92ac4778b6add6a",
        "transaction_type": "MINT",
        "balance": 100,
        "onhold_balance": 0
    }
]
getSubTransactionHistory
이 메소드는 지정된 트랜잭션에 대한 트랜잭션 기록 세부정보의 배열을 반환합니다.
await this.Ctx.Account.getSubTransactionHistory(transaction_id)
매개변수:
  • transaction_id: string – 대량 이전 트랜잭션의 ID입니다.
예:

ochain invoke GetAccountSubTransactionHistory 'otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b'

[
    {
        "transacted_account": "oaccount~16c38d804413ebabf416360d374f76c973d4e71c74adfde73cc40c7c274883b8",
        "transaction_type": "DEBIT",
        "transaction_id": "otransaction~6e0f8fe4a6430322170b9c619b04b6c9f1c8d257923f611b866bdf69d7fe6cb8~c81e728d9d4c2f636f067f89cc14862c",
        "transacted_amount": 5,
        "timestamp": "2022-04-20T15:52:21.000Z",
        "token_id": "token1",
        "balance": 80,
        "onhold_balance": 0
    },
    {
        "transacted_account": "oaccount~fbf95683b21bbc91a22205819ac1e2e9c90355d536821ed3fe22b7d23915c248",
        "transaction_type": "DEBIT",
        "transaction_id": "otransaction~6e0f8fe4a6430322170b9c619b04b6c9f1c8d257923f611b866bdf69d7fe6cb8~c4ca4238a0b923820dcc509a6f75849b",
        "transacted_amount": 5,
        "timestamp": "2022-04-20T15:52:21.000Z",
        "token_id": "token1",
        "balance": 85,
        "onhold_balance": 0
    }
]
getSubTransactionHistoryWithFilters
이 메소드는 지정된 트랜잭션에 대한 하위 트랜잭션 기록 세부정보의 배열을 반환합니다.
await this.Ctx.Account.getSubTransactionHistoryWithFilters(transaction_id: string, filters?: SubTransactionFilters)
매개변수:
  • transaction_id: string – 대량 이전 트랜잭션의 ID입니다.
  • filters: string – 선택적 매개변수입니다. 비어 있으면 모든 레코드가 반환됩니다. PageSize 속성은 반환할 레코드 수를 결정합니다. PageSize가 0이면 기본 페이지 크기는 20입니다. Bookmark 속성은 반환할 레코드의 시작 인덱스를 결정합니다. 자세한 내용은 Hyperledger Fabric 설명서를 참조하십시오. StartTimeEndTime 등록 정보는 RFC-3339 형식으로 지정해야 합니다.
예:

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

[
    {
        "transaction_id": "otransaction~6e0f8fe4a6430322170b9c619b04b6c9f1c8d257923f611b866bdf69d7fe6cb8~c81e728d9d4c2f636f067f89cc14862c",
        "transacted_amount": 5,
        "timestamp": "2022-04-20T15:52:21.000Z",
        "token_id": "token1",
        "transacted_account": "oaccount~16c38d804413ebabf416360d374f76c973d4e71c74adfde73cc40c7c274883b8",
        "transaction_type": "DEBIT",
        "balance": 80,
        "onhold_balance": 0
    },
    {
        "transaction_id": "otransaction~6e0f8fe4a6430322170b9c619b04b6c9f1c8d257923f611b866bdf69d7fe6cb8~c4ca4238a0b923820dcc509a6f75849b",
        "transacted_amount": 5,
        "timestamp": "2022-04-20T15:52:21.000Z",
        "token_id": "token1",
        "transacted_account": "oaccount~fbf95683b21bbc91a22205819ac1e2e9c90355d536821ed3fe22b7d23915c248",
        "transaction_type": "DEBIT",
        "balance": 85,
        "onhold_balance": 0
    }
]
getTransactionById
이 메소드는 Transaction 자산의 내역을 반환합니다.
async getTransactionById(transaction_id: string)
매개변수:
  • transaction_id: string – 거래 자산의 ID입니다.
반환값:
  • 성공 시 트랜잭션 자산 기록입니다.
반환 값 예제:
{
    "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
    "history": [
        {
            "trxId": "68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
            "timeStamp": 1629180264,
            "value": {
                "assetType": "otransaction",
                "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
                "token_id": "digiCurr101",
                "from_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
                "to_account_id": "",
                "transaction_type": "BULKTRANSFER",
                "amount": 20,
                "timestamp": "2021-08-17T06:04:24.000Z",
                "number_of_sub_transactions": 2,
                "holding_id": ""
            }
        }
    ],
    "sub_transactions": [
        {
            "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c4ca4238a0b923820dcc509a6f75849b",
            "history": [
                {
                    "trxId": "68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
                    "timeStamp": 1629180264,
                    "value": {
                        "assetType": "otransaction",
                        "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c4ca4238a0b923820dcc509a6f75849b",
                        "token_id": "digiCurr101",
                        "from_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
                        "to_account_id": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
                        "transaction_type": "TRANSFER",
                        "amount": 10,
                        "timestamp": "2021-08-17T06:04:24.000Z",
                        "number_of_sub_transactions": 0,
                        "holding_id": ""
                    }
                }
            ]
        },
        {
            "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c81e728d9d4c2f636f067f89cc14862c",
            "history": [
                {
                    "trxId": "68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
                    "timeStamp": 1629180264,
                    "value": {
                        "assetType": "otransaction",
                        "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c81e728d9d4c2f636f067f89cc14862c",
                        "token_id": "digiCurr101",
                        "from_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
                        "to_account_id": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e",
                        "transaction_type": "TRANSFER",
                        "amount": 10,
                        "timestamp": "2021-08-17T06:04:24.000Z",
                        "number_of_sub_transactions": 0,
                        "holding_id": ""
                    }
                }
            ]
        }
    ]
}
deleteHistoricalTransactions
이 메소드는 지정된 계정에 대한 트랜잭션 기록 세부정보의 배열을 반환합니다.
async deleteHistoricalTransactions(time_to_expiration: Date)
매개변수:
  • time_to_expiration: Date – 트랜잭션 삭제 시기를 나타내는 시간 기록입니다. 지정된 시간보다 오래된 트랜잭션 자산이 삭제됩니다.
반환값:
  • 반환 값은 getAccountTransactionHistory 메소드와 동일합니다.
  • 성공 시 계정 트랜잭션 객체 배열에 대한 약속:
    • transaction_id – 트랜잭션의 ID입니다.
    • transacted_account – 트랜잭션이 발생한 계정입니다.
    • transaction_type – 트랜잭션의 유형입니다.
    • transacted_amount – 트랜잭션 금액입니다.
    • timestamp – 트랜잭션 시간입니다.
    • balance – 거래 시 계정 잔액입니다.
    • onhold_balance – 거래 시 보류 중인 잔액입니다.
    • sub_transactions – 대량 전송의 경우 대량 전송의 일부인 트랜잭션 목록입니다.
    • holding_idholdTokens 메소드에서 반환되는 고유 식별자입니다.
    • token_id – 토큰 ID입니다.
  • 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
"payload": {
            "msg": "Successfuly deleted transaction older than date: Thu Aug 19 2021 11:19:36 GMT+0000 (Coordinated Universal Time).",
            "transactions": [
                "otransaction~ec3366dd48b4ce2838f820f2f138648e6e55a07226713e59b411ff31b0d21058"
            ]
        }

토큰 동작 관리

토큰 수명 주기 관리 방법은 토큰 분류법 프레임워크의 표준을 기반으로 합니다. 토큰 수명 주기 메소드를 사용하려면 ../lib/token 모듈에서 Token 클래스를 임포트합니다.
import { Token } from '../lib/token';

토큰 동작 관리 방법 - 실행 가능한 동작

mint
이 메소드는 메소드 호출자가 소유한 토큰 수량을 연동합니다. 호출자는 계정과 minter 롤을 가져야 합니다. 수량은 사양 파일에서 divisible 동작의 decimal 매개변수에 의해 지정된 십진수 값 내에 있어야 합니다.
Ctx.Token.mint(quantity: number, token: <Instance of Token Class>)
매개변수:
  • quantity: number – 민트할 총 토큰 수입니다.
  • token: <Instance of Token Class> – 민트할 토큰 자산입니다.
반환값:
  • 성공 시 성공 메시지와 toAccount 세부정보가 포함된 약속입니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
{
  "msg":"Successfully minted 1000 tokens to Account Id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP, User-Id: admin)"
}
getTotalMintedTokens
이 메소드는 주조된 총 토큰 수를 반환합니다.
Ctx.Token.getTotalMintedTokens(token: <Instance of Token Class>)
매개변수:
  • token: <Instance of Token Class> – 작동할 토큰 자산입니다.
반환값:
  • 성공 시 개수 데이터 유형의 주조된 토큰 수량입니다. 오류가 발생하면 오류 메시지와 함께 반환됩니다.
반환 값 예제:
4000
getNetTokens
이 방법은 시스템에서 사용할 수 있는 토큰의 순 수량을 반환합니다. 순 토큰은 토큰이 레코딩된 후 남은 토큰의 양입니다. 방정식 형식: net tokens = total minted tokens - total burned tokens. 토큰이 레코딩되지 않으면 순 토큰 수가 민트된 총 토큰 수와 같습니다.
Ctx.Token.getNetTokens(token: <Instance of Token Class>)
매개변수:
  • token: <Instance of Token Class> – 작동할 토큰 자산입니다.
반환값:
  • 성공 시 개수 데이터 유형의 순 토큰 수량입니다. 오류가 발생하면 오류 메시지와 함께 반환됩니다.
반환 값 예제:
2000
getMaxMintQuantity
이 메소드는 토큰에 대한 최대 민트 가능 수량을 반환합니다. max_mint_quantity 동작이 지정되지 않은 경우 기본값은 0이며, 이를 통해 원하는 수의 토큰을 연동할 수 있습니다.
Ctx.Token.getMaxMintQuantity(token: <Instance of Token Class>)
매개변수:
  • token: <Instance of Token Class> – 작동할 토큰 자산입니다.
반환값:
  • 성공 시 토큰의 최대 민트 가능 수량(숫자 데이터 유형)입니다. 오류가 발생하면 오류 메시지와 함께 반환됩니다.
반환 값 예제:
20000

토큰 동작 관리 방법 - 이전 가능한 동작

transfer
이 방법은 트랜잭션 호출자의 토큰을 to_account_id 계정으로 전송합니다. 이 메소드의 호출자는 계정을 가져야 하며 수량은 사양 파일에서 divisible 동작의 decimal 매개변수에 의해 지정된 십진수 값 내에 있어야 합니다.
Ctx.Token.transfer(to_account_id: string, quantity: number, token: <Instance of Token Class>)
매개변수:
  • to_account_id: string – 토큰을 수신할 계정 ID입니다.
  • quantity: number – 전송할 총 토큰 수입니다.
반환값:
  • 성공하면 성공 메시지가 있는 약속입니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
{
 "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: object[], token: <Instance of Token Class>)
매개변수:
  • flow: object[] – 수신기 세부정보 및 수량을 지정하는 JSON 객체의 배열입니다. 이전 수량은 사양 파일에서 divisible 동작의 decimal 매개변수에 의해 지정된 십진수 값 내에 있어야 합니다. 예:
    [{
    	"to_org_id": "Org1MSP",
    	"to_user_id": "user1",
    	"quantity": 10
    }, {
    	"to_org_id": "Org1MSP",
    	"to_user_id": "user2",
    	"quantity": 10
    }]
  • token: <Instance of Token Class> – 작동할 토큰 자산입니다.
반환값:
  • 성공 시 성공 메시지 및 계정 정보가 포함된 약속입니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
{
    "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: number, time_to_expiration: Date, token: <Instance of Token Class>)
매개변수:
  • 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
  • token: <Instance of Token Class> – 보유할 토큰 자산입니다.
반환값:
  • 성공하면 성공 메시지가 있는 약속입니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
{
 "msg": "account id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (org_id : Org1MSP, user_id : user1) is successfully holding 10 tokens",
}
executeHold
이 방법은 이전에 보류 중인 토큰의 지정된 수량을 수신자에게 이전하여 토큰 보류를 완료합니다. quantity 값이 실제 보류 값보다 작은 경우 토큰의 원래 소유자가 나머지 금액을 다시 사용할 수 있습니다. 이 메소드는 지정된 작업 ID에 대해 notary 롤을 가진 AccountOwner ID로만 호출할 수 있습니다. 홀드는 공증인에 의해서만 완성될 수 있다.
Ctx.Token.executeHold(operation_id: string, quantity: number, token: <Instance of Token Class>)
매개변수:
  • operation_id: string – 보류 작업을 식별하는 고유 ID입니다. 일반적으로 이 ID는 클라이언트 응용 프로그램에서 전달합니다.
  • quantity: number – 보류를 완료할 총 토큰 수입니다.
  • token: <Instance of Token Class> – 보류를 완료할 토큰 자산입니다.
반환값:
  • 성공하면 성공 메시지가 있는 약속입니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
{
 "msg": "user with accountId: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (org_id : Org1MSP, user_id : user1) has successfully executed 5  tokens(digiCurr101) from the hold with Operation Id opr_121",
}
releaseHold
이 방법은 토큰 보류를 해제합니다. 전송이 완료되지 않았으며 모든 보유 토큰을 원래 소유자가 다시 사용할 수 있습니다. 이 메소드는 지정된 시간 제한 내에 notary 롤이 있는 AccountOwner ID 또는 지정된 시간 제한 이후 지급인, 수취인 또는 공증인이 호출할 수 있습니다.
Ctx.Token.releaseHold(operation_id: string, token: <Instance of Token Class>)
매개변수:
  • operation_id: string – 보류 작업을 식별하는 고유 ID입니다. 일반적으로 이 ID는 클라이언트 응용 프로그램에서 전달합니다.
  • token: <Instance of Token Class> – 보류를 해제할 토큰 자산입니다.
반환값:
  • 성공하면 성공 메시지가 있는 약속입니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
{
  "msg": "Successfully released 5 tokens from Operation Id opr_121 to Account Id: oaccount~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (org_id : Org1MSP, user_id : user1)",
}
getOnHoldIds
이 메소드는 지정된 계정에 대한 모든 보유 ID 목록을 반환합니다.
Ctx.Account.getOnHoldIds(account_id: string)
매개변수:
  • account_id: string – 계정의 ID입니다.
반환값:
  • 성공 시 지정된 계정에 대한 모든 보유 ID를 나열하는 JSON 객체에 대한 약속입니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
{
   "msg":"Holding Ids are: ohold~digicur~digiCurr101~opr_121",
   "holding_ids":[
      "ohold~digicur~digiCurr101~opr_121"
   ]
}
getOnHoldDetailsWithOperationId
이 메소드는 지정된 작업 ID 및 토큰에 대해 보류 중인 트랜잭션 세부정보를 반환합니다.
Ctx.Hold.getOnHoldDetailsWithOperationId(token_id: string, operation_id: string)
매개변수:
  • token_id: string – 토큰 ID입니다.
  • operation_id: string – 보류 작업을 식별하는 고유 ID입니다. 일반적으로 이 ID는 클라이언트 응용 프로그램에서 전달합니다.
반환값:
  • 성공 시 다음 속성을 포함하는 보류 객체입니다.
    • 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 – 보류가 만료될 때까지의 기간입니다.
  • 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
{
    "assetType": "ohold",
    "holding_id": "ohold~digicur~digiCurr101~opr_121",
    "operation_id": "opr_121",
    "token_name": "digicur",
    "from_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
    "to_account_id": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
    "notary_account_id": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e",
    "token_id": "digiCurr101",
    "quantity": 10,
    "time_to_expiration": "2022-08-01T18:30:00.000Z"
}
getOnHoldBalanceWithOperationId
이 메소드는 지정된 작업 ID 및 토큰에 대해 보류 중인 잔액을 반환합니다. 이 메소드는 누구나 호출할 수 있습니다.
Ctx.Hold.getOnHoldBalanceWithOperationId(token_id: string, operation_id: string)
매개변수:
  • token_id: string – 토큰 ID입니다.
  • operation_id: string – 보류 작업을 식별하는 고유 ID입니다. 일반적으로 이 ID는 클라이언트 응용 프로그램에서 전달합니다.
반환값:
  • 성공 시 지정된 작업 ID 및 토큰에 대한 보류 중인 잔액이 있는 약속 객체입니다. 오류 발생 시 오류 메시지가 포함된 거부
반환 값 예제:
{
    "msg": "Current Holding Balance of Operation 'op1' for token 'token1' is: 10",
    "holding_balance": 10
}

토큰 동작 관리 방법 - 굽기 가능 동작

burn
이 메소드는 트랜잭션 호출자의 계정에서 토큰을 비활성화하거나 레코딩합니다. 이 메소드의 호출자는 계정과 버너 롤을 가져야 합니다. 수량은 사양 파일에서 divisible 동작의 decimal 매개변수에 의해 지정된 십진수 값 내에 있어야 합니다.
Ctx.Token.burn(quantity: number, token: <Instance of Token Class>)
매개변수:
  • quantity: number – 레코딩할 총 토큰 수입니다.
  • token: <Instance of Token Class> – 레코딩할 토큰 자산입니다.
반환값:
  • 성공하면 성공 메시지가 있는 약속입니다. 오류 발생 시 오류 메시지가 포함된 거부입니다.
반환 값 예제:
{
 "msg":"Successfully burned 10 tokens from account id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP, User-Id: admin)"
}