Cross-chain bridges lost roughly $328.6 million across at least eight major exploits in the first seven months of 2026, according to a July 2026 bridge-hack roundup. On July 23 alone, two separate bridges were drained for a combined $31.5 million in a single day. If you move assets between chains regularly, bridge risk isn’t theoretical anymore, it’s the single most exploited category in DeFi this year. This tutorial walks through exactly how to bridge crypto safely, step by step, and ends with a working script you can run before every transfer.
We’ll use the Wormhole bridge as the primary walkthrough example since it’s one of the most widely used cross-chain messaging protocols, and cover LayerZero, Stargate, Across, and Chainlink CCIP as alternatives along the way. By the end you’ll have a repeatable checklist, a Python safety-checker script, and a clear sense of what actually goes wrong when a bridge gets hacked.
Why Cross-Chain Bridges Became Crypto’s Biggest Target in 2026
Bridges hold two things attackers love: concentrated liquidity and complicated code. Every lock-and-mint bridge sits on a pile of locked collateral on one chain that backs wrapped tokens on another. Break the verification logic that connects the two sides, and you can mint tokens that nothing backs, or trick a relayer into releasing funds it shouldn’t. That’s exactly what happened on July 23, 2026, when an attacker exploited the Verus Protocol’s Ethereum cross-chain bridge and drained approximately $7.44 million in ETH, tBTC, stablecoins, and MKR, according to CertiK.
A separate incident hit Allbridge Core for $1.1 million through flash-loan oracle manipulation on Solana. KuCoin’s July 2026 security report put total cross-chain losses for the month at $97 million, and flagged bridge attacks specifically as the fastest-growing category of DeFi exploit. The pattern is consistent: attackers don’t usually break the cryptography, they break the trust assumptions. A relayer accepts a forged deposit message. A multisig signer’s key leaks. An upgrade timelock gets bypassed. None of these require breaking math, they require a gap in process, and that’s exactly what a careful bridging routine closes.
That’s the case for treating every bridge transaction like a security-sensitive operation rather than a routine swap. This guide gives you the steps, the tools, and the automation to do that without turning every transfer into an hour-long research project.
It also matters that most of these losses were preventable with process, not luck. SlowMist’s 2026 bridge incident tracker documented an attack that abused deposit-verification and relayer logic by submitting fake deposits with valid-looking memos, tricking a relayer into authorizing real withdrawals from a bridge’s reserve. That’s not a cryptographic break, it’s a logic gap that a careful protocol design (and a cautious user routine on your end) can catch. The Coldcard hardware wallet firmware flaw that drained roughly $116 million in a separate wave of attacks this year is a reminder that bridge risk doesn’t exist in isolation either, it compounds with wallet-level risk if your signing device or seed storage has its own weaknesses.
Prerequisites: What You Need Before You Bridge Anything
You don’t need to be a developer to follow the manual steps in this guide, but the automation section does use a short Python script. Here’s what to have ready before Step 1.
| Tool | Version / Notes | Purpose |
|---|---|---|
| MetaMask or another self-custody wallet | Latest version from the official extension store | Signing bridge transactions |
| A hardware wallet (recommended) | Latest firmware for your device | Keeping signing keys offline |
| Python | 3.11 or newer | Running the safety-checker script |
| pip packages: requests, web3.py | Latest stable release | API calls and address checksum validation |
| An Etherscan-family API key | Free tier works | Reading on-chain approval and contract data |
| Revoke.cash access | No install, browser-based | Reviewing and revoking token approvals |
| L2Beat bridges page | No install, browser-based | Checking a bridge’s independent risk rating |
You’ll also want a small amount of the source-chain gas token set aside for a test transaction, separate from the funds you actually intend to move. Budget 30-45 minutes for your first full run through this checklist; it gets faster once the routine is automated.
Step 1: Understand the Three Bridge Security Models
Not all bridges work the same way, and the security model determines what can actually go wrong. Broadly, cross-chain bridges fall into three camps. Lock-and-mint bridges, like Wormhole’s core design, lock the original asset in a contract on the source chain and mint a wrapped representation on the destination chain, verified by a set of external validators (Wormhole calls them Guardians). Liquidity-pool bridges, like Across and Stargate, don’t mint wrapped assets at all; they use pooled liquidity on the destination chain and repay the pool later, which removes some minting risk but introduces liquidity and relayer risk instead. Messaging-layer bridges, like LayerZero and Chainlink CCIP, don’t move assets directly, they pass verified messages between chains that applications use to trigger their own mint or release logic, with security enforced by independent verifier networks.
Knowing which model you’re using tells you what to check. For a lock-and-mint bridge, you care about the validator set and multisig threshold. For a liquidity-pool bridge, you care about pool depth and dispute windows. For a messaging bridge, you care about how many independent verifier networks are actually enforcing the message, not just how many are configured to.
Step 2: Pick a Bridge With a Real Security Track Record
A July 20, 2026 bridge security guide named LayerZero, Chainlink CCIP, Across, and Stargate as the bridges with the strongest safety records in its assessment, alongside Wormhole’s Guardian network as one of the longer-running validator sets in production. None of these are risk-free, but track record matters: a protocol that’s processed years of transactions through multiple market cycles without a validator-layer compromise has survived more adversarial pressure than a six-month-old bridge with a bigger APY.
| Bridge | Security Model | Verification Approach | Best For |
|---|---|---|---|
| Wormhole | Lock-and-mint | 19-member Guardian validator network, multisig attestation | Broad multi-chain asset transfers |
| LayerZero | Messaging layer | Configurable Decentralized Verifier Networks (DVNs) | App-level cross-chain messaging |
| Stargate | Liquidity pool (built on LayerZero) | Unified liquidity pools, DVN message verification | Stablecoin and native-asset transfers |
| Across | Liquidity pool + optimistic relay | UMA optimistic oracle dispute window | Fast transfers with dispute-based fraud proofs |
| Chainlink CCIP | Messaging layer | Independent Risk Management Network + DON committees | Institutional and enterprise transfers |
The same guide recommends choosing bridges with at least three independent audits and publicly available reports. Don’t take a bridge’s own marketing page as proof of an audit, go find the actual report from the named auditing firm and check the date. An audit from 2023 tells you nothing about code that shipped in 2026.
What Bridging Actually Costs: Fees and Transfer Times
Security isn’t the only factor in picking a bridge, but it’s worth understanding the cost and speed trade-offs alongside the risk profile, because the cheapest or fastest option isn’t always the one with the strongest verification model. Lock-and-mint bridges that wait for full attestation tend to run slower than liquidity-pool bridges that front you funds immediately and settle later. That speed comes from the pool operator taking on settlement risk instead of you waiting on-chain, which is a different kind of trade-off than a pure security comparison.
| Bridge | Typical Transfer Time | Fee Structure | Trade-Off |
|---|---|---|---|
| Wormhole | Minutes (depends on Guardian attestation) | Network gas plus relayer fee | Slower for full trust-minimized settlement |
| LayerZero apps | Varies by app and configured DVNs | Message fee plus destination gas | Security level is configurable, so cost varies with how many verifiers you require |
| Stargate | Under a minute in most cases | Small pool fee plus gas | Relies on pool liquidity depth for large transfers |
| Across | Seconds to a couple minutes | Relayer fee, typically low | Speed comes from optimistic relay with a dispute window behind it |
| Chainlink CCIP | Minutes | Fee varies by chain pair and payload | Extra verification layers add latency in exchange for redundancy |
None of these numbers are fixed, gas prices and liquidity conditions shift them constantly, so always check the live quote inside the bridge interface before confirming. The broader point is that a bridge charging noticeably less than everyone else for the same route is worth a second look. Unusually low fees can be a legitimate function of deep liquidity, or they can be a new, thinly audited protocol trying to buy volume before it’s proven itself.
Step 3: Verify the Official Contract Address
Fake bridge contracts and phishing clones are one of the most common ways users lose funds, and it has nothing to do with the real protocol’s security. Before you send anything, pull the contract address from the project’s official documentation site, not from a search-engine ad, a Discord link, or a Telegram message. Then verify it independently.
# Verify a contract address has real bytecode deployed (Foundry's cast tool)
cast code 0x3ee18B2214AFF97000D974cf647E7C347E8fa585 --rpc-url https://eth.llamarpc.com | wc -c
# A legitimate, deployed contract returns a long hex string.
# "0x" with nothing after it means no contract exists at that address --
# a strong sign you were handed a fake or unconfirmed address.
Cross-check the same address against a second independent source, like the project’s GitHub deployments file or a block explorer’s verified-contract badge. If two independent sources agree, and the contract has a long transaction history with real volume, that’s a good sign. A brand-new contract with a handful of transactions claiming to be an established bridge is a red flag on its own.
Step 4: Check the Bridge’s Risk Rating and Audit Trail
L2Beat maintains an independent bridges risk page that rates cross-chain bridges on factors like validation method, upgradeability, and whether user funds can be frozen or redirected by a small group of keyholders. It’s not affiliated with any single bridge team, which makes it a useful second opinion before you trust a protocol’s own security claims. Pull up the bridge you’re considering and read the risk breakdown before your first transfer, not after something goes wrong.
Pay particular attention to upgrade keys. A bridge secured by a well-distributed validator set can still be compromised if a small multisig can push a contract upgrade without a timelock. Multiple 2026 incident write-ups called out exactly this pattern: multisig and threshold-signature custody with enforced timelocks on upgrades and treasury movements is now treated as a baseline requirement, not a nice-to-have.
Step 5: Set Up an Isolated Bridging Wallet
Don’t bridge from your main wallet. Create a separate wallet that holds only the funds you intend to move, and nothing else. If a bridge transaction goes wrong, or a malicious approval gets exploited later, the blast radius is limited to what’s in that wallet at the time, not your entire portfolio. This single habit is the cheapest insurance policy in this whole guide, and it costs you nothing but a few extra minutes setting up a new account in your wallet software.
For anything above a few thousand dollars in value, sign the bridge transaction from a hardware wallet rather than a hot wallet. The transaction still goes through the same bridge contract, but your private key never touches an internet-connected device during signing.
Step 6: Send a Small Test Transaction First
Before you move your full amount, send a small test transaction, enough to matter if it fails, small enough that it doesn’t hurt if it does. Wait for it to fully confirm on the destination chain before sending anything larger. This catches three common problems at once: a misconfigured destination address, an unexpectedly long finality window, and any bridge-specific quirk (minimum transfer amounts, unsupported token variants, chain congestion) that documentation doesn’t always mention.
Skipping this step is one of the most common ways people lose money to bridges that aren’t even hacked, just misused. A wrong destination chain ID or an unsupported token standard can send funds somewhere unrecoverable.
Step 7: Review and Cap Token Approvals Before Bridging
Most bridges require an ERC-20 approval before they can pull tokens from your wallet, and by default many interfaces request unlimited approval so you don’t have to re-approve on every future transaction. That convenience is also the exact mechanism attackers exploit when a bridge’s spending logic gets compromised: an unlimited approval means an exploited contract can drain far more than your current transfer amount.
# Check existing token approvals for a wallet using an Etherscan-style API
import requests
WALLET = "0xYourWalletAddressHere"
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.etherscan.io/v2/api"
params = {
"chainid": 1,
"module": "account",
"action": "tokentx",
"address": WALLET,
"sort": "desc",
"apikey": API_KEY,
}
resp = requests.get(BASE_URL, params=params, timeout=15)
data = resp.json()
for tx in data.get("result", [])[:10]:
print(tx["tokenSymbol"], tx["to"], tx["hash"])
When your wallet interface offers a choice, approve only the exact amount you’re bridging, not an unlimited allowance. It’s a couple of extra clicks per transfer, and it means a future exploit against that bridge contract can only ever touch what you approved, not your entire token balance.
Step 8: Execute the Bridge Transaction
With the address verified, the risk rating checked, a test transaction confirmed, and approvals capped, you’re ready to send the actual transfer. Using the Wormhole bridge as the example: connect your bridging wallet to the official Wormhole Connect interface, select the source and destination chains, confirm the token and amount, and review the transaction details in your wallet’s signing prompt before approving. Read the destination address and chain ID in that prompt, not just the amount, this is the last checkpoint before funds leave the source chain.
Every major bridge (Wormhole, LayerZero-based apps, Stargate, Across, CCIP-based apps) follows a similar flow: source-chain lock or burn, validator or relayer attestation, then a mint or release on the destination chain. The steps look the same on the surface; what differs underneath is who’s doing the attesting and how many independent parties have to agree.
Step 9: Track the Transfer Across Both Chains
Don’t close the tab and walk away once you’ve submitted a Wormhole bridge transaction (or any other protocol’s transfer). Most bridge interfaces provide a transaction tracker that shows the current stage: source confirmation, attestation, and destination completion. Keep the source-chain transaction hash and watch it on a block explorer as a second, independent confirmation alongside the bridge’s own UI.
# Example console output while tracking a Wormhole transfer
$ wormhole-cli status --tx 0x8f2a...c91d
Source chain: Ethereum (confirmed, block 21048811)
VAA status: signed by 15/19 guardians
Destination chain: Polygon (pending)
Estimated time: 2-5 minutes remaining
If a transfer stalls well past its normal window, don’t immediately try to resend or “fix” it through a third-party tool someone links you in a support channel. Go to the project’s official documentation or verified social account first. Fake “bridge support” accounts that DM stalled users are a known scam pattern, and no legitimate support process will ask for your seed phrase or a wallet-draining “verification” signature.
Step 10: Confirm Finality Before Moving Funds Again
A transaction showing as “complete” in a bridge UI isn’t always final in the underlying chain’s sense. Some destination chains have probabilistic finality, meaning a block can theoretically still be reorganized for a short window after it’s mined. For high-value transfers, wait for the destination chain’s standard finality threshold (this varies by chain) before immediately routing the funds into another protocol, swap, or second bridge. Stacking bridge hops back-to-back without confirming finality at each stage is how a single failure cascades into a second loss.
Step 11: Revoke Approvals After the Bridge Completes
Once your transfer is confirmed and you don’t have another one planned soon, revoke the approval you granted in Step 7. An idle approval sitting on a wallet you don’t monitor closely is exactly the kind of stale permission that turns a future bridge exploit into your problem, even months after you stopped using that bridge. A July 2026 bridge security guide specifically recommends revoking unused bridge approvals on a monthly cadence using a tool like Revoke.cash.
# Revoke an ERC-20 approval directly with Foundry's cast, without a UI
cast send 0xTokenContractAddress \
"approve(address,uint256)" \
0xBridgeSpenderAddress 0 \
--rpc-url https://eth.llamarpc.com \
--private-key $PRIVATE_KEY
# Setting the approved amount to 0 removes the bridge contract's
# spending allowance on that token entirely.
Revoke.cash and similar tools give you a visual list of every active approval across chains, so you’re not hunting through a block explorer manually. Set a recurring reminder to check it monthly if you bridge regularly.
Step 12: Automate a Pre-Bridge Safety Check
Running through eleven manual steps every time you bridge doesn’t scale, so the last step is turning the core checks into a script you run before every transfer. The goal isn’t to replace judgment, it’s to make sure you never skip the checks that take thirty seconds and catch the mistakes that cost real money: an unverified contract address, a lingering unlimited approval, or a bridge with no independent risk data available.
Complete Working Project: The Bridge Safety Checker Script
Below is a complete, runnable Python script that ties together the checks from this guide: it confirms a bridge contract has real deployed bytecode, flags any unlimited token approvals on your bridging wallet, and prints a checklist reminder for the manual steps (audit review, L2Beat risk check, test transaction) that still need a human. Save it as bridge_safety_checker.py.
#!/usr/bin/env python3
"""Pre-bridge safety checker.
Run before every cross-chain transfer to catch the most common mistakes.
"""
import sys
import requests
from web3 import Web3
RPC_URL = "https://eth.llamarpc.com"
ETHERSCAN_API = "https://api.etherscan.io/v2/api"
API_KEY = "YOUR_API_KEY"
def check_contract_deployed(w3, address):
code = w3.eth.get_code(Web3.to_checksum_address(address))
return len(code) > 2 # more than just "0x"
def check_unlimited_approvals(wallet, chain_id=1):
"""Flag ERC-20 approvals with no cap (max uint256)."""
params = {
"chainid": chain_id,
"module": "account",
"action": "tokentx",
"address": wallet,
"sort": "desc",
"apikey": API_KEY,
}
resp = requests.get(ETHERSCAN_API, params=params, timeout=15)
txs = resp.json().get("result", [])
flagged = []
for tx in txs[:25]:
if tx.get("input", "").startswith("0x095ea7b3"): # approve() selector
if "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff" in tx["input"]:
flagged.append(tx["to"])
return list(set(flagged))
def run_checklist(bridge_address, wallet_address):
w3 = Web3(Web3.HTTPProvider(RPC_URL))
print(f"Checking bridge contract: {bridge_address}")
deployed = check_contract_deployed(w3, bridge_address)
print(f" Contract has deployed bytecode: {'PASS' if deployed else 'FAIL - no code found'}")
print(f"\nChecking approvals for wallet: {wallet_address}")
unlimited = check_unlimited_approvals(wallet_address)
if unlimited:
print(f" WARNING: unlimited approvals found for {len(unlimited)} contract(s):")
for addr in unlimited:
print(f" - {addr}")
else:
print(" No unlimited approvals found in recent history: PASS")
print("\nManual checks still required:")
print(" [ ] Verified audit reports dated within the last 12 months")
print(" [ ] Reviewed L2Beat risk rating for this bridge")
print(" [ ] Sent and confirmed a small test transaction")
print(" [ ] Bridging from an isolated wallet, not your main wallet")
if not deployed:
sys.exit("Aborting: bridge address has no deployed contract.")
if __name__ == "__main__":
if len(sys.argv) != 3:
print("Usage: python bridge_safety_checker.py ")
sys.exit(1)
run_checklist(sys.argv[1], sys.argv[2])
Run it with python bridge_safety_checker.py 0xBridgeAddress 0xYourWallet. Here’s an example of what a clean run looks like:
$ python bridge_safety_checker.py 0x3ee18B2214AFF97000D974cf647E7C347E8fa585 0xYourWallet
Checking bridge contract: 0x3ee18B2214AFF97000D974cf647E7C347E8fa585
Contract has deployed bytecode: PASS
Checking approvals for wallet: 0xYourWallet
No unlimited approvals found in recent history: PASS
Manual checks still required:
[ ] Verified audit reports dated within the last 12 months
[ ] Reviewed L2Beat risk rating for this bridge
[ ] Sent and confirmed a small test transaction
[ ] Bridging from an isolated wallet, not your main wallet
Extend this script over time: add a call to the L2Beat API for automated risk-score pulls, or wire the approval check into a cron job that emails you a weekly summary of every active bridge approval across your wallets. The point isn’t a perfect tool on day one, it’s a script that gets a little more thorough every time you bridge.
Common Pitfalls That Get Bridge Users Hacked
Most bridge losses don’t come from some undiscoverable zero-day. They come from a short list of repeated mistakes, and knowing them is most of the defense.
- Granting unlimited token approvals by default. It’s convenient until the bridge contract you approved gets exploited months later, and the exploit can now drain your full balance, not just the amount you meant to move.
- Clicking a bridge link from a search ad or Discord DM. Fake bridge front-ends that mirror the real UI pixel-for-pixel are one of the most common phishing vectors in cross-chain DeFi. Always navigate from the project’s official documentation.
- Skipping the test transaction on high-value transfers. A wrong chain ID or unsupported token variant on a six-figure transfer is a far more expensive mistake than the two minutes a test transaction costs.
- Treating a bridge’s own audit badge as sufficient. An audit covers the code at a specific point in time. It says nothing about upgrades shipped after the audit date, and self-reported “audited” claims aren’t always backed by a public report.
- Chaining multiple bridges back-to-back without confirming finality. Stacking transfers before the first one is truly final on the destination chain multiplies your exposure if any single hop fails or gets reorganized.
- Never revoking old approvals. A wallet full of stale, unlimited approvals from bridges you stopped using a year ago is still a live attack surface today.
- Bridging directly from a wallet that holds your entire portfolio. One compromised approval shouldn’t be able to touch every asset you own.
Troubleshooting: Bridge Errors and What They Mean
Even a well-executed bridge transfer can hit friction. Here’s how to read the most common errors and stuck states.
| Symptom | Likely Cause | What to Do |
|---|---|---|
| Transaction stuck “pending” past the normal window | Network congestion or validator/relayer delay | Check the source-chain hash on a block explorer; don’t resend or use third-party “unstick” tools |
| “Insufficient allowance” error | Approval amount was capped below the transfer amount | Approve the exact amount you’re sending, then retry |
| Funds shown as sent but never arrive on destination chain | Wrong destination address or unsupported token variant | Verify the destination chain ID and token contract before any future transfer; contact official support with your tx hash |
| “VAA not found” or attestation error (Wormhole) | Guardian attestation still processing, or a malformed message | Wait for the standard attestation window; check status via the official tracker, not a third-party relay site |
| Gas estimation fails on the destination chain | Insufficient native gas token on the destination side | Fund the destination wallet with a small amount of that chain’s gas token first |
| Wrapped token doesn’t show up in wallet | Token contract not added to wallet’s token list | Add the token manually using the verified contract address from official docs |
| Approval transaction succeeds but bridge front-end still shows “not approved” | Front-end cache or wrong chain selected in wallet | Refresh, confirm your wallet is on the correct network, and re-check on a block explorer |
| Bridge UI shows a different contract address than official docs | Possible phishing clone or outdated bookmark | Stop immediately; navigate fresh from the official project website |
Advanced Tips for Teams and High-Value Transfers
If you’re moving treasury-scale funds or bridging on behalf of a team, a few extra layers of process are worth the overhead. Split large transfers into multiple smaller transactions across separate transfers rather than one large one; several 2026 DeFi security playbooks recommend this specifically to limit single-transaction exposure if a bridge or relayer misbehaves mid-transfer. Use multisig custody with a mandatory timelock for any wallet that regularly initiates large bridge transactions, so a single compromised signer can’t move funds unilaterally.
Consider routing large transfers through a centralized exchange’s own cross-chain deposit and withdrawal system instead of a public bridge when the amount justifies it. Exchanges like Binance and OKX absorb the cross-chain routing risk internally rather than passing it to you directly, which trades a custody trade-off for a bridge-exploit trade-off, worth evaluating case by case rather than assuming one is always safer.
For engineering teams building on top of a bridge protocol, integrate static analysis tools like Slither and Semgrep into your CI pipeline for any custom contract that interacts with bridge messaging, and add real-time on-chain monitoring so anomalous mint or withdrawal patterns get flagged within minutes, not discovered after the fact in a post-mortem. Fuzzing and property testing tools such as Echidna and Foundry’s built-in fuzzer catch a different class of bug than static analysis does, running thousands of randomized inputs against your contract logic to surface edge cases a manual review would miss. For the highest-value financial primitives, formal verification tools like Certora or the K-framework can mathematically prove certain invariants hold under any input, which is a heavier lift but appropriate for contracts securing large amounts of locked value.
Treasury teams should also maintain a documented incident-response runbook before they need it, not after. Know in advance who has authority to pause a contract, who can be reached at each bridge provider, and what your first three actions are if monitoring flags an anomalous withdrawal. The teams that limited losses in 2026’s bridge incidents were consistently the ones who could act within minutes rather than hours.
2026 Bridge Exploits: A Quick Reference
Seeing the pattern across real incidents makes the checklist above feel less abstract. Here’s a snapshot of the year’s major cross-chain bridge exploits so far.
| Date (2026) | Protocol | Amount | Attack Type |
|---|---|---|---|
| July 23 | Verus Protocol (Ethereum bridge) | ~$7.44 million | Bridge contract exploit draining ETH, tBTC, stablecoins, and MKR |
| July 23 | Second bridge (same day) | Contributed to $31.5M combined daily total | Cross-chain exploit |
| July 2026 | Allbridge Core (Solana) | $1.1 million | Flash-loan oracle manipulation |
| July 2026 (monthly total) | Multiple bridges | $97 million | Cross-chain bridge attacks, per KuCoin’s July security report |
| Year-to-date 2026 | At least 8 major bridge exploits | $328.6 million | Mixed: relayer logic abuse, oracle manipulation, contract exploits |
The recurring thread across nearly all of these incidents is a gap between what a bridge’s verification logic assumes and what it actually checks, whether that’s a relayer trusting a forged deposit memo or an oracle accepting a manipulated price during a flash loan. None of it requires you to understand the exploit in depth to protect yourself; it requires you to follow the checklist in this guide every time.
It’s also worth watching how bridge protocols themselves are responding. A July 28, 2026 security write-up called for standardizing verification contracts across all bridging protocols and adding more rigorous inter-chain communication checks to prevent bypass exploits, a sign that the industry is treating this year’s exploit wave as a design problem, not just a series of unlucky incidents. Until that standardization lands, the burden of catching a bad bridge falls on the checklist you run yourself, every single time you move funds between chains.
Related Coverage
- Coreum Bridge Hack Drains 200K XRP in 97 Minutes
- Hardware Wallet Security: 12 Steps After $100M Hack
- Seed Phrase Security: 12 Steps to an Offline Backup
- Smart Contract Audit: 12 Steps, 90 Min
- Bitcoin Lightning Node Setup: 12 Steps, 45 Min
For more coverage of wallet security, exchange hacks, and DeFi exploits, visit our cryptocurrency section.
Frequently Asked Questions
Is the Wormhole bridge safe to use in 2026?
Wormhole is one of the longer-running cross-chain protocols and was named among the bridges with the strongest safety records in a July 2026 industry assessment, alongside LayerZero, Chainlink CCIP, Across, and Stargate. No bridge is risk-free, so the practical answer is: it’s safe enough to use if you follow the verification and approval steps in this guide, not because any single protocol is immune to exploits.
What’s the safest way to bridge crypto between chains?
Verify the official contract address independently, check the bridge’s L2Beat risk rating and recent audit history, bridge from an isolated wallet rather than your main one, send a small test transaction first, cap your token approvals instead of granting unlimited allowances, and revoke those approvals once the transfer is done. Whether you’re using a Wormhole bridge transfer, LayerZero, Stargate, Across, or Chainlink CCIP, this same checklist applies regardless of which protocol you pick.
Why do cross-chain bridges get hacked so often?
Bridges concentrate large amounts of locked collateral behind verification logic that has to correctly connect two independent blockchains. Attackers typically target the trust assumptions in that verification, such as a relayer accepting a forged deposit or a validator multisig being compromised, rather than breaking the underlying blockchain cryptography itself.
Should I revoke my token approvals after every bridge transaction?
You don’t have to revoke after every single transfer if you bridge frequently on the same protocol, but you should review and revoke unused approvals on a recurring basis, monthly is the cadence recommended in a July 2026 bridge security guide. Tools like Revoke.cash make this a few-minute task.
What’s the difference between LayerZero and a traditional lock-and-mint bridge?
A traditional lock-and-mint bridge like Wormhole’s core design locks an asset on the source chain and mints a wrapped version on the destination chain. LayerZero doesn’t move assets directly, it’s a messaging layer that verifies and relays messages between chains using configurable Decentralized Verifier Networks, and applications built on top of it (including Stargate) implement their own asset logic using those verified messages.
Can I avoid bridges entirely by using a centralized exchange instead?
Yes, for large transfers this is a legitimate alternative. Depositing on one chain and withdrawing on another through an exchange like Binance or OKX shifts cross-chain routing risk to the exchange instead of a public bridge contract. That trades bridge-exploit risk for custodial and exchange-counterparty risk, which isn’t automatically safer, just a different risk profile worth weighing for high-value moves.
How do I know if a bridge has been properly audited?
Look for a publicly available report from a named auditing firm, dated within the last 12 months and covering the current version of the contracts you’d actually be interacting with. A “verified” or “audited” badge on a bridge’s own marketing page isn’t sufficient on its own; find and read the underlying report.
What should I do if a bridge transaction is stuck for hours?
Check your source-chain transaction hash on a block explorer to confirm it actually confirmed. If it did, wait for the protocol’s normal attestation or finality window before assuming something is wrong. Contact official support channels directly through the project’s verified website, never through a DM or a “support” link someone sends you, and never sign a transaction or share a seed phrase to “unstick” a transfer.




