토큰 분류법 프레임워크에 대한 비계 TypeScript 프로젝트
Blockchain App Builder는 토큰 사양 파일에서 입력을 가져와 완전한 기능을 갖춘 비계 체인 코드 프로젝트를 생성합니다.
프로젝트는 CRUD 및 비CRUD 메서드를 포함한 토큰 수명 주기 클래스 및 함수를 자동으로 생성합니다. 인수 검증, 마셜링/마셜링 해제 및 투명한 지속성 기능은 모두 자동으로 지원됩니다.
비계 프로젝트 및 토큰과 직접 관련되지 않은 방법에 대한 자세한 내용은 Scaffolded TypeScript Chaincode Project를 참조하십시오.
모델
토큰화된 모든 모델 클래스는 Token
클래스를 확장하며, 이 클래스는 OchainModel
클래스를 확장합니다. Token
클래스는 ../lib/token
에서 임포트됩니다. Transparent Persistence Capability 또는 단순화된 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(user_id
) 해시 또는 인스턴스에 로그인한 사용자, 현재 네트워크 조직에 있는 사용자의 멤버쉽 서비스 제공자 ID(org_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
- 이 메소드는 지정된 토큰에 대해 시스템에서 사용 가능한 총 순 토큰 수를 반환합니다. 순 토큰 합계는 토큰이 소모된 후 남은 토큰의 양입니다. 방정식 형식: net 토큰 = 총 minted 토큰 - 총 burned 토큰. 토큰이 소모되지 않는 경우 순 토큰 수는 총 소모 토큰과 같습니다. 이 메소드는 체인 코드의
Token Admin
또는Org Admin
로만 호출할 수 있습니다.
토큰 동작 관리 방법 - 전송 가능한 동작
-
transferTokens
- 이 메소드는 호출자의 토큰을 지정된 계정으로 이전합니다. 메소드 호출자에 계정이 있어야 합니다. 수량은 사양 파일에서
divisible
동작의decimal
매개변수로 지정된 십진수 값 내에 있어야 합니다. 이 메소드는 계정의AccountOwner
에 의해서만 호출될 수 있습니다. -
bulkTransferTokens
- 이 메소드는 호출자 계정의 토큰을
flow
객체에 지정된 계정으로 대량 이전하는 데 사용됩니다. 수량은 이 메소드의 사양 file.The 호출자에 있는divisible
동작의decimal
매개변수로 지정된 소수 값 내에 있어야 합니다. 이미 생성된 계정이 있어야 합니다. 이 메소드는 계정의AccountOwner
에 의해서만 호출될 수 있습니다.
토큰 동작 관리 방법 - 보류 가능한 동작
-
holdTokens
- 이 방법은 토큰 소유자를 대신하여
to_account_id
계정으로 보류를 생성합니다. 공증 계정이 지정되어 보류를 완료하거나 해제합니다. 보류가 생성되면 지급인의 지정된 토큰 잔액이 보류됩니다. 보류가 완료되거나 해제될 때까지 보류 잔액을 이전할 수 없습니다. 이 메소드의 호출자에는 이미 생성된 계정이 있어야 합니다. 이 메소드는 계정의AccountOwner
에 의해서만 호출될 수 있습니다. -
executeHoldTokens
- 이 메소드는 토큰에 대한 보류를 완료합니다. 토큰 소유자가 이전에 보유한 토큰 수량이 수신자에게 전송됩니다.
quantity
값이 실제 보류 값보다 작으면 토큰의 원래 소유자가 나머지 금액을 다시 사용할 수 있습니다. 이 메소드는 지정된 작업 ID에 대해notary
롤이 있는AccountOwner
ID로만 호출할 수 있습니다. 공증인만 보류를 완료할 수 있습니다. -
releaseHoldTokens
- 이 방법은 토큰 보류를 해제합니다. 전송이 완료되지 않았으며 모든 보류 토큰을 원래 소유자에게 다시 사용할 수 있습니다. 이 메소드는 지정된 시간 제한 내에
notary
롤이 있는AccountOwner
ID 또는 지정된 시간 제한 이후의 지불인, 수취인 또는 공증인에 의해 호출될 수 있습니다. -
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
- 이 메소드는 내부적으로 패브릭
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(user_id
) 해시 또는 인스턴스에 로그인한 사용자, 현재 네트워크 조직에 있는 사용자의 멤버쉽 서비스 제공자 ID(org_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
- 이 방법은 시스템에서 사용 가능한 토큰의 순 수량을 반환합니다. 그물 토큰은 토큰이 소모된 후 남은 토큰의 양입니다. 방정식 형식: net 토큰 = 총 minted 토큰 - 총 burned 토큰. 토큰이 소모되지 않는 경우 순 토큰 수는 총 소모 토큰과 같습니다.
-
getMaxMintQuantity
- 이 메소드는 토큰에 대한 최대 민트 가능 수량을 반환합니다.
max_mint_quantity
동작이 지정되지 않은 경우 기본값은 0이며, 이를 통해 원하는 수의 토큰을 연동할 수 있습니다.
토큰 동작 관리 방법 - 전송 가능한 동작
-
transfer
- 이 메소드는 트랜잭션 호출자의 토큰을
to_account_id
계정으로 이전합니다. 이 메소드의 호출자에는 계정이 있어야 하며 수량은 사양 파일에서divisible
동작의decimal
매개변수로 지정된 십진수 값 내에 있어야 합니다. -
bulkTransfer
- 이 메소드는 호출자 계정의 토큰을
flow
객체에 지정된 계정으로 대량 이전하는 데 사용됩니다. 이 메소드의 호출자에는 이미 생성된 계정이 있어야 합니다.
토큰 동작 관리 방법 - 보류 가능한 동작
-
hold
- 이 방법은 토큰 소유자를 대신하여
to_account_id
계정으로 보류를 생성합니다. 공증 계정이 지정되어 보류를 완료하거나 해제합니다. 보류가 생성되면 지급인의 지정된 토큰 잔액이 보류됩니다. 보류가 완료되거나 해제될 때까지 보류 잔액을 이전할 수 없습니다. 이 메소드의 호출자에는 이미 생성된 계정이 있어야 합니다. -
executeHold
- 이 방법은 토큰에 대한 보류를 완료하여 이전에 보류 중인 토큰의 지정된 수량을 수신자에게 이전합니다.
quantity
값이 실제 보류 값보다 작으면 토큰의 원래 소유자가 나머지 금액을 다시 사용할 수 있습니다. 이 메소드는 지정된 작업 ID에 대해notary
롤이 있는AccountOwner
ID로만 호출할 수 있습니다. 공증인만 보류를 완료할 수 있습니다. -
releaseHold
- 이 방법은 토큰 보류를 해제합니다. 전송이 완료되지 않았으며 모든 보류 토큰을 원래 소유자에게 다시 사용할 수 있습니다. 이 메소드는 지정된 시간 제한 내에
notary
롤이 있는AccountOwner
ID 또는 지정된 시간 제한 이후의 지불인, 수취인 또는 공증인에 의해 호출될 수 있습니다. -
getOnHoldIds
- 이 메소드는 지정된 계정에 대한 모든 보유 ID 목록을 반환합니다.
-
getOnHoldDetailsWithOperationId
- 이 메소드는 지정된 작업 ID 및 토큰에 대해 보류 중인 트랜잭션 세부정보를 반환합니다.
-
getOnHoldBalanceWithOperationId
- 이 메소드는 지정된 작업 ID 및 토큰에 대해 보류 중인 잔액을 반환합니다. 이 방법은 누구나 호출할 수 있습니다.
토큰 동작 관리 방법 - 굽기 가능한 동작