Trustless
No centralized custodians or multisigs holding your assets.
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 tokenstoken.approve(bridgeAddress, amount);
// Deposit to bridgebridge.deposit(tokenAddress, amount, soraRecipient);SORA validators observe the Ethereum transaction:
SORA network mints wrapped tokens:
// On SORAMint wrapped_DAI to user_accountAmount: deposited_amount - bridge_feeUser burns wrapped tokens on SORA:
// Submit withdrawal requestbridge.withdraw( asset_id: "DAI", amount: 1000, eth_recipient: "0x...")Validators aggregate signatures:
Tokens released on Ethereum:
// User or relayer submits proofbridge.withdraw( tokenAddress, amount, recipient, validatorSignatures);| Token | Contract | Status |
|---|---|---|
| ETH | Native | ✅ Supported |
| DAI | 0x6B17… | ✅ Supported |
| USDC | 0xA0b8… | ✅ Supported |
| USDT | 0xdAC1… | ✅ Supported |
| WBTC | 0x2260… | ✅ Supported |
Any ERC-20 can be added through governance:
HASHI relies on SORA’s validator set:
| Layer | Mechanism |
|---|---|
| Economic | Validators stake VAL as collateral |
| Consensus | BFT requires 2/3+ honest validators |
| Slashing | Malicious behavior penalized |
| Rotation | Validator set changes over time |
Bridge transfers are secured by:
Traditional Bridge: HASHI:
┌─────────┐ ┌───┐ ┌───┐ ┌───┐ │Multisig │ │ V │ │ V │ │ V │ │ 3/5 │ └─┬─┘ └─┬─┘ └─┬─┘ └────┬────┘ │ │ │ │ ┌─▼─────▼─────▼─┐ Single Point │ Consensus │ of Failure │ Required │ └───────────────┘| Component | Fee | Recipient |
|---|---|---|
| Bridge Fee | ~0.1% | SORA Treasury |
| Ethereum Gas | Variable | Ethereum Miners |
| SORA Fee | Minimal | Validators |
HASHI batches operations to reduce costs:
The easiest way to use HASHI:
For programmatic access:
import { ethers } from 'ethers';
// Connect to Ethereumconst provider = new ethers.providers.Web3Provider(window.ethereum);const signer = provider.getSigner();
// Bridge contractconst bridge = new ethers.Contract(BRIDGE_ADDRESS, BRIDGE_ABI, signer);
// Approve tokensconst token = new ethers.Contract(TOKEN_ADDRESS, ERC20_ABI, signer);await token.approve(BRIDGE_ADDRESS, amount);
// Deposit to bridgeconst tx = await bridge.deposit( TOKEN_ADDRESS, amount, soraAccountBytes32 // SORA recipient);
await tx.wait();Track bridge transfers:
// Check if transfer is complete on SORAconst events = await api.query.ethereumBridge.requests(requestId);console.log('Status:', events.status);Monitor bridge status:
| Metric | Healthy Value |
|---|---|
| Pending transfers | < 100 |
| Average delay | < 15 min |
| Validator participation | > 66% |
Causes:
Solution:
Causes:
Solution:
Causes:
Solution:
Polkadot Bridge
TON Bridge
Polkaswap
Security