Use this page as the navigation hub for the docs. Each chapter ends with Prev/Next links.
- 00 Setup + Quickstart
- 01 Repo Layout + How to Navigate
- 02 Mental Model Shift
- 03 EVM → Sui Cheatsheet
- 16 Object Ownership + Versioning
- 04 Localnet + Publish
- 05 Localnet workflow (end-to-end)
- 06 Scripts reference (CLI)
- 07 Shop Object + Capability Auth
- 08 Listings + Typed Receipts
- 09 Currencies + Oracles
- 10 Discounts + Tickets
- 17 PTBs + Gas + Fees
- 11 UI reference (setup + localnet execution)
- 12 Buyer Flow + UI
- 13 Owner Console + Admin Flows
- 14 Advanced (execution model + upgrades)
- 15 Testing (integration + unit + script framework)
- 18 Data Access + Indexing
- 19 Moving to Testnet/Mainnet
- 20 Security & Gotchas
- 21 Troubleshooting
- 22 Glossary
- I want a local chain and published package -> 05 Localnet workflow (end-to-end)
- I want to understand shared objects + tables/dynamic fields -> 07 Shop Object + Capability Auth then 08 Listings + Typed Receipts
- I want to wire currencies + oracles -> 09 Currencies + Oracles
- I want the UI flow -> 11 UI reference (setup + localnet execution) then 12 Buyer Flow + UI
- I want tests -> 15 Testing (integration + unit + script framework)
- I want object ownership + versioning -> 16 Object Ownership + Versioning
- I want PTBs and gas details -> 17 PTBs + Gas + Fees
- I want data access and indexing -> 18 Data Access + Indexing
- I want a full setup checklist -> 00 Setup + Quickstart
- /reading/move-readme (shared object + marker deep dive)
- /reading/ui-readme (UI setup and localnet execution)
README.md(repo overview + scripts)
| Concept | Why it matters | Code anchor | Docs |
|---|---|---|---|
| Shared objects | Concurrency boundary; avoid global storage contention | packages/dapp/contracts/oracle-market/sources/shop.move (Shop, Discount) |
docs/07-shop-capabilities.md, docs/08-listings-receipts.md |
| Address-owned objects | Capabilities and receipts live in wallets | packages/dapp/contracts/oracle-market/sources/shop.move (ShopOwnerCap, ShopItem) |
docs/07-shop-capabilities.md, docs/08-listings-receipts.md |
| Object-owned children | Table entries are owned by parent objects | packages/dapp/contracts/oracle-market/sources/shop.move (Shop.listings/accepted_currencies/discounts table entries) |
docs/08-listings-receipts.md, docs/10-discounts-tickets.md |
| Ownership types | Fastpath vs consensus trade-offs | packages/tooling/core/src/object-info.ts (owner labels) |
docs/16-object-ownership.md |
| Capabilities | Explicit admin auth via owned objects | packages/dapp/contracts/oracle-market/sources/shop.move (ShopOwnerCap) |
docs/07-shop-capabilities.md |
| Dynamic fields / Table | Typed collections in Shop for listings, currencies, and discounts |
packages/dapp/contracts/oracle-market/sources/shop.move (Table<ID, ItemListing>, Table<TypeName, AcceptedCurrency>, Table<ID, Discount>) |
docs/08-listings-receipts.md, docs/10-discounts-tickets.md |
| Type tags / TypeName | Runtime type names for listings and coins; compile-time safety still comes from generics | packages/dapp/contracts/oracle-market/sources/listing.move (item_type) |
docs/08-listings-receipts.md, docs/09-currencies-oracles.md |
| Phantom types | Typed receipts without storing the value | packages/dapp/contracts/oracle-market/sources/listing.move (ShopItem<phantom T>) |
docs/08-listings-receipts.md |
Coin<T> resources |
Payment as objects, not allowances | packages/dapp/contracts/oracle-market/sources/shop.move (process_purchase, split_payment, buy_item) |
docs/09-currencies-oracles.md |
| Coin registry | Trusted metadata for decimals/symbols | packages/dapp/contracts/oracle-market/sources/shop.move (add_accepted_currency) |
docs/09-currencies-oracles.md |
| Oracle objects (Pyth) | Price feeds are objects with guardrails | packages/dapp/contracts/oracle-market/sources/shop.move (quote_amount_for_price_info_object) |
docs/09-currencies-oracles.md |
| Clock | Trusted time for windows and freshness | packages/dapp/contracts/oracle-market/sources/shop.move (now_secs) |
docs/09-currencies-oracles.md, docs/10-discounts-tickets.md |
| PTB composition | Oracle update + buy in one transaction | packages/domain/core/src/flows/buy.ts (buildBuyTransaction) |
docs/12-buyer-ui.md |
| PTB limits + gas | Batching and gas coin handling | packages/domain/core/src/flows/buy.ts (maybeSetDedicatedGasForSuiPayments) |
docs/17-ptb-gas.md |
| Events | Typed logs for UI and indexers | packages/dapp/contracts/oracle-market/sources/shop.move (PurchaseCompleted) |
docs/14-advanced.md |
| TxContext | Object creation and coin splits | packages/dapp/contracts/oracle-market/sources/shop.move (object::new, split_payment) |
docs/14-advanced.md |
| Publisher / init | Publish-time metadata | packages/dapp/contracts/oracle-market/sources/shop.move (init, package::claim_and_keep) |
docs/04-localnet-publish.md |
| UpgradeCap | Package upgrades and access control | packages/dapp/deployments/deployment.localnet.json |
docs/04-localnet-publish.md, docs/14-advanced.md |
| test_only helpers | Test scaffolding without prod entry points | packages/dapp/contracts/oracle-market/sources/shop.move (#[test_only]) |
docs/14-advanced.md |
| Data access | Objects + events + table-entry reads in UI | packages/domain/core/src/models/shop.ts (event queries) |
docs/18-data-access.md |