پرش به مطلب اصلی

مرحله ۷: بازنشسته کردن زیرساخت امانی

· خواندن 6 دقیقه
OrcaRail
Crypto payment rails for web2 apps

۲۰ آوریل ۲۰۲۶ — مرحله ۷ مرحله پاک‌سازی است. تا به اینجا برسیم، حجم EVM و سولانا روی گیرنده‌های قراردادی و SubscriptionHub است، بیت‌کوین روی مولتی‌سیگ دو از دو است و هیچ لینک پرداخت جدیدی از مسیر جاروب قدیمی عبور نمی‌کند. این مرحله کد قدیمی و رازهای قدیمی را حذف می‌کند.

خلاصه​

  • حذف hd_wallet_seed، پیکربندی WALLET_ENCRYPTION_KEY و منطق مشتق‌گیری برای زنجیره‌های دارای پرچم.
  • حذف مسیرهای EVM/SOL در api/src/withdrawals/: SmartAccountWalletService.drainSmartAccountWallet، solana-withdrawal-transfer.service.ts و فایل‌های spec مرتبط.
  • حفظ مسیر BTC (کاهش‌یافته به مدل دو از دوی مرحله ۵).
  • به‌روزرسانی شرایط استفاده، سیاست حریم خصوصی و کنترل‌های SOC2 برای بازتاب سطح امانت‌داری بسیار کوچک‌تر.
  • انتشار یک گزارش پس از رخداد (postmortem) با خلاصه آموخته‌ها.

این مرحله چه چیزی را تغییر می‌دهد​

پیش از این مرحله، کد از هر چیزی دو نسخه دارد (مسیر جاروب قدیمی و مسیر قراردادی جدید) که پشت feature flag قرار دارند. پس از این مرحله، مسیر جدید تنها مسیر روی EVM و سولاناست.

چه چیزهایی حذف می‌شوند​

پایگاه داده​

  • جدول hd_wallet_seed و موجودیت TypeORM آن در api/src/payments/infrastructure/persistence/relational/entities/hd-wallet-seed.entity.ts.
  • ستون wallet_address.derivationPath برای جست‌وجوهای تاریخی حفظ می‌شود اما nullable می‌شود؛ هیچ ردیف جدیدی برای EVM/SOL آن را نمی‌نویسد.
  • یک migration ردیف‌های seed رمزنگاری‌شده را برای هفت سال (نگهداری الزامی مقرراتی) در ذخیره‌سازی سرد بایگانی می‌کند و سپس جدول را حذف می‌کند.

کد​

در api/src/payments/wallet.service.ts:

  • حذف encryptSeed، decryptSeed، getOrCreateHDWallet، generateAddressForNetwork (شاخه‌های EVM + SOL)، getNextAvailableIndex و import پویای @account-kit/wallet-client.
  • getOrCreateAddressForPaymentLink به پوشش نازکی روی factory.computeAddress برای EVM و findProgramAddressSync برای سولانا تبدیل می‌شود.

در api/src/withdrawals/services/smart-account-wallet.service.ts:

  • حذف drainSmartAccountWallet، transferFromSmartAccount، batchTransferFromSmartAccount، getSmartAccountClientForDepositWallet و derivePrivateKey.
  • ماژول باقی می‌ماند (هنوز کاربرد کوچکی برای توابع کمکی مرتبط با BTC و خواندن موجودی‌ها دارد).

حذف‌های دیگر:

پیکربندی​

  • WALLET_ENCRYPTION_KEY — از .env، رازهای استقرار و مستندات حذف می‌شود.
  • هر داده امضاکننده Alchemy Account Kit در پیکربندی (کلیدهای API برای @account-kit/* اگر هنوز برای paymaster استفاده شوند باقی می‌مانند).

چه چیزهایی می‌مانند​

  • کیف پول داغ BTC — کاهش‌یافته به مدل مولتی‌سیگ دو از دوی مرحله ۵. هیچ seed مربوط به HD برای EVM/SOL باقی نمی‌ماند.
  • سیاست paymaster آلکمی — keeper در موارد لازم از آن برای حمایت از charge() استفاده می‌کند.
  • اجراکننده‌های پل Relay — همچنان تسویه بین‌زنجیره‌ای را هماهنگ می‌کنند؛ فراخوانندگان EOAهای keeper هستند، نه امضاکنندگان امانی.
  • همه وب‌هوک‌ها، ایمیل‌ها، صورت‌حساب‌ها، داشبورد و تحلیل‌ها — بدون تغییر.
  • شرایط استفاده: جمله «OrcaRail در طول تسویه پرداخت، وجوه EVM یا سولانا را نگهداری نمی‌کند» به یک گزاره واقعی تبدیل می‌شود، نه متنی آرمانی.
  • سیاست حریم خصوصی: حذف اشاره‌ها به داده‌های seed ذخیره‌شده.
  • دامنه SOC2: کنترل‌های امانت‌داری کوچک می‌شوند؛ یافته‌های حسابرسی به سطح جدید و کوچک‌تر نگاشت می‌شوند.
  • وضعیت به‌عنوان انتقال‌دهنده پول: بازبینی دوباره با مشاور حقوقی. نقاط تماس کمتر با امانت‌داری تحلیل را در چند حوزه قضایی ساده‌تر می‌کند.

گزارش پس از رخداد​

یک مطلب همراه آموخته‌های مراحل ۰ تا ۷ را خلاصه می‌کند: چه چیزی بیش از انتظار طول کشید، چه چیزی روان‌تر پیش رفت، هزینه واقعی مهندسی غیرامانی شدن چه بود و فروشندگان چه واکنشی نشان دادند. زمان‌بندی مورد انتظار: یک مطلب ظرف ۳۰ روز پس از انتشار مرحله ۷.

موارد منسوخ‌شده (مورد جدیدی نیست)​

این مرحله خودش همان منسوخ‌سازی است. همه مسیرهای دارای پرچم useOnChainReceiver به‌طور پیش‌فرض فعال می‌شوند و پرچم حذف می‌شود.

برنامه مهاجرت​

تا زمان اجرای مرحله ۷، همه پرداخت‌ها و اشتراک‌های جدید بیش از ۱۲ ماه است که غیرامانی بوده‌اند. مهاجرت درباره دنباله بلند لینک‌های قدیمی است:

  • لینک‌های پرداخت باز قدیمی پس از انقضا ← تسویه خرده‌های باقی‌مانده با یک اسکریپت یک‌باره و سپس توقف.
  • اشتراک‌های قدیمی که هرگز مهاجرت نکردند ← اطلاع‌رسانی ایمیلی ۳۰ روز پیش از خاموشی، پیشنهاد مهاجرت با یک کلیک در داشبورد، و تعلیق برداشت خودکار در صورت عدم مهاجرت.
  • موجودی‌های باقی‌مانده روی آدرس‌های واریز قدیمی ← برای آخرین بار با مسیر drain قدیمی به آدرس‌های برداشت فروشنده جاروب می‌شوند و سپس کلیدها بازنشسته می‌شوند.

ریسک‌ها و راهکارها​

  • خرده‌های باقی‌مانده روی آدرس‌های قدیمی. راهکار: اجرای اسکریپت جاروب نهایی پیش از از رده خارج کردن؛ انتشار هر خرده غیرقابل بازیابی در یک گزارش عمومی.
  • ریسک حقوقی حذف زودهنگام. راهکار: بایگانی هفت‌ساله ردیف‌های seed رمزنگاری‌شده (که بدون کلید رمزنگاری، که در یک مراسم نابود می‌شود، هرگز قابل رمزگشایی نیستند)؛ حسابرسان همچنان می‌توانند وضعیت تاریخی را بررسی کنند.
  • کسی به ساختار API مستندنشده‌ای وابسته است. راهکار: اطلاعیه عمومی منسوخ‌سازی ۹۰ روزه؛ ثبت در changelog مربوط به API؛ تماس هدفمند با فروشندگان اصلی.

چک‌لیست وضعیت​

  • همه فروشندگان EVM + SOL دست‌کم ۹۰ روز روی جریان غیرامانی
  • صفر شدن اشتراک‌های قدیمی باقی‌مانده
  • تکمیل اسکریپت جاروب نهایی
  • تکمیل مهاجرت hd_wallet_seed به بایگانی سرد
  • ادغام حذف‌های کد
  • به‌روزرسانی و انتشار شرایط استفاده + سیاست حریم خصوصی
  • انتشار مطلب گزارش پس از رخداد

پایان نقشه راه​

پس از مرحله ۷، وضعیت امانت‌داری این است:

  • EVM، سولانا: غیرامانی. OrcaRail هیچ داده seedی نگه نمی‌دارد.
  • بیت‌کوین: امانت‌داری کاهش‌یافته از طریق مولتی‌سیگ دو از دو با امضاکننده فروشنده.
  • لحظه در حال انتقال: روی EVM/SOL حذف شده؛ روی BTC به مسیر بازپرداخت مولتی‌سیگ کاهش یافته.

این همان هدفی است که در نقشه راه غیرامانی دنبال می‌کردیم.


مستندات مرجع: وضعیت مرحله ۷ · مدل امنیتی · نقشه راه