Back
+20 XP
6/12
Challenge: Derive Multiple Related PDAs in Rust
Real Anchor programs often derive multiple PDAs per user — profile, stats, vault, etc. Each uses different seed prefixes but the same user key.
Using the simulated PDA derivation from earlier, derive 3 related PDAs and return their hashes as a tuple.
Your Task
Implement derive_user_pdas(user, program_id) that:
- Derives a user PDA with seeds
["user", user] - Derives a stats PDA with seeds
["stats", user] - Derives a vault PDA with seeds
["vault", user] - Returns
(user_hash, stats_hash, vault_hash)as a(u64, u64, u64)tuple
A helper find_pda is provided — use it to derive each PDA.
Requirements:
- All three hashes must be off-curve (even)
- All three must be different from each other
- Same inputs must always produce same outputs (deterministic)
Test Cases
All PDAs should be off-curve (even hashes)
Input:
"alice", "prog1"Expected: __result__.0 % 2 == 0 && __result__.1 % 2 == 0 && __result__.2 % 2 == 0All three PDAs should be different
Input:
"alice", "prog1"Expected: __result__.0 != __result__.1 && __result__.1 != __result__.2