# LRC20 Token

A LRC20 token must implement the interface `ILRC20` in ILRC20.sol. This is a template contract LRC20Token.template. Users just need to fill in `_name`, `_symbol`, `_decimals` and `_totalSupply` according to their own requirements:

```
  constructor() public {
    _name = {{TOKEN_NAME}};
    _symbol = {{TOKEN_SYMBOL}};
    _decimals = {{DECIMALS}};
    _totalSupply = {{TOTAL_SUPPLY}};
    _balances[msg.sender] = _totalSupply;

    emit Transfer(address(0), msg.sender, _totalSupply);
  }
```

Then users can use [Remix IDE](https://remix.ethereum.org/) and [Metamask](https://docs.mainnetloop.com/smart-chain/wallet/metamask.html) to compile and deploy the LRC20 contract to TC.

### Interact with Contract with [Web3](https://www.npmjs.com/package/web3) and NodeJS. <a href="#interact-with-contract-with-web3-and-nodejs" id="interact-with-contract-with-web3-and-nodejs"></a>

#### Connect to LOOP Chain's public RPC endpoint <a href="#connect-to-loop-chains-public-rpc-endpoint" id="connect-to-loop-chains-public-rpc-endpoint"></a>

```
const Web3 = require('web3');
// mainnet
const web3 = new Web3('https://api.mainnetloop.com');

// testnet
const web3 = new Web3('https://api.testnetloop.com');
```

#### Create a wallet <a href="#create-a-wallet" id="create-a-wallet"></a>

```
web3.eth.accounts.create([entropy]);
```

Output:

```
web3.eth.accounts.create();
{
  address: '0x926605D0729a968266f1BB299d8Df0471C4F5367',
  privateKey: '0x6b4618539d95f205f33e916e89404b301dde545c0c4acc181fd0c0b42708bad3',
  signTransaction: [Function: signTransaction],
  sign: [Function: sign],
  encrypt: [Function: encrypt]
}
```

#### Recover a wallet <a href="#recover-a-wallet" id="recover-a-wallet"></a>

```
const account = web3.eth.accounts.privateKeyToAccount("0xe500f5754d761d74c3eb6c2566f4c568b81379bf5ce9c1ecd475d40efe23c577")
```

#### Check balance <a href="#check-balance" id="check-balance"></a>

```
web3.eth.getBalance(holder).then(console.log);
```

Output:

The balance will be bumped by e18 for LRC.

```
6249621999900000000
```

#### Create transaction <a href="#create-transaction" id="create-transaction"></a>

**Parameters**

* Object - The transaction object to send:
* from - String|Number: The address for the sending account. Uses the web3.eth.defaultAccount property, if not specified. Or an address or index of a local wallet in web3.eth.accounts.wallet.
* to - String: (optional) The destination address of the message, left undefined for a contract-creation transaction.
* value - Number|String|BN|BigNumber: (optional) The value transferred for the transaction in wei, also the endowment if it’s a contract-creation transaction.
* gas - Number: (optional, default: To-Be-Determined) The amount of gas to use for the transaction (unused gas is refunded).
* gasPrice - Number|String|BN|BigNumber: (optional) The price of gas for this transaction in wei, defaults to web3.eth.gasPrice.
* data - String: (optional) Either a ABI byte string containing the data of the function call on a contract, or in the case of a contract-creation transaction the initialisation code.
* nonce - Number: (optional) Integer of a nonce. This allows to overwrite your own pending transactions that use the same nonce.

```
    // // Make a transaction using the promise
    web3.eth.sendTransaction({
        from: holder,
        to: '0x0B75fbeB0BC7CC0e9F9880f78a245046eCBDBB0D',
        value: '1000000000000000000',
        gas: 5000000,
        gasPrice: 18e9,
    }, function(err, transactionHash) {
      if (err) {
        console.log(err);
        } else {
        console.log(transactionHash);
       }
    });
```


---

# 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://loopnetwork.gitbook.io/home/whitepaper-2.0/lrc20-token.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.
