Minimal Anchor program demonstrating an event-driven instruction pattern on Solana.
Program ID:
6RUz8nAPPqPmC3UHoqdrNTj3XvsXmvAwaURdQGBSUCT
The program stores a single PDA-backed state account and emits an event on instruction calls.
- PDA seeds:
[b"state"] - Fields:
authority: Pubkeycount: u64
Instruction handlers are organized under:
programs/event-pattern-solana/src/instructions/initialize.rsprograms/event-pattern-solana/src/instructions/emit_event.rs
- Initializes
EventStatePDA - Sets:
state.authority = authoritystate.count = 0
- Requires signer to match
state.authority - Increments
state.count - Emits
TemplateEventEmitted
Defined in programs/event-pattern-solana/src/events.rs:
TemplateEventEmitted {
authority: Pubkey,
message: String,
value: u64,
count: u64,
}Defined in programs/event-pattern-solana/src/errors.rs:
NotOwner
anchor buildThe test suite uses Bankrun-style provider setup (startAnchor + BankrunProvider) and verifies event parsing with EventParser.
Run the focused test:
yarn run ts-mocha -p ./tsconfig.json -t 1000000 tests/event-pattern-solana.tsBankrun testing requires:
anchor-bankrunsolana-bankrun
These are included in devDependencies in package.json.
- If you hit Rust compatibility issues with Solana toolchain (
rustc 1.79.0-dev), ensure yourCargo.lockis using compatible transitive versions (notablyserde_json/indexmap) before building.