Skip to content
SORA Codex Community-curated documentation

HASHI Bridge (Ethereum)

HASHI is SORA’s decentralized and trustless cross-chain bridge that enables secure asset transfers between Ethereum and the SORA network. Unlike centralized bridges, HASHI uses cryptographic proofs to validate transactions across chains without relying on trusted intermediaries.

Trustless

No centralized custodians or multisigs holding your assets.

Decentralized

Secured by SORA validators, not a single party.

ERC-20 Support

Bridge any ERC-20 token between networks.

Polkaswap Integrated

Trade bridged assets directly on Polkaswap.


┌─────────────────┐ ┌─────────────────┐
│ Ethereum │ │ SORA │
│ Network │ │ Network │
│ │ │ │
│ ┌───────────┐ │ Validators │ ┌───────────┐ │
│ │ Bridge │◄─┼─── Sign & Relay ──┼─►│ Bridge │ │
│ │ Contract │ │ Proofs │ │ Pallet │ │
│ └───────────┘ │ │ └───────────┘ │
│ │ │ │ │ │
│ ┌─────▼─────┐ │ │ ┌─────▼─────┐ │
│ │ ERC-20 │ │ │ │ Asset │ │
│ │ Tokens │ │ │ │ (Wrapped)│ │
│ └───────────┘ │ │ └───────────┘ │
└─────────────────┘ └─────────────────┘

User deposits tokens into the Ethereum bridge contract:

// Approve tokens
token.approve(bridgeAddress, amount);
// Deposit to bridge
bridge.deposit(tokenAddress, amount, soraRecipient);

User burns wrapped tokens on SORA:

// Submit withdrawal request
bridge.withdraw(
asset_id: "DAI",
amount: 1000,
eth_recipient: "0x..."
)

TokenContractStatus
ETHNative✅ Supported
DAI0x6B17…✅ Supported
USDC0xA0b8…✅ Supported
USDT0xdAC1…✅ Supported
WBTC0x2260…✅ Supported

Any ERC-20 can be added through governance:

  1. Proposal — Submit governance request
  2. Review — Technical committee evaluates
  3. VoteParliament approves
  4. Deploy — Bridge configuration updated

HASHI relies on SORA’s validator set:

LayerMechanism
EconomicValidators stake VAL as collateral
ConsensusBFT requires 2/3+ honest validators
SlashingMalicious behavior penalized
RotationValidator set changes over time

Bridge transfers are secured by:

  • Merkle proofs — Verify transaction inclusion
  • Threshold signatures — Multiple validators must sign
  • Finality guarantees — Wait for sufficient confirmations
Traditional Bridge: HASHI:
┌─────────┐ ┌───┐ ┌───┐ ┌───┐
│Multisig │ │ V │ │ V │ │ V │
│ 3/5 │ └─┬─┘ └─┬─┘ └─┬─┘
└────┬────┘ │ │ │
│ ┌─▼─────▼─────▼─┐
Single Point │ Consensus │
of Failure │ Required │
└───────────────┘

ComponentFeeRecipient
Bridge Fee~0.1%SORA Treasury
Ethereum GasVariableEthereum Miners
SORA FeeMinimalValidators

HASHI batches operations to reduce costs:

  • Multiple withdrawals aggregated
  • Signature aggregation reduces calldata
  • Off-peak submission for lower gas

The easiest way to use HASHI:

  1. Go to polkaswap.io
  2. Select “Bridge” tab
  3. Connect Ethereum wallet (MetaMask)
  4. Connect SORA wallet (Fearless/Polkadot.js)
  5. Select token and amount
  6. Confirm transactions

For programmatic access:

import { ethers } from 'ethers';
// Connect to Ethereum
const provider = new ethers.providers.Web3Provider(window.ethereum);
const signer = provider.getSigner();
// Bridge contract
const bridge = new ethers.Contract(BRIDGE_ADDRESS, BRIDGE_ABI, signer);
// Approve tokens
const token = new ethers.Contract(TOKEN_ADDRESS, ERC20_ABI, signer);
await token.approve(BRIDGE_ADDRESS, amount);
// Deposit to bridge
const tx = await bridge.deposit(
TOKEN_ADDRESS,
amount,
soraAccountBytes32 // SORA recipient
);
await tx.wait();

Track bridge transfers:

// Check if transfer is complete on SORA
const events = await api.query.ethereumBridge.requests(requestId);
console.log('Status:', events.status);

Monitor bridge status:

MetricHealthy Value
Pending transfers< 100
Average delay< 15 min
Validator participation> 66%

Causes:

  • Ethereum congestion
  • Insufficient confirmations
  • Validator sync issues

Solution:

  • Wait for more confirmations
  • Check bridge status page
  • Contact support if > 1 hour