# ERC20 Token

## Endpoint

> **Real Server :** [**https://api.lmtls.io/v1/chain/erc20**](https://api.lmtls.io/v1/chain/erc20)
>
> **Test Server :** [**https://test-api.lmtls.io/v1/chain/erc20**](https://test-api.lmtls.io/v1/chain/erc20)

### mint

Add token issuance. Only the token owner can do this.

#### Parameters

| Name            | Type       | Description                                                                                                                                                                                                       |
| --------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| contractAddress | String     | Contract address of token                                                                                                                                                                                         |
| sender          | String     | Sender Address (It's must be owner)                                                                                                                                                                               |
| amount          | BigDecimal | Mint amount of token.                                                                                                                                                                                             |
| tempKey         | String     | tempKey for "mint"                                                                                                                                                                                                |
| hashKey         | String     | hash(tempKey \| secretKey)                                                                                                                                                                                        |
| signature       | String     | sign( hash( contractAddress \| owner \| amount \| tempKey \| hashKey ) ) by sender's privateKey using signData API                                                                                                |
| gasPrice        | BigDecimal | gasPrice                                                                                                                                                                                                          |
| nonce           | BIgInteger | nonce value. If it is null, it will be filled in automatically. If acceleration is needed, use the nonce value generated when performing the transaction and use a higher gasPrice than the previous transaction. |

#### Return Value

| Name          | Type       | Description    |
| ------------- | ---------- | -------------- |
| transactionId | String     | Transaction Id |
| nonce         | BigInteger | nonce Value    |

{% hint style="info" %}
A transactionId is returned, but that doesn't mean it has been added to the Block yet. You should check that the status is 1 by using net\_getTransactionStatus.
{% endhint %}

#### Example

```json
{
    "jsonrpc": "2.0",
    "id": "00456",
    "result": {
        "resultCode": "200",
        "resultMessage": "Success",
        "resultData": {
            "transactionId": "0xf7d37be47ce8b563b07aa5e81e17e9722...",
            "nonce": 43
        }
    }
}
```

### burn

Burn the initial supply of token. Only the token owner can do this.

#### Parameters

| Name            | Type       | Description                                                                                                                                                                                                       |
| --------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| contractAddress | String     | Contract address of token                                                                                                                                                                                         |
| sender          | String     | Sender Address (It's must be owner)                                                                                                                                                                               |
| amount          | BigDecimal | Burn amount of token.                                                                                                                                                                                             |
| tempKey         | String     | tempKey for "burn"                                                                                                                                                                                                |
| hashKey         | String     | hash(tempKey \| secretKey)                                                                                                                                                                                        |
| signature       | String     | sign( hash( contractAddress \| owner \| amount \| tempKey \| hashKey ) ) by sender's privateKey using signData API                                                                                                |
| gasPrice        | BigDecimal | gasPrice                                                                                                                                                                                                          |
| nonce           | BigInteger | nonce value. If it is null, it will be filled in automatically. If acceleration is needed, use the nonce value generated when performing the transaction and use a higher gasPrice than the previous transaction. |

#### Return Value

| Name          | Type       | Description    |
| ------------- | ---------- | -------------- |
| transactionId | String     | Transaction Id |
| nonce         | BigInteger | nonce value    |

{% hint style="info" %}
A transactionId is returned, but that doesn't mean it has been added to the Block yet. You should check that the status is 1 by using net\_getTransactionStatus.
{% endhint %}

#### Example

```json
{
    "jsonrpc": "2.0",
    "id": "00456",
    "result": {
        "resultCode": "200",
        "resultMessage": "Success",
        "resultData": {
            "transactionId": "0xf7d37be47ce8b563b07aa5e81e17e9722bab2...",
            "nonce": 32
        }
    }
}
```

### getBalance

Return an address Token balance.

#### Parameters

| Name            | Type   | Description                |
| --------------- | ------ | -------------------------- |
| contractAddress | String | Contract address of token. |
| address         | String | Address                    |

#### Return Value

| Name    | Type       | Description               |
| ------- | ---------- | ------------------------- |
| balance | BigDecimal | Token balance of address. |

#### Example

```json
{
    "jsonrpc": "2.0",
    "id": "00456",
    "result": {
        "resultCode": "200",
        "resultMessage": "Success",
        "resultData": {
            "balance": "100.12"
        }
    }
}
```

### transfer

Transfer Token from from-address to to-address.

#### Parameters

| Name            | Type       | Description                                                                                                                                                                                                       |
| --------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| contractAddress | String     | Contract address of token                                                                                                                                                                                         |
| sender          | String     | Sender address                                                                                                                                                                                                    |
| toAddress       | String     | To address                                                                                                                                                                                                        |
| amount          | BigDecimal | Transfer amount.                                                                                                                                                                                                  |
| tempKey         | String     | tempKey for "transfer"                                                                                                                                                                                            |
| hashKey         | String     | hash(tempKey \| fromAddress' secretKey)                                                                                                                                                                           |
| signature       | String     | sign( hash( contractAddress \| sender \| toAddress \| amount \| tempKey \| hashKey ) ) by sender's privateKey using signData API                                                                                  |
| gasPrice        | BigDecimal | gasPrice                                                                                                                                                                                                          |
| nonce           | BigInteger | nonce value. If it is null, it will be filled in automatically. If acceleration is needed, use the nonce value generated when performing the transaction and use a higher gasPrice than the previous transaction. |

#### Return Value

| Name          | Type       | Description    |
| ------------- | ---------- | -------------- |
| transactionId | String     | Transaction Id |
| nonce         | BigInteger | nonce value    |

{% hint style="info" %}
A transactionId is returned, but that doesn't mean it has been added to the Block yet. You should check that the status is 1 by using net\_getTransactionStatus.
{% endhint %}

#### Example

```json
{
    "jsonrpc": "2.0",
    "id": "00456",
    "result": {
        "resultCode": "200",
        "resultMessage": "Success",
        "resultData": {
            "transactionId": "0xf7d37be47ce8b563b07aa5e81e17e972...",
            "nonce": 32
        }
    }
}
```

### transferFrom

Transfer Token from from-address to to-address by spender.

#### Parameters

| Name            | Type       | Description                                                                                                                                                                                                       |
| --------------- | ---------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| contractAddress | String     | Contract address of token                                                                                                                                                                                         |
| sender          | String     | Sender address (spender)                                                                                                                                                                                          |
| fromAddress     | String     | From address                                                                                                                                                                                                      |
| toAddress       | String     | To address                                                                                                                                                                                                        |
| amount          | BigDecimal | Transfer amount.                                                                                                                                                                                                  |
| tempKey         | String     | tempKey for "transfer"                                                                                                                                                                                            |
| hashKey         | String     | hash(tempKey \| fromAddress' secretKey)                                                                                                                                                                           |
| signature       | String     | sign( hash( contractAddress \| sender \| fromAddress \| toAddress \| amount \| tempKey \| hashKey ) ) by sender's privateKey using signData API                                                                   |
| gasPrice        | BigDecimal | gasPrice                                                                                                                                                                                                          |
| nonce           | BigInteger | nonce value. If it is null, it will be filled in automatically. If acceleration is needed, use the nonce value generated when performing the transaction and use a higher gasPrice than the previous transaction. |

#### Return Value

| Name          | Type       | Description    |
| ------------- | ---------- | -------------- |
| transactionId | String     | Transaction Id |
| nonce         | BigInteger | nonce value    |

{% hint style="info" %}
A transactionId is returned, but that doesn't mean it has been added to the Block yet. You should check that the status is 1 by using net\_getTransactionStatus.
{% endhint %}

#### Example

```json
{
    "jsonrpc": "2.0",
    "id": "00456",
    "result": {
        "resultCode": "200",
        "resultMessage": "Success",
        "resultData": {
            "transactionId": "0xf7d37be47ce8b563b07aa5e81e17e9722b...",
            "nonce": 32
        }
    }
}
```

### approve

Approve Token from owner-address to spender-address.

#### Parameters

| Name            | Type        | Description                                                                                                                                                                                                       |
| --------------- | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| contractAddress | String      | Contract address of token                                                                                                                                                                                         |
| sender          | String      | Sender address                                                                                                                                                                                                    |
| spender         | String      | Spender address                                                                                                                                                                                                   |
| amount          | BigDecimal  | Approve amount.                                                                                                                                                                                                   |
| tempKey         | String      | tempKey for "approve"                                                                                                                                                                                             |
| hashKey         | String      | hash(tempKey \| fromAddress' secretKey)                                                                                                                                                                           |
| signature       | String      | sign( hash ( contractAddress \| sender \| spender \| amount \| tempKey \| hashKey ) ) by sender's privateKey using signData API                                                                                   |
| gasPrice        | BigDecimal  | gasPrice                                                                                                                                                                                                          |
| nonce           | BingInteger | nonce value. If it is null, it will be filled in automatically. If acceleration is needed, use the nonce value generated when performing the transaction and use a higher gasPrice than the previous transaction. |

#### Return Value

| Name          | Type       | Description    |
| ------------- | ---------- | -------------- |
| transactionId | String     | Transaction Id |
| nonce         | BigInteger | nonce value    |

{% hint style="info" %}
A transactionId is returned, but that doesn't mean it has been added to the Block yet. You should check that the status is 1 by using net\_getTransactionStatus.
{% endhint %}

#### Example

```json
{
    "jsonrpc": "2.0",
    "id": "00456",
    "result": {
        "resultCode": "200",
        "resultMessage": "Success",
        "resultData": {
            "transactionId": "0xf7d37be47ce8b563b07aa5e81e17e9722bab2...",
            "nonce": 32
        }
    }
}
```

### getAllowance

Returns an allowed Token amount from owner address to to spender address.

#### Parameters

| Name            | Type   | Description                |
| --------------- | ------ | -------------------------- |
| contractAddress | String | Contract address of token. |
| address         | String | Allower address            |
| spender         | String | Spender address            |

#### Return Value

| Name   | Type       | Description           |
| ------ | ---------- | --------------------- |
| amount | BigDecimal | Allowed Token amount. |

#### Example

```json
{
    "jsonrpc": "2.0",
    "id": "00456",
    "result": {
        "resultCode": "200",
        "resultMessage": "Success",
        "resultData": {
            "amount": "100.12"
        }
    }
}
```
