Bridge
Davos Bridge offers a cross-chain protocol to unify liquidity across blockchains. The protocol is a permissionless on-chain utility that can burn DUSD on a source chain and mint DUSD in same amount on a destination chain.
Why Did We Decide to Make Davos Bridge?
First, Davos Bridge eliminates the need to use conventional "lock-and-mint" bridge, which locks DUSD on the source chain (potential security problem) and mints a synthetic bridged version on the destination chain (liquidity fragmentation and poor UX).
Besides this, there are more important reasons to the "why":
Burning/Minting is better for an omnichain fungible token like DUSD.
We fully control the cost (zero cost).
We don't rely on third-party protocols to enable DUSD on other chains, meaning no additional counter-party risk.
The bridge is able to support any future chain.
The bridge makes cross-chain transfers of DUSD as frictionless as possible.
DUSD becomes a routing asset for stablecoin cross-chain transfers by onboarding Davos Bridge in Bridge aggregators, which create more trading volume for DUSD stable LPs.
How Does It Work?
The user approves access to DUSD for Davos Bridge on the source chain.
The user deposits DUSD on the source chain, and Davos Bridge burns it.
A special external entity reacts to the
burn
event, and the user obtains from it the proof data needed when claiming at Step 4.The users claims DUSD on the destination chain, and Davos Bridge mints it for the user.
Supported Chains
Arbitrum
BNB Smart Chain
Ethereum
Optimism
Polygon
Polygon zkEVM
Contracts
DavosBridge — external cross-chain bridge that is deployed on the corresponding chains and linked together.
DUSD — stablecoin DUSD users can borrow from Davos.
Mainnet Addresses
DavosBridge
Arbitrum (0xC734528d0525923F29979393f3988168ad26d402)
BNB Smart Chain (0xDB34888e13FF86dE87469Ac6d4FfC8A5b293B79D)
Ethereum (0x6DeF4570251E1f435E121b3Ee47174496D851C99)
Optimism (0xDB34888e13FF86dE87469Ac6d4FfC8A5b293B79D)
Polygon (0x78BE0423567A85Ba677d3AA5b73b45970E52256b)
Polygon zkEVM (0x2304CE6B42D505141A286B7382d4D515950b1890)
DUSD
Arbitrum (0x8EC1877698ACF262Fe8Ad8a295ad94D6ea258988)
BNB Smart Chain (0x8EC1877698ACF262Fe8Ad8a295ad94D6ea258988)
Ethereum (0xa48F322F8b3edff967629Af79E027628b9Dd1298)
Optimism (0xed72aC9BA68caE26D7889d3b954cC7DcA31117Ca)
Polygon (0xEC38621e72D86775a89C7422746de1f52bbA5320)
Polygon zkEVM (0x819d1Daa794c1c46B841981b61cC978d95A17b8e)
Quickstart: Bridge DUSD
1. Approve Bridge to Access DUSD
approve()
— approves access for Davos Bridge to user's DUSD on the source chain.
Parameters
usd (address) — address of Davos Bridge to approve access to user's DUSD for.
wad (uint256) — amount of DUSD to approve access to.
Smart Contracts
DUSD on Arbitrum (0x8EC1877698ACF262Fe8Ad8a295ad94D6ea258988)
DUSD on BNB Smart Chain (0x8EC1877698ACF262Fe8Ad8a295ad94D6ea258988)
DUSD on Ethereum (0xa48F322F8b3edff967629Af79E027628b9Dd1298)
DUSD on Optimism (0xb396b31599333739A97951b74652c117BE86eE1D)
DUSD on Polygon (0xEC38621e72D86775a89C7422746de1f52bbA5320)
DUSD on Polygon zkEVM (0x819d1Daa794c1c46B841981b61cC978d95A17b8e)
Examples
2. Deposit DUSD on the Source Chain
depositToken()
— deposits DUSD on the source chain (subsequently causes the bridge to burn this DUSD).
Parameters
fromToken (address) — address of the DUSD contract on the source chain.
toChain (uint256) — ID of the destination chain.
toAddress (address) — address to mint tokens in the destination network.
amount (uint256) — amount of DUSD to bridge.
Smart Contracts
DavosBridge on Arbitrum (0xC734528d0525923F29979393f3988168ad26d402)
DavosBridge on BNB Smart Chain (0xDB34888e13FF86dE87469Ac6d4FfC8A5b293B79D)
DavosBridge on Ethereum (0x6DeF4570251E1f435E121b3Ee47174496D851C99)
DavosBridge on Optimism (0xDB34888e13FF86dE87469Ac6d4FfC8A5b293B79D)
DavosBridge on Polygon (0x78BE0423567A85Ba677d3AA5b73b45970E52256b)
DavosBridge Polygon zkEVM (0x2304CE6B42D505141A286B7382d4D515950b1890)
Examples
3. Get Proof Data
Host
https://mainnet.protocol.ankr.com
Endpoint
POST /v1alpha/notarize_transaction
Request
Parameters
transaction_hash (string) — hash of the depositToken transaction in the Base64 format. To generate, use the TXID of the depositToken transaction from Step 2 and refer to this code snippet:
chain_id (uint256) — ID of the source chain.
threshold_key (string) — public key of the authorizing address. Constant value is
6f6b2799-a37a-4b14-8efb-f36b446269b2
.
Response
200
4. Claim DUSD on the Destination Chain
withdraw()
— mints DUSD for the user on the destination chain.
Parameters
bytes (bytes) — encoded proof. To generate, use the
raw_payload
from the response at Step 3, bring it to the Base64 format, then bring the result to the hex format, and add0x
at the beginning. Refer to this code snippet as an example:To learn about Buffer, read Buffer in Node.js.
rawReceipt (bytes) — transaction receipt of the depositToken transaction. To generate, use the TXID of the depositToken transaction from Step 2 and refer to this code snippet as an example:
proofSignature (bytes) — proof of the valid signature. To generate, use
signature
from Step 3 and refer to this code snippet as an example:To learn about Buffer, read Buffer in Node.js.
Smart Contracts
DavosBridge on Arbitrum (0xC734528d0525923F29979393f3988168ad26d402)
DavosBridge on BNB Smart Chain (0xDB34888e13FF86dE87469Ac6d4FfC8A5b293B79D)
DavosBridge on Ethereum (0x6DeF4570251E1f435E121b3Ee47174496D851C99)
DavosBridge on Optimism (0xDB34888e13FF86dE87469Ac6d4FfC8A5b293B79D)
DavosBridge on Polygon (0x78BE0423567A85Ba677d3AA5b73b45970E52256b)
DavosBridge Polygon zkEVM (0x2304CE6B42D505141A286B7382d4D515950b1890)
Examples
Last updated