Optimism

Overview

Optimism is a Layer 2 scaling solution built on top of the Ethereum blockchain, designed to address its scalability and high transaction fees. It utilizes a technology called Optimistic Rollup, which allows for faster and cheaper transactions by processing most operations off-chain while periodically settling them on the Ethereum mainnet.

Explorer

https://optimistic.etherscan.io/

Wallets Types

BitGo enables holding opeth in the following wallet types:

Multisig ColdMultisig HotMPC ColdMPC Hot
Custody
Self-Custody

Ticker Symbols

MainnetTestnet
OPETHTOPETH

Faucet

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

Faucet: https://app.optimism.io/faucet/

Units

Each Opeth is comprised of 1,000,000,000,000,000,000 (1018) wei, so not even a single Opeth can be stored numerically without exceeding the range of Javascript numbers. Gas fees are denoted in gwei.

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

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

Tokens

To view all BitGo supported tokens on the Optimism Mainnet, see the Optimism - ERC20 Tokens.

Fees

Optimism supports EIP-1599 gas estimation. Optimism accounts for L2 and L1 components of fees. eth_estimateGas RPC endpoint will give you a value which already considers both L1 and L2 gas. You can't set a 21K upper limit to a transaction since it changes over time with L1 prices changing over time.

The base fee is the minimum price per unit of gas that a transaction must pay to be included in a block. Transactions must specify a maximum base fee higher than the block base fee to be included. The actual fee charged is the block base fee, even if the transaction specifies a higher maximum base fee.

This priority fee is a price per unit of gas that is paid on top of the base fee. The OP Mainnet sequencer will prioritize transactions with a higher priority fee and execute them before any transactions with a lower priority fee. If transaction speed is important to your application, you may want to set a higher priority fee to ensure that your transaction is included more quickly.

Create Wallet

  • cURL
  • JavaScript
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 export BITGO_EXPRESS_HOST="<YOUR_LOCALHOST>" export COIN="topeth" 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:3080/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

  • cURL
  • JavaScript
1 2 3 4 5 6 export WALLET="585c51a5df8380e0e3082e46" export ACCESS_TOKEN="<YOUR_ACCESS_TOKEN>" curl -X POST \ -H "Authorization: Bearer $ACCESS_TOKEN" \ https://app.bitgo-test.com/api/v2/topeth/wallet/$WALLET/address

Consolidate Balance

Opeth 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 funds to the base address of the wallet.

Estimate Fee

  • cURL
  • JavaScript
1 2 3 4 5 6 7 export COIN="topeth" 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

BitGo's Optimism multisig contract currently only supports one sender and one recipient. That means that the sendMany call will only accept one recipient.

  • cURL
  • cURL (send to many)
  • JavaScript
  • JavaScript (send to many)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 export BITGO_EXPRESS_HOST="<YOUR_LOCALHOST>" export COIN="topeth" 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:3080/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

Opeth isn't a stakeable asset.

See Also