مرحله ۷: بازنشسته کردن زیرساخت امانی
۲۰ آوریل ۲۰۲۶ — مرحله ۷ مرحله پاکسازی است. تا به اینجا برسیم، حجم 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 و خواندن موجودیها دارد).
حذفهای دیگر:
- api/src/withdrawals/services/solana-withdrawal-transfer.service.ts
- فایلهای
.spec.tsو fixtureهای مربوط. - شاخه امانی
subscription-auto-charge.processor.ts(شاخهSubscriptionHub.chargeباقی میماند).
پیکربندی
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 به مسیر بازپرداخت مولتیسیگ کاهش یافته.
این همان هدفی است که در نقشه راه غیرامانی دنبال میکردیم.
مستندات مرجع: وضعیت مرحله ۷ · مدل امنیتی · نقشه راه
