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.
Explorerhttps://optimistic.etherscan.io/
Wallets Types
BitGo enables holding opeth in the following wallet types:
Multisig Cold | Multisig Hot | MPC Cold | MPC Hot | |
---|---|---|---|---|
Custody | ✅ | ❌ | ❌ | ❌ |
Self-Custody | ✅ | ✅ | ❌ | ❌ |
Ticker Symbols
Mainnet | Testnet |
---|---|
OPETH | TOPETH |
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
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
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
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.
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.