Bridges FAQs
-
Can I bridge tokens between Gnosis Chain and BSC using Omni Bridge
The BSC - Gnosis Chain bridge has been depreciated you can instead use a third party bridge like Jumper for example.
-
What is the best way to bridge it to another chain?
For larger amounts, you can use the xDAI bridge (from Gnosis Chain to Ethereum) : https://bridge.gnosischain.com/ For smaller amounts or if you want to bridge them to another chain (to a L2 or another chain), with very small gas fees using Jumper : https://jumper.exchange/
-
On AMB/Omni Bridge once the daily limit has been reached, how can I get my tokens?
Follow the manual execution tutorial https://docs.gnosischain.com/bridges/tutorials/using-amb once you have initiated the
executeSignature()
transaction, the token release transaction will be credited to your account automatically the next day. -
I’m trying to bridge but Omni Bridge says that the maximum amount was already transferred?
Some tokens have bridge limits, which can be a daily limit and or maximum or minimum per transaction, this is for example the case for GNO between Gnosis Chain and Ethereum, you can click the “Limits” button below the bridge box to check the current limits for a given token. These Daily Limits will be reset at 00:00 UTC.
-
How much time does it take to bridge using Omni Bridge ?
With the new zk light client verification, bridging assets takes about 20 minutes. You can check your bridge transaction on the bridge explorer : https://bridge-explorer.gnosischain.com/
-
Why do the tokens I just got on Gnosis Chain after bridging from Ethereum have a different contract address?
Often tokens have a different contract address because when they are bridged into Gnosis Chain, the contract address alters, becoming a proxy token of the bridged one. This process is fundamental to how the tokens are locked on the bridge.
-
I bridged some agEUR tokens using the Angle Bridge, now I have lz-agEUR in my wallet, what can I do?
The Angle Bridge has daily and hourly limits (they are visible on the bridge page). If the limits are reached when processing a bridge transaction, you won’t receive agEUR in your wallet on the destination chain but instead, you will receive lz-agEUR tokens in your wallet that can be used to redeem agEUR later, when the limits reset, you would then need to make a manual claim following this tutorial : https://docs.angle.money/overview/guides/bridge#how-to-get-back-ageur-from-lz-ageur
-
I’m trying to bridge agEUR from Gnosis Chain to another chain using the Angle Bridge but I’m getting an error “internal JSON-RPC error”
Be sure to have enough xDAI for gas and fees, to use the Angle Bridge you should have at least 1,5 xDAI in your wallet. More information in Angle Protocol docs : https://docs.angle.money/overview/guides/bridge
-
I’m having issues using Omni bridge to bridge assets held in a SAFE between Ethereum and Gnosis Chain, I get a “failure to connect” ERROR.
Rabby wallet ( https://rabby.io/ ) wallet is good workaround allowing to load SAFE into it and inject them in similarly to Metamask.
-
I bridge my WETH from Gnosis Chain to Ethereum, but I don't see my WETH balance increases on Ethereum.
When bridging WETH from Gnosis Chain, Omnibridge will automatically unwrap your WETH on Ethereum to ETH, so you will only accept ETH on Ethereum. The transaction calls WETHOmnibridgeHelper to withdraw ETH from WETH token contract, create a new contract to receive the ETH and eventually self destruct that contract and send the ETH to the user. Check out this transaction for more details.
-
How do I know if xDAI get minted to my account when I'm using xDAI bridge for bridging DAI from Ethereum?
Because xDAI is gas token(or native token) on Gnosis Chain, newly minted xDAI by xDAI bridge will not create a transaction. You may check your balance increment visually by looking for coin balance history section in blockscout: https://gnosis.blockscout.com/address/$YOUR_ADDRESS?tab=coin_balance_history or querying the balance programmatically using eth_getBalance api.
-
I want to bridge my AgEUR or EURe, what bridge should I use?
To bridge AgEUR : https://app.angle.money/bridges-agEUR
To bridge EURe: You will need have an account in Monerium app, click Send Money, select Cross-Chain and enter the amount you want to send, then click Send.. Double check the message is correct and sign the message.
Step by Step
-
How do I check if my message from AMB(or Omnibridge) has been executed?
For Omnibridge, you can visit https://bridge.gnosischain.com/bridge-explorer and enter the transaction hash or address you want to search for.
For AMB, you can check it by messageId.- Find the message Id from the transaction log: In the block explorer, check the
Logs
tab of your transaction receipt, and findmessageId
in eventUserRequestForAffirmation
(bridging from ETH) orUserRequestForSignature
(bridging from Gnosis Chain). The data type ofmessageId
isbytes32
. - On the destination chain's AMB, query the
messageCallStatus(bytes32 messageId)
by pasting themessageId
. If it returns true, it means the message has been executed. If false, it means the message has not been executed.
Foreign AMB (Ethereum): https://etherscan.io/address/0x4C36d2919e407f0Cc2Ee3c993ccF8ac26d9CE64e#readProxyContract#F18 Home AMB (Gnosis Chain): https://gnosisscan.io/address/0x75Df5AF045d91108662D8080fD1FEFAd6aA0bb59#readProxyContract#F23 - To find out the transaction of the message being executed, you can find the log which emit the event
AffirmationCompleted
(bridging from ETH), orRelayedMessage
(bridging from GC).
Here is an example script using viem.
- Find the message Id from the transaction log: In the block explorer, check the
Sample script
import { createPublicClient, http, parseAbiItem } from "viem";
import { gnosis, mainnet} from "viem/chains";
const main = async() => {
const gnoClient = createPublicClient({
chain: gnosis,
transport: http()
})
const ethClient = createPublicClient({
chain: mainnet,
transport: http()
})
const homeAMB = "0x75Df5AF045d91108662D8080fD1FEFAd6aA0bb59"
const foreignAMB = "0x4C36d2919e407f0Cc2Ee3c993ccF8ac26d9CE64e"
// Choose either home or foreign
// Foreign
const foreignLogs = await ethClient.getContractEvents({
address: foreignAMB,
abi: [parseAbiItem("event RelayedMessage(address indexed sender,address indexed executor,bytes32 indexed messageId,bool status)")],
eventName: 'RelayedMessage',
args: {
messageId: // replace the messageId
},
fromBlock: // replace from Block to recent block
toBlock: 'latest'
})
console.log(foreignLogs[0].transactionHash)
// Home
const homeLogs = await gnoClient.getContractEvents({
address: homeAMB,
abi: [parseAbiItem("event AffirmationCompleted(address indexed sender,address indexed executor,bytes32 indexed messageId,bool status)")],
eventName: 'AffirmationCompleted',
args: {
messageId: // replace the messageId
},
fromBlock: // replace from Block to recent block
toBlock: 'latest'
})
console.log(homeLogs[0].transactionHash)
};
main();