# Trustless Bridge For ERC20 Tokens

## Background

### Vaulta and EVM

We use the **Vaulta** (<https://www.vaulta.com/>) blockchain network. The Vaulta blockchain is a next-generation Layer-1 built for speed, scale and finality. Your transfers, swaps, and app interactions happen almost instantly with low (or no) fees.

**Vaulta EVM** is a powerful feature of the Vaulta blockchain that brings the best of Ethereum's capabilities to the Vaulta ecosystem. It allows you to use popular Ethereum-based applications (dApps) on Vaulta, benefiting from faster speeds, lower costs, and a more eco-friendly environment.

### Exsat EVM

Vaulta EVM technology allow entities to run their own EVM layers on the Vaulta blockchain. Exsat runs it’s own EVM layer, the **Exsat EVM.**

#### Exsat EVM Mainnet

RPC: <https://evm.exsat.network/>

Block explorer: <https://scan.exsat.network/>

#### Exsat EVM Testnet

RPC: <https://evm-tst3.exsat.network/>

Block explorer: <https://scan-testnet.exsat.network/>

### Runtime Contract

The Vaulta EVM system is run in a way that each EVM transaction is actually part of Vaulta transactions. The EVM runtime contract will process Vaulta transactions invoking EVM transactions.

We will use ***evm\_runtime*** to represent the Vaulta account of the evm runtime contract.

### Reserved Address

Each Vaulta account has a mapped reserved EVM address. The rule is using the uint64 value of the Vaulta name as the last 8 bytes of the EVM address, and then pad the rest with 0xbb. E.g. the name “eosio.evm” is mapped to “0xbbbbbbbbbbbbbbbbbbbbbbbb5530ea015b900000”

## Trustless Bridge for ERC20

### Tokens originally issued in Vaulta side

Tokens native to Vaulta can be converted to EVM's ERC20 through the trustless bridge. The converted tokens meet the standard ERC20. When bridging from Vaulta to EVM, the tokens on the Vaulta side will be locked in the bridge contract (”erc2o.xsat” for Exsat), and the corresponding tokens will be minted on the EVM side. The reverse cross-chain will burn the EVM side tokens and release the locked vaulta side tokens.

The tokens on the EVM side have a standard ERC20 interface, and the following additional interfaces are available for bridge operation:

```solidity
function bridgeTransfer(address to, uint256 amount, string memory memo) external payable returns (bool);
function egressFee() external returns (uint256);
```

### Tokens originally issued in EVM side

For tokens native to the EVM side, since we cannot add bridge functions to the contracts of these tokens, we need to implement cross-chain by calling the interface of a separate portal contract. When crossing the chain from the EVM side to the Vaulta side, the token will be locked in the portal contract, and the corresponding token will be minted on the Vaulta side. When crossing the chain in the reverse direction, the Valta side token will be recovered and the EVM side token will be released. The portal contract also has a similar bridge interface:

```solidity
function bridgeTransfer(address to, uint256 amount, string memory memo) external payable returns (bool);
function egressFee() external returns (uint256);
function token() external returns (IERC20);
```

The extra function `token()` will return the linked ERC20 token address of the portal.

Note that as portal contract is not the token contract, `approve()` is required before hand.


---

# 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.exsat.network/developer-guides/trustless-bridge-for-erc20-tokens.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.
