# Soneium

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

## Overview

Soneium is a next-generation blockchain ecosystem designed to invoke emotion and empower creativity. Sony Group Corporation, a global technology leader, and Startale, a Web3 innovator, founded Soneium. Soneium stands as a versatile, general-purpose blockchain ready to serve diverse needs across all verticals and support users globally. With Soneium, users can look forward to innovative applications that push the boundaries of blockchain technology, competitive features in the existing layer 2 landscape, and a unique blend of entertainment, gaming, finance, and other infinite possibilities.

## Explorer

<a href="https://soneium.blockscout.com/" target="_blank" rel="noreferrer">https://soneium.blockscout.com/</a>

## Wallets Types

BitGo enables holding Soneium in the following wallet types:

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

## Ticker Symbols

| Mainnet   | Testnet  |
| ----------| -------  |
| soneium   | tsoneium |

## Faucet

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

**Faucet:** <a href="https://www.alchemy.com/faucets/soneium-minato" target="_blank" rel="noreferrer">https://www.alchemy.com/faucets/soneium-minato</a>


## Units

Each soneium consists of `1,000,000,000,000,000,000` (<code>10<sup>18</sup></code>) wei, so not even a single soneium can be stored numerically without exceeding the range of JavaScript numbers. Gas fees use gwei.

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

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

## Tokens

The Soneium blockchain natively supports tokens.

## Create Wallet

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

## Create Address

```shell cURL
export WALLET="585c51a5df8380e0e3082e46"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"

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

```
```js JavaScript
bitgo
  .coin('tsoneium')
  .wallets()
  .getWallet({ id: '585c51a5df8380e0e3082e46' })
  .then(function (wallet) {
    return wallet.createAddress();
  })
  .then(function (newAddress) {
    // print new address details
    console.dir(newAddress);
  });
```

## Consolidate Balance

Consolidation Fee Source: Soneium Gas Tank

Soneium uses forwarders, so it does not support manual consolidation

## Estimate Fee

```shell cURL
export COIN="tsoneium"
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"

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

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();

```

## Transact

Withdrawal Fee Source: Wallet Base Address

```shell cURL
export BITGO_EXPRESS_HOST="<YOUR_LOCALHOST>"
export COIN="tsoneium"
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"'"
}'
```
```shell cURL (send to many)
export BITGO_EXPRESS_HOST="<YOUR_LOCALHOST>"
export COIN="tsoneium"
export WALLET_ID="<YOUR_WALLET_ID>"
export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>"
export ADDRESS_1="<DESTINATION_ADDRESS_1>"
export AMOUNT_1="<AMOUNT_1_IN_BASE_UNITS>"
export WALLET_PASSPHRASE="<YOUR_WALLET_PASSPHRASE>"

curl -X POST \
  http://$BITGO_EXPRESS_HOST/api/v2/$COIN/wallet/$WALLET_ID/sendmany \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -d '{
    "recipients": [
    {
      "address": "'"$ADDRESS_1"'",
      "amount": "'"$AMOUNT_1"'"
    }
  ],
    "walletPassphrase": "'"$WALLET_PASSPHRASE"'"
}'
```
```js JavaScript
const tx = await fundedWallet.send({
    address: `<DESTINATION_ADDRESS>`,
    amount: `<AMOUNT>`,
    walletPassphrase: process.env.PASSWORD as string,
  });
```
```js JavaScript (send to many)
let params = {
  recipients: [
    {
      amount: "<AMOUNT_1>",
      address: "<DESTINATION_ADDRESS_1>",
    }
  ],
  walletPassphrase: "<YOUR_WALLET_PASSPHRASE>",
};
wallet.sendMany(params).then(function (transaction) {
  // Print transaction details
  console.dir(transaction);
});
```

## Stake

Staking is out of scope for these chains as they don’t have native support for them.

## See Also
- [Create MPC Wallets](/docs/wallets-create-mpc-keys)
- [Trading Overview](/docs/trade-overview)
- [Withdraw from Wallet - Custody MPC](/docs/withdraw-wallet-type-custody-mpc)
- [Withdraw from Wallet - Self-Custody MPC (Manual)](/docs/withdraw-wallet-type-self-custody-mpc-manual)
- [Withdraw from Wallet - Self-Custody MPC (Simple)](/docs/withdraw-wallet-type-self-custody-mpc-simple)
