Cluster addresses
Devnet — live
Section titled “Devnet — live”| Field | Value |
|---|---|
| Program ID | ALEAydzHd4cN2EWcdHKp4hehAE4B88b16gqVtVqsck2U |
| Config PDA | 6anALRxD98Tw7zbA9d5i4NJfTvxDsNBHohHVJWxv2Xm8 |
| Config PDA seeds | [b"config"] |
| Loader | BPFLoaderUpgradeab1e11111111111111111111111 |
| BPFLoader upgrade authority | Single deployer keypair today. Planned transfer to Squads multisig and eventual immutability, no fixed timeline. |
Config.authority | Same deployer keypair. Gates update_config; persistent (not init-only). Planned rotation alongside the upgrade-authority transfer. |
| Binary SHA-256 | 8965062489fdcdbb538597545fc6692f3f580d770d34f2d42000a70560984b1c |
| Source | github.com/alea-drand/alea |
| Release | github.com/alea-drand/alea/releases |
Mainnet — pending
Section titled “Mainnet — pending”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.
Drand chain (embedded in Config PDA)
Section titled “Drand chain (embedded in Config PDA)”| Field | Value |
|---|---|
| Chain | evmnet |
| Chain hash | 04f1e9062b8a81f848fded9c12306733282b2727ecced50032187751166ec8c3 |
| Period | 3 seconds |
| Genesis | 2024-09-28T13:37:55Z (Unix 1727521075) |
| Group public key | 128 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 endpoints | api2.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).
SDK programmatic access
Section titled “SDK programmatic access”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);// 04f1e9062b8a81f848fded9c12306733282b2727ecced50032187751166ec8c3use alea_sdk::{PROGRAM_ID, config_pda};
println!("{}", PROGRAM_ID);// ALEAydzHd4cN2EWcdHKp4hehAE4B88b16gqVtVqsck2U
let (config, bump) = config_pda(&PROGRAM_ID);println!("{} (bump {})", config, bump);// 6anALRxD98Tw7zbA9d5i4NJfTvxDsNBHohHVJWxv2Xm8 (bump ...)Verifying what’s deployed
Section titled “Verifying what’s deployed”The binary is deterministic. To check that the code at github.com/alea-drand/alea matches what’s running on devnet:
git clone https://github.com/alea-drand/aleacd aleacargo build-sbf --workspace --releasesha256sum target/deploy/alea_verifier.so# 8965062489fdcdbb538597545fc6692f3f580d770d34f2d42000a70560984b1cIf 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:
solana program dump ALEAydzHd4cN2EWcdHKp4hehAE4B88b16gqVtVqsck2U /tmp/onchain.so --url devnetsha256sum /tmp/onchain.so# Should match the build SHA above.Related
Section titled “Related”- Architecture — what the program does
- Testing & guarantees — what testing the binary has
- Program interface — raw wire format for the verify instruction