# Sei EVM

Source: https://developers.bitgo.com/docs/seievm

## Overview

Sei is the first parallelized EVM blockchain, built on a delegated proof-of-stake consensus mechanism. Sei v2 introduces optimistic parallel execution for both EVM and CosmWasm smart contracts, enabling up to 100 megagas per second of throughput with 400ms block times and instant finality. Every major Ethereum contract can be redeployed on Sei without code changes, and existing EVM tooling works out of the box through full Ethereum JSON-RPC API support.

## Explorer

<a href="https://seiscan.io/" target="_blank" rel="noreferrer">https://seiscan.io/</a>

## Wallets Types

BitGo enables holding seievm in the following wallet types:

|                  | Multisig Cold | Multisig Hot | MPC Cold | MPC Hot |
| ---------------- | ------------- | ------------ | -------- | ------- |
| **Custody**      | ❌            | ❌           | ✅       | ❌      |
| **Self-Custody** | ❌            | ❌           | ✅       | ✅      |

## Ticker Symbols

| Mainnet | Testnet  |
| ------- | -------- |
| SEIEVM  | TSEIEVM  |

## Faucet

You can use a faucet to obtain free testnet tseievm for development and testing purposes.

**Faucet:** https://docs.sei.io/learn/faucet

## Units

Sei EVM uses `1,000,000,000,000,000,000` (<code>10<sup>18</sup></code>) wei as its base unit, so not even a single Sei EVM can be stored numerically without exceeding the range of JavaScript numbers. Gas fees use gwei as the denomination.

- 1 seievm = <code>10<sup>18</sup></code> wei
- 1 wei = <code>10<sup>-18</sup></code> seievm
- 1 gwei = <code>10<sup>-9</sup></code> seievm

For that reason, only string balance properties are available, which are `balanceString`, `confirmedBalanceString`, and
`spendableBalanceString`.

## Tokens

Sei EVM supports the ERC20 token standard. ERC20 tokens on Sei EVM are available as BitGo supported assets.

## Fees

Sei EVM supports EIP-1559 transaction pricing. Each transaction includes a base fee that fluctuates based on network demand — unlike Ethereum, Sei does not burn base fees; instead, validators receive them. For legacy (non-EIP-1559) transactions, a base fee of 10 gwei is required. Due to Sei's parallelized execution and high throughput, gas fees are significantly lower than those on Ethereum mainnet.

## Create Wallet

```javascript
bitgo
  .coin('tseievm')
  .wallets()
  .generateWallet({
    label: 'My Test Wallet',
    passphrase: 'secretpassphrase1a5df8380e0e30',
    enterprise: '5612c2beeecf83610b621b90964448cd',
    walletVersion: 4,
  })
  .then(function (wallet) {
    // print the new wallet
    console.dir(wallet);
  });
```
```shell
export BITGO_EXPRESS_HOST="<YOUR_LOCALHOST>"
export COIN="tseievm"
export ACCESS_TOKEN=<YOUR_ACCESS_TOKEN>
export LABEL="<DESIRED_WALLET_NAME>"
export PASSPHRASE="<YOUR_BITGO_LOGIN_PASSPHRASE>"
export ENTERPRISE_ID="<YOUR_ENTERPRISE_ID>"

curl -X POST \
 http://$BITGO_EXPRESS_HOST/api/v2/$COIN/wallet/generate \
 -H 'Content-Type: application/json' \
 -H "Authorization: Bearer $ACCESS_TOKEN" \
  -d '{
    "label": "'"$LABEL"'",
    "passphrase": "'"$PASSPHRASE"'",
    "enterprise": "'"$ENTERPRISE_ID"'",
    "walletVersion": 4
}'
```

## Create Address

```javascript
bitgo
  .coin('tseievm')
  .wallets()
  .getWallet({ id: '585c51a5df8380e0e3082e46' })
  .then(function (wallet) {
    return wallet.createAddress();
  })
  .then(function (newAddress) {
    // print new address details
    console.dir(newAddress);
  });
```
```shell
export WALLET="585c51a5df8380e0e3082e46"
export ACCESS_TOKEN=<YOUR_ACCESS_TOKEN>

curl -X POST \
-H "Authorization: Bearer $ACCESS_TOKEN" \
https://app.bitgo-test.com/api/v2/tseievm/wallet/$WALLET/address
```

## Consolidate Balance

Sei EVM supports Multisignature smart-contract wallets which utilize forwarder smart contracts to enable multiple receive addresses. The forwarder smart contract automatically consolidates native tokens received in your receive addresses to your base address. However, if you receive non-native tokens, such as ERC20 tokens, a different consolidation transaction will be initiated to the base address. Additionally, forwarders can only send assets to the base address of the wallet.

## Estimate Fee

```javascript
const BitGoJS = require('../../../src/index.js');
const bitgo = new BitGoJS.BitGo({ env: 'test' });
const accessToken = process.env.ACCESS_TOKEN;
const coin = 'tseievm';

async function getFeeEstimate() {
  try {
    await bitgo.authenticateWithAccessToken({ accessToken });
    const res = await bitgo.coin(coin).feeEstimate({ numBlocks: 2 });
    console.dir(res);
  } catch (err) {
    console.error('Error fetching fee estimate:', err);
  }
}

getFeeEstimate();
```
```shell
export COIN="tseievm"
export ACCESS_TOKEN=<YOUR_ACCESS_TOKEN>

curl -X GET \
 https://app.bitgo-test.com/api/v2/$COIN/tx/fee \
 -H 'Content-Type: application/json' \
 -H "Authorization: Bearer $ACCESS_TOKEN"
```

## Transact

```javascript
const tx = await fundedWallet.send({
  address: '<DESTINATION_ADDRESS>',
  amount: '<AMOUNT>',
  walletPassphrase: process.env.PASSWORD,
});
```
```shell
export BITGO_EXPRESS_HOST="<YOUR_LOCALHOST>"
export COIN="tseievm"
export WALLET_ID="<YOUR_WALLET_ID>"
export ACCESS_TOKEN=<YOUR_ACCESS_TOKEN>
export ADDRESS="<DESTINATION_ADDRESS>"
export AMOUNT="<AMOUNT_IN_BASE_UNITS>"
export WALLET_PASSPHRASE="<YOUR_WALLET_PASSPHRASE>"

curl -X POST \
 http://$BITGO_EXPRESS_HOST/api/v2/$COIN/wallet/$WALLET_ID/sendcoins \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -d '{
    "address": "'"$ADDRESS"'",
    "amount": "'"$AMOUNT"'",
    "walletPassphrase": "'"$WALLET_PASSPHRASE"'"
}'
```

## Stake

Sei EVM supports native staking. SEI token holders can stake their tokens to validators through a delegated proof-of-stake (DPoS) mechanism to earn staking rewards and participate in network consensus.
