Where does the state live?
Your agent drew a loyalty program the way it would draw a Python service: a Program object holding a members table, with methods. On Solana one box does not exist. Tap it.
Tap the part that will not survive contact with reality — or press 1…4.
Who pays for the bytes?
Each loyalty member needs a 64-byte account. Two ways to create it. Both are used in production. Choose for a hospitality client whose guests do not own SOL.
Unbounded inside a fixed box
The merchant account layout your agent proposed. Account size is fixed when the account is created. Tap the field that fails in production.
Tap the part that will not survive contact with reality — or press 1…5.
What cannot run on-chain
Your agent’s price-check instruction, drawn as it would run on a server. Tap the step that cannot execute inside a Solana program.
Tap the part that will not survive contact with reality — or press 1…4.
Order history in one account
Your agent proposes how a merchant’s orders are stored on-chain. Judge it.
One account per merchant keeps reads simple: a single fetch gives you everything. I’ll realloc in 10 KiB steps when it fills, and the merchant pays the extra deposit on each growth.
The life of a transaction
Order the stages a Solana transaction actually goes through, from the client to committed state. Then run one.
What survives this level
| Accounts, not objects | A program is stateless code; every piece of state is an account someone created, sized and paid for. |
| Rent and rent-exemption | Storage is a refundable deposit of about 6,960 lamports per byte, locked for the life of the account; ask who pays. |
| Account sizing and realloc | Fix the size at creation or plan realloc in 10 KiB steps under a 10 MiB cap; an unbounded list never lives in one account. |
| Determinism: no floats, no wall clock, no network | No network, no randomness, no std::time, floats are slow: anything from outside arrives as a signed account. |
| Program-derived addresses and program-owned authority | A PDA is an address only the program can sign for; use it wherever the program, not a person, is the authority. |
| Compute-unit and transaction-size limits | 1,232 bytes and 1.4M compute units per transaction; design accounts so the common path fits in one. |
| Oracles and off-chain truth | Off-chain truth enters only through someone’s signed account; name that someone and what you trust them with. |