> ## Documentation Index
> Fetch the complete documentation index at: https://hedera-0c6e0218-docs-smart-contract-pectra-updates-v2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Hedera Token Service System Contract

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](/learn/release-notes/services#v0.26) | [HIP 514](https://hips.hedera.com/hip/hip-514) | `allowance(address token, address owner, address spender)`                                                                                                                  |
| `approve`                              | [0.26](/learn/release-notes/services#v0.26) | [HIP 514](https://hips.hedera.com/hip/hip-514) | `approve(address token, address to, uint256 tokenId)`                                                                                                                       |
| `approveNFT`                           | [0.28](/learn/release-notes/services#v0.28) | [HIP 514](https://hips.hedera.com/hip/hip-514) | `approveNFT(address token, address to, uint256 tokenId)`                                                                                                                    |
| `associate`                            | [0.38](/learn/release-notes/services#v0.38) | [HIP 719](https://hips.hedera.com/hip/hip-719) | `associate()`                                                                                                                                                               |
| `associateToken`                       | [0.22](/learn/release-notes/services#v0.22) | [HIP 206](https://hips.hedera.com/hip/hip-206) | `associateToken(address account, address token)`                                                                                                                            |
| `associateTokens`                      | [0.22](/learn/release-notes/services#v0.22) | [HIP 206](https://hips.hedera.com/hip/hip-206) | `associateTokens(address account, address[] memory tokens)`                                                                                                                 |
| `burnToken`                            | [0.32](/learn/release-notes/services#v0.32) | [HIP 206](https://hips.hedera.com/hip/hip-206) | `burnToken(address token, int64 amount, int64[] memory serialNumbers)`                                                                                                      |
| `createFungibleToken`                  | [0.32](/learn/release-notes/services#v0.32) | [HIP 358](https://hips.hedera.com/hip/hip-358) | `createFungibleToken(HederaToken memory token, int64 initialTotalSupply, int32 decimals)`                                                                                   |
| `createFungibleTokenWithCustomFees`    | [0.30](/learn/release-notes/services#v0.30) | [HIP 358](https://hips.hedera.com/hip/hip-358) | `createFungibleTokenWithCustomFees(HederaToken memory token, int64 initialTotalSupply, int32 decimals, FixedFee[] memory fixedFees, FractionalFee[] memory fractionalFees)` |
| `createNonFungibleToken`               | [0.25](/learn/release-notes/services#v0.25) | [HIP 358](https://hips.hedera.com/hip/hip-358) | `createNonFungibleToken(HederaToken memory token)`                                                                                                                          |
| `createNonFungibleTokenWithCustomFees` | [0.32](/learn/release-notes/services#v0.32) | [HIP 358](https://hips.hedera.com/hip/hip-358) | `createNonFungibleTokenWithCustomFees(HederaToken memory token, FixedFee[] memory fixedFees, RoyaltyFee[] memory royaltyFees)`                                              |
| `cryptoTransfer`                       |                  Unreleased                 | [HIP 206](https://hips.hedera.com/hip/hip-206) | `cryptoTransfer(TransferList memory transferList, TokenTransferList[] memory tokenTransfers) external returns (int64 responseCode)`                                         |
| `deleteToken`                          | [0.29](/learn/release-notes/services#v0.29) | [HIP 514](https://hips.hedera.com/hip/hip-514) | `deleteToken(address token)`                                                                                                                                                |
| `dissociate`                           | [0.38](/learn/release-notes/services#v0.38) | [HIP 719](https://hips.hedera.com/hip/hip-719) | `dissociate()`                                                                                                                                                              |
| `dissociateToken`                      | [0.22](/learn/release-notes/services#v0.22) | [HIP 206](https://hips.hedera.com/hip/hip-206) | `dissociateToken(address account, address token)`                                                                                                                           |
| `dissociateTokens`                     | [0.22](/learn/release-notes/services#v0.22) | [HIP 206](https://hips.hedera.com/hip/hip-206) | `dissociateTokens(address account, address[] memory tokens)`                                                                                                                |
| `freezeToken`                          | [0.29](/learn/release-notes/services#v0.29) | [HIP 514](https://hips.hedera.com/hip/hip-514) | `freezeToken(address token, address account)`                                                                                                                               |
| `getApproved`                          | [0.26](/learn/release-notes/services#v0.26) | [HIP 376](https://hips.hedera.com/hip/hip-376) | `getApproved(address token, uint256 tokenId)`                                                                                                                               |
| `getFungibleTokenInfo`                 | [0.29](/learn/release-notes/services#v0.29) | [HIP 514](https://hips.hedera.com/hip/hip-514) | `getFungibleTokenInfo(address token)`                                                                                                                                       |
| `getNonFungibleTokenInfo`              | [0.29](/learn/release-notes/services#v0.29) | [HIP 514](https://hips.hedera.com/hip/hip-514) | `getNonFungibleTokenInfo(address token, int64 serialNumber)`                                                                                                                |
| `getTokenCustomFees`                   | [0.29](/learn/release-notes/services#v0.29) | [HIP 514](https://hips.hedera.com/hip/hip-514) | `getTokenCustomFees(address token)`                                                                                                                                         |
| `getTokenDefaultFreezeStatus`          | [0.29](/learn/release-notes/services#v0.29) | [HIP 514](https://hips.hedera.com/hip/hip-514) | `getTokenDefaultFreezeStatus(address token)`                                                                                                                                |
| `getTokenDefaultKycStatus`             | [0.29](/learn/release-notes/services#v0.29) | [HIP 514](https://hips.hedera.com/hip/hip-514) | `getTokenDefaultKycStatus(address token)`                                                                                                                                   |
| `getTokenExpiryInfo`                   | [0.30](/learn/release-notes/services#v0.30) | [HIP 514](https://hips.hedera.com/hip/hip-514) | `getTokenExpiryInfo(address token)`                                                                                                                                         |
| `getTokenInfo`                         | [0.29](/learn/release-notes/services#v0.29) | [HIP 514](https://hips.hedera.com/hip/hip-514) | `getTokenInfo(address token)`                                                                                                                                               |
| `getTokenKey`                          | [0.30](/learn/release-notes/services#v0.30) | [HIP 514](https://hips.hedera.com/hip/hip-514) | `getTokenKey(address token, uint256 keyType)`                                                                                                                               |
| `getTokenType`                         | [0.30](/learn/release-notes/services#v0.30) | [HIP 514](https://hips.hedera.com/hip/hip-514) | `getTokenType(address token)`                                                                                                                                               |
| `grantTokenKyc`                        | [0.29](/learn/release-notes/services#v0.29) | [HIP 514](https://hips.hedera.com/hip/hip-514) | `grantTokenKyc(address token, address account)`                                                                                                                             |
| `isAssociated`                         | [0.53](/learn/release-notes/services#v0.53) | [HIP 719](https://hips.hedera.com/hip/hip-719) | `isAssociated()`                                                                                                                                                            |
| `isApprovedForAll`                     | [0.26](/learn/release-notes/services#v0.26) | [HIP 376](https://hips.hedera.com/hip/hip-376) | `isApprovedForAll(address token, address owner, address operator)`                                                                                                          |
| `isFrozen`                             | [0.29](/learn/release-notes/services#v0.29) | [HIP 514](https://hips.hedera.com/hip/hip-514) | `isFrozen(address token, address account)`                                                                                                                                  |
| `isKyc`                                | [0.29](/learn/release-notes/services#v0.29) | [HIP 514](https://hips.hedera.com/hip/hip-514) | `isKyc(address token, address account)`                                                                                                                                     |
| `isToken`                              | [0.30](/learn/release-notes/services#v0.30) | [HIP 514](https://hips.hedera.com/hip/hip-514) | `isToken(address token)`                                                                                                                                                    |
| `mintToken`                            | [0.32](/learn/release-notes/services#v0.32) | [HIP 206](https://hips.hedera.com/hip/hip-206) | `mintToken(address token, int64 amount, bytes[] memory metadata)`                                                                                                           |
| `redirectForToken`                     | [0.30](/learn/release-notes/services#v0.24) | [HIP 218](https://hips.hedera.com/hip/hip-218) | `redirectForToken(address token, bytes memory data)`                                                                                                                        |
| `revokeTokenKyc`                       | [0.29](/learn/release-notes/services#v0.29) | [HIP 514](https://hips.hedera.com/hip/hip-514) | `revokeTokenKyc(address token, address account)`                                                                                                                            |
| `setApprovalForAll`                    | [0.26](/learn/release-notes/services#v0.26) | [HIP 376](https://hips.hedera.com/hip/hip-376) | `setApprovalForAll(address token, address operator, bool approved)`                                                                                                         |
| `transferFrom`                         | [0.26](/learn/release-notes/services#v0.26) | [HIP 376](https://hips.hedera.com/hip/hip-376) | `transferFrom(address token, address from, address to, uint256 tokenId)`                                                                                                    |
| `transferFromNFT`                      | [0.26](/learn/release-notes/services#v0.26) | [HIP 376](https://hips.hedera.com/hip/hip-376) | `transferFromNFT(address token, address from, address to, uint256 serialNumber)`                                                                                            |
| `transferNFT`                          | [0.22](/learn/release-notes/services#v0.22) | [HIP 206](https://hips.hedera.com/hip/hip-206) | `transferNFT(address token, address sender, address recipient, int64 serialNum)`                                                                                            |
| `transferNFTs`                         | [0.22](/learn/release-notes/services#v0.22) | [HIP 206](https://hips.hedera.com/hip/hip-206) | `transferNFTs(address token, address[] memory sender, address[] memory receiver, int64[] memory serialNumber)`                                                              |
| `transferToken`                        | [0.22](/learn/release-notes/services#v0.22) | [HIP 206](https://hips.hedera.com/hip/hip-206) | `transferToken(address token, address sender, address recipient, int64 amount)`                                                                                             |
| `transferTokens`                       | [0.22](/learn/release-notes/services#v0.22) | [HIP 206](https://hips.hedera.com/hip/hip-206) | `transferTokens(address token, address[] memory accountId, int64[] memory amount)`                                                                                          |
| `unfreezeToken`                        | [0.29](/learn/release-notes/services#v0.29) | [HIP 514](https://hips.hedera.com/hip/hip-514) | `unfreezeToken(address token, address account)`                                                                                                                             |
| `unpauseToken`                         | [0.29](/learn/release-notes/services#v0.29) | [HIP 514](https://hips.hedera.com/hip/hip-514) | `unpauseToken(address token)`                                                                                                                                               |
| `updateTokenExpiryInfo`                | [0.32](/learn/release-notes/services#v0.32) | [HIP 514](https://hips.hedera.com/hip/hip-514) | `updateTokenExpiryInfo(address token, Expiry expiry)`                                                                                                                       |
| `updateTokenInfo`                      | [0.32](/learn/release-notes/services#v0.32) | [HIP 514](https://hips.hedera.com/hip/hip-514) | `updateTokenInfo(address token, HederaToken hederaToken)`                                                                                                                   |
| `updateTokenKeys`                      | [0.30](/learn/release-notes/services#v0.30) | [HIP 514](https://hips.hedera.com/hip/hip-514) | `updateTokenKeys(address token, Expiry expiry)`                                                                                                                             |
| `wipeTokenAccount`                     | [0.32](/learn/release-notes/services#v0.32) | [HIP 514](https://hips.hedera.com/hip/hip-514) | `wipeTokenAccount(address token, address account, int64 amount)`                                                                                                            |
| `wipeTokenAccountNFT`                  | [0.29](/learn/release-notes/services#v0.29) | [HIP 514](https://hips.hedera.com/hip/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](/learn/release-notes/services#v0.26) | [HIP 376](https://hips.hedera.com/hip/hip-376) | `allowance(address owner, address spender)`                        |
| `approve`           | [0.26](/learn/release-notes/services#v0.26) | [HIP 376](https://hips.hedera.com/hip/hip-376) | `approve(address to, uint256 tokenId)`                             |
| `getApproved`       | [0.26](/learn/release-notes/services#v0.26) | [HIP 376](https://hips.hedera.com/hip/hip-376) | `getApproved(uint256 tokenId)`                                     |
| `isApprovedForAll`  | [0.26](/learn/release-notes/services#v0.26) | [HIP 376](https://hips.hedera.com/hip/hip-376) | `isApprovedForAll(address token, address owner, address operator)` |
| `setApprovalForAll` | [0.26](/learn/release-notes/services#v0.26) | [HIP 376](https://hips.hedera.com/hip/hip-376) | `setApprovalForAll(address operator, bool approved)`               |
| `transferFrom`      | [0.26](/learn/release-notes/services#v0.26) | [HIP 376](https://hips.hedera.com/hip/hip-376) | `transferFrom(address from, address to, uint256 tokenId)`          |

#### Example

### Token-proxy bytecode under Pectra ([HIP-1340](https://hips.hedera.com/hip/hip-1340))

Every HTS token has an EVM address that behaves like a contract, so calling `IERC20(tokenAddress).transfer(...)` or `IERC721(tokenAddress).ownerOf(...)` routes the call into the HTS system contract via the facade mechanism originally defined by [HIP-218](https://hips.hedera.com/hip/hip-218) / [HIP-719](https://hips.hedera.com/hip/hip-719) / [HIP-755](https://hips.hedera.com/hip/hip-755) / [HIP-906](https://hips.hedera.com/hip/hip-906).

Pre-Pectra, the bytecode returned for a token-proxy address was a runtime-synthesized stub that performed a `DELEGATECALL` into the HTS system contract at `0x167`. Under Pectra, the token-proxy mechanism is re-implemented using the EIP-7702 Delegation Indicator format. The same applies to HSS schedule-proxy addresses, which point at the Hedera Schedule Service system contract.

| Query                                                     | Pre-Pectra return                      | Pectra return                                                                      |
| --------------------------------------------------------- | -------------------------------------- | ---------------------------------------------------------------------------------- |
| `eth_getCode(tokenAddress)`                               | Custom synthesized `DELEGATECALL` stub | `0xef0100 ‖ 0x0000000000000000000000000000000000000167` (HTS Delegation Indicator) |
| `ContractGetBytecodeQuery(tokenId)`                       | Custom synthesized `DELEGATECALL` stub | Same Delegation Indicator                                                          |
| `EXTCODEHASH(tokenAddress)` / `EXTCODESIZE(tokenAddress)` | Hash/size of the synthesized stub      | Hash/size of the 23-byte Delegation Indicator                                      |

**User-facing impact:** None. Facade calls (`IERC20`, `IHRC.associate()`, `IHRC.dissociate()`, etc.) continue to work exactly as before; the change is purely in how the proxy is *expressed* in bytecode.

**Tooling impact:** Block explorers, indexers, custom bytecode introspection, and any contract logic that compares HTS-token bytecode against a known fixed value must be updated. The new value is the constant 23-byte Delegation Indicator above, which is **identical across all HTS token addresses**.

> Direct EOA delegation to the HTS system contract (or any other system contract) from a regular account is forbidden, and those calls no-op. Only the network-owned token-proxy and schedule-proxy accounts are permitted to "delegate" to a system contract.

#### Additional References

<Card icon="github" title="GitHub" href="https://github.com/hiero-ledger/hiero-contracts/tree/main/contracts/token-service" horizontal />
