Skip to content

Built-by-Sign/event-pattern-solana

Repository files navigation

event-pattern-solana

Minimal Anchor program demonstrating an event-driven instruction pattern on Solana.

Program Summary

Program ID:

6RUz8nAPPqPmC3UHoqdrNTj3XvsXmvAwaURdQGBSUCT

The program stores a single PDA-backed state account and emits an event on instruction calls.

Account Model

EventState

  • PDA seeds: [b"state"]
  • Fields:
    • authority: Pubkey
    • count: u64

Instructions

Instruction handlers are organized under:

  • programs/event-pattern-solana/src/instructions/initialize.rs
  • programs/event-pattern-solana/src/instructions/emit_event.rs

initialize

  • Initializes EventState PDA
  • Sets:
    • state.authority = authority
    • state.count = 0

emit_event(message: String, value: u64)

  • Requires signer to match state.authority
  • Increments state.count
  • Emits TemplateEventEmitted

Events

Defined in programs/event-pattern-solana/src/events.rs:

TemplateEventEmitted {
  authority: Pubkey,
  message: String,
  value: u64,
  count: u64,
}

Errors

Defined in programs/event-pattern-solana/src/errors.rs:

  • NotOwner

Build

anchor build

Test (Bankrun)

The 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.ts

Dependencies for tests

Bankrun testing requires:

  • anchor-bankrun
  • solana-bankrun

These are included in devDependencies in package.json.

Notes

  • If you hit Rust compatibility issues with Solana toolchain (rustc 1.79.0-dev), ensure your Cargo.lock is using compatible transitive versions (notably serde_json / indexmap) before building.

About

Minimal Anchor program demonstrating an event-driven instruction pattern on Solana.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors