FAQ
Frequently asked questions

Boba---August-08---Hybrid-Compute-Slide2
Boba is built on the Optimistic Rollup developed by Optimism. We chose to build on Optimism because it is essentially a modified version of Ethereum, which makes it relatively easy to ensure EVM and Solidity compatibility, minimizing the efforts required to migrate smart contracts from L1 to L2.
Boba is not a side chain. Side chains are their own blockchain systems with entirely separate consensus mechanisms. Boba Network lives inside of Ethereum as a series of smart contracts that are capable of executing Ethereum transactions. Whereas side chains rely on their own consensus mechanisms for security, Boba, as a child chain, instead relies on the security of Ethereum itself.
Boba is mostly identical to Ethereum. You can create and interact with Solidity smart contracts (just like you would on Ethereum) using the same wallet software you're already familiar with.
Boba Network is just as safe as the Ethereum chain. Optimistic Rollups are safe as long as Ethereum itself is "live" (not actively censoring transactions). This security model is backed by a system of "fraud proofs," whereby users are paid to reveal bad transaction results published to the Boba Optimism based chain.
We developed a swap-based mechanism to deliver a smooth user experience for moving funds across chains, whether you are going from L1 to L2, L2 to L1, or between two L2s (as long as they are both EVM-compatible).
The users who choose to take advantage of this benefit will pay a small convenience fee that is shared among the liquidity providers of the pools backing the swaps. Acting as liquidity providers as described above is just the first of several staking opportunities we will roll out to the community. The higher level goal is to encourage broad-based participation in the operations and governance of Boba. As the only tokenized EVM-compatible L2, we are in a unique position to use our token responsibly for the long-term sustainability of the network.
While the high gas fees of Ethereum itself act as a pretty strong incentive for developers to move to layer 2s in general. As for Boba specifically, our pitch to them is: this is not just about scaling Ethereum. Once you’re on Boba Network, we’re also creating this amazing future for you. You’ll be able to tap into more advanced compute capabilities that are not available to you today. We also have plans to create an ecosystem fund to incentivize some of the early-stage projects who are just starting out but doing something really interesting. It’s going to take some time to put something like that together. That’s in our plans.
Many wallets now allow applications to trigger a popup to switch between networks. If your wallet supports this feature then you will be automatically prompted to switch networks when an application wants to utilize a Boba Ethereum network. You can use the bridges to add the network to your wallet right here:
If your wallet does not support this feature, you will have to connect manually. The exact process for connecting your wallet to a Boba Ethereum network depends on the specific wallet software you're using.
To move assets into or out of an Optimistic Ethereum network you can use the Boba Gateway. We have detailed instructions in our user documentation. If you are a developer, there are two methods, the classical bridge and the fast bridge more information.
No, withdrawals currently cannot be cancelled once submitted.
Only if the centralized exchange supports Boba Network (at writing none of them do). Otherwise you have to bridge your assets into a network they do support, such as L1.
./boba_documentation/developer/xdomain-tx-status.md
Yes, however you will have to deploy your own version.
The token decimals on Boba L2 are the same as on Ethereum L1. So if the token has 6 decimals on L1, it will have 6 decimals on L2.
https://blockexplorer.boba.network/tokens/0x66a2A913e447d6b4BF33EFbec43aAeF87890FBbc/token-transfers
You can also check the decimals by calling the token contracts:
const decimals = await this.ERC20_Contract.attach(tokenAddress).connect(this.L2Provider).decimals()
//typical values are 18 or, in some rare but important cases, 6
In the current release of the Boba Network protocol, there may be rare cases in which the Sequencer submits a state root (transaction result) which is invalid and therefore could be challenged. As a result, we have not yet deployed the Bond Manager contract which compensates Verifier nodes for gas spent when submitting state root challenges. Additionally, our upgrade keys have the ability to directly remove state roots without going through an uncompensated state root challenge.
A Sequencer node is a special node in an Optimistic Ethereum network that can order transactions on short timescales (on the order of minutes). This opens up the door to very fast transaction confirmation times with strong guarantees about finality. Eventually, the operator of the Sequencer node on a network will be determined by some governing mechanism. For now, Boba Network operates the only such node.
The Gas Price on L2 changes every 30 seconds with some smoothing to reduce sharp discontinuities in the price from one moment to the next. The maximum percentage change from one value to another is capped to not more than 5% in the gas price oracle. For example, if the current
gasPrice
is 10 Gwei then the next gasPrice
will be between 9.5 and 10.5 Gwei. Like on mainchain, the current gas price can be obtained via .getGasPrice()
and is typically around 10 Gwei.Yes! ERC-2470 is deployed to
0xce0042B868300000d44A59004Da54A005ffdcf9f
on the Boba L2. The address on the Boba L2 is the same as on Ethereum mainnet.There are 4 different mechanisms for following the status of a transaction.
- 1.The Boba Blockexplorer (for L2) and Etherscan (for L1)
- 2.Running a typescript
watcher
- 3.Using the Boba
watcher-api
- 4.Third-party analytics
Categories:
- Smart Contracts
- Testing and Testnets
- Transactions
- Hybrid Compute
Instead of deploying just one contract, you need to deploy several.
Nope. It's the same.
Yes!
Boba network is a permissionless network, therefore we cannot influence project decisions about the disclosure of their source code. However, we would advise End Users not to interact with smart contracts with code that is not verified in the Blockexplorer.
Unfortunately no, not at the moment.
See Q2 of Transactions
Boba Network does have a testnet, and it uses authentication through Twitter. Here’s a short walkthrough on how to get it.
First, you have to download MetaMask on your browser as a plug-in and set up a MetaMask wallet.
Don’t be surprised by the fox that will follow your cursor when you first launch the application. He’s friendly.

After you’ve set up your MetaMask account, you can connect to the Rinkeby network Testnet. After that, follow these steps:
- Notice your connection status being displayed in the upper-right corner, along with a button that will allow you to select a chain to connect to.
- Click on the Boba icon, and MetaMask will prompt you to connect to the Rinkeby Boba network.
- Click on the account you would like to use for your testnet, then hit Next.
- Allow permissions by hitting Connect.
- Observe that all of the network details such as the Network name, URL, and Chain ID have all been auto-filled.
- Hit Approve.

Now that you’re connected to the network, you can authenticate with Twitter:

- Hit the Tweet Now button to tweet your “Boba Bubble” token.
- Once your tweet is shared, copy the link leading to it.
- Paste the link to your tweet where you’re prompted to do so.
NOTE: You can only make one fountain call per Twitter account, per day.
Please be sure to attach logs of output of
docker-compose logs
and integration tests. That should solve the problem.We have the graph node on Ethereum Mainnet L2 and Rinkeby L2. The Rinkeby graph node is public. The Mainnet graph node is hosted by The Graph team.
Although you will get an error message that says the gas limit is 1,000,000,000,000,000 Wei, the Boba Network will throw an error anytime the gas price is equal to or more than three times the expected gas price for any given transaction.
When you make an Ethereum transaction, the user will be given an expected fee for what they can expect that transaction to cost. Say you’re about to transfer some Ethereum into your friend’s account. And you’re given an expected transaction fee of 3 USD. If, for whatever reason (because the market changes quickly), the gas prices sky-rocket, and now the transaction fee is 9 USD, you’re going to receive an error message.
The reason why is because Boba is looking out for you. Before that unexpectedly expensive payment goes through, Boba will throw an error and prevent the payment from going through to make sure you aren’t paying more than you should be. If the transaction fee is at least three times what the expected cost was (in our example, your transaction fee of 3 USD jumped to 9 USD), the transaction will fail before you’re faced with that kind of payment.
Try to increase higher solc optimizations. For more clarification, check out the Solidity documentation or break down contracts into smaller chunks.
Below is the js code needed to utilize the API:
const registerTx = await Boba_GasPriceOracle.useBobaAsFeeToken()
await registerTx.wait()
Boba Network fees can be paid in Boba token and in Eth and it's in our End Users’ own discretion to decide which to use.
Yes, exactly!
Optimization does not mean that there’s a limit set to the number of transactions this DEX can process.
You can also read up on using compilers and optimization options in Solidity’s documentation as well.
Actually, there are multiple bridges available. You can check it out on our ecosystem page, as can be seen below.

This question is actually already answered in our documentation. Be sure to read up and check it out!
First, check out the documentation, it should clear up any confusion you may have about our Hybrid Compute.
Hybrid Compute calls need to execute estimateGas first. This puts the API response in a short lived cache, out of which the result is fetched in transaction processing.
That's because the Hybrid Compute feature puts the Hybrid Compute response in a cache bucket. Your request including a Hybrid Compute request will put the response under a cache key that expires in 5 seconds:
const turingCacheExpire = 5 * time.Second
Not directly at the moment. We propose all authenticated calls that need API keys and similar go through a proxy/gateway that would act as an authentication layer for the caller - if that's a suitable design.
Last modified 5mo ago