Kiến trúc

Cách QR Wallet được xây dựng bên trong — dành cho những người tò mò và nhà phát triển.


Ngăn xếp công nghệ

Thành phần
Công nghệ

Ứng dụng di động

React Native + Expo

Quản lý trạng thái

Zustand

Web3

viem, permissionless.js

Điều hướng

expo-router

Blockchain

Trừu tượng hóa Tài khoản ERC-4337

Cơ sở hạ tầng

Alchemy (RPC, Bundler, Paymaster)

Bảo mật

Sinh trắc học + Secure Enclave


Kiến trúc mô-đun

QR Wallet được xây dựng trên một kiến trúc mô-đun — mỗi tính năng được cô lập trong mô-đun riêng với các lớp rõ ràng:

modules/{feature}/
├── domain/          ← Logic nghiệp vụ thuần và kiểu
├── infrastructure/  ← API, lưu trữ, dịch vụ bên ngoài
├── application/     ← Quản lý trạng thái và façade
└── ui/              ← Các thành phần React (Giao diện người dùng)

Các lớp

Lớp
Trách nhiệm
Ví dụ

Domain

Kiểu, interface, quy tắc nghiệp vụ

Swap.entity.ts, StakingPool

Cơ sở hạ tầng

Các cuộc gọi API và dịch vụ bên ngoài

SwapApi.ts, AlchemyPaymaster

Application

Trạng thái, logic UI, façade

useSwapFacade.ts, SponsoredTxStore

UI

Thành phần hình ảnh

SwapScreen.tsx, nút, thẻ

Quy tắc nhập

UI không bao giờ giao tiếp trực tiếp với Infrastructure — chỉ thông qua lớp Application. Domain là thuần túy, không có phụ thuộc.


Trừu tượng hóa Chuỗi

Làm việc với các blockchain khác nhau được thống nhất thông qua một lớp trừu tượng:

  • ChainRegistry — đăng ký tất cả các mạng được hỗ trợ

  • ChainConfigProvider — cấu hình và khả năng theo từng chuỗi

  • TransactionService — gửi TX thống nhất (EVM, Solana, Tron)


Ngăn xếp Trừu tượng hóa Tài khoản

Ba interface (IAccountProvider, IPaymaster, IBundler) trừu tượng hóa nhà cung cấp cụ thể. Hiện đang sử dụng Alchemy, nhưng kiến trúc cho phép chuyển sang bất kỳ nhà cung cấp nào mà không thay đổi logic nghiệp vụ.


Đăng ký Token

Một đăng ký duy nhất cho tất cả token trong hệ thống:

Các mô-đun lấy token họ cần thông qua flags:

  • swappable: true → Hoán đổi token

  • collateral: true → Mượn token làm tài sản thế chấp

  • borrowable: true → Token có thể vay

  • stakable: true → Token để staking

Điều này loại bỏ sự trùng lặp — dữ liệu token được mô tả một lần và được sử dụng ở mọi nơi.


18 Ngôn ngữ

Ứng dụng được bản địa hóa bằng 18 ngôn ngữ:

EN, RU, ES, FR, HI, ID, JA, KO, MS, PT, TH, TL, TR, UR, VI, ZH, AR, BN

Last updated

Was this helpful?