Skip to content

πŸͺ Architecture ​

This document describes the system architecture of MoveAS.

Overview ​

MoveAS is built as a modular, multi-chain platform for attestations. The architecture consists of:

  1. Smart Contracts: Move-based contracts deployed on Sui and Aptos
  2. SDK: TypeScript SDK for client integration
  3. Backend API: NestJS backend for indexing and querying
  4. Frontend Explorer: Next.js web interface
  5. Storage Layer: Walrus for off-chain data storage
  6. Privacy Layer: Seal for encryption

System Architecture ​

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    Client Applications                  β”‚
β”‚  (Web Apps, Mobile Apps, Backend Services, etc.)        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                     β”‚
                     β”‚ SDK (TypeScript)
                     β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                  MoveAS Platform                        β”‚
β”‚                                                         β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚   Frontend   β”‚  β”‚    Backend   β”‚  β”‚      SDK     β”‚   β”‚
β”‚  β”‚  (Next.js)   β”‚  β”‚   (NestJS)   β”‚  β”‚ (TypeScript) β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β”‚         β”‚                 β”‚                 β”‚           β”‚
β”‚         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜           β”‚
β”‚                           β”‚                             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                            β”‚
         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
         β”‚                                     β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”                  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚   Sui Chain    β”‚                  β”‚   Aptos Chain     β”‚
β”‚                β”‚                  β”‚                   β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚                  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”     β”‚
β”‚  β”‚  SAS     β”‚  β”‚                  β”‚  β”‚   AAS    β”‚     β”‚
β”‚  β”‚Contracts β”‚  β”‚                  β”‚  β”‚Contracts β”‚     β”‚
β”‚  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜  β”‚                  β”‚  β””β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”˜     β”‚
β”‚       β”‚        β”‚                  β”‚       β”‚           β”‚
β”‚       β””β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”˜           β”‚
β”‚                β”‚                                      β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚                                      β”‚
β”‚  β”‚ Registry β”‚  β”‚                                      β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚                                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                      β”‚
                                                        β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
β”‚              External Services                        β”‚
β”‚                                                       β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”             β”‚
β”‚  β”‚  Walrus  β”‚  β”‚   Seal   β”‚  β”‚ Database β”‚             β”‚
β”‚  β”‚ Storage  β”‚  β”‚ Key Svr  β”‚  β”‚  (PG)    β”‚             β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜             β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Component Details ​

Smart Contracts ​

Location: packages/contracts/

Sui (SAS):

  • sas.move: Main entry point
  • attestation.move: Attestation data structures
  • schema.move: Schema management
  • seal_access.move: Seal access control
  • attestation_registry.move: Attestation tracking
  • schema_registry.move: Schema tracking

Aptos (AAS):

  • aas.move: Main entry point
  • attestation.move: Attestation data structures
  • schema.move: Schema management
  • resolver_dispatcher.move: Resolver pattern

SDK ​

Location: packages/sdk/

Components:

  • Sas: Sui attestation service client
  • Aas: Aptos attestation service client
  • Codec: Schema-based encoding/decoding
  • WalrusClient: Walrus storage integration
  • SealWrapper: Seal encryption integration

Backend API ​

Location: apps/backend/

Components:

  • Indexers: Listen to blockchain events
  • APIs: REST endpoints for querying
  • Database: PostgreSQL for indexing
  • Services: Business logic for attestations

Key Features:

  • Event listening for new attestations
  • Schema and attestation indexing
  • Query APIs with filtering
  • Caching for performance

Frontend Explorer ​

Location: apps/frontend/

Components:

  • Pages: Schema and attestation views
  • Components: Reusable UI components
  • API Integration: Backend API clients
  • Wallet Integration: Sui and Aptos wallet support

Key Features:

  • Browse schemas and attestations
  • Create new attestations
  • View attestation details
  • Decrypt encrypted data

Data Flow ​

Creating an Attestation ​

  1. Client encodes data using Codec
  2. Client optionally encrypts data (Seal)
  3. Client optionally uploads to Walrus (off-chain)
  4. Client creates transaction via SDK
  5. SDK submits transaction to blockchain
  6. Contract emits AttestationCreated event
  7. Backend indexes attestation from event
  8. Frontend displays in explorer

Retrieving an Attestation ​

  1. Client queries backend API or blockchain directly
  2. Backend returns attestation metadata
  3. Client retrieves data:
    • On-chain: Read from object
    • Off-chain: Download from Walrus
  4. Client optionally decrypts (Seal)
  5. Client decodes data using Codec
  6. Client verifies data integrity (hash)

Storage Architecture ​

On-Chain Storage ​

Attestation Object (Sui)
β”œβ”€β”€ Metadata (attestor, recipient, timestamps)
β”œβ”€β”€ Schema reference
└── Data (vector<u8>) ← Stored directly

Off-Chain Storage ​

Attestation Object (Sui)
β”œβ”€β”€ Metadata (attestor, recipient, timestamps)
β”œβ”€β”€ Schema reference
β”œβ”€β”€ Walrus Sui Object ID
β”œβ”€β”€ Walrus Blob ID
β”œβ”€β”€ Data Hash (Blake2b-256)
└── Encryption metadata (if encrypted)

Walrus Storage
└── Blob Data ← Actual data stored here

Privacy Architecture ​

Seal Integration ​

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Client     β”‚
β”‚  Encrypt    β”‚
β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
       β”‚
       β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚                  β”‚
β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”
β”‚   Seal      β”‚    β”‚   Walrus    β”‚
β”‚   Encrypt   β”‚    β”‚   Upload    β”‚
β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜
       β”‚                  β”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                β”‚
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚  Create Attest.  β”‚
       β”‚  On-Chain        β”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                β”‚
       β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β–Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
       β”‚  Seal Key        β”‚
       β”‚  Servers         β”‚
       β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Decryption Flow:

  1. Client creates SessionKey
  2. Client builds seal_approve transaction
  3. Seal key servers verify on-chain policy
  4. Key servers return decryption keys
  5. Client decrypts data
  6. Client verifies hash

Security Architecture ​

Access Control Layers ​

  1. Contract Level: Move contracts enforce rules
  2. Object Ownership: Sui object ownership model
  3. Resolver Validation: Custom validation logic
  4. Seal Access Control: On-chain access policies

Data Integrity ​

  • On-Chain: Direct verification on blockchain
  • Off-Chain: Blake2b-256 hash verification
  • Encrypted: Hash of original data before encryption

Scalability ​

Horizontal Scaling ​

  • Backend: Stateless API servers
  • Database: Read replicas for queries
  • Indexers: Multiple indexer instances

Vertical Scaling ​

  • Caching: Redis for frequently accessed data
  • CDN: Static asset delivery
  • Database Optimization: Indexing and query optimization

Future Architecture Improvements ​

  • Cross-Chain Bridge: Verify attestations across chains
  • Distributed Storage: Multiple storage backends
  • Layer 2 Support: Lower costs for high-volume use cases
  • IPFS Integration: Additional decentralized storage option

Next: Contracts β†’

Released under the Business Source License 1.1.