Hedera enables the native creation of fungible and non-fungible tokens through its SDKs, eliminating the need for smart contracts. This approach leverages Hedera's core features like high TPS, security, and low latency for an optimized user experience. Additionally, the Hedera Token Service provides a cost-effective method for tokenization. Smart contracts on Hedera can also interact with this service via the Hedera Token Service System contract, offering functionalities like token creation, burning, and minting through the EVM.
Some of the key functions defined in the Hedera Token Service System Contract include:
Function Name | Consensus Node Release Version | HIP | Method Interface |
---|---|---|---|
allowance | 0.26 | HIP 514 | allowance(address token, address owner, address spender) |
approve | 0.26 | HIP 514 | approve(address token, address to, uint256 tokenId) |
approveNFT | 0.28 | HIP 514 | approveNFT(address token, address to, uint256 tokenId) |
associate | 0.38 | HIP 719 | associate() |
associateToken | 0.22 | HIP 206 | associateToken(address account, address token) |
associateTokens | 0.22 | HIP 206 | associateTokens(address account, address[] memory tokens) |
burnToken | 0.32 | HIP 206 | burnToken(address token, int64 amount, int64[] memory serialNumbers) |
createFungibleToken | 0.32 | HIP 358 | createFungibleToken(HederaToken memory token, int64 initialTotalSupply, int32 decimals) |
createFungibleTokenWithCustomFees | 0.30 | HIP 358 | createFungibleTokenWithCustomFees(HederaToken memory token, int64 initialTotalSupply, int32 decimals, FixedFee[] memory fixedFees, FractionalFee[] memory fractionalFees) |
createNonFungibleToken | 0.25 | HIP 358 | createNonFungibleToken(HederaToken memory token) |
createNonFungibleTokenWithCustomFees | 0.32 | HIP 358 | createNonFungibleTokenWithCustomFees(HederaToken memory token, FixedFee[] memory fixedFees, RoyaltyFee[] memory royaltyFees) |
cryptoTransfer | Unreleased | HIP 206 | cryptoTransfer(TransferList memory transferList, TokenTransferList[] memory tokenTransfers) external returns (int64 responseCode) |
deleteToken | 0.29 | HIP 514 | deleteToken(address token) |
dissociate | 0.38 | HIP 719 | dissociate() |
dissociateToken | 0.22 | HIP 206 | dissociateToken(address account, address token) |
dissociateTokens | 0.22 | HIP 206 | dissociateTokens(address account, address[] memory tokens) |
freezeToken | 0.29 | HIP 514 | freezeToken(address token, address account) |
getApproved | 0.26 | HIP 376 | getApproved(address token, uint256 tokenId) |
getFungibleTokenInfo | 0.29 | HIP 514 | getFungibleTokenInfo(address token) |
getNonFungibleTokenInfo | 0.29 | HIP 514 | getNonFungibleTokenInfo(address token, int64 serialNumber) |
getTokenCustomFees | 0.29 | HIP 514 | getTokenCustomFees(address token) |
getTokenDefaultFreezeStatus | 0.29 | HIP 514 | getTokenDefaultFreezeStatus(address token) |
getTokenDefaultKycStatus | 0.29 | HIP 514 | getTokenDefaultKycStatus(address token) |
getTokenExpiryInfo | 0.30 | HIP 514 | getTokenExpiryInfo(address token) |
getTokenInfo | 0.29 | HIP 514 | getTokenInfo(address token) |
getTokenKey | 0.30 | HIP 514 | getTokenKey(address token, uint256 keyType) |
getTokenType | 0.30 | HIP 514 | getTokenType(address token) |
grantTokenKyc | 0.29 | HIP 514 | grantTokenKyc(address token, address account) |
isAssociated | 0.53 | HIP 719 | isAssociated() |
isApprovedForAll | 0.26 | HIP 376 | isApprovedForAll(address token, address owner, address operator) |
isFrozen | 0.29 | HIP 514 | isFrozen(address token, address account) |
isKyc | 0.29 | HIP 514 | isKyc(address token, address account) |
isToken | 0.30 | HIP 514 | isToken(address token) |
mintToken | 0.32 | HIP 206 | mintToken(address token, int64 amount, bytes[] memory metadata) |
redirectForToken | 0.30 | HIP 218 | redirectForToken(address token, bytes memory data) |
revokeTokenKyc | 0.29 | HIP 514 | revokeTokenKyc(address token, address account) |
setApprovalForAll | 0.26 | HIP 376 | setApprovalForAll(address token, address operator, bool approved) |
transferFrom | 0.26 | HIP 376 | transferFrom(address token, address from, address to, uint256 tokenId) |
transferFromNFT | 0.26 | HIP 376 | transferFromNFT(address token, address from, address to, uint256 serialNumber) |
transferNFT | 0.22 | HIP 206 | transferNFT(address token, address sender, address recipient, int64 serialNum) |
transferNFTs | 0.22 | HIP 206 | transferNFTs(address token, address[] memory sender, address[] memory receiver, int64[] memory serialNumber) |
transferToken | 0.22 | HIP 206 | transferToken(address token, address sender, address recipient, int64 amount) |
transferTokens | 0.22 | HIP 206 | transferTokens(address token, address[] memory accountId, int64[] memory amount) |
unfreezeToken | 0.29 | HIP 514 | unfreezeToken(address token, address account) |
unpauseToken | 0.29 | HIP 514 | unpauseToken(address token) |
updateTokenExpiryInfo | 0.32 | HIP 514 | updateTokenExpiryInfo(address token, Expiry expiry) |
updateTokenInfo | 0.32 | HIP 514 | updateTokenInfo(address token, HederaToken hederaToken) |
updateTokenKeys | 0.30 | HIP 514 | updateTokenKeys(address token, Expiry expiry) |
wipeTokenAccount | 0.32 | HIP 514 | wipeTokenAccount(address token, address account, int64 amount) |
wipeTokenAccountNFT | 0.29 | HIP 514 | wipeTokenAccountNFT(address token, address account, int64[] serialNumbers) |
Given your HTS token address, you can invoke these functions:
Function Name | Consensus Node Release Version | HIP | Method Interface |
---|---|---|---|
allowance | 0.26 | HIP 376 | allowance(address owner, address spender) |
approve | 0.26 | HIP 376 | approve(address to, uint256 tokenId) |
getApproved | 0.26 | HIP 376 | getApproved(uint256 tokenId) |
isApprovedForAll | 0.26 | HIP 376 | isApprovedForAll(address token, address owner, address operator) |
setApprovalForAll | 0.26 | HIP 376 | setApprovalForAll(address operator, bool approved) |
transferFrom | 0.26 | HIP 376 | transferFrom(address from, address to, uint256 tokenId) |
{% content-ref url="../../../tutorials/smart-contracts/deploy-a-contract-using-the-hedera-token-service.md" %} deploy-a-contract-using-the-hedera-token-service.md {% endcontent-ref %}
{% @github-files/github-code-block url="https://github.com/hashgraph/hedera-smart-contracts/tree/main/contracts/system-contracts/hedera-token-service" %}