# ERC 20

Template: ERC20

Description: An ERC20 token contract keeps track of fungible tokens: any one token is exactly equal to any other token; no tokens have special rights or behavior associated with them. This makes ERC20 tokens useful for things like a medium of exchange currency, voting rights, staking, and more.

Inputs:

1. Platform Setting
   * Chain: Network to deploy contract
   * Custodial Wallet: Custodial wallet to deploy contract
2. Contract Setting
   * Contract Name: Name for the contract
   * Contract Symbol: Symbol for the contract
   * Premint: Create an initial amount of tokens for the deployer
3. Features
   * Mintable: Privileged accounts will be able to create more supply.
   * Burnable: Token holders will be able to destroy their tokens.
   * Pausable: Privileged accounts will be able to pause the functionality marked as whenNotPaused. Useful for emergency response.
   * Permit: Token holders will be able to allow third parties to transfer from their account without paying gas.
   * Votes: Keeps track of historical balances for voting in on-chain governance, with a way to delegate voting power to a trusted account.
   * Flash Minting: Built-in flash loans. Lend tokens without requiring collateral as long as they're returned in the same transaction.
   * Snapshots: Privileged accounts will be able to store snapshots of balances that can be retrieved later. For on-chain voting, the Votes option is preferable.
4. Access Control
   * Ownable: Simple mechanism with a single account authorized for all privileged actions.
   * Roles: Flexible mechanism with a separate role for each privileged action. A role can have many authorized accounts.
5. Upgradeability
   * Transport: Uses a more complex proxy with higher overhead, requires fewer changes in your contract. Can also be used with beacons.
   * UUPS: Uses a simpler proxy with less overhead, requires including extra code in your contract. Allows flexibility for authorizing upgrades.
6. Info
   * Contact: Contact information where people can report security issues. Only visible if contract metadata is verified.
   * License: Information about the license for the contract..


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.krypcore.com/dev-docs/product-overview/core-services/smart-contracts/deploy-from-templates/templates-explained/erc-20.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
