Skip to content

Conversation

@frenzox
Copy link

@frenzox frenzox commented Jan 12, 2026

Description

Drive-by changes

Related issues

Backward compatibility

Testing

Implements Task 1.6 - Validator Announce for Hyperlane Cardano.

Added CLI commands:
- `validator announce`: Register storage location on-chain
- `validator show`: Display current validator announcements

Features:
- Parametrizes ValidatorAnnounce script with mailbox policy/domain
- Supports creating new announcements and updating existing ones
- Automatically creates seed UTXO if needed for new announcements
- Dry-run mode for previewing transactions

Tested on Preview Testnet:
- Create: TX 46bfd2caa51902460a23369e395898ed3f247eeacc185ba081d90ab760e27a97
- Update: TX 2e792decb62913fcf571165fea245b9fb70eae8208077358757c3c47cb5b2367
The original validator announce implementation used Cardano's native
ed25519 verification key hash as the validator identity. This broke
cross-chain interoperability because ISMs on other chains (Ethereum,
Cosmos, etc.) cannot verify ed25519 signatures - they expect secp256k1
ECDSA signatures with Ethereum addresses.

Hyperlane validators must use a consistent identity across all chains
so that any chain's ISM can verify their signed checkpoints. This
requires using secp256k1 keys (same as Ethereum) and deriving the
validator identity as a 20-byte Ethereum address.

Changes:
- Contract: Add ECDSA secp256k1 signature verification via CIP-49
- Contract: Validator identity is now 20-byte Ethereum address
- Contract: Announcement digest matches EVM format (EIP-191)
- CLI: Add --validator-key option for secp256k1 private key
- CLI: Fix signing to use sign_prehash (digest is already hashed)
- CLI: Separate Cardano key (tx fees) from validator key (identity)

Bug fixes:
- Fixed typo in announcement string: "HYPERTRNE" -> "HYPERLANE"
- Fixed CLI double-hashing: sign() hashes internally, need sign_prehash()

Tested on Preview testnet:
- Create: TX 79484fd7e370b4ffbd0861d4b92f1b3ac68d0cad5fd87f62fa33910d4d0ca035
- Update: TX dbdd64a8b5d146c470b33dc41994f9b79f39d92205aeb9c7de7ef8eb7090834c
@frenzox frenzox changed the title Feat/validator announce feat: validator announce Jan 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants