ERC-721용 비계 TypeScript NFT 프로젝트
Blockchain App Builder는 NFT 사양 파일에서 입력을 받아 완벽한 기능을 갖춘 비계 체인 코드 프로젝트를 생성합니다.
이 프로젝트는 CRUD 및 비CRUD 메서드와 토큰화 SDK를 포함한 NFT 수명주기 클래스 및 기능을 자동으로 생성합니다. 인수 검증, 마셜링/마셜링 해제 및 투명한 지속성 기능이 모두 자동으로 지원됩니다.
비계 프로젝트 및 NFT와 직접 관련되지 않은 방법에 대한 자세한 내용은 Scaffolded TypeScript Chaincode Project를 참조하십시오.
모델
토큰화된 모든 모델 클래스는 OchainModel
클래스를 확장합니다. 투명한 지속성 기능 또는 단순화된 ORM은 OchainModel
클래스에 캡처됩니다.
import * as yup from 'yup';
import { Id, Mandatory, Validate, Default, Embedded, Derived, ReadOnly } from '../../lib/decorators';
import { OchainModel } from '../../lib/ochain-model';
import { STRATEGY } from '../../lib/utils';
import { EmbeddedModel } from '../../lib/ochain-embedded-model';
export class ArtCollectionMetadata extends EmbeddedModel<ArtCollectionMetadata> {
@Validate(yup.string())
public painting_name: string;
@Validate(yup.string())
public description: string;
@Validate(yup.string())
public image: string;
@Validate(yup.string())
public painter_name: string;
}
@Id('tokenId')
export class ArtCollection extends OchainModel<ArtCollection> {
public readonly assetType = 'otoken';
@Mandatory()
@Validate(yup.string().required().matches(/^[A-Za-z0-9][A-Za-z0-9_-]*$/).max(16))
public tokenId: string;
@ReadOnly('artcollection')
public tokenName: string;
@Validate(yup.string().trim().max(256))
public tokenDesc: string;
@ReadOnly('ART')
public symbol: string;
@ReadOnly('erc721+')
public tokenStandard: string;
@ReadOnly('nonfungible')
public tokenType: string;
@ReadOnly('whole')
public tokenUnit: string;
@ReadOnly(["indivisible","singleton","mintable","transferable","burnable","roles"])
public behaviors: string[];
@ReadOnly({minter_role_name: "minter"})
public roles: object;
@ReadOnly({max_mint_quantity: 20000})
public mintable: object;
@Validate(yup.string())
public owner: string;
@Validate(yup.string())
public createdBy: string;
@Validate(yup.string())
public transferredBy: string;
@Validate(yup.string())
public creationDate: string;
@Validate(yup.string())
public transferredDate: string;
@Validate(yup.bool())
public isBurned: boolean;
@Validate(yup.string())
public burnedBy: string;
@Validate(yup.string())
public burnedDate: string;
@Validate(yup.string().max(2000))
public tokenUri: string;
@Embedded(ArtCollectionMetadata)
public metadata: ArtCollectionMetadata;
@Validate(yup.number())
public price: number;
@Validate(yup.boolean())
public on_sale_flag: boolean;
}
제어 장치
기본 컨트롤러 클래스는 OchainController
클래스를 확장합니다. 기본 컨트롤러는 하나만 있습니다.
export class DigiCurrCCController extends OchainController{
원하는 수의 클래스, 함수 또는 파일을 생성할 수 있지만 기본 컨트롤러 클래스 내에 정의된 메소드만 호출할 수 있습니다. 다른 메소드는 숨겨져 있습니다.
토큰 SDK 메소드를 사용하여 비즈니스 애플리케이션에 대한 사용자정의 메소드를 작성할 수 있습니다.
자동으로 생성된 NFT 방법
Blockchain App Builder는 NFT 및 NFT 라이프 사이클을 지원하는 방법을 자동으로 생성합니다. 이러한 방법을 사용하여 추가 코딩 없이 NFT를 초기화하고, 역할 및 계정을 관리하고, 기타 NFT 수명 주기 작업을 완료할 수 있습니다. 컨트롤러 메소드에는 호출할 수 있는 @Validator(...params)
데코레이터가 있어야 합니다.
액세스 제어 관리 방법
-
addTokenAdmin
- 이 메소드는 사용자를 체인 코드의
Token Admin
로 추가합니다. 이 메소드는 체인 코드의Token Admin
만 호출할 수 있습니다. -
removeTokenAdmin
- 이 메소드는 사용자를 체인 코드의
Token Admin
로 제거합니다. 이 메소드는 체인 코드의Token Admin
만 호출할 수 있습니다. -
isTokenAdmin
- 이 메소드는 함수 호출자가
Token Admin
인 경우 부울 값true
를 반환하고, 그렇지 않은 경우false
를 반환합니다.Token Admin
는 블록체인 네트워크의 다른 모든 사용자에서 이 함수를 호출할 수 있습니다. 다른 사용자는 자신의 계정에서만 이 메소드를 호출할 수 있습니다. -
getAllTokenAdmins
- 이 메소드는 체인 코드의
Token Admin
인 모든 사용자 목록을 반환합니다. 이 메소드는 체인 코드의Token Admin
만 호출할 수 있습니다.
토큰 구성 관리 방법
-
init
- 이 메소드는 체인 코드가 인스턴스화될 때 호출됩니다. 모든
Token Admin
는adminList
매개변수의userId
및orgId
정보로 식별됩니다.userId
은 인스턴스 소유자 또는 인스턴스에 로그인한 사용자의 사용자 이름 또는 전자메일 ID입니다.orgId
는 현재 네트워크 조직에 있는 사용자의 MSP(멤버쉽 서비스 공급자) ID입니다. 체인코드를 처음 배치할 때는adminList
매개변수가 필수입니다. 체인코드를 업그레이드하는 경우 빈 목록([]
)을 전달합니다. 업그레이드 중adminList
매개변수의 기타 모든 정보는 무시됩니다. -
getAllTokens
- 이 메소드는 상태 데이터베이스에 저장된 모든 토큰 자산을 반환합니다. 이 메소드는 체인 코드의
Token Admin
만 호출할 수 있습니다. 이 방법은 Berkeley DB SQL 서식 있는 질의를 사용하며 원격 Oracle Blockchain Platform 네트워크에 접속된 경우에만 호출할 수 있습니다. -
getAllTokensByUser
- 이 메소드는 지정된 사용자가 소유한 토큰 자산을 모두 반환합니다. 이 방법은 Berkeley DB SQL 서식 있는 질의를 사용하며 원격 Oracle Blockchain Platform 네트워크에 접속된 경우에만 호출할 수 있습니다. 이 메소드는 체인 코드의
Token Admin
또는 계정 소유자가 호출할 수 있습니다. -
getTokenById
- 이 메소드는 토큰이 상태 데이터베이스에 있는 경우 토큰 객체를 반환합니다. 이 메소드는 체인 코드의
Token Admin
또는 토큰 소유자에 의해서만 호출될 수 있습니다. -
getTokenHistory
- 이 메소드는 지정된 토큰 ID에 대한 내역을 반환합니다. 비동기 방식입니다. 이 방법은 원격 Oracle Blockchain Platform 네트워크에 연결된 경우에만 호출할 수 있습니다. 누구나 이 메서드를 호출할 수 있습니다.
-
getTokenObject
- 지정된 토큰 ID에 대한 토큰 인스턴스를 반환하는 유틸리티 메소드입니다. 이 메소드는 토큰 객체를 인출하기 위해 자동으로 생성된 많은 메소드에서 사용됩니다. 사용자 정의 메소드에서 필요에 따라 이 메소드를 호출할 수 있습니다. 토큰화된 자산 또는 클래스를 생성할 때 올바른 토큰 객체를 반환하도록 해당
Token
클래스로 전환 사례를 업데이트하십시오. Blockchain App Builder의ochain sync
명령은 토큰화된 자산이 사양 파일에 생성될 때 자동으로 스위치 케이스를 생성합니다. 이 메서드에는@Validator()
메서드 데코레이터가 없습니다. 즉, 이 메서드는 직접 호출할 수 없으며 다른 메서드에서만 호출할 수 있습니다. -
ownerOf
- 이 메소드는 지정된 토큰 ID의 소유자의 계정 ID를 반환합니다. 누구나 이 메서드를 호출할 수 있습니다.
-
name
- 이 메소드는 토큰 클래스의 이름을 반환합니다. 누구나 이 메서드를 호출할 수 있습니다.
-
symbol
- 이 메소드는 토큰 클래스의 기호를 반환합니다. 누구나 이 메서드를 호출할 수 있습니다.
-
tokenURI
- 이 메소드는 지정된 토큰의 URI를 반환합니다. 누구나 이 메서드를 호출할 수 있습니다.
-
totalSupply
- 이 메소드는 연마된 총 토큰 수를 반환합니다. 이 메소드는 체인 코드의
Token Admin
만 호출할 수 있습니다. -
totalNetSupply
- 이 메소드는 연마된 총 토큰 수에서 연소된 토큰 수를 뺀 값을 반환합니다. 이 메소드는 체인 코드의
Token Admin
만 호출할 수 있습니다.
계정 관리 방법
-
createAccount
- 이 방법은 지정된 사용자 및 토큰에 대한 계정을 만듭니다. 언제든 토큰이 있는 사용자에 대해 계정을 만들어야 합니다. 계정은 사용자가 보유한 NFT 수를 추적합니다. 토큰 관련 작업을 완료하려면 사용자에게 네트워크에 계정이 있어야 합니다. 사용자당 하나의 NFT 계정만 생성할 수 있습니다.
계정 ID는 영숫자 문자 집합으로, 앞에
oaccount~
가 붙고 그 뒤에 현재 네트워크 조직에서 사용자의 멤버쉽 서비스 제공자 ID(orgId
)에 대한 SHA-256 해시, 인스턴스 소유자 또는 인스턴스에 로그인한 사용자의 사용자 이름 또는 전자메일 ID(userId
) 및 상수 문자열nft
가 옵니다. 이 메소드는 체인 코드의Token Admin
만 호출할 수 있습니다. -
balanceOf
- 이 메소드는 지정된 사용자가 보유하는 총 NFT 수를 반환합니다. 이 메소드는 체인 코드의
Token Admin
또는 계정 소유자가 호출할 수 있습니다. -
getAllAccounts
- 이 메소드는 모든 계정 목록을 반환합니다. 이 메소드는 체인 코드의
Token Admin
만 호출할 수 있습니다. 이 방법은 Berkeley DB SQL 서식 있는 질의를 사용하며 원격 Oracle Blockchain Platform 네트워크에 접속된 경우에만 호출할 수 있습니다. -
getAccountByUser
- 이 메소드는 지정된 사용자에 대한 계정 세부정보를 반환합니다. 이 메소드는 체인 코드의
Token Admin
또는 계정의Account Owner
에 의해서만 호출될 수 있습니다. -
getUserByAccountId
- 이 메소드는 지정된 계정의 사용자 세부 정보를 반환합니다. 이 메소드는 모든 사용자가 호출할 수 있습니다.
-
getAccountHistory
- 이 메소드는 지정된 사용자에 대한 계정 기록을 반환합니다. 비동기 방식입니다. 이 메소드는 체인 코드의
Token Admin
또는 계정 소유자가 호출할 수 있습니다.
역할 관리 방법
-
addRole
- 이 메소드는 지정된 사용자에게 롤을 추가합니다. 이 메소드는 체인 코드의
Token Admin
만 호출할 수 있습니다. -
removeRole
- 이 메소드는 지정된 사용자로부터 롤을 제거합니다. 이 메소드는 체인 코드의
Token Admin
만 호출할 수 있습니다. -
getAccountsByRole
- 이 메소드는 지정된 롤에 대한 모든 계정 ID 목록을 반환합니다. 이 메소드는 체인 코드의
Token Admin
만 호출할 수 있습니다. -
getUsersByRole
- 이 메소드는 지정된 롤에 대한 모든 사용자 목록을 반환합니다. 이 메소드는 체인 코드의
Token Admin
만 호출할 수 있습니다. -
isInRole
- 이 메소드는 사용자에게 지정된 롤이 있는지 여부를 나타내는 부울 값을 반환합니다. 이 메소드는 체인 코드의
Token Admin
또는 계정의Account Owner
에 의해서만 호출될 수 있습니다.
트랜잭션 내역 관리 방법
-
getAccountTransactionHistory
- 이 메소드는 지정된 사용자에 대한 계정 트랜잭션 내역을 반환합니다. 비동기 방식입니다. 이 메소드는 체인 코드의
Token Admin
또는 계정 소유자가 호출할 수 있습니다. -
getAccountTransactionHistoryWithFilters
- 이 메소드는
PageSize
,Bookmark
,startTime
및endTime
로 필터링된 지정된 사용자에 대한 계정 트랜잭션 내역을 반환합니다. 비동기 방식입니다. 이 방법은 원격 Oracle Blockchain Platform 네트워크에 연결된 경우에만 호출할 수 있습니다. 이 메소드는 체인 코드의Token Admin
또는 계정 소유자가 호출할 수 있습니다. -
getTransactionById
- 이 메소드는 지정된 트랜잭션 ID에 대한 트랜잭션 기록을 반환합니다. 비동기 방식입니다. 이 메소드는 체인 코드의
Token Admin
또는 계정 소유자가 호출할 수 있습니다. -
deleteHistoricalTransactions
- 이 메소드는 상태 데이터베이스에서 지정된 시간 기록보다 오래된 트랜잭션을 삭제합니다. 비동기 방식입니다. 이 메소드는 체인 코드의
Token Admin
만 호출할 수 있습니다.
토큰 동작 관리 방법 - 민트 가능 동작
-
create<Token Name>Token
- 이 방법은 NFT를 생성합니다(분). 자산 및 연관된 속성이 상태 데이터베이스에 저장됩니다. 이 트랜잭션의 호출자는 토큰 계정을 가져야 합니다. 이 트랜잭션의 호출자가 NFT의 소유자가 됩니다. 토큰 지정 파일에
behaviors
의 경우roles
섹션,roles
의 경우minter_role_name
속성이 포함된 경우 트랜잭션의 호출자가 minter 롤을 가져야 합니다. 그렇지 않으면 모든 호출자가 NFT를 민트할 수 있습니다. -
update<Token Name>Token
- 이 메소드는 토큰 속성을 업데이트합니다. 이 메소드는 토큰의 소유자 또는 생성자인 사용자만 호출할 수 있습니다. 토큰 자산이 생성된 후에는 토큰 소유자만 토큰 사용자정의 속성을 업데이트할 수 있습니다. 사용자가 토큰 소유자와 토큰 생성자인 경우
TokenDesc
속성도 업데이트할 수 있습니다. 토큰 메타데이터를 업데이트할 수 없습니다. 특정 등록 정보만 업데이트하려는 경우에도 이 메소드에 모든 토큰 등록 정보를 전달해야 합니다.
토큰 동작 관리 방법 - 이전 가능한 동작
-
safeTransferFrom
- 비동기 함수입니다. 이 메서드는 지정된 NFT의 소유권을 발신자에서 다른 계정으로 이전합니다. 이 방법에는 다음 검증이 포함됩니다.
- 토큰이 존재하며 레코딩되지 않습니다.
- 발신자 계정 및 수신자 계정이 있으며 동일한 계정이 아닙니다.
- 발신자 계정은 토큰을 소유합니다.
- 함수의 호출자는 발신자입니다.
-
transferFrom
- 비동기 함수입니다. 이 방법은 지정된 NFT의 소유권을 발신자 계정에서 수신자 계정으로 이전합니다. 호출자는 올바른 파라미터를 전달해야 합니다. 이 메소드는 토큰 소유자뿐만 아니라 모든 사용자가 호출할 수 있습니다. 이 방법에는 다음 검증이 포함됩니다.
- 토큰이 존재하며 레코딩되지 않습니다.
- 발신자 계정 및 수신자 계정이 있으며 동일한 계정이 아닙니다.
- 발신자 계정은 토큰을 소유합니다.
토큰 동작 관리 방법 - 굽기 가능한 동작
-
burn
- 이 메소드는 호출자 계정에서 지정된 NFT를 비활성화하거나 레코딩합니다. 이 메소드의 호출자는 계정을 가져야 합니다. 토큰 지정 파일에
burnable
동작이 포함되어 있지 않으면 토큰을 구울 수 없습니다. 사양 파일의roles
섹션에burner_role_name
속성이 지정되지 않은 경우 토큰 소유자가 토큰을 구울 수 있습니다.burner_role_name
속성이roles
섹션에 지정된 경우 사용자가 토큰의 채굴자(생성자) 또는 소유자인 버너 롤을 지정하면 토큰을 구울 수 있습니다. -
burnNFT
- 이 메소드는 호출자 계정에서 지정된 NFT를 비활성화하거나 레코딩하고 토큰 객체 및 토큰 내역을 반환합니다. 이 메소드의 호출자는 계정을 가져야 합니다. 토큰 지정 파일에
burnable
동작이 포함되어 있지 않으면 토큰을 구울 수 없습니다. 사양 파일의roles
섹션에burner_role_name
속성이 지정되지 않은 경우 토큰 소유자가 토큰을 구울 수 있습니다.burner_role_name
속성이roles
섹션에 지정된 경우 사용자가 토큰의 채굴자(생성자) 또는 소유자인 버너 롤을 지정하면 토큰을 구울 수 있습니다.
사용자정의 메소드
토큰 SDK 메소드를 사용하여 비즈니스 애플리케이션에 대한 사용자정의 메소드를 작성할 수 있습니다.
다음 예에서는 사용자정의 메소드에서 토큰 SDK 메소드를 사용하는 방법을 보여줍니다. sell
메소드가 호출되면 지정된 가격에 대한 판매용 토큰이 게시됩니다.
@Validator(yup.string(), yup.number())
public async sell(token_id: string, selling_price: number) {
try {
const token = await this.Ctx.ERC721Token.get(token_id);
const t = new ArtCollection(token)
/** * price is a custom asset
attribute to set the price of a non-fungible token in the
marketplace */
t.price = selling_price;
/** * on_sale_flag is a
custom asset attribute that maintains non-fungible token selling status in the
marketplace */
t.on_sale_flag = true;
await this.Ctx.ERC721Token.updateToken(t);
let msg = `Token ID : '${token_id}' has been posted for selling in the marketplace'`;
return {msg}
} catch(error) {
throw new Error(error.message);
}
}
NFT SDK 방법
액세스 제어 관리 방법
Token Admin
또는 Account Owner
에 의해서만 호출될 수 있습니다. 이 기능을 사용하면 의도한 사용자만 작업을 수행할 수 있습니다. 허용되지 않은 액세스는 오류가 발생합니다. 액세스 제어 기능을 사용하려면 ../lib/erc721-auth
모듈에서 Authorization
클래스를 임포트합니다.import { ERC721Authorization } from '../lib/erc721-auth';
-
checkAuthorization
- 이 방법을 사용하여 작업에 액세스 제어 검사를 추가합니다. 비동기 함수입니다. 자동으로 생성되는 대부분의 방법에는 액세스 제어가 포함됩니다. 특정 토큰 메소드는 토큰의
ERC721Admin
또는Account Owner
또는 여러 계정이 있는 사용자의 경우MultipleAccountOwner
에 의해서만 실행할 수 있습니다.checkAuthorization
메소드는Ctx
객체를 통해 액세스하는Authorization
클래스의 일부입니다. 액세스 제어 매핑은 다음 텍스트와 같이../lib/constant.ts
파일에 설명되어 있습니다.../lib/constant.ts
파일을 편집하여 액세스 제어를 수정할 수 있습니다. 고유의 액세스 제어를 사용하거나 액세스 제어를 사용 안함으로 설정하려면 자동으로 생성된 컨트롤러 메소드 및 사용자 정의 메소드에서 액세스 제어 코드를 제거합니다.export const TOKENACCESS = { ADMIN: { isUserTokenAdmin: ['Admin', 'MultipleAccountOwner'], addAdmin: ['Admin'], removeAdmin: ['Admin'], getAllAdmins: ['Admin'], }, TOKEN: { save: ['Admin'], getAllTokens: ['Admin'], get: ['Admin'], update: ['Admin'], getDecimals: ['Admin'], getTokensByName: ['Admin'], addRoleMember: ['Admin'], removeRoleMember: ['Admin'], isInRole: ['Admin', 'AccountOwner'], getTotalMintedTokens: ['Admin'], getNetTokens: ['Admin'], }, ROLE: { getAccountsByRole: ['Admin'], getUsersByRole: ['Admin'], }, TRANSACTION: { deleteTransactions: ['Admin'], }, ACCOUNT: { createAccount: ['Admin'], getAllAccounts: ['Admin'], getAccountsByUser: ['Admin', 'MultipleAccountOwner'], getAccount: ['Admin', 'AccountOwner'], history: ['Admin', 'AccountOwner'], getAccountTransactionHistory: ['Admin', 'AccountOwner'], getAccountBalance: ['Admin', 'AccountOwner'], getAccountOnHoldBalance: ['Admin', 'AccountOwner'], getOnHoldIds: ['Admin', 'AccountOwner'], }, ERC721ADMIN: { isUserTokenAdmin: ['Admin'], addAdmin: ['Admin'], removeAdmin: ['Admin'], getAllAdmins: ['Admin'], }, ERC721TOKEN: { getAllTokens: ['Admin'], getAllTokensByUser: ['Admin', 'AccountOwner'], get: ['Admin', TOKEN_OWNER], getTokensByName: ['Admin'], addRoleMember: ['Admin'], removeRoleMember: ['Admin'], isInRole: ['Admin', 'AccountOwner'], totalSupply: ['Admin'], totalNetSupply: ['Admin'], history: ['Admin'], }, ERC721ROLE: { getAccountsByRole: ['Admin'], getUsersByRole: ['Admin'], }, ERC721TRANSACTION: { deleteTransactions: ['Admin'], }, ERC721ACCOUNT: { createAccount: ['Admin'], getAllAccounts: ['Admin'], getAccountsByUser: ['Admin', 'MultipleAccountOwner'], history: ['Admin', 'AccountOwner'], getAccountTransactionHistory: ['Admin', 'AccountOwner'], getAccountTransactionHistoryWithFilters: ['Admin', 'AccountOwner'], balanceOf: ['Admin', 'MultipleAccountOwner'], } }
-
isUserTokenAdmin
- 이 메소드는 함수 호출자가
Token Admin
인 경우 부울 값true
를 반환합니다. 그렇지 않으면 메소드가false
를 반환합니다. 비동기 정적 함수입니다. -
addAdmin
- 이 메소드는 사용자를 토큰 체인 코드의
Token Admin
로 추가합니다. -
removeAdmin
- 이 메소드는 사용자를 토큰 체인 코드의
Token Admin
로 제거합니다. -
getAllAdmins
- 이 메소드는 모든
Token Admin
사용자 목록을 반환합니다.
토큰 구성 관리 방법
토큰 구성 관리 방법은 ERC-721 표준을 기반으로 합니다. 토큰 구성 관리 메소드를 사용하려면 ../lib/erc721-token
모듈에서 Token
클래스를 임포트합니다.
-
totalSupply
- 이 메소드는 총 조폐된 NFT 수를 반환합니다. 비동기 함수입니다.
-
get
- 이 메소드는 지정된 토큰 객체가 상태 데이터베이스에 있는 경우 해당 객체를 반환합니다. 비동기 정적 함수입니다.
-
isTokenType
- 이 메소드는 지정된 ID를 가진 토큰 자산이 존재하는지 여부를 나타냅니다. 비동기 정적 함수입니다.
-
createToken
- 이 메소드는 토큰을 생성하고 해당 속성을 상태 데이터베이스에 저장합니다. 이 메소드는 minter 롤을 가진 사용자만 호출할 수 있습니다. 비동기 함수입니다.
-
updateToken
- 이 메소드는 토큰 속성을 업데이트합니다. 이 메소드는 토큰의 소유자 또는 생성자만 호출할 수 있습니다. 토큰 자산이 생성된 후에는 토큰 소유자만 토큰 사용자정의 속성을 업데이트할 수 있습니다. 사용자가 토큰 소유자와 토큰 생성자인 경우
TokenDesc
속성도 업데이트할 수 있습니다. 토큰 메타데이터를 업데이트할 수 없습니다. 특정 등록 정보만 업데이트하려는 경우에도 이 메소드에 모든 토큰 등록 정보를 전달해야 합니다. 비동기 함수입니다. -
getByRange
- 이 메소드는 내부적으로 fabric
getStateByRange
메소드를 호출합니다. 지정된 ID의 자산이 원장에서 반환되더라도 이 메소드는 자산을 호출자 자산 유형으로 변환합니다. 비동기 정적 함수입니다.@validator(yup.string(), yup.string()) public async getDigiCurrGetByRange(startId: string, endId: string) { return await this.Ctx.ERC721TOken.getByRange(startId, endId, PaintingNft); }
-
history
- 이 메소드는 지정된 토큰에 대한 내역을 반환합니다. 비동기 정적 함수입니다.
-
getAllTokens
- 이 메소드는 상태 데이터베이스에 저장된 모든 토큰 자산을 반환합니다. 이 방법은 Berkeley DB SQL 서식 있는 질의를 사용하며 원격 Oracle Blockchain Platform 네트워크에 접속된 경우에만 호출할 수 있습니다. 비동기 정적 함수입니다.
-
getAllTokensByUser
- 이 메소드는 지정된 계정 ID가 소유한 모든 토큰을 반환합니다. 비동기 정적 함수입니다.
-
ownerOf
- 이 메소드는 지정된 토큰 소유자의 계정 ID를 반환합니다. 비동기 정적 함수입니다.
-
tokenUri
- 이 메소드는 지정된 토큰에 대한 URI를 반환합니다. 비동기 정적 함수입니다.
-
getTokenUri
- 이 메소드는 지정된 토큰에 대한 URI를 반환합니다. 비동기 정적 함수입니다.
-
symbol
- 이 메소드는 토큰 클래스의 기호를 반환합니다.
계정 관리 방법
-
generateAccountId
- 이 메소드는 멤버쉽 서비스 제공자 ID(
orgId
)와 사용자 이름 또는 전자메일 ID(userId
)를 연결한 다음 SHA-256 해시를 생성하여 형성되는 계정 ID를 반환합니다. -
createAccount
- 이 방법은 지정된 사용자 및 토큰에 대한 계정을 만듭니다. 언제든 토큰이 있는 사용자에 대해 계정을 만들어야 합니다. 계정은 사용자가 보유한 NFT 수를 추적합니다. 토큰 관련 작업을 완료하려면 사용자에게 네트워크에 계정이 있어야 합니다. 사용자당 하나의 NFT 계정만 생성할 수 있습니다.
계정 ID는 영숫자 문자 집합으로, 앞에
oaccount~
가 붙고 그 뒤에 현재 네트워크 조직에서 사용자의 멤버쉽 서비스 제공자 ID(orgId
)에 대한 SHA-256 해시, 인스턴스 소유자 또는 인스턴스에 로그인한 사용자의 사용자 이름 또는 전자메일 ID(userId
) 및 상수 문자열nft
가 옵니다. 이 메소드는 체인 코드의Token Admin
만 호출할 수 있습니다. -
getAllAccounts
- 이 메소드는 모든 계정 목록을 반환합니다. 이 방법은 Berkeley DB SQL 서식 있는 질의를 사용하며 원격 Oracle Blockchain Platform 네트워크에 접속된 경우에만 호출할 수 있습니다.
-
history
- 이 메소드는 지정된 계정에 대한 계정 기록 세부정보의 배열을 반환합니다.
-
getUserByAccountId
- 이 메소드는 지정된 계정에 대한 사용자 세부정보를 반환합니다.
-
getAccountWithStatusByUser
- 이 메소드는 계정 상태를 포함하여 지정된 계정에 대한 사용자 세부정보를 반환합니다. 이 메소드는 체인 코드의
Token Admin
또는 계정의Account Owner
에 의해서만 호출될 수 있습니다. -
getAccountByUser
- 이 메소드는 지정된 계정에 대한 사용자 세부정보를 반환합니다. 이 메소드는 체인 코드의
Token Admin
또는 계정의Account Owner
에 의해서만 호출될 수 있습니다. -
balanceOf
- 이 메소드는 지정된 사용자가 보유하는 총 NFT 수를 반환합니다.
역할 관리 방법
-
addRoleMember
- 이 메소드는 지정된 사용자 및 토큰에 롤을 추가합니다. 계정 ID는 연결된 멤버쉽 서비스 제공자 ID(
orgId
)의 SHA-256 해시와 사용자 이름 또는 전자메일 ID(userId
)를 생성하여 구성됩니다. 비동기 함수입니다. -
removeRoleMember
- 이 메소드는 지정된 사용자 및 토큰에서 롤을 제거합니다. 계정 ID는 연결된 멤버쉽 서비스 제공자 ID(
orgId
)의 SHA-256 해시와 사용자 이름 또는 전자메일 ID(userId
)를 생성하여 구성됩니다. 비동기 함수입니다. -
isInRole
- 이 메소드는 사용자 및 토큰에 지정된 롤이 있는지 여부를 나타내는 부울 값을 반환합니다. 계정 ID는 연결된 멤버쉽 서비스 제공자 ID(
orgId
)의 SHA-256 해시와 사용자 이름 또는 전자메일 ID(userId
)를 생성하여 구성됩니다. 비동기 함수입니다. -
getAccountsByRole
- 이 메소드는 지정된 롤에 대한 모든 계정 ID 목록을 반환합니다.
-
getUsersByRole
- 이 메소드는 지정된 롤에 대한 모든 사용자 목록을 반환합니다.
트랜잭션 내역 관리 방법
-
getAccountTransactionHistory
- 이 메소드는 지정된 계정에 대한 트랜잭션 기록 세부정보의 배열을 반환합니다.
-
getAccountTransactionHistoryWithFilters
- 이 메소드는
PageSize
,Bookmark
,startTime
및endTime
로 필터링된 지정된 사용자에 대한 계정 트랜잭션 내역을 반환합니다. 이 방법은 원격 Oracle Blockchain Platform 네트워크에 연결된 경우에만 호출할 수 있습니다. -
getTransactionById
- 이 메소드는
Transaction
자산의 내역을 반환합니다. -
deleteHistoricalTransactions
- 이 메소드는 상태 데이터베이스에서 지정된 날짜보다 오래된 트랜잭션을 삭제합니다.
토큰 동작 관리 - 민트 가능 동작
-
getMaxMintQuantity
- 이 메소드는 토큰의 최대 민트 가능 수량을 반환합니다.
max_mint_quantity
동작이 사양 파일에 구성되지 않은 경우 기본값은 0이며 무한한 수의 토큰을 민트할 수 있습니다. -
getTotalMintedTokens
- 이 메소드는 지정된 토큰에 대해 시스템에서 사용 가능한 총 조폐된 토큰 수를 반환합니다. 사용 가능한 순 토큰 수는 연마된 총 토큰 수에서 연소된 토큰 수를 뺀 값입니다. 비동기 함수입니다.
토큰 동작 관리 - 이전 가능한 동작
-
safeTransferFrom
- 비동기 함수입니다. 이 메서드는 지정된 NFT의 소유권을 발신자에서 다른 계정으로 이전합니다. 이 방법에는 다음 검증이 포함됩니다.
- 토큰이 존재하며 레코딩되지 않습니다.
- 발신자 계정 및 수신자 계정이 있으며 동일한 계정이 아닙니다.
- 발신자 계정은 토큰을 소유합니다.
- 함수의 호출자는 발신자입니다.
-
transferFrom
- 비동기 함수입니다. 이 방법은 지정된 NFT의 소유권을 발신자 계정에서 수신자 계정으로 이전합니다. 호출자는 올바른 파라미터를 전달해야 합니다. 이 메소드는 토큰 소유자뿐만 아니라 모든 사용자가 호출할 수 있습니다. 이 방법에는 다음 검증이 포함됩니다.
- 토큰이 존재하며 레코딩되지 않습니다.
- 발신자 계정 및 수신자 계정이 있으며 동일한 계정이 아닙니다.
- 발신자 계정은 토큰을 소유합니다.
토큰 동작 관리 - 굽기 가능 동작