Skip to content

allinbits/vaas

Repository files navigation

VAAS - Validator-as-a-Service

vaas is a simplified implementation of the Interchain Security (ICS) protocol, derived from interchain-security. It provides core cross-chain validation functionality while removing complex features not needed for simpler deployments.

Overview

VAAS allows Cosmos blockchains to lease their proof-of-stake security to consumer chains. All active validators on the provider chain automatically validate all consumer chains - there is no opt-in/opt-out mechanism.

IBC v2 only

VAAS uses IBC v2 exclusively — no channel handshake, no port reservations. The provider and consumer modules register on ibcRouterV2 under the application IDs vaasprovider and vaasconsumer. After a consumer launches, a relayer (the localnet and e2e suites use ts-relayer) creates an IBC v2 client on each chain pointing at the counterparty and registers the path. The provider then discovers its consumer client at the next epoch boundary; all VSC packets flow over that client. Wiring VAAS into a host app just means adding the v2 routes — see app/provider/app.go and app/consumer/app.go for reference.

Features

Kept from ICS

Feature Description
Consumer Lifecycle Full lifecycle management (REGISTERED → INITIALIZED → LAUNCHED → STOPPED → DELETED)
Key Assignment Validators can use different consensus keys per consumer chain
Per-Consumer Infraction Parameters Customizable slash/jail parameters per consumer
VSC Packets Validator set updates sent at epoch boundaries
Double Voting Evidence Handle double voting evidence from consumers
Light Client Misbehavior Detection and logging of misbehavior
Consumer Metadata Name, description, metadata for chain discovery
Client/Connection Reuse Reuse existing IBC client when creating consumer

Removed from ICS

Feature Reason
Partial Set Security (PSS) All validators validate all consumers
Top N / Opt-In Chains No validator selection per consumer
Power Shaping No caps, allowlists, denylists, priority lists
Consumer Reward Distribution No cross-chain rewards
Slash Packet Throttling Simplified slash handling
Per-Consumer Commission Rates Validators use same commission as provider
IBC v1 Channel Support IBC v2 only
Standalone-to-Consumer Changeover Not currently supported (future work)

See docs/consumer-transition.md for the consequences and requirements of a future standalone-to-consumer transition.

Build & Test

make build              # go build ./...
make test               # unit tests (excludes e2e)
make lint               # golangci-lint

# E2E (Docker-based, spins up provider + consumer + ts-relayer)
make docker-build-all
make test-e2e

Documentation

Learn More

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages