Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
8690419
Create 05-21-core-devs-call.md
0xarmagan Jul 23, 2025
d99634a
Create 05-28-core-devs-call.md
0xarmagan Jul 23, 2025
658b08c
Create 06-04-core-devs-call.md
0xarmagan Jul 23, 2025
4690260
Create 06-25-core-devs-call.md
0xarmagan Jul 23, 2025
6d858cd
Create 07-02-core-devs-call.md
0xarmagan Jul 23, 2025
0534e58
Create 07-09-core-devs-call.md
0xarmagan Jul 23, 2025
c9e6a1e
Create 07-23-core-devs-call.md
0xarmagan Jul 23, 2025
c863094
Update and rename 07-23-core-devs-call.md to 07-16-core-devs-call.md
0xarmagan Jul 23, 2025
06680af
Create 07-23-core-devs-call.md
0xarmagan Jul 23, 2025
24f0d20
Add hashi update for deprecation
vanshika-srivastava Aug 22, 2025
9ed392d
shift hashi integration
vanshika-srivastava Aug 22, 2025
ea58789
Main (#799)
vanshika-srivastava Aug 22, 2025
63e06bd
docs(bridges): update docs
zengzengzenghuy Sep 2, 2025
13cc717
update older content
skundu42 Sep 3, 2025
d7d8184
Merge branch 'main' into dev
skundu42 Sep 3, 2025
45abd6e
Fix broken links (#802)
tmgrask Sep 4, 2025
31cfee7
feat: add cookie policy banner and script (#805)
Wagalidoom Sep 16, 2025
8314fcf
feat(bridges): update USDS migration details (#806)
zengzengzenghuy Sep 23, 2025
80d0ddd
added announcement bar
skundu42 Sep 23, 2025
a904fe2
Add dRPC to RPC Providers list (#808)
dRPCMarketing Oct 15, 2025
b3bd7dc
docs: :memo: update Prysm domain to prysm.offchainlabs.com (#804)
victorelec14 Oct 15, 2025
89f4b32
docs: Replace broken link (#811)
rodrigoherera Oct 22, 2025
f013155
Update node > management > monitoring-validators section. (#809)
nicosampler Oct 22, 2025
e628136
remove llms.txt from git
skundu42 Oct 22, 2025
7fa8959
Merge branch 'main' into dev
skundu42 Oct 22, 2025
f5c8498
Revise image and hint in Node README
0xarmagan Oct 22, 2025
581fd4a
Update Covalent details (#814)
zeeshan8281 Nov 1, 2025
c03ae1e
feat(bridges): update usds migration status, add governance decisions…
zengzengzenghuy Nov 10, 2025
a57e3c0
fix(docusaurus.config.js): typo
zengzengzenghuy Nov 10, 2025
7b4d8ff
feat(bridges): update bridges content
zengzengzenghuy Nov 10, 2025
37dd774
feat: update color palette and icons (#817)
Wagalidoom Nov 17, 2025
1fa1cd2
Merge branch 'main' into dev
vanshika-srivastava Nov 17, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions docs/bridges/About Token Bridges/amb-bridge.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ The native Arbitrary Message Bridge (AMB) allows user to send arbitrary data bet

The AMB is a key bridge primitive that is used inside higher-order bridges like the [Omnibridge native token bridge](../About%20Token%20Bridges/omnibridge.md), and is part of the [Tokenbridge Architecture](https://github.com/tokenbridge/docs).

Due to the light client finality requirements (at least 23mins on Ethereum), the transactions will take approx. 30mins to be signed by the bridge. However, users can still use 3rd party bridges (Jumper.exchange, Connext, Hop) without any impact.
Due to the finality requirements on Ethereum, the transactions will take approx. 30mins to be signed by the bridge. However, users can still use 3rd party bridges (Jumper.exchange, Stargate, deBridge, etc) without any impact.

## Overview

Expand Down Expand Up @@ -104,14 +104,14 @@ function requireToPassMessage (address _contract,

1. User calls `foo()` on the originating contract
2. Originating contract calls [`requireToPassMessage()`](https://etherscan.io/address/0x4C36d2919e407f0Cc2Ee3c993ccF8ac26d9CE64e#writeProxyContract#F10) on [Foreign AMB contract](https://etherscan.io/address/0x4C36d2919e407f0Cc2Ee3c993ccF8ac26d9CE64e#writeProxyContract), and encodes `foo()`, target address, and gas limit used on the other chain for executing a message.
3. `UserRequestForAffirmation(bytes32 indexed messageId, bytes encodedData)` event is emitted from [Foreign AMB contract](https://etherscan.io/address/0x4C36d2919e407f0Cc2Ee3c993ccF8ac26d9CE64e#writeProxyContract), and listening bridge validators relay the message to the Home side where signatures are collected by calling Home AMB `executeAffirmation(bytes message)`, where `message` parameter is the `encodedData` from `UserRequestForAffirmation` event. Hashi acts as an additional bridge valdiator who validates transactions but no actually calling `executeAffirmation` on Home AMB. For more details about how Hashi works in this case, check out [here](./hashi-integration.md)
3. `UserRequestForAffirmation(bytes32 indexed messageId, bytes encodedData)` event is emitted from [Foreign AMB contract](https://etherscan.io/address/0x4C36d2919e407f0Cc2Ee3c993ccF8ac26d9CE64e#writeProxyContract), and listening bridge validators relay the message to the Home side where signatures are collected by calling Home AMB `executeAffirmation(bytes message)`, where `message` parameter is the `encodedData` from `UserRequestForAffirmation` event.
4. Once enough signatures has been collected by bridge valdiators, the transaction will emit `CollectedSignatures (address authorityResponsibleForRelay, bytes32 messageHash, uint256 NumberOfCollectedSignatures)` and calls `foo()` on the target contract.

#### Gnosis Chain to Ethereum

1. User calls `foo()` on an originating contract
2. Originating contract calls [`requireToPassMessage()`](https://gnosisscan.io/address/0x75Df5AF045d91108662D8080fD1FEFAd6aA0bb59#writeProxyContract#F14) on Home Bridge contract, and encodes `foo()`, target address, and gas limit used on the other chain for executing a message.
3. Signatures are collected from validators by calling [`submitSignatures()`](https://gnosisscan.io/address/0x75Df5AF045d91108662D8080fD1FEFAd6aA0bb59#writeProxyContract#F5), and once enough are collected `CollectedSignatures()` event is emitted. Hashi acts as an additional bridge valdiator who validates transactions but no actually calling `executeAffirmation` on Home AMB. For more details about how Hashi works in this case, check out [here](./hashi-integration.md)
3. Signatures are collected from validators by calling [`submitSignatures()`](https://gnosisscan.io/address/0x75Df5AF045d91108662D8080fD1FEFAd6aA0bb59#writeProxyContract#F5), and once enough are collected `CollectedSignatures()` event is emitted.
4. Anyone can execute the call by calling [`executeSignatures(bytes message, bytes signatures)`](https://etherscan.io/address/0x4C36d2919e407f0Cc2Ee3c993ccF8ac26d9CE64e#writeProxyContract#F3) on Foreign AMB. To fetch the calldata for `executeSignatures` function, please follow the [guideline below](#how-to-call-executesignatures-on-foreign-amb-ethereum).
5. Foreign AMB contract decodes the message and calls `foo()` on target contract

Expand All @@ -136,6 +136,14 @@ The AMB is down when `maxGasPerTx` is set to 0, only by owner of the contract.

By setting `maxGasPerTx` to 0, the [condition in `_sendMessage()`](https://github.com/gnosischain/tokenbridge-contracts/blob/master/contracts/upgradeable_contracts/arbitrary_message/MessageDelivery.sol#L40) will not pass, meaning, the bridge is down/stopped.

### Legacy components on the bridge contracts

1. Hashi: Hashi componetns was integrated into the bridge, but was [deprecated](https://forum.gnosis.io/t/deprecation-notice-hashi-on-gnosis-canonical-bridges-ends-maintenance/11467/4). The on-chain contract still remains but don't affect the transaction verification logic. Please check [here](../hashi/hashi-integration.md) for more details.

2. GSN: [OpenGSN (Ethereum Gas Stations Network)](https://github.com/opengsn) is not in used but remains in the contracts.

3. AsyncInformationProcessor: Not supported by bridge validators.

### Security Considerations for Receiving a Call

| Concern | Remediation |
Expand Down
13 changes: 11 additions & 2 deletions docs/bridges/About Token Bridges/omnibridge.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ The Omnibridge mints bridged tokens using a variant of the [ERC-677](https://git
| AMB Proxy Contract (Home) | [0x75Df5AF045d91108662D8080fD1FEFAd6aA0bb59](https://gnosisscan.io/address/0x75Df5AF045d91108662D8080fD1FEFAd6aA0bb59#writeProxyContract) |
| Omnibridge Multi-Token Mediator Proxy | [0xf6A78083ca3e2a662D6dd1703c939c8aCE2e268d](https://gnosisscan.io/address/0xf6A78083ca3e2a662D6dd1703c939c8aCE2e268d#writeProxyContract) |
| Validator Management Contract | [0xA280feD8D7CaD9a76C8b50cA5c33c2534fFa5008](https://gnosisscan.io/address/0xA280feD8D7CaD9a76C8b50cA5c33c2534fFa5008#writeContract) |
| USDS Transmuter Contract | [0x0392a2f5ac47388945d8c84212469f545fae52b2](https://gnosisscan.io/address/0x0392a2f5ac47388945d8c84212469f545fae52b2/advanced#code) |

</TabItem>

Expand Down Expand Up @@ -132,7 +133,6 @@ The Omnibridge is built on top of the [Arbitrary Message Bridge](./amb-bridge.md
8. AMB calls `handleBridgedTokens()` on Foreign Omnibridge contract.
9. Foreign Omnibridge contract unlocks the tokens.


## Exceptions and Special Cases

While most tokens can be freely transferred between chains, there are several exceptions where token properties create bridge-related issues.
Expand Down Expand Up @@ -214,7 +214,7 @@ Gnosis adopts a naming convention where the "chain of origin" is added as a suff

:::info
When using [Bridge UI](https://bridge.gnosischain.com/):
Bridging from Ethereum, users bridge [USDC](https://etherscan.io/address/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48) and get [USDC.e](https://gnosisscan.io/address/0x2a22f9c3b484c3629090feed35f17ff8f88f76f0).
Bridging from Ethereum, users bridge [USDC on Ethereum](https://etherscan.io/address/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48) and get [USDC.e on Gnosis Chain](https://gnosisscan.io/address/0x2a22f9c3b484c3629090feed35f17ff8f88f76f0).
Bridging from Gnosis Chain, users bridge [USDC on xDAI](https://gnosisscan.io/address/0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83) and get [USDC](https://etherscan.io/address/0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48).
Use [USDC swap](https://bridge.gnosischain.com/usdc) to swap between USDC.e and USDC on xDAI
:::
Expand All @@ -228,3 +228,12 @@ USDC.e is a token compliant with the [Circle's Bridged USDC Standard](https://gi
b. Select **Gnosis Chain** as source chain and **USDC on xDAI (old USDC)** as token, and claim their USDC on Ethereum.

For more detail, check out [this twitter post](https://x.com/gnosischain/status/1800565095065641409).

**Technical details for USDC -> USDC.e**

1. From Ethereum, `Omibridge.relayTokensAndCall(token: USDC, receiver: USDC Transmuter on Gnosis, value, data: abi.encode(actual_receiver_on_Gnosis))` is called.
2. Bridge validators sign and execute the transaction by calling `AMB.executeAffirmation(bytes message, bytes signatures)`.
1. `USDCTransmuterContract.onTokenBridged()` is called as a fallback and the function parse data to get the `actual_receiver_on_Gnosis` and mint USDC.e to the receiver.
2. USDC Transmuter contract is configured as minter in USDC.e contract, with minting allowance configured by KpK.

[Example Transaction](https://bridge.gnosischain.com/bridge-explorer/transaction/0x000500004ac82b41bd819dd871590b510316f2385cb196fb000000000002cdc3)
26 changes: 14 additions & 12 deletions docs/bridges/About Token Bridges/xdai-bridge.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Please avoid using the legacy xDai bridge: https://bridge.legacy.gnosischain.com

:::info

DAI is replaced with USDS as the default accepted token on Ethereum, while xDAI will continue to be minted on Gnosis Chain. Please refer to [here](https://github.com/gnosischain/tokenbridge-contracts/blob/feat/xdaibridge/USDSMigration.md) for details regarding the contracts, workflow pre & post migration.
DAI is replaced with USDS as the default accepted token on Ethereum, while xDAI will continue to be minted on Gnosis Chain. Please refer to [here](https://github.com/gnosischain/tokenbridge-contracts/blob/xdaibridge/USDSMigration.md) for details regarding the contracts, workflow pre & post migration.

:::

Expand Down Expand Up @@ -47,7 +47,7 @@ Once USDS is bridged into the xDai bridge, the xDai bridge contract on Gnosis no
| ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
| xDAI Bridge Contract | [eth:0x4aa42145Aa6Ebf72e164C9bBC74fbD3788045016](https://etherscan.io/address/0x4aa42145Aa6Ebf72e164C9bBC74fbD3788045016#readProxyContract) |
| Validator Management Contract | [eth:0xe1579dEbdD2DF16Ebdb9db8694391fa74EeA201E](https://etherscan.io/address/0xe1579dEbdD2DF16Ebdb9db8694391fa74EeA201E#code) |
| BridgeRouter Proxy | [eth:0x9a873656c19Efecbfb4f9FAb5B7acdeAb466a0B0](https://etherscan.io/address/0x9a873656c19Efecbfb4f9FAb5B7acdeAb466a0B0de) |
| BridgeRouter Proxy | [eth:0x9a873656c19Efecbfb4f9FAb5B7acdeAb466a0B0](https://etherscan.io/address/0x9a873656c19Efecbfb4f9FAb5B7acdeAb466a0B0) |

</TabItem>
<TabItem value="gnosis" label="Gnosis">
Expand Down Expand Up @@ -119,13 +119,7 @@ Daily Limit is reset according to the following logic: the smart contract stores

![](/img/bridges/diagrams/dai-bridge-01.png)

The [xDai token](/about/tokens/xdai) is minted when Dai\*\* is transferred from Ethereum to Gnosis using the xDai Bridge. During the transfer process, a block reward contract is invoked to mint xDai to a user's account. Because contract calls are made from the consensus engine to create xDai tokens, balance updates are more difficult to trace than simple value transfers.

:::danger

\*\*xDAI bridge contract is undergoing a critical upgrade: DAI will be replaced with USDS as the default accepted token on Ethereum, while xDAI will continue to be minted on Gnosis Chain. Please refer to [xDaiBridge-usds-migration page](usds-xdaibridge-migration.md) for more details.

:::
The [xDai token](/about/tokens/xdai) is minted when USDS\*\* is transferred from Ethereum to Gnosis using the xDai Bridge. During the transfer process, a block reward contract is invoked to mint xDai to a user's account. Because contract calls are made from the consensus engine to create xDai tokens, balance updates are more difficult to trace than simple value transfers.

:::warning

Expand Down Expand Up @@ -270,7 +264,7 @@ The second contract is the Interest Receiver. This will be the address provided

</Tabs>

### How to claim DAI on Ethereum
### How to claim USDS on Ethereum

1. Fetch the value of `recipient`, `value`, `nonce` and `token` from `UserRequestForSignature(address recipient, uint256 value, bytes32 nonce, address token)` from the transction emitted by [Home xDAI Bridge](https://gnosis.blockscout.com/address/0x7301CFA0e1756B71869E93d4e4Dca5c7d0eb0AA6) Gnosis Chain.
![](../../../static/img/bridges/xdaibridge/gc-xdai-tx-post-usds.png)
Expand All @@ -280,10 +274,18 @@ The second contract is the Interest Receiver. This will be the address provided
2. Call [`getMessage(bytes32 _msgHash)`](https://gnosis.blockscout.com/address/0x2d51eaa266eafcb59bb36dd3c7e99c515e58113a?tab=read_write_contract#0x0139a221) & [`getSignatures(bytes32 _msgHash)`](https://gnosis.blockscout.com/address/0xe30269bc61E677cD60aD163a221e464B7022fbf5?tab=read_contract#0x0139a221) with the message hash from the previous step.
![](../../../static/img/bridges/xdaibridge/xdai-helper-post-usds.png)

3. Use the value returned from the previous step to call `executeSignatures(bytes message, bytes signatures)` on [xDAI Foreign Bridge on Ethereum](https://etherscan.io/address/0x4aa42145Aa6Ebf72e164C9bBC74fbD3788045016#writeProxyContract#F7).
3. Use the value returned from the previous step to call `executeSignatures(bytes message, bytes signatures)` on [Bridge Router contract on Ethereum](https://etherscan.io/address/0x9a873656c19Efecbfb4f9FAb5B7acdeAb466a0B0#writeProxyContract#F1).
![](../../../static/img/bridges/xdaibridge/xdai-execute-signatures-post-usds.png)

## 5. Glossary
4. To claim DAI on Ethereum, use the same value returned from step 3 to call `executeSignatures(bytes message, bytes signatures)

### Legacy components on the bridge contracts

1. Hashi: Hashi componetns was integrated into the bridge, but was [deprecated](https://forum.gnosis.io/t/deprecation-notice-hashi-on-gnosis-canonical-bridges-ends-maintenance/11467/4). The on-chain contract still remains but don't affect the transaction verification logic. Please check [here](../hashi/hashi-integration.md) for more details.

2. GSN: [OpenGSN (Ethereum Gas Stations Network)](https://github.com/opengsn) is not in used but remains in the contracts.

## Glossary

1. BridgeRouter: Entry point contract after the migration on Ethereum, facilitating routing and token swapping.
1. address: [0x9a873656c19Efecbfb4f9FAb5B7acdeAb466a0B0](https://etherscan.io/address/0x9a873656c19Efecbfb4f9FAb5B7acdeAb466a0B0)
Expand Down
7 changes: 7 additions & 0 deletions docs/bridges/audits.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,13 @@ keywords: [omnibridge audit, xdai bridge audit, security audit]

The OmniBridge and xDai Bridge have undergone multiple independent security audits and assessments. We have engaged in the auditing process after introducing major functionality, and have acknowledged and/or fixed all issues found during these audits. Audit results are presented starting with the most recent.

## USDS migration xDAI bridge by Omega, Gnosis Ltd(internal audit)

**Audit Report**:

1. [Omega-Gnosis-USDS Upgrade Final Audit Report](https://github.com/OmegaAudits/audits/blob/main/202510-Gnosis-Bridge-USDS-Upgrade.pdf)
2. [Gnosis Ltd internal audit final report](https://github.com/cducrest/audit-reports/blob/main/bridge-USDS-upgrade3.pdf)

## Hashi integration by Omega, g0, Least Authority

The scope for auditing includes the following repos:
Expand Down
Loading
Loading