How aruku-interactive/ifm-smart-contracts works
This is a Soroban smart-contract template with sample admin, player-minting, public-transfer, and user-account functionality. Its visible mint flow checks for an existing player, stores a new player, and publishes a mint event; user transfer-count helpers read and update user records. The README describes the contract as the runtime entry point, but the available excerpts do not show its dispatch wiring. Several capabilities are represented by source paths named in the index but not inspected, so their internal relationships are omitted.
Main entry points: storage/player.rs Player storage · user.rs User storage · events/player.rs Player event · mint_player.rs Mint player
Components 18
Contract entry
- Contract API
src/contract.rs
Contract methods
- Mint player
src/methods/player/mint_player.rs - Set admin
src/methods/admin/set_admin.rs - Initialize
src/methods/public/initialize.rs - Transfer
src/methods/public/transfer.rs - User records
src/methods/user/user.rs
State and types
- Admin storage
src/storage/admin.rs - Player storage
src/storage/player.rs - User storage
src/storage/user.rs - Storage keys
src/storage/types/storage.rs - Player type
src/storage/types/player.rs - User type
src/storage/types/user.rs - Contract errors
src/storage/types/error.rs
Events
- Admin event
src/events/admin.rs - Contract events
src/events/contract.rs - Player event
src/events/player.rs
Other components
- Contract caller
- Soroban event host
Connections 10
- Mint player → Player storage: checks and stores
src/methods/player/mint_player.rs - Mint player → Player event: publishes mint
src/methods/player/mint_player.rs - Player event → Soroban event host: publishes event
src/events/player.rs - Admin event → Soroban event host: publishes event
src/events/admin.rs - User records → User storage: reads and writes
src/methods/user/user.rs - Player storage → Storage keys: uses player key
src/storage/player.rs - User storage → Storage keys: uses user key
src/storage/user.rs - Player storage → Player type: stores player
src/storage/player.rs - User storage → User type: stores user
src/storage/user.rs - Player event → Player type: publishes player data
src/events/player.rs