StellarHyperion / stellarhyperion-contracts
git clone https://github.com/StellarHyperion/stellarhyperion-contracts.git
Cross-chain router contracts for Stellar and EVM networks, with CCTP, Axelar, and Allbridge integrations.
—
stars, 24h
—
stars, 7 days
+148
stars, 30 days · #1,624
148
★ total
15
forks · 8 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguageRust
License—
Created2026-09-26 (24d ago)
Last push1d ago
Watchers0
OwnerOrganization
GitHub topics
Links
- GitHub: github.com/StellarHyperion/stellarhyperion-contracts
- Releases · Issues · Hacker News mentions
README excerpt
# Hyperion contracts The on-chain half of Hyperion: a router on Stellar, a router on the EVM side, and one adapter per rail they route over. Hyperion is not a bridge. It never decides for itself that a cross-chain message is real. It hands transfers to rails that already made that decision and were audited for it, and it keeps the bookkeeping, the limits, the fee and the claims. `bridge_in` only ever acts on a call from the underlying rail's own verifier, and there is no path in this repository by which Hyperion attests anything. That is a smaller promise than most bridges make, and it is the reason the code looks the way it does. There is no validator set here, no multisig signing messages, no light client. What there is instead is a lot of arithmetic that has to be exactly right, four rails that each behave slightly differently, and three implementations of the same wire formats that have to agree. ## Organization overview The StellarHyperion organization divides cross-chain routing across three dedicated repositories: | Repository | Purpose | Core Technologies | |---|---|---| | `stellarhyperion-contracts` | On-chain routers, adapters, and shared protocol SDK | Soroban (Rust), EVM (Solidity, Foundry), TypeScript | | `stellarhyperion-backend` | Event indexer, rail pollers, keeper upkeep, and REST API | Fastify, Postgres, Redis, BullMQ, viem, stellar-sdk | | `stellarhyperion-frontend` | User interface, live switchyard, and transfer tracker | Next.js 16, React 19, CSS modules, wagmi, Stellar Wallets Kit | Each repository maintains independent continuous integration, dependency definitions, and issue governance while sharing protocol constants and wire codecs from `@hyperion/protocol`. ## What is in the box [code] ## The test suites | Tree | Tests | Run it with | |---|---|---| | Soroban | 380 | `cd soroban && cargo test --workspace` | | EVM | 365 | `cd evm && FOUNDRY_PROFILE=ci forge test` | | Protocol package | 300 | `cd packages/protocol && npm run check` | All 1,045 pass. The EVM suite includes fuzz tests at twenty thousand runs each, which is why it takes a minute and a half. The number worth more than the total is in the protocol package: `test/parity.test.ts` reads the Rust and the Solidity off disk and fails if the error numbering, the route tags, the address kinds, the quote blockers, the CCTP offsets, the SEP-23 version bytes, the note layout or the fee and decimal ceilings have drifted apart. Three implementations of one wire format is the actual risk in this design, and that test is what turns drift into a red branch rather than a transfer that arrives somewhere unexpected. ## Things that are easy to get wrong, and what was done about them **A Stellar address is not a 32 byte key.** It is a string with a CRC16 over its own contents, and a bridge is the one place where an undetected flipped bit means funds delivered to an address nobody on earth holds a secret for. So the string travels all the way to the contract and the checksum is ve