토큰 분류법 프레임워크에 대한 스캐폴드 TypeScript 프로젝트
Blockchain App Builder는 토큰 사양 파일에서 입력을 받아 모든 기능을 갖춘 비계 체인 코드 프로젝트를 생성합니다.
프로젝트는 CRUD 및 비CRUD 메소드를 포함한 토큰 수명 주기 클래스 및 함수를 자동으로 생성합니다. 인수 검증, 마셜링/마셜링 해제 및 투명한 지속성 기능이 모두 자동으로 지원됩니다.
비계 프로젝트 및 토큰과 직접 관련되지 않은 방법에 대한 자세한 내용은 비계 TypeScript 체인코드 프로젝트를 참조하십시오.
모델
토큰화된 모든 모델 클래스는 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만 호출할 수 있습니다. -
removeTokenAdmin - 이 메소드는 사용자를 체인 코드의
Token Admin로 제거합니다. 이 메소드는 체인 코드의Token Admin만 호출할 수 있습니다. -
isTokenAdmin - 이 메소드는 함수 호출자가
Token Admin인 경우 부울 값true를 반환하고, 그렇지 않은 경우false를 반환합니다.Token Admin또는Org Admin는 블록체인 네트워크의 다른 사용자에서 이 기능을 호출할 수 있습니다. 다른 사용자는 자신의 계정에서만 이 메소드를 호출할 수 있습니다. -
getAllTokenAdmins - 이 메소드는 체인 코드의
Token Admin인 모든 사용자 목록을 반환합니다. 이 메소드는Token Admin또는 체인 코드의Org Admin에 의해서만 호출될 수 있습니다. -
addOrgAdmin - 이 메소드는 사용자를 조직의
Org Admin로 추가합니다. 이 메소드는 체인 코드의Token Admin또는 지정된 조직의Org Admin에 의해서만 호출될 수 있습니다. -
removeOrgAdmin - 이 메소드는 사용자를 조직의
Org Admin로 제거합니다. 이 메소드는 체인 코드의Token Admin또는 지정된 조직의Org Admin에 의해서만 호출될 수 있습니다. -
getOrgAdmins - 이 메소드는 조직의
Org Admin인 모든 사용자 목록을 반환합니다. 이 메소드는 체인 코드의Token Admin또는 조직의Org Admin에 의해서만 호출될 수 있습니다.
토큰 구성 관리 방법
-
init - 이 메소드는 체인 코드가 배치되거나 업그레이드될 때 호출됩니다. 모든
Token Admin는 필수adminList매개변수의user_id및org_id정보로 식별됩니다.user_id은 인스턴스 소유자 또는 인스턴스에 로그인한 사용자의 사용자 이름 또는 전자메일 ID입니다.org_id는 현재 네트워크 조직에 있는 사용자의 MSP(멤버쉽 서비스 공급자) ID입니다. -
initialize<Token Name>Token - 이 메소드는 토큰을 생성하고 토큰 속성을 초기화합니다. 자산 및 해당 속성이 상태 데이터베이스에 저장됩니다. 이 메소드는 체인 코드의
Token Admin에 의해서만 호출될 수 있습니다. -
update<Token Name>Token - 이 메소드는 토큰 속성을 업데이트합니다. 토큰 자산이 생성된 후에는
token_desc속성 및 사용자정의 속성만 업데이트할 수 있습니다. 이 메소드는 체인 코드의Token Admin만 호출할 수 있습니다. -
getTokenDecimals - 이 메소드는 소수 토큰에 대해 구성된 소수 자릿수를 반환합니다. 토큰에 대해
divisible동작이 지정되지 않은 경우 기본값은 0입니다. 이 메소드는 체인 코드의Token Admin또는Org Admin만 호출할 수 있습니다. -
getTokenById - 이 메소드는 상태 데이터베이스에 있는 경우 토큰 객체를 반환합니다. 이 메소드는 체인 코드의
Token Admin또는Org Admin에 의해서만 호출될 수 있습니다. -
getTokenHistory - 이 메소드는 지정된 토큰 ID에 대한 토큰 내역을 반환합니다. 모든 사용자가 이 메소드를 호출할 수 있습니다.
-
getAllTokens - 이 메소드는 상태 데이터베이스에 저장된 모든 토큰을 반환합니다. 이 메소드는 체인 코드의
Token Admin또는Org Admin에 의해서만 호출될 수 있습니다. 이 방법은 Berkeley DB SQL 서식 있는 질의를 사용하며 원격 Oracle Blockchain Platform 네트워크에 접속된 경우에만 호출할 수 있습니다. -
getTokensByName - 이 메소드는 지정된 이름을 가진 모든 토큰 객체를 반환합니다. 이 메소드는 체인 코드의
Token Admin또는Org Admin만 호출할 수 있습니다. 이 방법은 Berkeley DB SQL 서식 있는 질의를 사용하며 원격 Oracle Blockchain Platform 네트워크에 접속된 경우에만 호출할 수 있습니다.
계정 관리 방법
-
createAccount - 이 방법은 지정된 사용자 및 토큰에 대한 계정을 만듭니다. 언제든 토큰이 있는 사용자에 대해 계정을 만들어야 합니다. 계정은 잔액, 보류 중인 잔액 및 트랜잭션 기록을 추적합니다. 계정 ID는
oaccount~<token asset name>~접두어가 붙은 영숫자 문자 집합으로, 인스턴스 소유자 또는 인스턴스에 로그인한 사용자(현재 네트워크 조직에 있는 사용자의 멤버쉽 서비스 제공자 ID(org_id)의 사용자 이름 또는 전자메일 ID(user_id) 해시가 뒤에 옵니다. 이 메소드는 체인 코드의Token Admin또는 지정된 조직의Org Admin에 의해서만 호출될 수 있습니다. -
associateTokenToAccount - 이 메소드는 대체 가능 토큰을 계정과 연계합니다. 이 메소드는 체인 코드의
Token Admin또는 관련 조직의Org Admin에 의해서만 호출될 수 있습니다. -
getAccount - 이 메소드는 지정된 사용자 및 토큰에 대한 계정 세부정보를 반환합니다. 이 메소드는 체인 코드의
Token Admin, 지정된 조직의Org Admin또는 계정의AccountOwner로만 호출할 수 있습니다. -
getAccountHistory - 이 메소드는 지정된 사용자 및 토큰에 대한 계정 내역 세부정보를 반환합니다. 이 메소드는 체인 코드의
Token Admin또는 계정의AccountOwner에 의해서만 호출될 수 있습니다. -
getAccountOnHoldBalance - 이 메소드는 지정된 계정 및 토큰에 대한 현재 보류 중 잔액을 반환합니다. 이 메소드는 체인 코드의
Token Admin, 지정된 조직의Org Admin또는 계정의AccountOwner로만 호출할 수 있습니다. -
getAllAccounts - 이 메소드는 모든 계정 목록을 반환합니다. 이 메소드는 체인 코드의
Token Admin만 호출할 수 있습니다. 이 방법은 Berkeley DB SQL 서식 있는 질의를 사용하며 원격 Oracle Blockchain Platform 네트워크에 접속된 경우에만 호출할 수 있습니다. -
getUserByAccountId - 이 메소드는 지정된 계정에 대한 사용자 세부정보(
org_id및user_id)를 반환합니다. 이 메소드는 체인 코드의 모든 유저가 호출할 수 있습니다. -
getAccountBalance - 이 메소드는 지정된 계정 및 토큰에 대한 현재 잔액을 반환합니다. 이 메소드는 체인 코드의
Token Admin, 지정된 조직의Org Admin또는 계정의AccountOwner로만 호출할 수 있습니다. -
getAllOrgAccounts - 이 메소드는 지정된 조직에 속한 모든 토큰 계정 목록을 반환합니다. 이 메소드는 체인 코드의
Token Admin또는 지정된 조직의Org Admin에 의해서만 호출될 수 있습니다.
역할 관리 방법
-
addRole - 이 메소드는 지정된 사용자 및 토큰에 롤을 추가합니다. 이 메소드는 체인 코드의
Token Admin또는 지정된 롤을 보유한 지정된 조직의Org Admin에 의해서만 호출될 수 있습니다. -
removeRole - 이 메소드는 지정된 사용자 및 토큰에서 롤을 제거합니다. 이 메소드는 체인 코드의
Token Admin또는 지정된 롤을 보유한 지정된 조직의Org Admin에 의해서만 호출될 수 있습니다. -
getAccountsByRole - 이 메소드는 지정된 롤 및 토큰에 대한 모든 계정 ID 목록을 반환합니다. 이 메소드는 체인 코드의
Token Admin만 호출할 수 있습니다. -
getAccountsByUser - 이 메소드는 지정된 조직 ID 및 사용자 ID에 대한 모든 계정 ID 목록을 반환합니다. 이 메소드는 체인 코드의
Token Admin, 지정된 조직의Org Admin또는 매개변수에 지정된Account Owner에 의해서만 호출될 수 있습니다. -
getUsersByRole - 이 메소드는 지정된 롤 및 토큰에 대한 모든 사용자 목록을 반환합니다. 이 메소드는 체인 코드의
Token Admin만 호출할 수 있습니다. -
isInRole - 이 메소드는 사용자 및 토큰에 지정된 롤이 있는지 여부를 나타내는 부울 값을 반환합니다. 이 메소드는 체인 코드의
Token Admin, 계정의AccountOwner또는 지정된 조직의Org Admin만 호출할 수 있습니다. -
getOrgAccountsByRole - 이 방법은 지정된 조직에서 지정된 역할을 가진 모든 계정에 대한 정보를 반환합니다. 이 메소드는 체인 코드의
Token Admin또는 지정된 조직의Org Admin에 의해서만 호출될 수 있습니다. -
getOrgUsersByRole - 이 메소드는 지정된 조직에서 지정된 롤을 가진 모든 사용자에 대한 정보를 반환합니다. 이 메소드는 체인 코드의
Token Admin또는 지정된 조직의Org Admin에 의해서만 호출될 수 있습니다.
트랜잭션 내역 관리 방법
-
getAccountTransactionHistory - 이 메소드는 지정된 사용자 및 토큰에 대한 계정 트랜잭션 기록 세부정보 배열을 반환합니다. 이 메소드는 체인 코드의
Token Admin, 지정된 조직의Org Admin또는 계정의AccountOwner로만 호출할 수 있습니다. -
getAccountTransactionHistoryWithFilters - 이 메소드는 지정된 사용자 및 토큰에 대한 계정 트랜잭션 기록 세부정보 배열을 반환합니다. 이 메소드는 체인 코드의
Token Admin, 지정된 조직의Org Admin또는 계정의AccountOwner로만 호출할 수 있습니다. 이 방법은 원격 Oracle Blockchain Platform 네트워크에 연결된 경우에만 호출할 수 있습니다. -
getSubTransactionById - 이 메소드는 지정된 사용자 및 토큰에 대한 계정 트랜잭션 기록 세부정보 배열을 반환합니다. 이 메소드는 체인 코드의
Token Admin또는 계정의AccountOwner에서만 호출할 수 있습니다. -
getSubTransactionsByIdWithFilters - 이 방법은 지정된 트랜잭션에 대한 계정 하위 트랜잭션 기록 세부정보 배열을 반환합니다.
-
getTransactionById - 이 메소드는
Transaction자산의 내역을 반환합니다. -
deleteHistoricalTransactions - 이 방법은 상태 데이터베이스에서 이전 트랜잭션을 삭제합니다.
토큰 동작 관리 방법 - 민트 가능 동작
-
issueTokens - 이 메소드는 토큰을 최소화한 다음 메소드의 호출자가 소유합니다. 호출자에는 계정 및 최소 역할이 있어야 합니다. 민트할 수 있는 토큰 수는 사양 파일에서
mintable동작의max_mint_quantity등록 정보에 의해 제한됩니다.max_mint_quantity등록 정보가 지정되지 않은 경우 토큰을 무제한으로 민트할 수 있습니다. 수량은 사양 파일에서divisible동작의decimal매개변수로 지정된 십진수 값 내에 있어야 합니다. 이 메소드는 minter 롤이 있는 계정의AccountOwner에 의해서만 호출될 수 있습니다. -
getTotalMintedTokens - 이 메소드는 지정된 토큰에 대한 총 조폐 토큰 수를 반환합니다. 이 메소드는
Token Admin또는 체인 코드의Org Admin에 의해서만 호출될 수 있습니다. -
getNetTokens - 이 메소드는 지정된 토큰에 대해 시스템에서 사용 가능한 총 순 토큰 수를 반환합니다. 순 토큰 합계는 토큰이 레코딩된 후 남은 토큰 수입니다. 방정식 형태로 : 순 토큰 = 총 연마 토큰 - 총 연소 토큰. 토큰을 태우지 않으면 순 토큰 수가 총 조인트 토큰 수와 같습니다. 이 메소드는
Token Admin또는 체인 코드의Org Admin에 의해서만 호출될 수 있습니다.
토큰 동작 관리 방법 - 이전 가능한 동작
-
transferTokens - 이 메소드는 호출자의 토큰을 지정된 계정으로 이전합니다. 메소드의 호출자는 계정을 가져야 합니다. 수량은 사양 파일에서
divisible동작의decimal매개변수로 지정된 십진수 값 내에 있어야 합니다. 이 메소드는 계정의AccountOwner만 호출할 수 있습니다. -
bulkTransferTokens - 이 메소드는 호출자 계정에서
flow객체에 지정된 계정으로 토큰을 대량 이전하는 데 사용됩니다. 수량은 이 메소드의 사양 file.The 호출자에서divisible동작의decimal매개변수로 지정된 십진수 값 내에 이미 생성된 계정이 있어야 합니다. 이 메소드는 계정의AccountOwner만 호출할 수 있습니다.
토큰 동작 관리 방법 - 보류 가능한 동작
-
holdTokens - 이 방법은
to_account_id계정을 사용하여 토큰 소유자를 대신하여 보류를 생성합니다. 공증 계정이 지정되어 보류를 완료하거나 해제합니다. 보류가 생성되면 지급인의 지정된 토큰 잔액이 보류됩니다. 보류가 완료 또는 해제될 때까지 보류 잔액을 이전할 수 없습니다. 이 메소드의 호출자는 이미 생성된 계정을 가지고 있어야 합니다. 이 메소드는 계정의AccountOwner만 호출할 수 있습니다. -
executeHoldTokens - 이 메소드는 토큰에 대한 보류를 완료합니다. 토큰 소유자가 이전에 보유한 토큰 수량이 수신자에게 이전됩니다.
quantity값이 실제 보류 값보다 작으면 토큰의 원래 소유자가 나머지 금액을 다시 사용할 수 있습니다. 이 메소드는 지정된 작업 ID에 대해notary롤을 가진AccountOwnerID로만 호출할 수 있습니다. 공증인만 보류를 완료할 수 있습니다. -
releaseHoldTokens - 이 방법은 토큰 보류를 해제합니다. 이전이 완료되지 않고 원래 소유자가 보유한 모든 토큰을 다시 사용할 수 있습니다. 이 메소드는 지정된 시간 제한 내에
notary롤이 있는AccountOwnerID 또는 지정된 시간 제한 이후의 지급인, 수취인 또는 공증인이 호출할 수 있습니다. -
getOnHoldIds - 이 메소드는 지정된 계정에 대한 모든 보유 ID 목록을 반환합니다. 이 메소드는 체인 코드의
Token Admin, 지정된 조직의Org Admin또는 계정의AccountOwner에 의해 호출될 수 있습니다. -
getOnHoldDetailsWithOperationId - 이 메소드는 지정된 작업 ID 및 토큰에 대한 보류 중인 트랜잭션 세부정보를 반환합니다. 이 메소드는 누구나 호출할 수 있습니다.
-
getOnHoldBalanceWithOperationId - 이 메소드는 지정된 작업 ID 및 토큰에 대한 보류 중 잔액을 반환합니다. 이 메소드는 누구나 호출할 수 있습니다.
토큰 동작 관리 방법 - 굽기 가능한 동작
사용자정의 메소드
토큰 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 메소드
액세스 제어 관리 방법
Token Admin, Org Admin 또는 AccountOwner에 의해서만 호출될 수 있습니다. 이 기능을 사용하면 의도한 사용자만 작업을 수행할 수 있습니다. 허용되지 않은 액세스는 오류가 발생합니다. 액세스 제어 기능을 사용하려면 ../lib/auth 모듈에서 Authorization 클래스를 임포트합니다.import { Authorization } from '../lib/auth';-
addAdmin - 이 메소드는 사용자를 토큰 체인 코드의
Token Admin로 추가합니다. -
removeAdmin - 이 메소드는 사용자를 토큰 체인 코드의
Token Admin로 제거합니다. -
getAllAdmins - 이 메소드는 토큰 체인 코드의
Token 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"], }, } -
isUserTokenAdmin - 이 메소드는 함수 호출자가
Token Admin인 경우 부울 값true를 반환합니다. 그렇지 않으면 메소드가false를 반환합니다. -
addOrgAdmin - 이 메소드는 사용자를 조직의
Org Admin로 추가합니다. -
removeOrgAdmin - 이 메소드는 사용자를 조직의
Org Admin로 제거합니다. -
getOrgAdmins - 이 메소드는 조직의
Org Admin인 모든 사용자 목록을 반환합니다.
토큰 구성 관리 방법
-
getTokenDecimals - 이 메소드는 소수 토큰에 사용할 수 있는 소수 자릿수를 반환합니다.
divisible동작을 지정하지 않으면 기본값은 0입니다. -
getAllTokens - 이 메소드는 상태 데이터베이스에 저장된 모든 토큰 자산을 반환합니다. 이 방법은 Berkeley DB SQL 서식 있는 질의를 사용하며 원격 Oracle Blockchain Platform 네트워크에 접속된 경우에만 호출할 수 있습니다.
-
getTokensByName - 이 메소드는 지정된 이름의 토큰 자산을 모두 반환합니다. 이 방법은 Berkeley DB SQL 서식 있는 질의를 사용하며 원격 Oracle Blockchain Platform 네트워크에 접속된 경우에만 호출할 수 있습니다.
-
get - 이 메소드는 상태 데이터베이스에 있는 경우 토큰 객체를 반환합니다.
-
isTokenType - 이 메소드는 지정된 ID를 가진 토큰 자산이 존재하는지 여부를 나타냅니다.
-
save - 이 메소드는 토큰을 생성하고 해당 속성을 상태 데이터베이스에 저장합니다.
-
update - 이 메소드는 토큰 속성을 업데이트합니다. 토큰 자산이 생성된 후에는
token_desc값과 해당 사용자정의 속성만 업데이트합니다. -
getByRange - 이 메소드는 내부적으로 fabric
getStateByRange메소드를 호출합니다. 지정된 ID의 자산이 원장에서 반환되더라도 이 메소드는 자산을 호출자 자산 유형으로 변환합니다. -
history - 이 메소드는 지정된 토큰에 대한 내역을 반환합니다.
계정 관리 방법
-
getCallerAccountId - 이 메소드는 호출자의 계정 ID를 반환합니다.
-
generateAccountId - 이 메소드는
oaccount~<token asset name>~접두어가 붙은 영숫자 문자 집합인 계정 ID를 반환하고 인스턴스 소유자 또는 인스턴스에 로그인한 사용자의 사용자 이름 또는 전자메일 ID(user_id), 현재 네트워크 조직에 있는 사용자의 멤버쉽 서비스 제공자 ID(org_id) 및 고유 토큰 ID(token_id)의 해시가 뒤에 옵니다. -
createAccount - 이 방법은 지정된 사용자 및 토큰에 대한 계정을 만듭니다. 토큰이 있는 모든 사용자에게는 계정이 있어야 합니다. 계정은 사용자의 잔액, 보류 중인 잔액 및 트랜잭션 기록을 추적합니다. 계정 ID는
oaccount~<token asset name>~접두어가 붙은 영숫자 문자 집합으로, 인스턴스 소유자 또는 인스턴스에 로그인한 사용자(현재 네트워크 조직에 있는 사용자의 멤버쉽 서비스 제공자 ID(org_id)의 사용자 이름 또는 전자메일 ID(user_id) 해시가 뒤에 옵니다. 이 메소드는 체인 코드의Token Admin또는 지정된 조직의Org Admin에 의해서만 호출될 수 있습니다. -
associateTokenToAccount - 이 메소드는 대체 가능 토큰을 계정과 연계합니다. 이 메소드는 체인 코드의
Token Admin또는 관련 조직의Org Admin에 의해서만 호출될 수 있습니다. -
getAccountWithStatus - 이 메소드는 계정 상태를 포함하여 지정된 계정에 대한 계정 세부정보를 반환합니다.
-
getAccount - 이 메소드는 지정된 계정에 대한 계정 세부정보를 반환합니다.
-
history - 이 메소드는 지정된 계정에 대한 계정 기록 세부정보의 배열을 반환합니다.
-
getAccountOnHoldBalance - 이 방법은 지정된 계정에 대한 보류 중 잔액을 반환합니다.
-
getAllAccounts - 이 메소드는 모든 계정 목록을 반환합니다. 이 방법은 Berkeley DB SQL 서식 있는 질의를 사용하며 원격 Oracle Blockchain Platform 네트워크에 접속된 경우에만 호출할 수 있습니다.
-
getUserByAccountId - 이 메소드는 지정된 계정에 대한 사용자 세부정보를 반환합니다.
-
getAccountBalance - 이 방법은 지정된 계정의 계정 잔액을 반환합니다.
-
getAllOrgAccounts - 이 메소드는 지정된 조직에 속한 모든 토큰 계정 목록을 반환합니다.
역할 관리 방법
-
addRoleMember - 이 메소드는 지정된 사용자 및 토큰에 롤을 추가합니다.
-
removeRoleMember - 이 메소드는 지정된 사용자 및 토큰에서 롤을 제거합니다.
-
getAccountsByRole - 이 메소드는 지정된 롤 및 토큰에 대한 모든 계정 목록을 반환합니다.
-
getAccountsByUser - 이 메소드는 지정된 사용자에 대한 모든 계정 ID 목록을 반환합니다.
-
getUsersByRole - 이 메소드는 지정된 롤 및 토큰에 대한 모든 사용자 목록을 반환합니다.
-
isInRole - 이 메소드는 사용자 및 토큰에 지정된 롤이 있는지 여부를 나타냅니다.
-
roleCheck - 이 방법은 제공된 계정 ID가 역할의 구성원인지 여부를 확인합니다.
-
getOrgUsersByRole - 이 메소드는 지정된 조직에서 지정된 롤을 가진 모든 사용자에 대한 정보를 반환합니다.
-
getOrgAccountsByRole - 이 방법은 지정된 조직에서 지정된 역할을 가진 모든 계정에 대한 정보를 반환합니다.
트랜잭션 내역 관리 방법
-
getTransactionById - 이 메소드는
Transaction자산의 내역을 반환합니다. -
deleteHistoricalTransactions - 이 메소드는 지정된 계정에 대한 트랜잭션 기록 세부정보의 배열을 반환합니다.
-
getAccountTransactionHistory - 이 메소드는 지정된 계정에 대한 트랜잭션 기록 세부정보의 배열을 반환합니다.
-
getAccountTransactionHistoryWithFilters - 이 메소드는 지정된 계정에 대한 트랜잭션 기록 세부정보의 배열을 반환합니다. 이 방법은 원격 Oracle Blockchain Platform 네트워크에 연결된 경우에만 호출할 수 있습니다.
-
getSubTransactionHistory - 이 메소드는 지정된 트랜잭션에 대한 트랜잭션 내역 세부정보의 배열을 반환합니다.
-
getSubTransactionHistoryWithFilters - 이 메소드는 지정된 트랜잭션에 대한 하위 트랜잭션 내역 세부정보의 배열을 반환합니다.
토큰 동작 관리
../lib/token 모듈에서 Token 클래스를 임포트합니다.
import { Token } from '../lib/token';토큰 동작 관리 방법 - 민트 가능 동작
-
mint - 이 메소드는 토큰의 수량을 최소화한 다음 메소드의 호출자가 소유합니다. 호출자에는 계정 및 최소 역할이 있어야 합니다. 수량은 사양 파일에서
divisible동작의decimal매개변수로 지정된 십진수 값 내에 있어야 합니다. -
getTotalMintedTokens - 이 메소드는 조폐된 총 토큰 수를 반환합니다.
-
getNetTokens - 이 메소드는 시스템에서 사용 가능한 토큰의 순 수량을 반환합니다. 순 토큰은 토큰이 레코딩된 후 남은 토큰의 양입니다. 방정식 형태로 : 순 토큰 = 총 연마 토큰 - 총 연소 토큰. 토큰을 태우지 않으면 순 토큰 수가 총 조인트 토큰 수와 같습니다.
-
getMaxMintQuantity - 이 메소드는 토큰에 대한 최대 민트 가능 수량을 반환합니다.
max_mint_quantity동작이 지정되지 않은 경우 기본값은 0이며, 이를 통해 원하는 수의 토큰을 민트할 수 있습니다.
토큰 동작 관리 방법 - 이전 가능한 동작
-
transfer - 이 메소드는 트랜잭션 호출자의 토큰을
to_account_id계정으로 이전합니다. 이 메소드의 호출자는 계정을 가져야 하며 수량은 사양 파일에서divisible동작의decimal매개변수로 지정된 십진수 값 내에 있어야 합니다. -
bulkTransfer - 이 메소드는 호출자 계정에서
flow객체에 지정된 계정으로 토큰을 대량 이전하는 데 사용됩니다. 이 메소드의 호출자는 이미 생성된 계정을 가지고 있어야 합니다.
토큰 동작 관리 방법 - 보류 가능한 동작
-
hold - 이 방법은
to_account_id계정을 사용하여 토큰 소유자를 대신하여 보류를 생성합니다. 공증 계정이 지정되어 보류를 완료하거나 해제합니다. 보류가 생성되면 지급인의 지정된 토큰 잔액이 보류됩니다. 보류가 완료 또는 해제될 때까지 보류 잔액을 이전할 수 없습니다. 이 메소드의 호출자는 이미 생성된 계정을 가지고 있어야 합니다. -
executeHold - 이 방법은 토큰 보류를 완료하여 이전에 보류 중인 토큰의 지정된 수량을 수신자에게 이전합니다.
quantity값이 실제 보류 값보다 작으면 토큰의 원래 소유자가 나머지 금액을 다시 사용할 수 있습니다. 이 메소드는 지정된 작업 ID에 대해notary롤을 가진AccountOwnerID로만 호출할 수 있습니다. 공증인만 보류를 완료할 수 있습니다. -
releaseHold - 이 방법은 토큰 보류를 해제합니다. 이전이 완료되지 않고 원래 소유자가 보유한 모든 토큰을 다시 사용할 수 있습니다. 이 메소드는 지정된 시간 제한 내에
notary롤이 있는AccountOwnerID 또는 지정된 시간 제한 이후의 지급인, 수취인 또는 공증인이 호출할 수 있습니다. -
getOnHoldIds - 이 메소드는 지정된 계정에 대한 모든 보유 ID 목록을 반환합니다.
-
getOnHoldDetailsWithOperationId - 이 메소드는 지정된 작업 ID 및 토큰에 대한 보류 중인 트랜잭션 세부정보를 반환합니다.
-
getOnHoldBalanceWithOperationId - 이 메소드는 지정된 작업 ID 및 토큰에 대한 보류 중 잔액을 반환합니다. 이 메소드는 누구나 호출할 수 있습니다.
토큰 동작 관리 방법 - 굽기 가능한 동작