vaas

module
v0.0.0-...-538a0af Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 19, 2026 License: Apache-2.0

README

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

Directories

Path Synopsis
testutil
keeper
Package keeper is a generated GoMock package.
Package keeper is a generated GoMock package.
x
vaas/consumer/types
Package types is a reverse proxy.
Package types is a reverse proxy.
vaas/provider/types
Package types is a reverse proxy.
Package types is a reverse proxy.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL