Overview

Neo X is an EVM-compatible sidechain of the Neo blockchain, powered by delegated Byzantine Fault Tolerance (dBFT) consensus. It provides MEV-resistant transaction ordering, fast finality, and full compatibility with Ethereum tooling and smart contracts. GAS is the native token used for transaction fees and network operations.

Explorer

https://neoxscan.ngd.network/

Wallets Types

BitGo enables holding gasevm in the following wallet types:

Multisig Cold Multisig Hot MPC Cold MPC Hot
Custody
Self-Custody

Ticker Symbols

Mainnet Testnet
GASEVM TGASEVM

Faucet

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

Faucet: https://neoxwish.ngd.network/

Units

Each Neo X GAS contains 1,000,000,000,000,000,000 (1018) wei, so not even a single GAS can be stored numerically without exceeding the range of JavaScript numbers. Gas fees use gwei as the denomination.

  • 1 GAS = 1018 wei
  • 1 wei = 10-18 GAS
  • 1 gwei = 10-9 GAS

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

Tokens

Neo X supports the ERC20 token standard. ERC20 tokens on Neo X are available as BitGo supported assets.

Fees

Neo X supports the EIP-1559 transaction pricing model. The base fee per gas is a constant 20 Gwei, providing predictable transaction costs. Each transaction includes this base fee plus an optional priority fee (tip) to incentivize block producers.

Create Wallet

bitgo
  .coin('tgasevm')
  .wallets()
  .generateWallet({
    label: 'My Test Wallet',
    passphrase: 'secretpassphrase1a5df8380e0e30',
    enterprise: '5612c2beeecf83610b621b90964448cd',
    walletVersion: 4,
  })
  .then(function (wallet) {
    // print the new wallet
    console.dir(wallet);
  });
export BITGO_EXPRESS_HOST="<YOUR_LOCALHOST>"
export COIN="tgasevm"
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

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

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

Consolidate Balance

Neo X wallets can use 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, BitGo initiates a different consolidation transaction to the base address. Additionally, forwarders can only send assets to the base address of the wallet.

Estimate Fee

const BitGoJS = require('../../../src/index.js');
const bitgo = new BitGoJS.BitGo({ env: 'test' });
const accessToken = '<YOUR_ACCESS_TOKEN>';
const coin = 'tgasevm';

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();
export COIN="tgasevm"
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

const tx = await fundedWallet.send({
    address: '<DESTINATION_ADDRESS>',
    amount: '<amount>',
    walletPassphrase: process.env.PASSWORD,
  });
export BITGO_EXPRESS_HOST="<YOUR_LOCALHOST>"
export COIN="tgasevm"
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

Neo X isn't a stakeable asset.