بررسی شده به صورت داخلی · صفر آسیب‌پذیری حیاتیBNB Smart Chain (BEP-20)پروکسی UUPS (ERC-1967)Solidity 0.8.24

امنیت و ارزیابی فنی قرارداد هوشمند J1USD

گزارش جامع تجزیه و تحلیل معماری و اعتبارسنجی سیستم توکن J1USD در BNB Smart Chain. بررسی شده به صورت فنی برای امنیت ارتقاء، کنترل‌های دسترسی غیرقابل تغییر، پایدارنده‌های عرضه و تفکیک نقدینگی بین پلتفرم‌ها.

افشای ارزیابی: این ارزیابی امنیتی و فنی به صورت داخلی توسط تیم توسعه و امنیت AirJIT انجام شده است. این یک حسابرسی مستقل قرارداد هوشمند توسط شخص ثالث نیست.

صفر یافته حیاتی

0 Critical

۰ آسیب‌پذیری بالا / ۰ آسیب‌پذیری حیاتی در قراردادهای اصلی توکن شناسایی شد.

سقف سخت عرضه

1,000,000,000

محدودیت غیرقابل تغییر ۱٬۰۰۰٬۰۰۰٬۰۰۰ J1USD در سطح بایت‌کد اعمال شده است.

تفکیک دقیق نقش‌ها

RBAC Partitioned

آدرس‌های مستقل جداگانه برای مدیر، ارتقادهنده، ضرب‌کننده، سوزاننده و متوقف‌کننده.

شکاف‌های ذخیره‌سازی UUPS

__gap[42]

شکاف رزرو شده ۴۲ اسلات (__gap[42]) برای جلوگیری از تداخل حافظه در ارتقاءهای آتی.

استقرارهای تأیید شده روی زنجیره

آدرس‌های رسمی قرارداد و اعتبارسنجی

توکن J1USD از طریق الگوی ماژولار پروکسی UUPS OpenZeppelin ERC-1967 اجرا می‌شود. در زیر قراردادهای منبع تأیید شده که در شبکه اصلی BNB Smart Chain مستقر شده‌اند آورده شده است.

پروکسی رسمی توکن
این آدرس را نگه دارید و معامله کنید

J1USDProxy.sol

آدرس استاندارد توکن BEP-20 برای تعامل کاربران. تمام موجودی‌ها، مجوزها و وضعیت ذخیره‌سازی به طور دائم در اینجا قرار دارند. سازگار با Grey Wallet، MetaMask، Trust Wallet و تمام صرافی‌های DEX در BNB Chain.

استاندارد پروکسیERC-1967 (UUPS)
استاندارد توکنBEP-20 (۶ رقم اعشار)
قرارداد پیاده‌سازی منطق
هیچ وجهی به این آدرس ارسال نکنید

J1USDTokenUpgradeable.sol

حاوی قوانین تجاری کامپایل شده، بررسی‌های انطباق، سقف عرضه و اصلاح‌کننده‌های نقش است. مقداردهی اولیه مستقیم در زمان استقرار قفل شده است.

نسخهv1.0.0 (بررسی داخلی)
سقف عرضه۱٬۰۰۰٬۰۰۰٬۰۰۰ J1USD
Security Notice for Integrators & Wallets: Always route transfers, deposits, and automated liquidity integrations directly to the Proxy address (0xb3B34F032923DeA2ee8476Df26894E8fA9Eb7F54). The implementation address is stateless bytecode; funds directly transferred to the implementation contract cannot be retrieved by users.

بررسی انطباق و سیاست‌ها

مکانیسم‌های لیست سیاه، مسدودسازی حساب و تحریم‌ها

ارزیابی مکانیسم‌های انطباق توکن. J1USD یک توکن باز BEP-20 است که با مدل فعال لیست سیاه و مسدودسازی کار می‌کند — نه لیست سفید — که حداکثر ترکیب‌پذیری بدون نیاز به مجوز را تضمین می‌کند و همزمان اجرای احکام قانونی را ممکن می‌سازد.

بدون نیاز به مجوزقبول · مجاز

عدم نیاز به لیست سفید (انتقال آزاد بدون مجوز)

توکن J1USD هیچ لیست سفیدی برای انتقال ندارد. هر کیف پول استاندارد Web3 در BNB Smart Chain می‌تواند آزادانه و بدون احراز هویت یا ثبت‌نام قبلی، J1USD را در DEX دریافت، نگهداری، ارسال و معامله کند.

ارزیابی امنیتی:توابع استاندارد انتقال (transfer, transferFrom) بدون شرط برای تمام حساب‌های عادی اجرا می‌شوند. عملیات عادی همتا به همتا و دیفای نیازمند هیچ مجوزی نیست.
تحت کنترل RBACقبول · محافظت شده

قابلیت صریح لیست سیاه (انطباق با ریسک)

نقش اختصاصی BLACKLISTER_ROLE می‌تواند آدرس‌های مخرب مرتبط با هک، تحریم یا سرقت را محدود کرده و از واریز یا برداشت وجه جلوگیری کند.

ارزیابی امنیتی:تابع addToBlacklist() برای قابلیت حسابرسی آن‌چین نیازمند یک هش bytes32 complianceReference غیر صفر است. آدرس‌های سیستمی محافظت شده (استخرهای DEX و خزانه‌داری) از لیست سیاه مصون هستند.
تفکیک اختلافقبول · تفکیک شده

مسدودسازی دقیق جزئی و کامل حساب

قرارداد از هر دو تابع freezeAccount() و freezeBalance(amount) پشتیبانی می‌کند. در طول اختلافات تجاری، تنها مبلغ مورد مناقشه قفل می‌شود و نقدینگی سایر وجوه حفظ می‌گردد.

ارزیابی امنیتی:تابع availableBalanceOf(account) موجودی در دسترس و موجودی مسدود شده را به طور پویا تفکیک می‌کند. وجوه پاک و بدون مناقشه حتی در حین بررسی فعال، ۱۰۰٪ قابل انتقال توسط مالک است.
بسیار محدودقبول · محدودیت سخت‌گیرانه

حفاظت مصادره قانونی تأیید شده (Wipe)

نقش WIPER_ROLE تنها بر اساس احکام قضایی یا دستورات نظارتی الزام‌آور مجاز به نابودسازی موجودی‌های مسدود شده است. نابودی خودسرانه دارایی‌های کاربران از نظر ساختاری غیرممکن است.

ارزیابی امنیتی:اگر روی آدرس مسدود نشده فراخوانی شود با WipeRequiresRestrictedAccount لغو می‌شود. اگر مبلغ درخواستی بیش از موجودی مسدود شده باشد با WipeExceedsFrozenBalance لغو می‌شود.

اعتبارسنجی قلاب‌ها در سطح بایت‌کد: _update()، _approve() و transferFrom()

بایت‌کد اعتبارسنجی‌های سخت‌گیرانه‌ای را برای واریز و برداشت در داخل _update(from, to, amount) اعمال می‌کند:

بررسی‌های برداشت (_requireCanDebit)

فرستنده نباید در لیست سیاه باشد (!isBlacklisted)، حساب نباید به طور کامل مسدود باشد (!isAccountFrozen)، و مبلغ نباید از availableBalanceOf بیشتر باشد.

بررسی‌های واریز (_requireCanCredit)

گیرنده نباید در لیست سیاه یا مسدود باشد. این امر مانع از پولشویی وجوه نامشروع توسط مجرمان به کیف پول‌های امانی محدود می‌شود.

بررسی‌های مجوز (_approve)

مالک توکن و نماینده خرج‌کننده هر دو باید بدون محدودیت باشند. اشخاص محدود شده نمی‌توانند سهمیه تفویض کنند یا تراکنش‌های شخص ثالث انجام دهند.

معماری قرارداد هوشمند

مکانیسم‌های امنیتی و تحلیل پایدارنده‌ها

ارزیابی دقیق اجزای اصلی J1USD: امنیت ارتقاء پروکسی، جلوگیری از تکرار رمزنگاری، تفکیک وظایف و تدابیر اضطراری.

امنیت ارتقاءپذیری UUPS

ساخته شده بر پایه استاندارد UUPS اوپن‌زپلین. متغیرهای وضعیت و موجودی‌ها منحصراً در اسلات‌های پروکسی ذخیره می‌شوند. سازنده پیاده‌سازی _disableInitializers() را اجرا می‌کند تا از تصاحب مستقل جلوگیری شود.

امنیت ذخیره‌سازی: فاصله رزرو شده ۴۲ اسلات (__gap[42]) از تداخل حافظه در ارتقاءهای آتی جلوگیری می‌کند.

پایدارنده سقف سخت عرضه

برخلاف استیبل‌کوین‌های با ضرب نامحدود، J1USD سقف عرضه supplyCeiling را در سطح قرارداد اعمال می‌کند. هر mint() بررسی می‌کند که totalSupply() + amount <= supplyCeiling باشد. مدیر مجاز به کاهش سقف زیر عرضه در گردش نیست.

حداکثر سقف عرضه: ۱٬۰۰۰٬۰۰۰٬۰۰۰٫۰۰۰۰۰۰ J1USD (۶ رقم اعشار).

جلوگیری از تکرار رویدادها

عملیات ضرب و سوزاندن نیازمند یک هش ارجاع bytes32 منحصر‌به‌فرد (issuanceReference / burnReference) است. تلاش برای استفاده مجدد فوراً با ReferenceAlreadyUsed لغو می‌شود.

از حملات تکرار تراکنش، ضرب مضاعف و انحراف ایندکسینگ کاملاً جلوگیری می‌کند.

انتقال مدیریت با قفل زمانی

از AccessControlDefaultAdminRulesUpgradeable استفاده می‌کند. انتقال نقش مدیر در یک بلوک امکان‌پذیر نیست؛ یک تاخیر زمانی اجباری (defaultAdminDelay) را اعمال می‌کند تا از سرقت کلید خصوصی محافظت شود.

تفکیک وظایف: ارتقادهنده، ضرب‌کننده، سوزاننده و متوقف‌کننده کاملاً مستقل عمل می‌کنند.

دقت مسدودسازی جزئی

به جای مسدود کردن کل کیف پول، J1USD قابلیت freezeBalance را ارائه می‌دهد. مبالغ مورد مناقشه می‌توانند تفکیک شوند در حالی که availableBalanceOf اجازه تراکنش‌های عادی را می‌دهد.

از موجودی‌های مشروع در طول اختلافات تجاری محافظت می‌کند.

آدرس‌های سیستمی محافظت شده

آدرس‌های حیاتی پروتکل (استخرهای PancakeSwap، خزانه‌داری و قراردادهای عملیاتی) به عنوان protectedSystemAddress ثبت شده‌اند و از مسدودسازی یا لیست سیاه مصون هستند.

از اختلال در خدمت‌رسانی تصادفی یا عمدی (DoS) در جفت‌های معاملاتی DEX عمومی جلوگیری می‌کند.

ماتریس مجوزها

کنترل دسترسی مبتنی بر نقش (RBAC)

بررسی اختیارات مدیران، صادرکنندگان، سوزانندگان، مسئولان انطباق و شرایط اضطراری. تمام توابع دارای دسترسی خاص نیازمند امضای رمزنگاری معتبر هستند.

شناسه نقشتوابع دارای دسترسیکنترل‌های امنیتی و پایدارنده‌ها
DEFAULT_ADMIN_ROLE0x00 (Admin Root)تنظیم تخصیص نقش‌ها، به‌روزرسانی سقف عرضه و تعیین آدرس‌های سیستمی محافظت شده.تحت حاکمیت OpenZeppelin AccessControlDefaultAdminRules با تاخیر زمانی اجباری.
UPGRADER_ROLEkeccak256('UPGRADER_ROLE')مجوز ارتقاء منطق پیاده‌سازی UUPS در تابع _authorizeUpgrade().محدود به حاکمیت چندامضایی پروتکل؛ بدون قرارداد معتبر نمی‌تواند وضعیت را تغییر دهد.
MINTER_ROLEkeccak256('MINTER_ROLE')ضرب توکن‌های جدید J1USD در برابر وثیقه‌های تأیید شده یا الزامات تسویه حساب.به شدت توسط supplyCeiling غیرقابل تغییر و هش issuanceReference محدود شده است.
BURNER_ROLEkeccak256('BURNER_ROLE')کاهش عرضه توکن در زمان بازخرید یا تسویه بدهی‌های پروتکل.نیازمند burnReference یکتا. استثنای محدود برای سوزاندن از حساب‌های محدود جهت حفظ توان مالی.
PAUSER_ROLEkeccak256('PAUSER_ROLE')فعال یا غیرفعال‌سازی مدارشکن اضطراری برای توقف انتقال‌های عادی توکن.قابلیت دفاعی اضطراری برای بحران‌های شدید بازار یا ناهنجاری‌های پل میان‌زنجیره‌ای.
BLACKLISTER_ROLEkeccak256('BLACKLISTER_ROLE')افزودن یا حذف آدرس‌ها از لیست سیاه واریز و برداشت جهانی.نمی‌تواند آدرس‌های protectedSystemAddress را هدف قرار دهد. نیازمند هش پیگیری انطباق است.
FREEZER_ROLEkeccak256('FREEZER_ROLE')مسدودسازی کل حساب یا مبالغ مشخص (freezeBalance, freezeAllCurrentBalance).امکان مسدودسازی مبالغ مورد مناقشه با حفظ نقدینگی سایر وجوه. آدرس‌های سیستم مصون هستند.
WIPER_ROLEkeccak256('WIPER_ROLE')نابودسازی موجودی‌های مسدود شده طبق حکم قضایی یا نظارتی معتبر.فقط برای حساب‌های از پیش مسدود شده اعمال می‌شود؛ نمی‌تواند از مبلغ مسدود فراتر رود.
RESCUE_ROLEkeccak256('RESCUE_ROLE')بازیابی توکن‌های BEP-20 شخص ثالث که اشتباهاً به قرارداد ارسال شده‌اند.دست زدن به موجودی توکن J1USD کاملاً ممنوع است (RescueProhibitedToken).

زیرساخت نقدینگی و ارزیابی استخرها

نقدینگی DEX آن‌چین در برابر استخرهای ثانویه متمرکز

توکن J1USD بازارهای AMM غیرامانی غیرمتمرکز در BNB Smart Chain را با دفاتر سفارش متمرکز آف‌چین متعادل می‌کند. در اینجا مشخصات آدرس‌های استخر، لینک‌های معاملاتی و مرزهای امنیتی آمده است.

نقدینگی غیرمتمرکز روی زنجیره (DEX)

استخرهای بازارساز خودکار (AMM)

استخرهای نقدینگی قرارداد هوشمند غیرامانی که مستقیماً در BNB Smart Chain از طریق PancakeSwap کار می‌کنند. بدون ریسک نگهداری شخص ثالث؛ معاملات همتا با قرارداد از طریق بایت‌کد اجرا می‌شوند.

PancakeSwap V3 · J1USD / USDC
اصلیکارمزد ۰٫۰۵٪

استخر نقدینگی متمرکز که J1USD را به طور دقیق با 1.00 USD Coin تثبیت می‌کند. آدرس سیستمی محافظت شده و مصون از مسدودسازی.

آدرس قرارداد هوشمند استخر:
PancakeSwap V2 · J1USD / JIT
اکوسیستمکارمزد ۰٫۲۵٪

پل غیرمتمرکز AMM که توکن کاربردی AirJIT (JIT) و دارایی تسویه حساب (J1USD) را متصل می‌کند.

آدرس قرارداد هوشمند استخر:
استخرهای ثانویه متمرکز و خارج از زنجیره

استخرهای دفتر سفارش داخلی

پلتفرم AirJIT بازارهای ثانویه را روی جفت‌های وثیقه اصلی بدون نیاز به آدرس قرارداد اختصاصی در آف‌چین ارائه می‌دهد. تسویه حساب از طریق موتورهای تطبیق متمرکز با سرعت بالا انجام می‌شود.

عدم داشتن امتیاز ضرب قرارداد هوشمند

سرورهای آف‌چین هیچ کلید خصوصی برای ضرب یا سوزاندن توکن J1USD در BNB Smart Chain ندارند.

پشتوانه دارایی ۱:۱ روی زنجیره

موجودی حساب‌های داخلی آف‌چین به دقت با سپرده‌های توکن پروکسی تأیید شده روی زنجیره محدود شده است.

یافته‌های ارزیابی و مدل‌سازی تهدیدات

تحلیل بردارهای حمله و دفاعیات رسمی

بررسی جامع سطوح بالقوه حملات اقتصادی، ریاضی و رمزنگاری که در طول ارزیابی فنی مورد بررسی قرار گرفتند.

مصون

حملات ورود مجدد (Reentrancy)

توکن به‌روزرسانی‌های حالت ERC-20 اوپن‌زپلین (_update) را بدون فراخوانی خارجی غیرقابل اعتماد قبل از تسویه، به ارث می‌برد. انطباق کامل با Checks-Effects-Interactions.

غیرقابل اعمال

دستکاری اوراکل و قیمت اسپات

دفتر کل توکن J1USD هنگام انتقال به اوراکل‌های قیمت خارجی مراجعه نمی‌کند. محاسبات ۱۰۰٪ داخلی است و دستکاری از طریق وام سریع (Flash Loan) غیرممکن است.

پیشگیری شده

سرقت پیاده‌سازی منطق

سازنده پیاده‌سازی _disableInitializers() را در زمان استقرار اجرا می‌کند. قرارداد زیرین نمی‌تواند توسط مهاجم به طور مستقل تصاحب شود.

کاهش یافته

تصاحب خصمانه حاکمیت

تخصیص مجدد نقش مدیر مستلزم تاخیر زمانی تغییرناپذیر (defaultAdminDelay) است. افشای یک کلید نمی‌تواند بلافاصله کنترل کامل را به دست گیرد.

پایدارنده‌های امنیت

پایدارنده‌های امنیتی بررسی شده به صورت رسمی

خلاصه بررسی‌های سطح بایت‌کد که تأیید می‌کند یکپارچگی سیستم در تمام شرایط بحرانی حفظ می‌شود.

وضعیت · نتیجه

اجرای سقف عرضه

عملیات ضرب در صورت فراتر رفتن از سقف با SupplyCeilingExceeded لغو می‌شود. مدیر مجاز به کاهش سقف زیر میزان گردش فعلی نیست.

مکانیسم اجرابررسی وضعیت supplyCeiling در mint()
وضعیت · نتیجه

جلوگیری از تکرار در ضرب و سوزاندن

هر تراکنش نیازمند یک شناسه bytes32 یکتا است. درخواست‌های تکراری با ReferenceAlreadyUsed رد می‌شوند تا از اجرای مجدد جلوگیری شود.

مکانیسم اجرانگاشت‌های _usedIssuanceReferences و _usedBurnReferences
وضعیت · نتیجه

جلوگیری از سرقت منطق پیاده‌سازی

قرارداد پیاده‌سازی مقداردهی اولیه را در سازنده قفل می‌کند. مهاجمان نمی‌توانند قرارداد منطق را به طور مستقل تصاحب کنند.

مکانیسم اجرافراخوانی _disableInitializers() در سازنده
وضعیت · نتیجه

محافظت در برابر تداخل چیدمان حافظه

حافظه پروکسی از استانداردهای ERC-1967 پیروی می‌کند. فاصله ۴۲ کلمه‌ای تضمین می‌کند که ارتقاءهای آتی متغیرهای موجود را بازنویسی نکنند.

مکانیسم اجرااسلات‌های استاندارد ERC-1967 + شکاف uint256[42]
وضعیت · نتیجه

کاهش ریسک تصاحب خصمانه مدیریت

انتقال DEFAULT_ADMIN_ROLE آنی نیست. فرآیند دو مرحله‌ای با تاخیر زمانی اجباری از فجایع ناشی از لو رفتن کلید جلوگیری می‌کند.

مکانیسم اجراقوانین AccessControlDefaultAdminRules با defaultAdminDelay
وضعیت · نتیجه

مصونیت زیرساخت‌های حیاتی

آدرس‌های سیستم ثبت‌شده (استخرهای DEX، خزانه‌داری، قراردادهای عملیاتی) مسدود نمی‌شوند و خطر DoS بر نقدینگی برطرف می‌شود.

مکانیسم اجرابررسی _requireNotProtected() در توابع انطباق
وضعیت · نتیجه

قفل جلوگیری از تخلیه خود در بازیابی توکن

امکان بازیابی توکن‌های شخص ثالث ارسال شده به اشتباه را می‌دهد، اما فراخوانی‌ها برای برداشت خود توکن J1USD را کاملاً مسدود می‌کند.

مکانیسم اجرابررسی RescueProhibitedToken در rescueERC20()
وضعیت · نتیجه

مدارشکن اضطراری سراسری

نقش PAUSER_ROLE می‌تواند در صورت بروز بحران در بازار، فوراً انتقال‌ها را متوقف کند، در حالی که احکام قانونی همچنان حفظ می‌شوند.

مکانیسم اجرااصلاح‌کننده whenNotPaused بر روی transfer/mint/approve
وضعیت · نتیجه

دقت مسدودسازی موجودی تفکیک شده

امکان مسدود کردن مبالغ مورد مناقشه را بدون قفل کردن کل کیف پول کاربر فراهم می‌کند و باقی وجوه پاک را کاملاً نقد نگه می‌دارد.

مکانیسم اجراتفکیک حسابی در availableBalanceOf()

افشای مسئولانه آسیب‌پذیری‌ها

گزارش یک آسیب‌پذیری امنیتی

پلتفرم AirJIT یک برنامه فعال برای افشای آسیب‌پذیری‌ها دارد. اگر مشکلی در پروکسی J1USD، پیاده‌سازی یا زیرساخت قرارداد هوشمند پیدا کردید، با مسئولیت گزارش دهید.

در صورت امکان گزارش‌های حساس را با PGP رمزگذاری کنید. ما ظرف ۲۴ ساعت تمام گزارش‌های معتبر را بررسی و تأیید می‌کنیم.