Skip to main content

Sui Wallet Exploration

How do safety standards actually get written?

Not from committees. From the workshop floor, after someone gets hurt.

The Incident

On January 2, 2026, an official Solana Mobile notification deleted a seed phrase without warning. ~$10K gone. No confirmation dialog, no balance check, no recovery path. Support ran 33 days without resolution.

In a factory, that's a near-miss report. It becomes a procedure. The procedure becomes a standard. The standard prevents it from happening to anyone else.

The Standard

The response was not a complaint. It was architecture — five safety patterns built for Solana, now adapted for Sui. Not a port. A rethink. Because Sui's object model and Move language prevent entire categories of failure at the language level.

This is the knowledge stack in action:

StageWhat HappenedWhat It Becomes
PainSeed phrase deleted, $10K lostThe observation that reveals the gap
ProtocolFive safety patterns built for SolanaSpecific rules that prevent the failure
StandardSame patterns proven across Sui + SolanaChain-agnostic principles any wallet can adopt
PlatformOpen components, shared across venturesInfrastructure that compounds

Every safety procedure in a factory started the same way. Someone got hurt. Someone wrote it down. The write-up became the standard. The standard transformed the industry.


Benchmark-First Direction

This PRD follows a benchmark-first order:

  1. Define wallet safety benchmark checklist as deterministic landing surface
  2. Validate implementations against that checklist
  3. Compare chain implementations (Solana, Sui, EVM)
  4. Encode benchmark attestations onchain (target: Sui/Move)

Reference landing standard: Wallet Safety Benchmarks.


The Safety Thesis

Four failures from the incident. Each maps to an architectural fix:

FailureWhat HappenedSolana Fix (Built)Sui Fix (This PRD)
Silent destructionSeed deleted without warningNuclearWarningDialog — multi-step confirmation with countdownMove linear types — resources cannot be accidentally destroyed
No balance checkDestructive op ignored existing assetsBalanceAwareGuard — checks all token accountsObject ownership — assets are explicit objects, not hidden account balances
No simulationUser couldn't preview consequencesTransactionSimulator — dry-run before signPTB inspection — preview all effects of programmable transaction block
Key exposureApp touched seed phrase directlyWallet adapter pattern — app never sees keyszkLogin — Web2 credentials sign via ZKP

The principle: Safety is an architectural constraint, not a feature. The best safety code is code that doesn't need to exist because the platform prevents the failure.


Patterns

1. Connection

Solana: Wallet adapter connects, app receives only public key.

Sui: Same principle, better primitives.

ComponentWhat It DoesSui Advantage
SuiWalletConnectConnect via Sui dApp KitNative hooks, typed responses
ZkLoginConnectSign in with Google/Apple/TwitchNo wallet install — zkLogin
SponsoredSessionApp covers gas costsSponsored transactions — zero friction
ConnectionGuardVerify network + wallet stateObject-level checks, not account-level

zkLogin changes the game: Most wallet UX problems stem from the wallet itself — install friction, seed phrase management, network switching. zkLogin eliminates the wallet as a user-facing concept. Sign in with Google. Sui handles the rest.

2. Transaction Safety

Solana: TransactionSimulator dry-runs transactions and shows balance impact before signing.

Sui: PTBs make this more powerful — up to 1024 operations in one transaction, all previewable.

ComponentWhat It DoesSui Advantage
PtbInspectorVisualize all operations in a PTB before executionOne transaction, full visibility
ObjectDiffPreviewShow which objects change and howExplicit mutations, not opaque balance shifts
GasEstimatorPredict gas cost before signingPredictable fees even under load
EffectsSimulatorDry-run against current stateDev Inspect — native

The object difference: On Solana, simulation shows "your SOL goes from X to Y." On Sui, it shows "Object A (your NFT) transfers to Address B, Object C (coin) splits into Object D (payment) + Object E (change)." Explicit objects make consequences visible.

3. Destructive Operations

Solana: NuclearWarningDialog — multi-step confirmation with countdown for irreversible actions.

Sui: Move's type system adds a layer Solana can't have.

ComponentWhat It DoesSui Advantage
DestructiveOpGateMulti-step confirmation for key/object deletionDefense in depth
ObjectOwnershipCheckVerify caller owns the object before destructive actionMove has key — ownership in the type system
CooldownTransferTime-locked transfers for high-value objectsClock module — on-chain time
MoveResourceGuardDisplay: "This object cannot be accidentally destroyed"Move linear types — compile-time, not runtime

Move's structural safety: A resource with the key ability can only be transferred or stored — never silently dropped. The Solana Seed Vault incident was a "resource accidentally dropped" bug. Move makes that a compile-time error.

// A Coin<SUI> cannot be silently destroyed.
// The compiler enforces it. No UI warning needed.
public fun transfer_safely(coin: Coin<SUI>, recipient: address) {
// coin MUST go somewhere — transfer, merge, or split
// letting it drop = compile error
transfer::public_transfer(coin, recipient);
}

4. Balance Guard

Solana: BalanceAwareGuard — checks all token accounts before destructive operations.

Sui: Objects make this simpler and more complete.

ComponentWhat It DoesSui Advantage
OwnedObjectsAuditList ALL objects owned by addressOne call — suix_getOwnedObjects
ValueAtRiskCalculate total value of owned objectsNo hidden token accounts to miss
PreDestructionInventoryFull inventory before any key/account actionObjects enumerable by design

The Solana problem was hidden state. Token accounts exist but aren't visible unless you know to look. On Sui, every asset is an explicit owned object. getOwnedObjects returns everything. Nothing hides.

5. Asset Operations

Solana: Separate patterns for SPL tokens vs SOL vs NFTs.

Sui: Everything is an object. One pattern.

ComponentWhat It DoesSui Advantage
ObjectTransferTransfer any owned objectOne function: transfer::public_transfer
CoinSplitMergeSplit/merge coin objects for exact paymentsNative coin operations
NftManagerDisplay, transfer, list NFTsNFTs are objects — same as coins
KioskIntegrationList/buy/delist on marketplaceKiosk standard

Cross-Chain Comparison

Build both, learn from both:

DimensionSolanaSuiImplication
Data modelAccounts + token accountsObjects with explicit ownersSui: nothing hides. Solana: must discover accounts
SafetyRuntime checks (UI code)Compile-time (Move type system)Sui: fewer bugs possible
OnboardingWallet requiredzkLogin (no wallet)Sui: mainstream-ready
GasUser paysSponsored transactions nativeSui: app covers gas
ComposabilityCPI calls between programsPTBs (1024 ops in one tx)Sui: complex flows atomic
Speed~400ms~390msComparable
EcosystemMature, deep DeFiGrowing, strong gaming/NFTSolana: proven. Sui: higher ceiling

Architecture

Stack

┌─────────────────────────────────────────────────┐
│ SAFETY PATTERNS (UI) │
│ Connect │ Simulate │ Guard │ Balance │ Assets │
├─────────────────────────────────────────────────┤
│ SUI DAPP KIT │
│ Hooks │ Components │ Wallet Connect │ RPC │
├─────────────────────────────────────────────────┤
│ MOVE CONTRACTS │
│ Identity │ Links │ Loyalty │ Device Registry │
├─────────────────────────────────────────────────┤
│ SUI CORE │
│ Objects │ PTBs │ zkLogin │ Mysticeti (~390ms) │
└─────────────────────────────────────────────────┘

Existing Move Contracts

Already built in Stackmates:

ModuleWhat It DoesWallet Relevance
identityOn-chain identity objectsUser profile, reputation
linksObject relationship chainsAttribution, provenance
loyaltyPoints/rewards systemDisplay loyalty objects
collisionCross-domain interactionsThird-space object creation
device-registryDePIN device managementHardware wallet integration
governanceVoting and proposalsDAO participation from wallet

Each has a TypeScript client. The wallet UI wires to these.


Product Features

FeatureFunctionUser OutcomePriority
Safe Connect (SuiWalletConnect, ZkLoginConnect)Establish authenticated session without exposing keysUsers can start safely with minimal frictionMust
Transaction Preview (PtbInspector, ObjectDiffPreview)Show exactly what objects and value will change before signingFewer irreversible mistakes, clearer trustMust
Destructive Guardrails (DestructiveOpGate, ObjectOwnershipCheck)Block unsafe operations with explicit confirmation and ownership checksPrevent silent loss and accidental deletionMust
Portfolio Audit (OwnedObjectsAudit, ValueAtRisk)Enumerate all owned objects and estimate value at riskUsers understand full account exposureHigh
Asset Operations (ObjectTransfer, CoinSplitMerge, KioskIntegration)Provide safe defaults for transfer, payment, and listingUsers can act confidently, not just inspectHigh
Safety LoggingCapture near-miss and blocked-risk events for analysisSafety patterns improve over timeMedium

Business Dev

The first market is teams and apps that need trustworthy wallet UX, not speculative token users.

LayerDecisionInitial AssumptionValidation Signal
ICPWho adopts first?Sui app builders and teams integrating wallet flows5 design-partner teams
OfferWhat are we selling?Open safety pattern kit + implementation support3 production integrations
ChannelHow do we reach them?Builder communities, docs, ecosystem partnershipsQualified inbound from technical teams
ConversionWhat proves fit?Team adopts at least 2 safety components in productionIntegration completion within one cycle
RetentionWhy do they keep using it?Safety incidents decline and upgrade path stays simpleRepeat usage across new wallet flows
ExpansionHow does it compound?Cross-chain safety standard package from Sui + Solana learningsAdditional chain adaptations requested

Commercial Paths

  1. Open standard path: Free reference implementation and docs.
  2. Integration path: Paid implementation and safety review.
  3. Platform path: Bundle into Stackmates trust layer for ventures needing asset operations.

Why This Matters

Crypto products are unfriendly to non-experts. Hiding what's going on undermines the trust the technology ensures. Every wallet team navigates this tension independently. There is no shared standard.

Compare that to factory engineering. NIST, ISO, OWASP — every safety-critical industry has extractable standards that prevent known failure modes. Crypto wallets don't. Each team learns the hard way.

This PRD is the beginning of a wallet safety standard:

What factories haveWhat wallets don'tThis PRD provides
Near-miss reportingIncidents buried in support ticketsPublic documentation of failure modes
Safety proceduresEach team invents their ownFive extractable patterns with rationale
Cross-site adoptionPatterns locked inside companiesChain-agnostic principles proven on Sui + Solana
Commissioning gatesShip and hopeProgressive verification per component

The Dream-Engineering handoff: the dream is wallets that don't destroy people's assets. The standard is the spec. The engineering is building it in the open.


Commissioning

Each component progresses through the factory model:

ComponentSchemaClientUITestsStatus
SuiWalletConnectPendingPendingPendingPending0%
ZkLoginConnectPendingPendingPendingPending0%
PtbInspectorPendingPendingPendingPending0%
ObjectDiffPreviewPendingPendingPendingPending0%
DestructiveOpGatePendingPendingPendingPending0%
OwnedObjectsAuditPendingPendingPendingPending0%
ObjectTransferPendingPendingPendingPending0%
KioskIntegrationPendingPendingPendingPending0%

Pre-existing: 12 Move modules deployed to testnet. 5 TypeScript clients built. Wallet UI is the gap.


Engineering Handoff: Navigation and Safety Corrections

This section is the current RFP-style handoff from Dream repo to Engineering repo.

Job To Be Done

Make Sui safety patterns discoverable and trustworthy in the design system so teams can evaluate and adopt them without ambiguity.

Current failure mode:

  • Sui pages exist in code, but main crypto navigation hides/blocks them.
  • Some pages are presented as complete while still demo/mock.
  • A destructive operation demo bypasses ownership check.

Scope (Engineering Repo)

Primary implementation paths:

  • apps/dreamineering/drmg-design-system/src/app/_components/navigation.tsx
  • apps/dreamineering/drmg-design-system/src/app/(crypto)/crypto/page.tsx
  • apps/dreamineering/drmg-design-system/src/app/(crypto)/sui/destructive-ops/page.tsx
  • apps/dreamineering/drmg-design-system/src/app/(crypto)/sui/page.tsx

Required Outcomes

OutcomePass ConditionWhy It Matters
Sui discoverabilitySui appears in sidebar crypto section and crypto landing page links to /suiUsers can actually find and test the Sui implementation
Truthful readiness stateSui status labels reflect real state (in-progress / demo) rather than complete when mocks remainPrevents false confidence in adoption decisions
Safety integrityDestructive operations demo does not bypass ownership verification by defaultAligns with core safety thesis: architecture before UX theater
Route consistencyLegacy /onchain/solana references do not conflict with /solana and /sui route modelReduces navigation drift and maintenance errors

Commissioning Checklist (Independent Verification)

Commissioner verifies in browser and code:

  1. /crypto shows active link card to Sui (not disabled).
  2. Sidebar crypto section includes both Solana and Sui.
  3. Navigating to /sui exposes 5 pattern pages:
    • /sui/connection
    • /sui/transaction-safety
    • /sui/destructive-ops
    • /sui/balance-guard
    • /sui/asset-operations
  4. DestructiveOpGate does not use skipOwnershipCheck in default demo path.
  5. Sui readiness badges match implementation reality (demo/mock clearly labeled).

Acceptance Evidence

For delivery to be marked "ready for inspection", provide:

  • Screenshot/video of /crypto and sidebar showing Sui discoverability
  • Diff references for navigation/status changes
  • Screenshot/video of destructive op flow with ownership check enforced
  • Short note describing remaining mocked dependencies (if any) and their current status

Priority

P0 — This is a commissioning integrity issue, not a cosmetic issue.

If discoverability and safety signaling are wrong, commissioning cannot be trusted.


Lead Architect: Plan Instantiation Pack

This block is formatted for the orchestration flow in:

  • .ai/orchestration/team-operations/user-interface/
  • .ai/orchestration/team-operations/intelligence-engine/

Primary Team Route

TeamTemplateWhy
user-interfacecdd-jtbd-explorationComponent/nav wiring work in design-system app and libs
user-interfacee2e-intent-validationBrowser-proof that navigation + safety flows are realizable

Plan Metadata (for plan-cli.ts create)

Use these values when instantiating the first UI plan:

FieldValue
teamuser-interface
branchteam/ui
objective"Make Sui safety patterns discoverable and truthfully commissioned in crypto design system flows."
prdRef.pathsrc/pages/phygital-mycelium/prd-sui-wallet/index.md
prdRef.sectionEngineering Handoff: Navigation and Safety Corrections
prdRef.acceptanceCriteriaCommissioning Checklist (Independent Verification)

UI Scope Mapping

Work TypePath
Explore pagesapps/dreamineering/drmg-design-system/src/app/(crypto)/
Navigation wiringapps/dreamineering/drmg-design-system/src/app/_components/navigation.tsx
Shared UI extraction targetlibs/app-client/ui-onchain/ and related libs/app-client/*
E2E validationapps/dreamineering/drmg-sales-e2e/ (or design-system equivalent test harness)

Task Seed (Phase 1)

  1. Enable Sui discoverability on /crypto and sidebar.
  2. Remove default ownership-check bypass in destructive operations.
  3. Correct readiness labels to reflect real state (demo/mock vs complete).
  4. Align route model to avoid split between legacy and active crypto nav paths.

Cross-Team Note

If API/contract validation is required for phygital-agent flows, raise follow-up to intelligence-engine templates. UI team owns biological-flow proof through CDD and E2E, per team charter.


Onchain Benchmark Roadmap (Sui/Move)

Intent: engineer wallet safety benchmarking into verifiable onchain artifacts.

Job To Be Done

As a commissioner, I need wallet safety results represented as deterministic, auditable objects so benchmark outcomes are comparable across wallets and over time.

Proposed Move Artifacts

ArtifactPurposeDeterministic Field Examples
BenchmarkSpecVersioned definition of criteria and thresholdsspec_id, version, critical_rules
WalletSubmissionWallet/team submits implementation evidencewallet_id, chain, build_hash, evidence_uri
BenchmarkRunOne execution of benchmark suiterun_id, timestamp, executor, result_by_dimension
CertificationStateCurrent cert level for wallet/versionlevel, status, expires_at, last_run_id

Deterministic Rules

  1. Any critical-rule breach sets run status to Fail.
  2. CertificationState can only promote when required dimensions are Pass.
  3. Every state transition stores prior state reference for audit trail.
  4. Same spec version + same inputs must produce same result state.

Phase Sequence

  1. Spec Freeze: finalize checklist fields and thresholds in docs.
  2. Offchain Runner: implement repeatable benchmark runner + result schema.
  3. Move Registry: write minimal onchain package for spec/run/cert state.
  4. Dual-Chain Comparison: run Solana and Sui implementations through same spec.
  5. EVM Extension: add EVM implementation track against unchanged benchmark model.

Success Criteria

  • Benchmark checklist is single source of truth for all chain comparisons
  • Pass/Warn/Fail outcomes are reproducible
  • Certification state can be independently re-verified
  • Sui/Move implementation proves onchain auditability for wallet safety

Next Steps

1. Port TransactionSimulator → PtbInspector (highest learning)
2. Implement ZkLoginConnect (biggest UX unlock)
3. Build ObjectDiffPreview (Sui's unique advantage)
4. Wire to existing Move contracts
5. Deploy alongside Solana version for comparison

Smallest move: One component. Both chains. Compare. The feedback loop validates the thesis.

Context