Skip to content

Cluster addresses

FieldValue
Program IDALEAydzHd4cN2EWcdHKp4hehAE4B88b16gqVtVqsck2U
Config PDA6anALRxD98Tw7zbA9d5i4NJfTvxDsNBHohHVJWxv2Xm8
Config PDA seeds[b"config"]
LoaderBPFLoaderUpgradeab1e11111111111111111111111
BPFLoader upgrade authoritySingle deployer keypair today. Planned transfer to Squads multisig and eventual immutability, no fixed timeline.
Config.authoritySame deployer keypair. Gates update_config; persistent (not init-only). Planned rotation alongside the upgrade-authority transfer.
Binary SHA-2568965062489fdcdbb538597545fc6692f3f580d770d34f2d42000a70560984b1c
Sourcegithub.com/alea-drand/alea
Releasegithub.com/alea-drand/alea/releases

Mainnet deploy is next. The program ID will be the same vanity address (ALEAydzHd4cN2EWcdHKp4hehAE4B88b16gqVtVqsck2U) and the same Config PDA seeds ([b"config"]). The Config PDA address is therefore the same on both clusters. The binary SHA and Config’s contents (public key, chain hash) will be published here on deploy day.

Governance plan (deployer keypair today, planned multisig + eventual immutability with no fixed timeline) is covered in Security model.

FieldValue
Chainevmnet
Chain hash04f1e9062b8a81f848fded9c12306733282b2727ecced50032187751166ec8c3
Period3 seconds
Genesis2024-09-28T13:37:55Z (Unix 1727521075)
Group public key128 bytes uncompressed G2 — full hex in sdk/typescript/src/idl/alea_verifier.json
Drand REST (chain-explicit, use this)https://api.drand.sh/04f1e9062b8a81f848fded9c12306733282b2727ecced50032187751166ec8c3/public/latest
Fallback endpointsapi2.drand.sh, api3.drand.sh, drand.cloudflare.com, api.drand.secureweb3.com:6875

Alea verifies evmnet signatures only. Other drand chains (mainnet BLS12-381, fastnet, quicknet) will revert with WrongChainHash (6007) or InvalidSignature (6000).

import {
DEVNET_PROGRAM_ID,
DRAND_CHAIN_HASH,
DRAND_GENESIS_TIME,
DRAND_PERIOD,
getConfigAddress,
} from "@alea-drand/sdk";
console.log(DEVNET_PROGRAM_ID.toBase58());
// ALEAydzHd4cN2EWcdHKp4hehAE4B88b16gqVtVqsck2U
console.log(getConfigAddress().toBase58());
// 6anALRxD98Tw7zbA9d5i4NJfTvxDsNBHohHVJWxv2Xm8
console.log(DRAND_CHAIN_HASH);
// 04f1e9062b8a81f848fded9c12306733282b2727ecced50032187751166ec8c3
use alea_sdk::{PROGRAM_ID, config_pda};
println!("{}", PROGRAM_ID);
// ALEAydzHd4cN2EWcdHKp4hehAE4B88b16gqVtVqsck2U
let (config, bump) = config_pda(&PROGRAM_ID);
println!("{} (bump {})", config, bump);
// 6anALRxD98Tw7zbA9d5i4NJfTvxDsNBHohHVJWxv2Xm8 (bump ...)

The binary is deterministic. To check that the code at github.com/alea-drand/alea matches what’s running on devnet:

Terminal window
git clone https://github.com/alea-drand/alea
cd alea
cargo build-sbf --workspace --release
sha256sum target/deploy/alea_verifier.so
# 8965062489fdcdbb538597545fc6692f3f580d770d34f2d42000a70560984b1c

If your local build produces a different SHA, file an issue — any non-deterministic build is a problem we want to know about immediately.

To verify what’s on-chain:

Terminal window
solana program dump ALEAydzHd4cN2EWcdHKp4hehAE4B88b16gqVtVqsck2U /tmp/onchain.so --url devnet
sha256sum /tmp/onchain.so
# Should match the build SHA above.