Skip to main content

Overview

DeBridgeToken is the ERC-20 implementation for wrapped assets (deTokens) that represent native tokens from other blockchains. Each deToken is 1:1 backed by collateral locked on its native chain. Contract Location: contracts/periphery/DeBridgeToken.sol

Token Properties

name
string
Token name (e.g., “deBridge Ethereum”)
symbol
string
Token symbol (e.g., “deETH”)
decimals
uint8
Decimal places (matches original token)
chainIdFrom
uint256
Chain ID where the original asset exists
tokenAddressFrom
address
Original token address on the source chain

ERC-20 Functions

DeBridgeToken implements the standard ERC-20 interface:
  • transfer(address to, uint256 amount)
  • approve(address spender, uint256 amount)
  • transferFrom(address from, address to, uint256 amount)
  • balanceOf(address account)
  • allowance(address owner, address spender)

Bridge-Specific Functions

mint

Mints new wrapped tokens when assets are locked on the native chain.
function mint(address _receiver, uint256 _amount) external
Only the DeBridgeGate contract can mint tokens. This ensures tokens are only created when collateral is locked.

burn

Burns wrapped tokens when sending assets back to native chain.
function burn(uint256 _amount) external

Token Lifecycle

1

Lock on Native Chain

User locks 1 ETH on Ethereum in DeBridgeGate
2

Oracle Confirmation

Validators observe and sign the lock transaction
3

Mint on Destination

DeBridgeGate mints 1 deETH on BSC for the user
4

Use as Normal ERC-20

User can transfer, trade, use deETH like any ERC-20
5

Burn to Unlock

User burns deETH on BSC to unlock ETH on Ethereum

Naming Convention

Wrapped tokens follow the pattern:
  • Name: “deBridge [Original Token Name]”
  • Symbol: “de[Original Symbol]”
Examples:
  • USDC from Ethereum → “deBridge USDC” (deUSDC)
  • WBTC from Ethereum → “deBridge Wrapped Bitcoin” (deWBTC)
  • Native ETH → “deBridge Ethereum” (deETH)

Upgradeability

DeBridgeTokens use a beacon proxy pattern, allowing the implementation to be upgraded for all tokens simultaneously.

Integration Example

Using deTokens
// Get deToken address for an asset
address deToken = deBridgeGate.getWrappedToken(
    nativeTokenAddress,
    nativeChainId
);

// Use like any ERC-20
IDeBridgeToken(deToken).approve(spender, amount);
IDeBridgeToken(deToken).transfer(recipient, amount);

// Check origin
(uint256 chainId, bytes memory addr) = deBridgeGate.getNativeInfo(deToken);

Permit Support

DeBridgeToken supports EIP-2612 permit for gasless approvals:
Gasless Approval
deToken.permit(
    owner,
    spender,
    value,
    deadline,
    v, r, s  // Signature components
);

Asset Transfers

Learn about lock-and-mint mechanism

Token Deployer

How deTokens are created

Build docs developers (and LLMs) love