The three pieces of the Sui stack Pinaivu depends on
| Piece | What it is | What Pinaivu uses it for |
|---|---|---|
| Move | Sui’s resource-oriented smart contract language — assets are typed objects with linear-logic ownership, not balances in a mapping | pinaivu::vault’s Balance<T> and settled dedupe table can’t be double-spent or re-entered by construction; a Coin<T> either exists once or it doesn’t |
| Nautilus | Sui’s native framework for registering AWS Nitro Enclave attestations on-chain (0x2::nitro_attestation) and verifying enclave-signed payloads in the Move VM | This is pinaivu::enclave — register_enclave, update_pcrs, verify_signature<ENCLAVE, P> are built directly on Sui’s attestation primitive, not a custom oracle Pinaivu had to invent |
| Walrus | Sui’s affiliated decentralized blob storage network, with blob certification and lifecycle tied to Sui objects | The routing-receipt archive and chat session/memory blobs — see Decentralization & verifiability model §3 |
Why settlement to node operators specifically needs Sui’s object model
Two properties of how Sui handles assets matter for paying GPU node operators, and neither is free on an account-balance chain:- A payee needs zero SUI to receive a payout.
pinaivu::vault::settletransfers aCoin<T>object directly to the payee’s address. The coordinator’s operator key pays the gas for that transaction — the node operator’s address doesn’t need to hold any gas token, exist on-chain beforehand, or sign anything to receive funds. On an account-balance model where every address needs a funded balance just to exist or to later move what it received, onboarding a new GPU node operator would require a funding step before their first payout even works. - Settlement isn’t pinned to a volatile gas token.
Vault<phantom T>is generic over the coin type — the samesettle()logic works whetherTis0x2::sui::SUIor a native stablecoin issued on Sui (e.g. USDC). A node operator can be paid in a stable asset for predictable earnings without Pinaivu needing a second settlement path; it’s the same Move module, topped up with a different coin type viatop_up<T>.
Coin<T> objects instead of balance entries.
This describes the settlement mechanism’s capability, not a claim that
every node operator is being paid in a stablecoin today — which coin type
funds a given
Vault<T> is an operational choice made at new_vault<T> /
top_up<T> time. See On-chain contracts.The shape of the dependency
On-chain contracts
pinaivu::enclave, receipts, vault — the Move side of this pageDecentralization & verifiability model
Where Nautilus and Walrus fit into the bigger trust picture