ERC-1155 토큰화 플로우
ERC-1155 토큰 프로젝트를 배포한 후 토큰 관리자와 토큰 소유자는 토큰을 생성하고 수명 주기 작업을 완료하기 위한 일반적인 플로우를 따릅니다.
토큰 프로젝트를 배치하면 초기화 메소드로 전달된 목록의 사용자가 체인코드의 토큰 관리자가 됩니다. 배포 후 토큰 생성 및 수명 주기 작업 완료에 대한 일반적인 플로우는 다음 단계를 따릅니다.
토큰 관리자 작업:
- 토큰을 소유하거나 토큰 관련 작업을 완료할 모든 사용자에 대한 사용자 계정을 만듭니다.
- 각 사용자 계정에 대해 토큰 계정을 만듭니다. 사용자는 여러 대체 가능 토큰 계정을 가질 수 있지만 NFT(비정지 가능 토큰) 계정은 하나만 가질 수 있습니다. 토큰 관리자는
createAccount
메소드를 사용하여 사용자 및 토큰 계정을 별도로 생성하는 대신 동시에 생성할 수 있습니다. - 필요에 따라 대체 가능한 토큰을 만듭니다. 대체 가능 토큰을 초기화할 때 연관된 메타데이터 및 동작을 토큰에 지정할 수 있습니다.
- 대체 가능 토큰의 경우 사용자의 대체 가능 토큰 계정을 특정 대체 가능 토큰과 연관시킵니다.
- 필요에 따라 사용자의 토큰 계정에 채굴기 및 버너 롤을 추가합니다.
토큰 소유자 작업:
- 특정 토큰에 대해 minter 역할을 가진 사용자는 NFT 또는 대체 가능한 토큰을 생성(민트)할 수 있습니다.
- 사용자는 계정 간에 토큰을 이전하고 계정 잔액을 확인할 수 있습니다.
- 특정 토큰에 대한 버너 역할이 있는 사용자는 NFT 또는 대체 가능한 토큰을 삭제(굽기)할 수 있습니다.
Vault Manager 작업:
- 저장소 역할을 가진 사용자는 NFT를 잠글 수 있습니다. 잠긴 NFT는 레코딩하거나 다른 사용자에게 전송할 수 없습니다.
다음 다이어그램은 ERC-1155 토큰화 시나리오에 대한 전체 프로세스 플로우를 보여 줍니다.
다음 표에는 ERC-1155 토큰 프로젝트를 스캐폴딩할 때 자동으로 생성되는 메소드가 요약되어 있습니다.
메소드 범주 | 자동 생성 방법(TypeScript) | 자동 생성된 방법(실행) | 호출자 | 설명 |
---|---|---|---|---|
관리자 관리 | init |
Init |
관리 | 토큰 체인 코드를 초기화합니다. |
isTokenAdmin |
IsTokenAdmin |
관리 | 호출자가 관리자인 경우 true를 반환합니다. | |
addTokenAdmin |
AddTokenAdmin |
관리 | 관리자를 추가합니다. | |
removeTokenAdmin |
RemoveTokenAdmin |
관리 | 관리자를 제거합니다. | |
getAllTokenAdmins |
GetAllTokenAdmins |
관리 | 모든 관리자를 반환합니다. | |
계정 관리 | createAccount |
CreateAccount |
관리 | 사용자 계정 및 토큰 계정을 만듭니다. |
createUserAccount |
CreateUserAccount |
관리 | 사용자 계정 생성 | |
createTokenAccount |
CreateTokenAccount |
관리 | 토큰 계정을 생성합니다. | |
associateFungibleTokenAccount |
AssociateFungibleTokenAccount |
관리 | 대체 가능 토큰 계정을 대체 가능 토큰과 연관시킵니다. | |
getAccountHistory |
GetAccountHistory |
관리자/계정 소유자 | 토큰 계정에 대한 기록을 반환합니다. | |
getAccountTransactionHistory |
GetAccountTransactionHistory |
관리자/계정 소유자 | 계정에 대한 트랜잭션 내역 반환 | |
getAccount |
GetAccount |
관리자/계정 소유자 | 토큰 계정에 대한 세부정보를 반환합니다. | |
getAllAccounts |
GetAllAccounts |
관리 | 모든 사용자 계정에 대한 세부정보를 반환합니다. | |
getAccountDetailsByUser |
GetAccountDetailsByUser |
관리자/계정 소유자 | 사용자 계정 및 연관된 모든 토큰에 대한 세부정보를 반환합니다. | |
getUserByAccountId |
GetUserByAccountId |
모든 사용자 | 계정 ID에 대한 사용자 세부정보를 반환합니다. | |
롤 관리 | addRole |
AddRole |
관리 | 사용자 및 토큰에 역할을 추가합니다. |
isInRole |
IsInRole |
관리자/계정 소유자 | 사용자에게 토큰에 대해 지정된 롤이 있는지 여부를 반환합니다. | |
removeRole |
RemoveRole |
관리 | 사용자 및 토큰에서 역할을 제거합니다. | |
getAccountsByRole |
GetAccountsByRole |
관리 | 지정된 역할 및 토큰에 대한 계정 ID를 반환합니다. | |
getUsersByRole |
GetUsersByRole |
관리 | 지정된 롤 및 토큰에 대한 사용자 목록을 반환합니다. | |
민트 가능 동작 | mintBatch |
MintBatch |
최소 롤을 가진 사용자 | 다중 토큰(분) |
이전 가능 동작 | batchTransferFrom |
BatchTransferFrom |
모든 사용자 | 사용자 간 토큰 전송 |
safeBatchTransferFrom |
SafeBatchTransferFrom |
모든 사용자 | 메소드 호출자와 다른 사용자 간에 토큰을 전송합니다. | |
balanceOfBatch |
BalanceOfBatch |
관리자/계정 소유자 | 여러 사용자 및 토큰에 대한 토큰 계정 잔액을 반환합니다. | |
exchangeToken |
ExchangeToken |
계정 소유자 | 토큰 계정 간 토큰 교환 | |
굽기 동작 | burnBatch |
BurnBatch |
버너 롤을 보유한 사용자 | 화상 토큰 |
토큰 관리 | create<Token Name>Token |
Create<Token Name>Token |
Admin(fungible tokens) / minter role(NFT)을 가진 사용자 | 토큰을 생성합니다. |
update<Token Name>Token |
Update<Token Name>Token |
관리자(정확한 토큰)/토큰 소유자(NFT) | 토큰 업데이트 | |
getTokenHistory |
GetTokenHistory |
모든 사용자 | 토큰의 기록을 반환합니다. | |
getTransactionById |
GetTransactionById |
모든 사용자 | 지정된 트랜잭션의 세부정보를 반환합니다. | |
deleteHistoricalTransactions |
DeleteHistoricalTransactions |
관리 | 지정된 시간 이전의 트랜잭션을 삭제합니다. | |
getAllTokens |
GetAllTokens |
관리 | 모든 토큰 자산을 반환합니다. | |
getTokenById |
GetTokenById |
관리자/토큰 소유자 | 토큰 반환 | |
getAllTokensByUser |
GetAllTokensByUser |
관리자/계정 소유자 | 지정된 사용자가 소유한 모든 토큰을 반환합니다. | |
ownerOf |
OwnerOf |
모든 사용자 | 지정된 토큰 소유자의 사용자 세부정보를 반환합니다. | |
URI |
URI |
모든 사용자 | 지정된 토큰의 URI를 반환합니다. | |
name |
Name |
모든 사용자 | 지정된 토큰의 이름을 반환합니다. | |
totalSupply |
TotalSupply |
관리 | 지정된 토큰에 대한 연동된 토큰 수를 반환합니다. | |
totalNetSupply |
TotalNetSupply |
관리 | 지정된 토큰에 대해 연동된 토큰 수에서 연소된 토큰 수를 뺀 값을 반환합니다. | |
getTokensByName |
getTokensByName |
관리 | 지정된 토큰 이름에 대한 모든 토큰 자산을 반환합니다. | |
getTokenDecimal |
getTokenDecimal |
관리 | 지정된 토큰의 소수 자릿수 반환 |