> For the complete documentation index, see [llms.txt](https://xircus-developer.gitbook.io/developer-hub/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://xircus-developer.gitbook.io/developer-hub/ton-contracts/minter/jetton-non-shard.md).

# Jetton Non-Shard

A new type of Jetton that follows some ERC-20 standard, account balances are stored in hash-map but with limitations

## Why Propose

* Add additional feature to request account balance in contracts
* Add additional feature to add spender for each account

## Best For

* Safe balance and spender request
* Implementing contracts doesn't have to identify the wallet address which causes an additional wallet discovery request to the minter to verify authenticity of the wallet for additional fees
* Managing only one contract for mint, transfer and burn
* Instantly determine balance of all accounts
* No need to get wallet address of each holder
* Jetton transactions are track in one contract

## Safe Balance & Spender Discovery

1. Contract sends op::get\_balance to Jetton
2. Jetton forwards op::jetton\_balance to Contract
3. Contract verifies Jetton as sender and process balance value

## Limitations

* Contract size grows due to balance hash-map
* Maximum hash-map balance holder (approx  4k)
* 1 approved spender per account

## Contract

### Operations

* transfer ->&#x20;
* mint ->&#x20;
* burn ->&#x20;
* approve ->&#x20;
* get\_balance -> operation to request the current balance of an account, forwards a balance\_of operation to the requestor
* jetton\_balance -> internal operation forwarded to requesting contract
* get\_spender -> requests spender address and balance of an account, contract as spender can send transfer operation to minter to move jettons
* jetton\_spender -> internal operation forwarded to requesting contract

### Methods

* get\_jetton\_data
* get\_balance(account)
* get\_spender(account)
* get\_accounts
