گزارش فنی زیرساخت سامانه توکنسازی دارانو
تهیهکننده: شرکت توسعه راهکارهای نامتمرکز سنا
تاریخ انتشار: مرداد ۱۴۰۴
نسخه: ۱.۰
محرمانگی: داخلی — خطاب به نهاد نظارتی
فهرست مطالب
- معرفی و شرح پروژه
- کاربران هدف
- ارتباط سامانه با بیرون
- دیاگرام موارد استفاده
- سرویسهای شخص ثالث (3rd Party)
- زیرساخت پلتفرم — وضعیت فعلی
- زیرساخت پلتفرم — نقشه راه آینده
- خلاصه و جمعبندی
۱. معرفی و شرح پروژه
۱.۱ درباره شرکت
شرکت توسعه راهکارهای نامتمرکز سنا فعال در حوزه فناوری بلاکچین و توکنسازی داراییهای واقعی (RWA — Real World Assets) است. مأموریت اصلی این شرکت، ایجاد زیرساختهای لازم برای تبدیل داراییهای فیزیکی و حقوقی به توکنهای قابل معامله در بازارهای دیجیتال، با رعایت کامل الزامات رگولاتوری و قوانین بانک مرکزی جمهوری اسلامی ایران است.
۱.۲ معرفی سامانه دارانو
سامانه دارانو پلتفرمی برای توکنسازی داراییهای واقعی است. این سامانه داراییهای فیزیکی (مانند املاک و مستغلات) را پس از طی فرآیندهای احراز مالکیت، ارزیابی و تکمیل تشریفات حقوقی، به توکنهای دیجیتال تبدیل میکند. هر توکن نماینده بخشی از مالکیت دارایی پایه بوده و امکان خرید، فروش و معامله در بازار اولیه و ثانویه را فراهم میسازد.
در فاز پایلوت، تمرکز سامانه بر روی املاک است و یک واحد ملکی با نام «مژگان» بهعنوان نمونه اولیه توکنسازی انتخاب شده است. مالک اصلی ملک یک هلدینگ بوده و بهسازان ملت بهعنوان مستاجر فعالیت میکند.
۱.۳ مراحل توکنسازی
flowchart TB
A[۱. شناسایی و ارزیابی دارایی] --> B[۲. بررسی حقوقی و مالکیت]
B --> C[۳. قرارداد میزبانی و امانت]
C --> D[۴. انتشار توکن روی بلاکچین]
D --> E[۵. عرضه در بازار اولیه]
E --> F[۶. معامله در بازار ثانویه]
F --> G[۷. توزیع درآمد دورهای]
flowchart TB
subgraph prepare[آمادهسازی]
direction LR
A[۱. شناسایی و ارزیابی دارایی] --> B[۲. بررسی حقوقی و مالکیت]
B --> C[۳. تنظیم قرارداد میزبانی ]
end
subgraph execute[ مرحله اجرایی]
direction LR
D[۴. انتشار توکن روی بلاکچین]
D --> E[۵. شروع عرضه اولیه]
E --> F[۶. معامله در بازار ثانویه]
F --> G[۷. توزیع درآمد دورهای]
end
subgraph fini[خاتمه پروژه]
J[۸. بازخرید توکن]
J-->K[۹. سوزاندن توکن ها]
K-->L[۱۰. تغییر وضعیت به خاتمه یافته]
end
prepare --> execute --> fini
۱.۴ اصول حاکم بر سامانه
| اصل | توضیح |
|---|---|
| رعایت رگولاتوری | کلیه فرآیندها منطبق بر قوانین بانک مرکزی و مقررات مرتبط طراحی شدهاند. سپیدنامه، قراردادهای ناشر و میزبان، و قوانین استفاده از سامانه بهطور کامل تدوین شده است. |
| بلاکچین به عنوان Source of Truth | مالکیت توکنها فقط و فقط روی بلاکچین ثبت میشود. دیتابیس داخلی تنها Metadata نگهداری میکند. |
| تفکیک نقشها | ناشر، میزبان، سرمایهگذار، بازارگردان، ادمین و بازرس بانکی هر کدام نقش و دسترسی مجزا دارند. |
| امنیت چندلایه | لایههای امنیتی از CDN و فایروال تا مدیریت کلیدها و JWT. |
| شفافیت کامل | تمامی تراکنشها و وضعیت داراییها شفاف و قابل ردیابی است. |
۲. کاربران هدف
سیستم دارانو شامل نقشهای زیر میباشد:
| نقش | شرح | دسترسی |
|---|---|---|
| سرمایهگذار (خریدار) | کاربران عادی که توکنها را خریداری و نگهداری میکنند | خرید توکن، معامله در بازار ثانویه، مشاهده پورتفولیو |
| ناشر | مالک اصلی دارایی (یا صاحب سببی مانند صلحنامه/وکالتنامه) | ایجاد پروژه توکنسازی، ثبت اطلاعات دارایی |
| میزبان (امین دارایی) | نهاد مسئول نگهداری فیزیکی و حقوقی دارایی | تأیید وضعیت دارایی، همکاری حقوقی |
| تیم بازارگردان | یک یا چند نفر مسئول تنظیم و مدیریت بازار ثانویه | مدیریت نقدینگی، تسهیل معاملات |
| پلتفرم (ادمین) | تیم سنا مستقر در سامانه — شامل تیم فنی، پشتیبانی و مدیر سامانه | مدیریت کاربران، صدور توکن، پیکربندی سیستم |
| بازرس بانکی | کارشناس منتخب بانک برای نظارت امنیتی و بازرسی دفتری | مشاهده تراکنشها، تیک امنیتی، نظارت بر حسابوکتاب |
نکته: سامانه اپراتور عمومی ندارد و تنها چند ادمین اصلی با دسترسیهای مجزا فعالیت میکنند. مدیر سامانه دسترسی به ایجاد توکن جدید و تغییرات سایت دارد. تیم توسعه به کدها و اجرای آنها روی سرور تست و سندباکس دسترسی دارد، اما استقرار در محیط عملیاتی (Production) نیازمند تأیید مدیر سامانه و کمیته اجرایی است.
۳. ارتباط سامانه با بیرون
۳.۱ معماری ارتباطی
flowchart tb
subgraph internet
webusers[کاربران]
inspectors[بازرسان بانکی]
end
subgraph edge
cdn[cdn — ابرآروان]
firewall[فایروال لینوکس]
end
subgraph darano
traefik[traefik v2.10<br/>reverse proxy + tls<br/>let's encrypt]
apigw[api gateway — go/gin<br/>rest + websocket<br/>jwt + swagger/openapi]
services[سرویسهای میکروسرویس]
end
internet --> cdn --> firewall --> traefik --> apigw --> services
style cdn fill:#e1f5fe
style firewall fill:#fff3e0
style traefik fill:#e8f5e9
flowchart TB
subgraph internet[ شبکه عمومی اینترنت]
direction LR
webusers[کاربران]
admin[ادمین سامانه]
bazar[بازارگردان]
end
subgraph edge
direction LR
cdn[cdn — ابرآروان] --> firewall[فایروال لینوکس]
end
subgraph darano[سامانه دارانو]
traefik[traefik v2.10<br/>reverse proxy + tls<br/>let's encrypt] -->
apigw[api gateway — go/gin<br/>rest + websocket<br/>jwt + swagger/openapi] -->
services[سرویسهای میکروسرویس]
end
subgraph darano-priv
direction TB
db[دیتابیس]
vault[Vault/SSM]
end
internet --> edge --> darano -.دسترسی محدود با آی پی.-> darano-priv
style cdn fill:#0003e0
style firewall fill:#ea111111
لایههای ارتباطی:
| لایه | فناوری | توضیح |
|---|---|---|
| CDN | ابرآروان | DDoS Protection، TLS termination، CDN محتوا |
| فایروال | Firewalld (Linux) | محدودسازی دسترسی بر اساس IP Allowlist |
| Reverse Proxy | Traefik v2.10 | مسیریابی خودکار بر اساس label، TLS خودکار با Let's Encrypt |
| API Gateway | Go + Gin Router | نقطه ورود واحد — RESTful API + WebSocket، مستندات OpenAPI v2 در Swagger |
- پروتکل ارتباط خارجی: RESTful با فرمت JSON (مستندات OpenAPI v2 در Swagger)
- پروتکل ارتباط داخلی سرویسها: gRPC با Protobuf (سرعت بالا، فشردهسازی، امنیت TLS)
۳.۲ بلاکچین
سامانه از بلاکچین (بر پایه استلار) برای ثبت تراکنشهای توکنی استفاده میکند. در آینده امکان مهاجرت به راهکارهای جایگزین نیز بررسی خواهد شد.
۴. دیاگرام موارد استفاده (Use Case Diagram)
graph TB
Investor[سرمایهگذار]
Issuer[ناشر]
Custodian[میزبان/امین دارایی]
MarketMaker[بازارگردان]
PlatformAdmin[ادمین پلتفرم]
BankInspector[بازرس بانکی]
Investor --> UC1[ثبتنام و ورود]
Investor --> UC2[احراز هویت KYC]
Investor --> UC3[خرید توکن در بازار اولیه]
Investor --> UC4[معامله در بازار ثانویه]
Investor --> UC5[مشاهده پورتفولیو و تاریخچه]
Investor --> UC6[واریز و برداشت ریال]
Investor --> UC7[واریز و برداشت توکن]
Investor --> UC8[خرید اقساطی BNPL]
Investor --> UC9[بازخرید توکن]
Issuer --> UC10[ایجاد پروژه توکنسازی]
Issuer --> UC11[ثبت اطلاعات دارایی]
Custodian --> UC12[تأیید وضعیت دارایی]
Custodian --> UC13[همکاری حقوقی]
MarketMaker --> UC14[مدیریت نقدینگی بازار]
MarketMaker --> UC15[سفارشگذاری در بازار ثانویه]
PlatformAdmin --> UC16[مدیریت کاربران]
PlatformAdmin --> UC17[صدور و مدیریت توکن]
PlatformAdmin --> UC18[مدیریت سفارشها و بازار]
PlatformAdmin --> UC19[مدیریت بازخرید]
PlatformAdmin --> UC20[پیکربندی و پایش سامانه]
PlatformAdmin --> UC21[مدیریت کد تخفیف و دعوت]
BankInspector --> UC22[مشاهده تراکنشها]
BankInspector --> UC23[تیک امنیتی و نظارت]
style Investor fill:#e3f2fd
style Issuer fill:#f3e5f5
style Custodian fill:#e8f5e9
style MarketMaker fill:#fff3e0
style PlatformAdmin fill:#fce4ec
style BankInspector fill:#efebe9
۴.۱ دستهبندی موارد استفاده
بخش سرمایهگذار (کاربری عمومی): - ثبتنام و ورود با OTP - احراز هویت KYC (شاهکار + سامانه احراز هویت + استعلام بانکی) - خرید توکن از بازار اولیه (درگاه آنلاین، شناسهدار، پرداختیار، اقساطی) - معامله در بازار ثانویه P2P - مشاهده پورتفولیو و تاریخچه تراکنشها - واریز/برداشت ریال و توکن
بخش ناشر و میزبان (حقوقی): - ایجاد پروژه توکنسازی - ثبت اطلاعات دارایی و قراردادها - تأیید وضعیت دارایی و همکاری حقوقی
بخش پلتفرم (مدیریتی): - مدیریت کاربران و نقشها (RBAC/ABAC) - صدور و مدیریت توکنها - مدیریت سفارشها، بازخرید و بازار - پیکربندی سامانه و پایش
بخش بازرس بانکی (نظارتی): - مشاهده تراکنشها و گزارشها - تیک امنیتی و نظارت بر حسابوکتاب
۵. سرویسهای شخص ثالث (3rd Party)
۵.۱ خدمات احراز هویت و بانکی
| سرویس | نقش | توضیح |
|---|---|---|
| سامانه شاهکار | احراز مالکیت سیمکارت و مطابقت کدملی با شماره تماس | استعلام از پایگاه داده پست |
| سامانه احراز هویت | تأیید اطلاعات هویتی (کدملی، تاریخ تولد، تصویر) | سرویسهای مشابه: زحل (Zohal)، احراز (Ehraz)، پکو (Pecco) |
| استعلامات بانکی | تأیید مالکیت حساب بانکی و شماره شبا | سرویسهای مشابه: جیبیت (Jibit) |
۵.۲ خدمات پرداخت
| سرویس | نقش | توضیح |
|---|---|---|
| درگاه پرداخت بانکی | پرداخت آنلاین مستقیم | بانک ملت و بانکهای دیگر |
| وندار | پرداختیار (کیف پول مجازی) | خرید توکن از موجودی کیف پول مجازی |
| سایر پرداختیارها | پرداخت الکترونیک | سرویسهای مشابه |
۵.۳ خدمات ارتباطی
| سرویس | نقش | توضیح |
|---|---|---|
| پنل ایمیل سازمانی | ارسال ایمیلهای خدماتی (خوشآمدگویی، تأیید تراکنش و …) | سرویسهایی مشابه لیموهاست |
| پنل پیامک (Kavenegar) | ارسال OTP و پیامهای خدماتی | سرویسهایی مشابه کاوهنگار |
۵.۴ زیرساخت و مانیتورینگ
| سرویس | نقش | توضیح |
|---|---|---|
| Prometheus | جمعآوری متریکها | استاندارد CNCF |
| Grafana | داشبورد و تجسم دادهها | استاندارد CNCF |
| OpenTelemetry | Observability یکپارچه | استاندارد CNCF |
| Node Exporter / cAdvisor | مانیتورینگ سیستمعامل و کانتینرها | استاندارد CNCF |
| Alertmanager | مدیریت هشدارها | استاندارد CNCF |
| Object Storage (S3) | ذخیرهسازی فایلها و بکآپ | سرویس ابری |
| Stellar Horizon | مرورگر بلاکچین | API ارتباط با بلاکچین |
۶. زیرساخت پلتفرم — وضعیت فعلی
۶.۱ مشخصات سرور
| پارامتر | مقدار |
|---|---|
| ارائهدهنده | VPS ابرآروان (سرویس ابری مورد تأیید بانک) |
| سیستمعامل | Ubuntu 22.04 |
| رم | ۱۲ گیگابایت |
| پردازنده | ۴ هسته @ 3.19 GHz |
| ظرفیت پیشبینیشده | ۴,۰۰۰ کاربر |
| ترافیک | محدود و کنترلشده |
۶.۲ معماری کلان
flowchart TB
subgraph Internet
Users[کاربران]
end
subgraph Edge
CDN[CDN — ابرآروان]
FW[Firewalld]
end
subgraph Server["VPS ابرآروان<br/>سرویس ابری مورد تأیید بانک"]
Docker[Docker + Docker Compose]
subgraph Services
Traefik[Traefik v2.10<br/>Reverse Proxy + TLS]
UI[UI — Next.js 14<br/>SSR + Client Rendering]
AdminPanel[Django Admin<br/>Server-Side Rendering]
APIGW[API Gateway — Go/Gin<br/>REST + WebSocket]
AuthSvc[Auth Service — Go]
WalletSvc[Wallet Service — Go]
MarketSvc[Market Service — Go]
Streamer[Wallet Streamer — Go]
end
subgraph Data
DB[(PostgreSQL 15)]
Cache[(Redis 7)]
MQ[(RabbitMQ 3.12)]
end
end
subgraph ExternalServices
Blockchain[بلاکچین]
Monitoring["سرور مانیتورینگ جداگانه"]
end
Users --> CDN --> FW --> Traefik
Traefik --> UI
Traefik --> AdminPanel
Traefik --> APIGW
APIGW --> AuthSvc
APIGW --> WalletSvc
APIGW --> MarketSvc
AuthSvc --> DB
AuthSvc --> Cache
WalletSvc --> DB
WalletSvc --> Cache
MarketSvc --> DB
MarketSvc --> Cache
MarketSvc --> MQ
Streamer --> Blockchain
Streamer --> DB
Streamer --> MQ
WalletSvc --> Blockchain
Prometheus --> APIGW
Prometheus --> AuthSvc
Prometheus --> WalletSvc
Prometheus --> MarketSvc
Prometheus --> DB
Grafana --> Prometheus
AlertM --> Prometheus
style Edge fill:#fff3e0
style Server fill:#e8f5e9
style ExternalServices fill:#f3e5f5
style Monitoring fill:#e3f2fd
۶.۳ جزئیات فناوریها
| لایه | فناوری | توضیح |
|---|---|---|
| میزبانی | VPS ابرآروان | سرویس ابری مورد تأیید بانک — Ubuntu 22.04، ۱۲GB RAM، ۴ هسته |
| کانتینریسازی | Docker + Docker Compose | ایزولاسیون کامل سرویسها |
| Reverse Proxy | Traefik v2.10 | مدیریت خودکار TLS با Let's Encrypt |
| API Gateway | Go + Gin Router | RESTful API + WebSocket + Swagger/OpenAPI |
| ارتباط داخلی | gRPC + Protobuf | ارتباط میکروسرویسها با یکدیگر |
| سرویس احراز هویت | Go + GORM | JWT (RS256) + OTP + RBAC/ABAC |
| سرویس کیف پول | Go + Stellar SDK | HD Wallet (ED25519) + بلاکچین |
| سرویس بازار | Go + GORM | مدیریت سفارشها و معاملات P2P |
| Streamer | Go + Horizon SDK | رصد بلادرنگ تراکنشهای بلاکچین |
| ادمین پنل | Python + Django + Unfold | مدیریت کاربران، گزارش مالی، تسویه |
| رابط کاربری | Next.js 14 + React + TypeScript | Tailwind CSS + Material-UI |
| پایگاه داده | PostgreSQL 15 | بکآپ روزانه، Docker Volume |
| کش / Session | Redis 7 | Session، Rate Limit، Cache |
| صف پیام | RabbitMQ 3.12 | POC — استفاده محدود فعلی |
| مانیتورینگ | Prometheus + Grafana + OpenTelemetry | سرور مانیتورینگ جداگانه + IP Allowlist |
| کنترل نسخه و CI/CD | Gitea + Act Runner | شبیه GitHub Actions — استقرار زیر ۱ دقیقه |
۶.۴ معماری سرویسها
سامانه بر پایه میکروسرویس طراحی شده و شامل بخشهای اصلی زیر است:
Backend (Go):
| سرویس | مسیر | مسئولیت |
|---|---|---|
| API Gateway | backend/api/ |
مسیریابی، احراز هویت اولیه، Rate Limiting، Swagger/OpenAPI |
| Auth Service | backend/auth/ |
ثبتنام، ورود OTP، KYC، JWT، RBAC/ABAC |
| Wallet Service | backend/wallet/ |
کیف پول On-Chain/Off-Chain، تراکنشها، پرداختیارها |
| Market Service | backend/wallet/ (sub) |
سفارشگذاری، بازار اولیه و ثانویه، BNPL، بازخرید |
| Wallet Streamer | backend/wallet/ (sub) |
رصد تراکنشهای بلاکچین، همگامسازی |
معماری داخلی سرویسها: - Auth: Clean Architecture (Domain → Repository → Use Case) - Wallet: Hexagonal Architecture (Port & Adapter)
Frontend:
| بخش | فناوری | توضیح |
|---|---|---|
| رابط کاربری | Next.js 14 + React + TypeScript | SSR، Tailwind CSS، Material-UI |
| ادمین پنل | Django + Unfold Admin | مدیریت و گزارشگیری |
۶.۵ امنیت
| لایه | مکانیزم | توضیح |
|---|---|---|
| لایه شبکه | CDN + Firewalld | DDoS Protection، محدودسازی IP |
| لایه انتقال | TLS (Let's Encrypt) | ترافیک رمزگذاریشده |
| لایه احراز هویت | JWT (RS256) + OTP | توکن ۱۵ دقیقه، Refresh Token ۷ روز در Redis |
| لایه رمزنگاری | ED25519 (HD Wallet) | کلیدهای خصوصی هرگز در دیتابیس ذخیره نمیشوند |
| لایه کلید ناشر | Vault + SSM | Pipeline ردیابی استفاده هر کلید |
| لایه رمز عبور | bcrypt (Cost 12) | |
| لایه تراکنش | OTP + 2FA | تأیید دو مرحلهای برای تراکنشهای مالی |
| لایه داده | PostgreSQL SSL + Encryption at Rest |
۷. زیرساخت پلتفرم — نقشه راه آینده
۷.۱ Event-Driven Architecture
graph TB
subgraph Current["وضعیت فعلی — Synchronous"]
APIGW -->|gRPC| Auth
APIGW -->|gRPC| Wallet
APIGW -->|gRPC| Market
Market -->|gRPC| Wallet
end
subgraph Target["آتی — Event-Driven"]
APIGW -->|gRPC| Auth
APIGW -->|gRPC| Wallet
APIGW -->|gRPC| Market
EventBus[(Event Bus<br/>Apache Kafka)]
Auth -.->|Domain Events| EventBus
Wallet -.->|Domain Events| EventBus
Market -.->|Domain Events| EventBus
Streamer -.->|Domain Events| EventBus
EventBus -->|Subscribe| Notification[Notification Service]
EventBus -->|Subscribe| Analytics[Analytics Service]
EventBus -->|Subscribe| Audit[Audit Service]
end
style Current fill:#e3f2fd
style Target fill:#e8f5e9
۷.۲ جدول نقشه راه
| ویژگی | وضعیت فعلی | هدف آینده |
|---|---|---|
| الگوی ارتباطی | Synchronous (gRPC/REST) | Event-Driven (Apache Kafka) |
| Orchestration | Docker Compose | Kubernetes (K8s) |
| Event Bus | محدود (RabbitMQ در Wallet — POC) | Event Bus مرکزی با Kafka |
| مدیریت کلیدها | Secret Manager در گیت | HashiCorp Vault / KMS |
| مانیتورینگ | Prometheus + Grafana (سرور جداگانه) | اضافهشدن OpenTelemetry Distributed Tracing |
| Service Mesh | ندارد | Istio یا Linkerd |
| Database | PostgreSQL Single | Master-Slave + Read Replicas |
| CI/CD | Gitea + Act Runner | Pipeline خودکار با تأیید دو مرحلهای |
۷.۳ استراتژی مهاجرت به Event-Driven
| فاز | بازه | اقدامات |
|---|---|---|
| Phase 1 — پایه | ۲-۳ ماه | نصب Kafka، ایجاد Event Schema، پیادهسازی Event Publisher/Consumer |
| Phase 2 — پایلوت | ۱-۲ ماه | پیادهسازی Use Case ساده (Notifications) |
| Phase 3 — مهاجرت تدریجی | ۴-۶ ماه | افزودن تدریجی Use Caseها، Dual-Mode Operation |
| Phase 4 — کامل | ۳-۴ ماه | حذف Sync Calls غیرضروری، افزودن سرویسهای جدید |
تایملاین کلی: ۱۲-۱۸ ماه
۸. خلاصه و جمعبندی
سامانه دارانو، توسعهیافته توسط شرکت توسعه راهکارهای نامتمرکز سنا، یک پلتفرم توکنسازی داراییهای واقعی است که با رعایت کامل ضوابط رگولاتوری و قوانین بانک مرکزی طراحی و پیادهسازی شده است.
خلاصه زیرساخت فعلی
| دسته | جزئیات |
|---|---|
| میزبانی | VPS ابرآروان — سرویس ابری مورد تأیید بانک |
| معماری | میکروسرویس — Docker + Docker Compose |
| زبان backend | Go (Gin Router، GORM، Stellar SDK) |
| زبان admin | Python (Django + Unfold) |
| frontend | Next.js 14 + React + TypeScript |
| ارتباط خارجی | RESTful JSON — Swagger/OpenAPI v2 |
| ارتباط داخلی | gRPC + Protobuf |
| بلاکچین | بلاکچین (آتی: راهکار جایگزین) |
| دیتابیس | PostgreSQL 15 (بکآپ روزانه) |
| مانیتورینگ | Prometheus + Grafana + OpenTelemetry (سرور جداگانه) |
| CI/CD | Gitea + Act Runner |
| احراز هویت | JWT (RS256) + OTP + 2FA |
| سرویسهای 3rd Party | شاهکار، سامانه احراز، استعلام بانکی، درگاه بانک ملت، وندار، پنل ایمیل، Kavenegar |
نقاط قوت کلیدی
- امنیت بالا: مدیریت کلیدها با Secret Manager، احراز هویت چندمرحلهای، فایروال و CDN
- شفافیت: مالکیت توکنها فقط روی بلاکچین، ردیابی کامل تراکنشها
- مقیاسپذیری: معماری میکروسرویس با امکان مهاجرت به Event-Driven و Kubernetes
- نظارت: مانیتورینگ ۲۴/۷ با ابزارهای استاندارد CNCF و دسترسی بازرس بانکی
- رعایت رگولاتوری: سپیدنامه و قراردادهای حقوقی کامل، تطابق با قوانین بانک مرکزی