06Data Flow
architecturedata-floweventsindexerclobjourney
Data Flow
🏠 Home > Architecture > Data Flow
Four primary data flows drive the Aurellion protocol. Each starts at the frontend, passes through smart contracts, emits events, gets indexed by Ponder, and is read back by the frontend.
1 — Asset Tokenisation Flow
sequenceDiagram
participant NO as Node Operator
participant FE as Frontend
participant SC as Diamond (AssetsFacet)
participant IDX as Ponder Indexer
NO->>FE: Fill tokenisation form
FE->>SC: nodeMint(account, assetDef, amount, class, data)
SC->>SC: validNode() — check ownerNodes[msg.sender]
SC->>SC: isClassActive[keccak256(class)]
SC->>SC: tokenId = uint256(keccak256(abi.encode(asset)))
SC->>SC: _mint(account, tokenId, amount, data)
SC-->>FE: Emit MintedAsset(account, hash, tokenId, name, class)
IDX->>IDX: Store in mintedAssetEvents table
FE->>IDX: Query mintedAssetEventss
IDX-->>FE: Token list with metadata2 — CLOB Order Matching Flow
sequenceDiagram
participant BU as Buyer
participant SE as Seller
participant OR as OrderRouterFacet
participant CB as CLOBCoreFacet
participant CM as CLOBMatchingFacet
BU->>OR: placeOrder(tokenId, qty, price, BUY, GTC)
OR->>CB: Validate & encode PackedOrder
CB->>CB: Escrow AURA (price × qty)
CB-->>OR: Emit RouterOrderPlaced
SE->>OR: placeOrder(tokenId, qty, price, SELL, GTC)
OR->>CM: Check order book — cross detected
CM->>CM: Match at resting order price
CM->>CM: Transfer tokens to buyer
CM->>CM: Transfer AURA to seller (minus fees)
CM-->>OR: Emit TradeExecuted3 — Unified Order (Bridge + Logistics) Flow
BridgeFacet.createUnifiedOrder()
│
│ Buyer submits order — AURA escrowed
▼
TRADE_MATCHED
│
│ CLOBMatchingFacet fills the order at resting price
▼
UNIFIED_LOGISTICS_CREATED
│
│ AuSys assigns route — nodes selected, driver dispatched
▼
UNIFIED_IN_TRANSIT
│
│ Driver picks up physical commodity — GPS proof submitted
▼
UNIFIED_DELIVERED
│
│ EIP-712 signed delivery confirmation verified on-chain
▼
UNIFIED_SETTLED
Buyer receives ERC-1155 tokens
Seller receives AURA (minus fees)4 — RWY Staking Flow
createOpportunity() + stakeOnOpportunity()
│ │
│ Operator puts up │ Stakers add yield capital
│ ≥20% collateral │ up to promisedYieldBps cap
└────────────────┬────────┘
│
▼
FUNDED
collateral + stakes ≥ target amount
│ │
│ Operator starts │ Deadline passes
│ commodity journey │ underfunded
▼ ▼
PROCESSING CANCELLED
in transit all funds refunded
│
▼
PROFIT_DISTRIBUTED
├── Operator receives commodity sale proceeds
├── Stakers receive promisedYield (pro-rata)
└── Protocol takes 1% feeEvent → Database Mapping
| Event | Emitter | Ponder Table |
|---|---|---|
MintedAsset |
AssetsFacet | mintedAssetEventss |
RouterOrderPlaced |
OrderRouterFacet | routerOrderPlacedEventss |
TradeExecuted |
CLOBMatchingFacet | tradeExecutedEventss |
UnifiedOrderCreated |
BridgeFacet | unifiedOrderCreatedEventss |
JourneyStatusUpdated |
AuSysFacet | journeyStatusUpdatedEventss |
OpportunityCreated |
RWYStakingFacet | opportunityCreatedEventss |
ProfitDistributed |
RWYStakingFacet | profitDistributedEventss |