상용화 이전: 2026-02-26

Solidity 스마트 계약 API

Oracle Blockchain Platform Hyperledger Besu용 Enterprise Edition은 Solidity 스마트 계약 작업에 사용할 수 있는 Solidity 방법을 제공합니다.

API는 ERC-20 표준 및 ERC-1155 표준을 기반으로 토큰을 지원합니다. ERC-20 및 ERC-1155 구현은 계정 스마트 계약 및 토큰 스마트 계약으로 구성됩니다. 계정 스마트 계약은 ID 및 액세스 제어 방법을 제공합니다. 토큰 스마트 계약은 토큰과 관련된 기능을 제공합니다.

ERC-20 계정 계약 방법

계정 관리 방법

createAccount
이 방법은 지정된 사용자의 계정을 만듭니다. 계정은 사용자의 토큰 잔액 및 보류 중인 잔액을 추적하며 언제든지 토큰을 보유할 모든 사용자에 대해 생성되어야 합니다. 이 메소드는 지정된 조직의 Token Admin 또는 Org Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • userId: string – 사용자의 사용자 이름 또는 전자메일 ID입니다. 사용자 ID 문자열은 비워 둘 수 없습니다.
  • orgId: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다. 조직 ID는 비워 둘 수 없습니다.
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
  • maxDailyAmount: int256 – 매일 트랜잭션에 사용할 수 있는 최대 토큰 양입니다. maxDailyAmount-1인 경우 제한이 없습니다.
  • maxDailyTransactions: int256 – 매일 완료할 수 있는 최대 트랜잭션 수입니다. maxDailyTransactions-1인 경우 제한이 없습니다.
deleteAccount
이 방법은 지정된 사용자의 계정을 삭제합니다. 토큰 잔액이 0인 경우에만 계정을 삭제할 수 있습니다. 이 메소드는 지정된 조직의 Token Admin 또는 Org Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
getAccountStatus
이 방법은 지정된 계정의 현재 상태를 가져옵니다. 이 메소드는 지정된 조직의 Token Admin, Token Auditor, Org Admin 또는 지정된 사용자에 의해서만 호출될 수 있습니다.
매개변수:
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
반환값:
  • enum AccountStatus 객체, 0, 1 또는 2에 대한 값입니다.
    enum AccountStatus {
    active,
    suspended,
    deleted
    }
getAccountByAddress
이 메소드는 지정된 사용자에 대한 계정 정보를 가져옵니다. 이 메소드는 지정된 조직의 Token Admin, Token Auditor, Org Admin 또는 지정된 사용자에 의해서만 호출될 수 있습니다.
매개변수:
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
반환 값 예제:
{
    "userId": "userA",
    "orgId": "orgA",
	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a",
    "dailyLimits": {
          "isMaxDailyTxnEnabled": true,
    	  "isMaxDailyAmtEnabled": true, 
		  "dailyAmount": 100,
    	  "dailyTransactions": 5,
		  "maxDailyAmount": 100000,
    	  "maxDailyTransactions": 50           
	},
	"status":0
}
getAllAccounts
이 방법은 지정된 범위에 속하는 모든 계정에 대한 계정 정보를 가져옵니다. 이 메소드는 Token Admin 또는 Token Auditor에 의해서만 호출될 수 있습니다.
매개변수:
  • offset: uint256 – 계정을 가져올 오프셋 인덱스입니다.
  • limit: uint256 – 검색할 항목 수입니다.
반환 값 예제:
Return (UserAccount[] memory items, uint256 total, uint256 nextOffset)
[{
    "userId": "userA",
    "orgId": "orgA",
	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a",
    "dailyLimits": {
          "isMaxDailyTxnEnabled": true,
    	  "isMaxDailyAmtEnabled": true, 
		  "dailyAmount": 100,
    	  "dailyTransactions": 5,
		  "maxDailyAmount": 100000,
    	  "maxDailyTransactions": 50           
	},
	"status":0
}]
total: 15
nextoffset: 6
activateAccount
이 방법은 사용자 계정을 활성화합니다. 이 메소드는 지정된 조직의 Token Admin 또는 Org Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
suspendAccount
이 방법은 사용자 계정을 일시 중지합니다. 계정을 삭제하려면 계정 잔액이 0이어야 합니다. 이 메소드는 지정된 조직의 Token Admin 또는 Org Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
setMaxDailyAmount
이 방법은 매일 트랜잭션에 사용할 수 있는 최대 토큰 수를 설정합니다. 이 메소드는 지정된 조직의 Token Admin 또는 Org Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • count: int256 – 매일 트랜잭션에 사용할 수 있는 최대 토큰 양입니다.
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
setMaxDailyTransactionCount
이 방법은 매일 완료할 수 있는 최대 트랜잭션 수를 설정합니다. 이 메소드는 지정된 조직의 Token Admin 또는 Org Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • value: int256 – 매일 완료할 수 있는 최대 트랜잭션 수입니다.
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.

관리자 관리 방법

addTokenAdmin
이 메소드는 사용자를 Token Admin로 추가합니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • adminDetails: JSON – 다음 예와 같이 Token Admin로 추가할 사용자에 대한 세부 정보가 포함된 객체입니다.
    {
        "userId": "tokenAdmin1",
        "orgId": "orgA",
    	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"    
    }
removeTokenAdmin
이 방법은 Token Admin인 사용자를 제거합니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
getAllTokenAdmins
이 메소드는 Token Admin인 모든 사용자 목록을 반환합니다. 이 메소드는 Token Admin 또는 Token Auditor를 통해서만 호출할 수 있습니다.
매개변수:
  • 없음
반환 값 예제:
[{
    "userId": "tokenadmin1",
    "orgId": "orgA",
	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"
},
{
    "userId": "tokenadmin2",
    "orgId": "orgB",
	"accountAddress": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"
}]
isTokenAdmin
이 메소드는 지정된 사용자가 Token Admin인지 여부를 확인합니다. 이 메소드는 Token Admin, Token Auditor, Org Admin 또는 Org Auditor를 통해서만 호출할 수 있습니다.
매개변수:
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
반환값:
  • 이 메소드는 지정된 사용자가 Token Admin인 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다.
addOrgAdmin
이 메소드는 사용자를 Org Admin로 추가합니다. 이 메소드는 지정된 조직의 Token Admin 또는 Org Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • adminDetails: JSON – 다음 예와 같이 Org Admin로 추가할 사용자에 대한 세부정보가 포함된 객체입니다.
    {
        "userId": "tokenAdmin1",
        "orgId": "orgA",
    	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"    
    }
removeOrgAdmin
이 방법은 Org Admin인 사용자를 제거합니다. 이 메소드는 지정된 조직의 Token Admin 또는 Org Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
getAllOrgAdmins
이 메소드는 Org Admin인 모든 사용자 목록을 반환합니다. 이 메소드는 Token Admin, Token Auditor, Org Admin 또는 Org Auditor를 통해서만 호출할 수 있습니다.
매개변수:
  • 없음
반환 값 예제:
[{
    "userId": "orgadmin1",
    "orgId": "orgA",
	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"
},
{
    "userId": "orgadmin2",
    "orgId": "orgB",
	"accountAddress": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"
}]
isOrgAdmin
이 메소드는 지정된 사용자가 Org Admin인지 여부를 확인합니다. 이 메소드는 Token Admin, Token Auditor, Org Admin 또는 Org Auditor를 통해서만 호출할 수 있습니다.
매개변수:
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
반환값:
  • 이 메소드는 지정된 사용자가 Org Admin인 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다.

감사자 관리 방법

addTokenAuditor
이 메소드는 사용자를 Token Auditor로 추가합니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • adminDetails: JSON – 다음 예와 같이 Token Auditor로 추가할 사용자에 대한 세부 정보가 포함된 객체입니다.
    {
        "userId": "tokenAuditor1",
        "orgId": "orgA",
    	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"    
    }
removeTokenAuditor
이 방법은 Token Auditor인 사용자를 제거합니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
getAllTokenAuditors
이 메소드는 Token Auditor인 모든 사용자 목록을 반환합니다. 이 메소드는 Token Admin 또는 Token Auditor를 통해서만 호출할 수 있습니다.
매개변수:
  • 없음
반환 값 예제:
[{
    "userId": "tokenAuditor1",
    "orgId": "orgA",
	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"
},
{
    "userId": "tokenAuditor2",
    "orgId": "orgB",
	"accountAddress": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"
}]
isTokenAuditor
이 메소드는 지정된 사용자가 Token Auditor인지 여부를 확인합니다. 이 메소드는 모든 유저가 호출할 수 있습니다.
매개변수:
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
반환값:
  • 이 메소드는 지정된 사용자가 Token Auditor인 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다.
addOrgAuditor
이 메소드는 사용자를 Org Auditor로 추가합니다. 이 메소드는 지정된 조직의 Token Admin 또는 Org Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • adminDetails: JSON – 다음 예와 같이 Org Auditor로 추가할 사용자에 대한 세부정보가 포함된 객체입니다.
    {
        "userId": "tokenAuditor1",
        "orgId": "orgA",
    	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"    
    }
removeOrgAuditor
이 방법은 Org Auditor인 사용자를 제거합니다. 이 메소드는 지정된 조직의 Token Admin 또는 Org Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
getAllOrgAuditors
이 메소드는 Org Auditor인 모든 사용자 목록을 반환합니다. 이 메소드는 Token Admin, Token Auditor, Org Admin 또는 Org Auditor를 통해서만 호출할 수 있습니다.
매개변수:
  • 없음
반환 값 예제:
[{
    "userId": "orgAuditor1",
    "orgId": "orgA",
	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"
},
{
    "userId": "orgAuditor2",
    "orgId": "orgB",
	"accountAddress": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"
}]
isOrgAuditor
이 메소드는 지정된 사용자가 Org Auditor인지 여부를 확인합니다. 이 메소드는 모든 유저가 호출할 수 있습니다.
매개변수:
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
반환값:
  • 이 메소드는 지정된 사용자가 Org Auditor인 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다.

역할 관리 방법

addRole
이 메소드는 지정된 사용자에게 롤을 추가합니다. 이 메소드는 지정된 조직의 Token Admin 또는 Org Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
  • role: string – 지정된 사용자에 추가할 역할의 이름입니다. 예를 들어, minter, burner 또는 notary입니다.
removeRole
이 방법은 지정된 사용자로부터 역할을 제거합니다. 이 메소드는 지정된 조직의 Token Admin 또는 Org Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
  • role: string – 지정된 사용자로부터 제거할 역할의 이름입니다. 예를 들어, minter, burner 또는 notary입니다.
accountHasRole
이 메소드는 사용자에게 지정된 롤이 있는지 여부를 확인합니다. 이 메소드는 모든 유저가 호출할 수 있습니다.
매개변수:
  • role: string – 검색할 역할 이름(minter, burner 또는 notary)의 Keccak-256 해시입니다.
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
반환값:
  • 이 메소드는 사용자에게 지정된 롤이 있는 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다.

ERC-20 토큰 계약 방법

토큰 구성 관리 방법

__ERC20Token_init
이 메소드는 토큰 계약이 배포될 때 호출됩니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • name: string – 토큰의 이름입니다.
  • symbol: string – 토큰의 기호입니다.
  • accountContract: address – 계정 계약의 주소입니다.
initializeERC20Token
이 방법은 ERC-20 토큰을 초기화합니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • token: JSON – 다음 예와 같이 토큰을 정의하는 객체입니다.
    {
        "tokenId": "WCBDC-100",
        "tokenName": "wholesale cbdc",
        "tokenDesc": "this is wcbdc contract",
        "tokenStandard": "ttf+",
        "tokenType": "fungible",
        "tokenUnit": "fractional",
        "behaviors": ["mintable", "burnable", "transferable", "roles", "holdable", "pausable"],
        "decimals": 2,
        "mintable": { "maxMintQuantity": 1000000, "mintApprovalRequired": false },
        "burnable": { "burnApprovalRequired": false }
    }
getToken
이 메소드는 토큰에 대한 세부정보를 가져옵니다. 이 메소드는 Token Admin, Token Auditor, Org Admin 또는 Org Auditor를 통해서만 호출할 수 있습니다.
매개변수:
  • 없음
반환 값 예제:
{
    "tokenId": "WCBDC-100",
    "tokenName": "wholesale cbdc",
    "tokenDesc": "this is wcbdc contract",
    "tokenStandard": "ttf+",
    "tokenType": "fungible",
    "tokenUnit": "fractional",
    "behaviors": ["mintable", "burnable", "transferable", "roles", "holdable", "pausable"],
    "decimals": 2,
    "mintable": { "maxMintQuantity": 1000000, "mintApprovalRequired": false },
    "burnable": { "burnApprovalRequired": false }
}
decimals
이 메소드는 토큰에 대한 십진수 값을 가져옵니다. 이 메소드는 Token Admin, Token Auditor, Org Admin 또는 Org Auditor를 통해서만 호출할 수 있습니다.
매개변수:
  • 없음
반환 값
  • 소수점 자릿수의 uint8 값입니다.
__ERC20Token_init
이 메소드는 토큰 계약이 배포될 때 호출됩니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • name: string – 토큰의 이름입니다.
  • symbol: string – 토큰의 기호입니다.
  • accountContract: address – 계정 계약의 주소입니다.
initializeERC20Token
이 방법은 ERC-20 토큰을 초기화합니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • token: JSON – 다음 예와 같이 토큰을 정의하는 객체입니다.
    {
        "tokenId": "WCBDC-100",
        "tokenName": "wholesale cbdc",
        "tokenDesc": "this is wcbdc contract",
        "tokenStandard": "ttf+",
        "tokenType": "fungible",
        "tokenUnit": "fractional",
        "behaviors": ["mintable", "burnable", "transferable", "roles", "holdable", "pausable"],
        "decimals": 2,
        "mintable": { "maxMintQuantity": 1000000, "mintApprovalRequired": false },
        "burnable": { "burnApprovalRequired": false }
    }
getToken
이 메소드는 토큰에 대한 세부정보를 가져옵니다. 이 메소드는 Token Admin, Token Auditor, Org Admin 또는 Org Auditor를 통해서만 호출할 수 있습니다.
매개변수:
  • 없음
반환 값 예제:
{
    "tokenId": "WCBDC-100",
    "tokenName": "wholesale cbdc",
    "tokenDesc": "this is wcbdc contract",
    "tokenStandard": "ttf+",
    "tokenType": "fungible",
    "tokenUnit": "fractional",
    "behaviors": ["mintable", "burnable", "transferable", "roles", "holdable", "pausable"],
    "decimals": 2,
    "mintable": { "maxMintQuantity": 1000000, "mintApprovalRequired": false },
    "burnable": { "burnApprovalRequired": false }
}
cap
이 메소드는 최대 토큰 공급(cap)을 가져옵니다. 이 메소드는 Token Admin, Token Auditor, Org Admin 또는 Org Auditor를 통해서만 호출할 수 있습니다.
매개변수:
  • 없음
반환 값
  • 토큰 공급 상한값의 uint256 값입니다.
balanceOf
이 메소드는 지정된 사용자에 대한 토큰 잔액을 가져옵니다. 이 메소드는 Token Admin, Token Auditor, Org Admin, Org Auditor 또는 지정된 사용자에 의해서만 호출될 수 있습니다.
매개변수:
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
반환 값
  • 토큰 잔액의 uint256 값입니다.
토큰 동작 관리 - 실행 가능한 동작
mint
이 방법은 (민트) 토큰을 만듭니다. 이 메소드는 minter 롤을 가진 모든 사용자가 호출할 수 있습니다.
매개변수:
  • to: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
  • value: uint256 – 민트 토큰의 수량입니다.
batchMint
이 방법은 한 번에 두 명 이상의 사용자에 대한 토큰(민트)을 만듭니다. 이 메소드는 minter 롤을 가진 모든 사용자가 호출할 수 있습니다.
매개변수:
  • toList: address[] – 사용자의 전자 지갑 주소 목록입니다. 주소는 0일 수 없습니다.
  • amounts: uint256[] – 민트에 대한 토큰의 수량 목록입니다.
requestMint
이 메소드는 광부가 지정된 양의 토큰을 만들기 위해 공증인에게 요청을 보내기 위해 호출할 수 있습니다.
매개변수:
  • notary: address – 공증인의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
  • amount: uint256 – 민트 토큰의 수량입니다.
  • expiration: uint256 – epoch 형식의 요청 만료 시간입니다.
  • opId: string – 요청의 작업 ID입니다.
  • info: InfoDetails – 요청의 범주(category) 및 설명(description)을 지정하는 객체입니다.
approveMint
이 메소드는 minting 요청을 승인하기 위해 공증인이 호출할 수 있습니다.
매개변수:
  • opId: string – 요청의 작업 ID입니다.
rejectMint
이 메서드는 minting 요청을 거부하는 공증인이 호출할 수 있습니다.
매개변수:
  • opId: string – 요청의 작업 ID입니다.

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

burn
이 방법은 토큰을 비활성화합니다(번). 이 메소드는 버너 롤을 가진 모든 사용자가 호출할 수 있습니다.
매개변수:
  • account: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
  • value: uint256 – 레코딩할 토큰 수.
batchBurn
이 방법은 한 번에 두 명 이상의 사용자에 대한 토큰을 구울 수 있습니다. 이 메소드는 버너 롤을 가진 모든 사용자가 호출할 수 있습니다.
매개변수:
  • toList: address[] – 사용자의 전자 지갑 주소 목록입니다. 주소는 0일 수 없습니다.
  • amounts: uint256[] – 레코딩할 토큰의 수량 목록입니다.
requestBurn
이 메서드는 버너에 의해 호출되어 지정된 양의 토큰을 구울 요청을 공증인에게 보낼 수 있습니다.
매개변수:
  • notary: address – 공증인의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
  • amount: uint256 – 레코딩할 토큰 수.
  • expiration: uint256 – epoch 형식의 요청 만료 시간입니다.
  • opId: string – 요청의 작업 ID입니다.
  • info: InfoDetails – 요청의 범주(category) 및 설명(description)을 지정하는 객체입니다.
approveBurn
이 메서드는 공증인이 연소 요청을 승인하기 위해 호출할 수 있습니다.
매개변수:
  • opId: string – 요청의 작업 ID입니다.
rejectBurn
이 메서드는 불타는 요청을 거부하기 위해 공증인이 호출 할 수 있습니다.
매개변수:
  • opId: string – 요청의 작업 ID입니다.

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

transfer
이 방법은 지정된 사용자에게 토큰을 전송합니다. 이 메소드는 토큰이 있는 모든 사용자가 호출할 수 있습니다.
매개변수:
  • to: address – 수신기의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
  • value: uint256 – 전송할 토큰 수량입니다.
batchTransfer
이 방법은 지정된 사용자 목록으로 토큰을 전송합니다. 이 메소드는 토큰이 있는 모든 사용자가 호출할 수 있습니다.
매개변수:
  • toList: address[] – 수신기의 전자 지갑 주소 목록입니다. 주소는 0일 수 없습니다.
  • amounts: uint256[] – 전송할 토큰의 수량 목록입니다.

토큰 동작 관리 - 위임 가능 동작

allowance
이 메소드는 토큰 지출을 지정된 사용자에게 위임합니다. 이 메소드는 토큰이 있는 모든 사용자가 호출할 수 있습니다.
매개변수:
  • owner: address – 토큰 지출을 위임하는 소유자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
  • spender: address – 토큰 스펜더의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
반환 값
  • 지출을 위해 위임된 토큰의 uint256 금액입니다.
approve
이 방법은 지정된 위임된 지출에 대한 토큰의 양을 승인합니다. 이 메소드는 토큰이 있는 모든 사용자가 호출할 수 있습니다.
매개변수:
  • spender: address – 토큰 스펜더의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
  • value: uint256 – 지출이 허용된 토큰의 수량입니다.
transferFrom
위임된 지출자는 이 방법을 사용하여 토큰을 전송합니다.
매개변수:
  • from: address – 발신자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
  • to: address – 수신기의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
  • value: uint256 – 전송할 토큰 수량입니다.

토큰 동작 관리 - 일시 중지 가능한 동작

isPaused
이 방법은 계약이 일시 중지되었는지 여부를 확인합니다. 이 메소드는 Token Admin, Token Auditor, Org Admin 또는 Org Auditor를 통해서만 호출할 수 있습니다.
매개변수:
  • 없음
pause
이 방법은 계약을 일시 중지합니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • 없음
unpause
이 방법은 계약을 재개합니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • 없음

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

hold
이 메소드는 토큰 소유자를 대신하여 보류를 생성합니다. 이 메소드는 토큰이 있는 모든 사용자가 호출할 수 있습니다.
매개변수:
  • to: address – 수신기의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
  • notary: address – 공증인의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
  • amount: uint256 – 전송할 토큰 수량입니다.
  • expiration: uint256 – epoch 형식의 요청 만료 시간입니다.
  • opId: string – 요청의 작업 ID입니다.
  • holdType: string – 보류 유형입니다. 예: transfer.
  • info: InfoDetails – 요청의 범주(category) 및 설명(description)을 지정하는 객체입니다.
executeHold
이 방법은 보류 요청을 승인합니다. 이 메소드는 이전에 지정된 공증인만 호출할 수 있습니다.
매개변수:
  • amount: uint256 – 승인할 토큰 수량입니다.
  • opId: string – 요청의 작업 ID입니다.
releaseHold
이 메소드는 보류 요청을 거부합니다. 이 메소드는 이전에 지정된 공증인만 호출할 수 있습니다.
매개변수:
  • opId: string – 요청의 작업 ID입니다.
getOnHoldBalanceWithOperationId
이 방법은 지정된 공정 ID에 대한 보류 잔액을 반환합니다. 이 메소드는 지정된 조직의 Token Admin 또는 Token Auditor, Org Admin 또는 Org Auditor 또는 트랜잭션 참가자(발신자, 수신자, 공증)에 의해 호출될 수 있습니다.
매개변수:
  • opId: string – 요청의 작업 ID입니다.
반환 값
  • 보류 잔액의 uint256 금액입니다.
getAccountOnHoldBalance
이 방법은 지정된 계정에 대한 보류 잔액을 반환합니다. 이 메소드는 지정된 조직의 Token Admin 또는 Token Auditor, Org Admin 또는 Org Auditor 또는 트랜잭션 참가자(발신자, 수신자, 공증)에 의해 호출될 수 있습니다.
매개변수:
  • account: address – 계정의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
반환 값
  • 보류 잔액의 uint256 금액입니다.

ERC-1155 계정 계약 방법

계정 관리 방법

createAccount
이 방법은 지정된 사용자의 계정을 만듭니다. 계정은 사용자의 토큰 잔액을 추적하며 언제든지 토큰을 보유할 모든 사용자에 대해 생성되어야 합니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • userId: string – 사용자의 사용자 이름 또는 전자메일 ID입니다. 사용자 ID 문자열은 비워 둘 수 없습니다.
  • orgId: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다. 조직 ID는 비워 둘 수 없습니다.
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
deleteAccount
이 방법은 지정된 사용자의 계정을 삭제합니다. 토큰 잔액이 0인 경우에만 계정을 삭제할 수 있습니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
getAccountStatus
이 방법은 지정된 계정의 현재 상태를 가져옵니다. 이 메소드는 Token Admin 또는 지정된 사용자에 의해서만 호출될 수 있습니다.
매개변수:
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
반환값:
  • enum AccountStatus 객체, 0, 1 또는 2에 대한 값입니다.
    enum AccountStatus {
    active,
    suspended,
    deleted
    }
getAccountByAddress
이 메소드는 지정된 사용자에 대한 계정 정보를 가져옵니다. 이 메소드는 Token Admin 또는 지정된 사용자에 의해서만 호출될 수 있습니다.
매개변수:
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
반환 값 예제:
{
    "userId": "userA",
    "orgId": "orgA",
	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a",
	"status":0
}
getAllAccounts
이 방법은 지정된 범위에 속하는 모든 계정에 대한 계정 정보를 가져옵니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • offset: uint256 – 계정을 가져올 오프셋 인덱스입니다.
  • limit: uint256 – 검색할 항목 수입니다.
반환 값 예제:
Return (UserAccount[] memory items, uint256 total, uint256 nextOffset)
[{
    "userId": "userA",
    "orgId": "orgA",
	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a",
	"status":0
}]
total: 15
nextoffset: 6
activateAccount
이 방법은 사용자 계정을 활성화합니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
suspendAccount
이 방법은 사용자 계정을 일시 중지합니다. 계정을 삭제하려면 계정 잔액이 0이어야 합니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.

관리자 관리 방법

addTokenAdmin
이 메소드는 사용자를 Token Admin로 추가합니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • adminDetails: JSON – 다음 예와 같이 Token Admin로 추가할 사용자에 대한 세부 정보가 포함된 객체입니다.
    {
        "userId": "tokenAdmin1",
        "orgId": "orgA",
    	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"    
    }
removeTokenAdmin
이 방법은 Token Admin인 사용자를 제거합니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
getAllTokenAdmins
이 메소드는 Token Admin인 모든 사용자 목록을 반환합니다. 이 메소드는 Token Admin를 통해서만 호출할 수 있습니다.
매개변수:
  • 없음
반환 값 예제:
[{
    "userId": "tokenadmin1",
    "orgId": "orgA",
	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"
},
{
    "userId": "tokenadmin2",
    "orgId": "orgB",
	"accountAddress": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"
}]
isTokenAdmin
이 메소드는 지정된 사용자가 Token Admin인지 여부를 확인합니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
반환값:
  • 이 메소드는 지정된 사용자가 Token Admin인 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다.

역할 관리 방법

addRole
이 메소드는 지정된 사용자에게 롤을 추가합니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
  • role: string – 지정된 사용자에 추가할 역할의 이름입니다. 예를 들어, minter, burner 또는 notary입니다.
  • scopeId: uint256 – NFT(Non-Fungible Token) 클래스 ID 또는 대체 가능한 토큰 ID입니다.
removeRole
이 방법은 지정된 사용자로부터 역할을 제거합니다. 이 메소드는 지정된 조직의 Token Admin 또는 Org Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
  • role: string – 지정된 사용자로부터 제거할 역할의 이름입니다. 예를 들어, minter, burner 또는 notary입니다.
  • scopeId: uint256 – NFT(Non-Fungible Token) 클래스 ID 또는 대체 가능한 토큰 ID입니다.
accountHasRole
이 메소드는 사용자에게 지정된 롤이 있는지 여부를 확인합니다. 이 메소드는 모든 유저가 호출할 수 있습니다.
매개변수:
  • role: string – 검색할 역할 이름(minter, burner 또는 notary)의 Keccak-256 해시입니다.
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
  • scopeId: uint256 – NFT(Non-Fungible Token) 클래스 ID 또는 대체 가능한 토큰 ID입니다.
반환값:
  • 이 메소드는 사용자에게 지정된 롤이 있는 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다.
addTokenSysRole
이 메소드는 지정된 사용자에게 TOKEN_SYS_VAULT_ROLE 롤을 추가합니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
  • role: string – 지원되는 역할은 TOKEN_SYS_VAULT_ROLE뿐입니다.
반환값:
  • 이 메소드는 롤이 성공적으로 추가된 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다.
removeTokenSysRole
이 메소드는 지정된 사용자로부터 TOKEN_SYS_VAULT_ROLE 롤을 제거합니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • userAddress: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
  • role: string – 지원되는 역할은 TOKEN_SYS_VAULT_ROLE뿐입니다.
반환값:
  • 이 메소드는 롤이 성공적으로 제거된 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다.
transferTokenSysRole
이 메소드는 한 사용자에서 다른 사용자로 TOKEN_SYS_VAULT_ROLE 롤을 전송합니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • fromAddress: address – 발신자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
  • toAddress: address – 수신기의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
  • role: string – 지원되는 역할은 TOKEN_SYS_VAULT_ROLE뿐입니다.
반환값:
  • 이 메소드는 롤이 성공적으로 tramsferred된 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다.

ERC-1155 토큰 계약 방법

토큰 구성 관리 방법

__ERC1155Token_init
이 메소드는 토큰 계약이 배포될 때 호출됩니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • accountContract: address – 계정 계약의 주소입니다.
  • uri: string – 토큰 유형 URI입니다.
saveNFTClass
이 방법은 원장에 NFT 분류 정보를 저장합니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • classinfo: JSON – NFT 계정 클래스 정보 객체입니다. 다음 코드는 전체 NFT에 대한 예를 보여줍니다.
    {
        "nftClassId": (BigInt(1)),
        "tokenName": "ArtCollection2",
        "tokenDesc": "this is art collection contract",
        "tokenStandard": "erc1155",
        "tokenUnit": 0,
        "behaviors": ["mintable", "burnable", "transferable", "roles", "indivisible"],
        "divisible": { "decimals": 0 },
        "mintable": { "maxMintQuantity": 2 }
    }
    다음 코드는 소수 NFT의 예를 보여줍니다.
    {
      "nftClassId": (BigInt(0)),
      "tokenName": "ArtCollection",
      "tokenDesc": "this is art collection contract",
      "tokenStandard": "erc1155",
      "tokenUnit": 1,
      "behaviors": ["mintable", "burnable", "transferable", "roles", "divisible"],
      "divisible": { "decimals": 0 },
      "mintable": { "maxMintQuantity": 1 }
    }
createNonFungibleToken
이 메소드는 NFT를 민트합니다. 이 메소드는 minter 롤을 가진 사용자만 호출할 수 있습니다.
매개변수:
  • tokenId: uint256 – NFT 클래스 정보를 포함하는 NFT의 토큰 ID입니다. ID의 상위 128비트는 NFT 클래스 ID를 나타내고, 하위 128비트는 NFT의 고유 인덱스를 나타냅니다.
  • quantity: uint256 – 민트(생성)할 NFT 양입니다.
createFungibleToken
이 메소드는 토큰 계약이 배포될 때 호출됩니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • token – 다음 예와 같이 원장에 기록할 대체 가능한 토큰 정의입니다.
     "tokenId": BigInt(0),
     "tokenName": "wcbdc",
     "tokenDesc": "this is wcbdc token",
     "tokenStandard": "erc1155",
     "tokenType": 1,
     "tokenUnit": 1,
     "behaviors": ["mintable", "burnable", "transferable", "roles", "divisible"],
     "divisible": { "decimals": 2 },
     "quantity": 1,
     "mintable": { "maxMintQuantity": 1 }
getTokenById
이 메소드는 토큰에 대한 세부정보를 가져옵니다. 이 메소드는 Token Admin 또는 토큰 소유자만 호출할 수 있습니다.
매개변수:
  • token – 다음 예와 같이 대체 가능한 토큰 정의입니다.
     "tokenId": BigInt(0),
     "tokenName": "wcbdc",
     "tokenDesc": "this is wcbdc token",
     "tokenStandard": "erc1155",
     "tokenType": 1,
     "tokenUnit": 1,
     "behaviors": ["mintable", "burnable", "transferable", "roles", "divisible"],
     "divisible": { "decimals": 2 },
     "quantity": 1,
     "mintable": { "maxMintQuantity": 1 }
  • metaInfo: bytes – 토큰이 대체 가능한 경우 빈 값을 지정합니다. 토큰이 전체 NFT인 경우 다음 struct 객체의 인코딩된 버전을 지정합니다.
    struct ERC1155WholeNFT {
        bool isBurned;
        bool isLocked;
        uint256 creationDate;
        uint256 quantity;
        address createdBy;
        address owner;
    }
    토큰이 소수 NFT인 경우 다음 struct 객체의 인코딩된 버전을 지정합니다.
    struct ERC1155FractionalNFT {
        bool isBurned;
        bool isLocked;
        uint256 creationDate;
        uint256 quantity;
        address createdBy;
        Owners[] owners;
    }
geTokenDecimals
이 메소드는 토큰에 대한 십진수 값을 가져옵니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • id: uint256 – 토큰 ID입니다.
반환 값
  • 소수점 자릿수의 uint8 값입니다.
tokenIdOf
이 메소드는 토큰의 ID를 가져옵니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • classId: uint256 – NFT 클래스 ID입니다.
  • serialId: uint256 – NFT 클래스의 직렬 ID입니다.
반환 값
  • uint256 토큰 ID입니다.
balanceOf
이 메소드는 지정된 사용자에 대한 토큰 잔액을 가져옵니다. 이 메소드는 Token Admin 또는 토큰 소유자에 의해서만 호출될 수 있습니다.
매개변수:
  • account: address – 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
  • id: uint256 – 토큰 ID입니다.
반환 값
  • 토큰 잔액의 uint256 값입니다.
balanceOfBatch
이 메소드는 사용자 목록에 대한 토큰 잔액을 가져옵니다. 이 메소드는 Token Admin 또는 토큰 소유자에 의해서만 호출될 수 있습니다.
매개변수:
  • account: address[] – 사용자의 전자 지갑 주소 목록입니다.
  • id: uint256[] – 토큰 ID 목록입니다.
반환 값
  • 토큰 잔액의 uint256[] 목록입니다.
exists
이 메소드는 지정된 토큰이 존재하는지 여부를 확인합니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • id: uint256 – 토큰 ID입니다.
반환값:
  • 메소드는 지정된 토큰이 존재하는 경우 true를 반환하고, 그렇지 않은 경우 false를 반환합니다.
totalSupply
이 방법은 계약에 있는 모든 토큰의 총 공급을 가져옵니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • 없음
반환값:
  • 총 토큰 공급의 uint256[] 값입니다.
totalSupply
이 메소드는 계약에 지정된 토큰의 총 공급을 가져옵니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • id: uint256 – 토큰 ID입니다.
반환값:
  • 지정된 토큰의 총 공급에 대한 uint256[] 값입니다.
토큰 동작 관리 - 실행 가능한 동작
mintBatch
이 메소드는 일괄 처리 모드로 ERC-1155 토큰을 생성합니다. 토큰을 초기화해야 합니다. 이 메소드는 minter 롤을 가진 모든 사용자가 호출할 수 있습니다.
매개변수:
  • tokenIds: uint256[] – 민트에 대한 토큰 목록입니다.
  • quantity: uint256[] – 민트할 토큰 수량 목록입니다.
  • data: byte – 추가 데이터 바이트입니다.

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

burnBatch
이 방법은 일괄 처리 모드에서 ERC-1155 토큰을 삭제합니다. 토큰을 초기화해야 합니다. 이 메소드는 버너 롤을 가진 모든 사용자가 호출할 수 있습니다.
매개변수:
  • tokenIds: uint256[] – 레코딩할 토큰 목록입니다.
  • quantity: uint256[] – 레코딩할 토큰 수량 목록입니다.
  • data: byte – 추가 데이터 바이트입니다.
burnNFT
이 메소드는 실행 불가능한 토큰을 삭제합니다. 토큰을 초기화해야 합니다. 이 메소드는 버너 롤을 가진 모든 사용자가 호출할 수 있습니다.
매개변수:
  • tokenId: uint256 – 레코딩할 토큰의 ID입니다.

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

safeTransferFrom
이 방법은 발신자의 토큰을 수신자에게 전송합니다. 토큰을 보유하는 모든 사용자가 이 메소드를 호출할 수 있습니다.
매개변수:
  • from: address – 발신자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
  • to: address – 수신기의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
  • id: uint256 – 전송할 ERC-1155 토큰의 ID입니다.
  • value: uint256 – 전송할 토큰의 양입니다.
  • data: byte – 추가 데이터 바이트입니다.
safeBatchTransferFrom
이 방법은 발신자의 토큰을 수신자에게 전송합니다. 토큰을 보유하는 모든 사용자가 이 메소드를 호출할 수 있습니다.
매개변수:
  • from: address – 발신자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
  • to: address – 수신기의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
  • id: uint256 – 전송할 ERC-1155 토큰의 ID입니다.
  • value: uint256 – 전송할 토큰의 양입니다.
  • data: byte – 추가 데이터 바이트입니다.

토큰 동작 관리 - 위임 가능 동작

setApprovalForAll
이 메소드는 approved 매개변수를 기반으로 운영자가 호출자의 토큰을 전송할 수 있는 권한을 부여하거나 취소합니다. 토큰을 보유하는 모든 사용자가 이 메소드를 호출할 수 있습니다.
매개변수:
  • operator: address – 권한이 부여되거나 취소되는 연산자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
  • approved: bool – 연산자가 호출자의 토큰을 전송할 수 있는 권한이 있는지 여부를 나타내는 부울 플래그입니다.
isApprovedForAll
이 방법은 운영자가 지정된 계정에 대한 토큰을 이전하도록 승인되었는지 여부를 확인합니다. 토큰을 보유하는 모든 사용자가 이 메소드를 호출할 수 있습니다.
매개변수:
  • account: address – 운영자에게 토큰 전송을 위한 권한을 부여하거나 취소한 사용자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
  • operator: address – 권한이 부여되거나 취소된 연산자의 전자 지갑 주소입니다. 주소는 0일 수 없습니다.
반환값:
  • 운영자가 지정된 계정에 대한 토큰을 이전하도록 승인되었는지 여부를 나타내는 부울 값입니다.

토큰 동작 관리 - 일시 중지 가능한 동작

paused
이 방법은 계약이 일시 중지되었는지 여부를 확인합니다. 이 메소드는 모든 유저가 호출할 수 있습니다.
매개변수:
  • 없음
pause
이 방법은 계약을 일시 중지합니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • 없음
unpause
이 방법은 일시 중지된 계약을 재개합니다. 이 메소드는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • 없음

토큰 동작 관리 - 잠금 가능 동작

lockNFT
이 메소드는 사용할 수 없는 토큰을 잠급니다. 이 메소드는 TOKEN_SYS_VAULT_ROLE 롤을 가진 사용자만 호출할 수 있습니다.
매개변수:
  • tokenId: uint256 – 잠글 토큰의 ID입니다.
isNFTLocked
이 메소드는 수정할 수 없는 토큰이 잠겨 있는지 여부를 확인합니다. 이 메소드는 TOKEN_SYS_VAULT_ROLE 롤을 가진 사용자 또는 Token Admin에 의해서만 호출될 수 있습니다.
매개변수:
  • tokenId: uint256 – 확인할 토큰의 ID입니다.
반환값:
  • 토큰이 잠겨 있는지 여부를 나타내는 부울 값입니다.