Devnet
The deployment carries the Trust Stake build. The upgrade extended the program data account from 244,088 to 329,664 bytes, and
RiskConfig is initialised at 9JEJkGp3evd8wFAztEyjPLgTaRucThLyDJ5nkwdJg9ry. The devnet gate passes against it.Redeploy checklist
1
Restore the program keypair
From
~/.config/solana/nelo/nelo_vault-program-keypair.json — see the warning below. Do not let a build generate a new one.2
Build and deploy
declare_id!, stop and restore the keypair rather than editing the id.3
Initialise the risk config — once per deployment
redeem_voucher requires the RiskConfig PDA at seeds [b"risk"]. No voucher can redeem until it exists.Validated on the way in: stake_reference != 0 (it divides), hard_cap != 0 (a zero cap refuses every voucher on the platform), haircut_bps <= 10_000, unstake_cooldown >= 24h.4
Re-run the devnet gate
The program keypair
Authorities, and why they are separate
They are deliberately different keys. Publishing a stake price is an operation that happens often, and it must not need the key that can replace the program.
update_risk_config carries an authority field, so rotation needs no extra instruction.
Three authorities were specified to be generated separately from the start — program, enrolment, risk. Keeping them apart after the fact is much harder than starting that way.
The apps
Both are Expo development builds. Expo Go cannot load them —@nelo/attest is a native module.
Release
Not yet done, and week-4 work:- Signed release APK. Done when it installs from scratch on a handset that has never had a dev build, and completes a sale.
- dApp Store publish. Requires a Publisher Portal account and a funded keypair.
- Repo clean.
git clone→pnpm install→anchor testgreen on a machine that has never seen the project. Done when someone outside the team does exactly that and it works.