unionlabs/union
The trust-minimized, zero-knowledge bridging protocol, designed for censorship resistance, extremely high security, and usage in decentralized finance.
How union is put together
Union is a zero-knowledge interoperability protocol connecting Cosmos (IBC) chains with EVM chains (Ethereum, Arbitrum, Berachain, Base, BSC) and others. It is a large polyglot monorepo: a Rust cargo workspace dominates (the voyager relayer with pluggable state/proof/client/finality modules and plugins, CosmWasm light clients and contracts, extensive lib/* support crates), a Go node implementation (uniond on CometBLS plus the 11-cometbls IBC light client module), a Go ZK prover (galoisd using Gnark), Solidity EVM contracts under evm/, and TypeScript frontends (app2 in SvelteKit, site in Astro, ts-sdk packages). Data flow: chain events are observed by voyager modules/plugins, proven via ZK or storage proofs, and submitted to counterparty chains through light clients deployed per ecosystem; deployments/*.json pin contract addresses and channel configurations. Builds are fully reproducible via Nix flakes.
Languages
Frameworks
Datastores
Infrastructure
Major components
voyager
Modular cross-ecosystem relayer built as a plugin system of state/proof/client/client-bootstrap/finality modules plus event-source, transaction, batching, filtering, and timeout plugins.
11-cometbls + uniond/galoisd (Go)
CometBLS-based Cosmos SDK node and its IBC light client module, with the Gnark-based zero-knowledge consensus prover service (galoisd).
cosmwasm/
CosmWasm smart-contract stack including per-chain light clients (ethereum, cometbls, arbitrum, base, berachain, sui, starknet, etc.), UCS03 zkgm token transfer app, access-manager/upgradable/pausable governance contracts, and LST/token-minter contracts.
evm/
Solidity EVM smart-contract stack for IBC-style message passing and bridged tokens, built with Foundry.
lib/* verifiers & light-client-types
Rust verification logic and typed data structures for each consensus protocol (cometbls-groth16-verifier, ethereum-sync-protocol, base/bob/arbitrum/parlia/sui/starknet/gno/tendermint verifiers) shared by relayer and clients.
app2 (app.union.build)
SvelteKit frontend for transfers/faucet using @unionlabs/sdk packages, wagmi/viem for EVM wallets, CosmJS for Cosmos wallets, Supabase-backed dashboard, OpenTelemetry instrumentation.
ts-sdk / ts-sdk-evm / ts-sdk-cosmos / ts-sdk-sui
TypeScript SDKs (Effect-based) exposing Union's cross-chain functionality to external consumers.
mpc/, drip/, unionvisor/, devnet tooling
MPC client/coordinator services, Cosmos faucet service, Rust node supervisor for production validators, and devnet/e2e composition utilities.
A new storage-slot tool shipped alongside a fix to a validator-count check in the polling system.
This week's work on the union repo focused on two targeted improvements: a new developer tool for computing Solidity storage slots, and a correctness fix in the galoisd signature verification logic. Together they make the tooling more capable and tighten a security-relevant check.
Feature
New 'u slot' command for Solidity storage slots
The u command-line tool gained a subcommand that computes Solidity storage slot locations, saving developers from doing this error-prone calculation by hand.
Fix
Corrected signature and validator count check in Poll
Fixed a bug in galoisd where the check comparing signatures against the number of validators could be evaluated incorrectly, improving the reliability of vote verification.
Dependencies and code review
Dependency advisories
Security Watch
No known advisories across 0 scanned dependencies.
No known advisories in the scanned dependencies.
Code review
No concrete code-level issues confirmed.
Get this report every week for your repos.
GitZoid learns each repo, reports what changed, and flags what needs attention. One flat price for the whole team.
$19 a month, flat · First 10 outputs free · No card required