وقت خواندن: 6 دقیقه
در این وبلاگ، مفهوم پروتکلهای سرمایهگذاری نقدینگی و دستورالعملهای حسابرسی برای پروتکلهای سهامداری را بیان کردهایم. این دستورالعملها طیفی از نقاط آسیبپذیر مانند مکانیسمهای برداشت، خطاهای گرد کردن، تماسهای خارجی، منطق کارمزد، حلقهها، ساختارها، مدت زمان شرطبندی و غیره را پوشش میدهند. این پست وبلاگ مرجع مفیدی برای ممیزی پروتکلهای شرطبندی خواهد بود و میتواند به شما در شناسایی اشکالات احتمالی کمک کند. .
سهام نقدینگی چیست؟
سرمایه گذاری نقدینگی به کاربران این امکان را می دهد که دارایی های ارز دیجیتال خود را به اشتراک بگذارند و بدون از دست دادن نقدینگی، جوایزی کسب کنند. کاربران می توانند به جای قفل کردن سکه های خود برای یک دوره ثابت، یک توکن مایع دریافت کنند که نشان دهنده دارایی های سهام آنها است. این توکن را میتوان مانند هر ارز دیجیتال دیگری معامله کرد یا از آن استفاده کرد و به کاربران این امکان را میدهد تا از داراییهای خود هر طور که میخواهند استفاده کنند و در عین حال جوایزی را نیز دریافت کنند.
به عنوان مثال، شما 100 اتریوم دارید که می خواهید در شبکه اتریوم به اشتراک بگذارید. به جای قفل کردن ETH خود برای یک دوره ثابت، می توانید از یک سرویس سهامداری نقدینگی مانند Lido برای سهام ETH خود استفاده کنید و در ازای آن یک توکن مایع به نام stETH دریافت کنید. با stETH، همچنان میتوانید در حین کسب پاداشهای شرطبندی، ETH سهام خود را معامله کنید یا از آن استفاده کنید.
بیایید با حسابرسی قراردادهای سهام شروع کنیم:
قبل از شروع با کد قرارداد، تمام مشخصات حسابرسی موجود را بررسی کنید. این می تواند به شکل کاغذ سفید، فایل های README یا چیز دیگری باشد. اینها به شما ایده می دهند که کد قرارداد حاوی چه چیزی است.
هنگامی که به سند مشخصات حسابرسی برای قرارداد سهامداری نگاه می کنید، به این نکات توجه کنید:
- انواع کارمزدها و محاسبات آنها.
- مکانیسم پاداش برای توکن های شرط بندی شده
- اختیارات مالک
- آیا قرارداد ETH را نگه می دارد؟
- قرارداد دارای چه نشانه هایی خواهد بود؟
- قرارداد اصلی که از آن منشعب شده است
بررسی کنید که مشخصات با کد مطابقت داشته باشد. با کارمزد و توکنومیک شروع کنید و سپس اعتبار مالک را تأیید کنید. بررسی کنید که تمام پاداشها و ارزشهای هزینه مطابق با مستندات باشد.
نقاط آسیب پذیر برای جستجو؟
1. مکانیزم برداشت پاداش:
بررسی کنید که مکانیسم پاداش توکن شرط بندی شده به درستی اجرا شود و پاداش ها به طور منصفانه و متناسب بین همه سهامداران توزیع شود. پروژه ها می توانند جوایز را به دو صورت توزیع کنند: یا به صورت خودکار، به صورت دوره ای یا بر اساس درخواست خود کاربران. تابع برداشت را می توان با توجه به منطق تجاری پروتکل پیاده سازی و سفارشی کرد.
در زیر چند ایست بازرسی وجود دارد:
- بررسی کنید که آیا هر کاربری می تواند بیش از پاداش + مبلغ شرط بندی شده خود برداشت کند یا خیر.
- سرریز/زیر جریان را در محاسبه مقدار بررسی کنید
- بررسی کنید که آیا پارامترهای خاصی می توانند تأثیر منفی بر پاداش ها در طول محاسبه داشته باشند.
- اگر از block.timestamp یا block.number در این تابع استفاده شود. بررسی کنید که آیا می توان از آن به هر طریقی سوء استفاده کرد.
2. منطق کارمزد:
اگر واریز و برداشت مشمول مقداری کارمزد است، بررسی کنید که هیچ کاربر به تنهایی نمی تواند از این هزینه عبور کند. علاوه بر این، برای هرگونه مشکل سرریز یا زیرریزی احتمالی هوشیار باشید. فقط مدیر یا مالک باید مجاز به تغییر تنظیمات هزینه باشد. همچنین بررسی کنید که آستانهای برای حداکثر هزینهها تعیین شده است، که از تنظیم آن توسط مدیر در مقدار بسیار زیاد جلوگیری میکند.
3. مکانیسم ضرب/سوختن توکن LP:
بررسی کنید که آیا مکانیسم های ضرب و سوزاندن به درستی اجرا شده اند یا خیر. تابع رایت باید همه تغییرات حالت ایجاد شده توسط یک تابع نعناع را معکوس کند. علاوه بر این، بررسی اینکه کاربران در اولین شرط بندی، زمانی که استخر خالی است، مقدار مناسبی از توکن ها را دریافت می کنند، بسیار مهم است.
منطق توابع ضرب و سوزاندن را می توان به صورت ریاضی تایید کرد تا آسیب پذیری پنهان را کشف کند. همچنین، کل عرضه توکن های LP ضرب شده نباید از دارایی های سهام تجاوز کند.
4. خطاهای گرد کردن:
حتی اگر برخی از اشتباهات جزئی گرد کردن معمولاً اجتناب ناپذیر هستند و نگران کننده نیستند، زمانی که امکان افزایش آنها وجود داشته باشد، می توانند به طور قابل توجهی رشد کنند. به دنبال موارد لبه ای باشید که در آن می توان از خطاهای گرد کردن با شرط بندی و بازکردن مکرر سود برد.
برای تعیین اینکه آیا خطاهای گرد کردن می توانند به مقدار قابل توجهی در یک دوره زمانی طولانی افزایش پیدا کنند، می توانیم به صورت ریاضی محدوده خطاهای گرد کردن احتمالی را محاسبه کنیم.
5. مدت زمان شرط بندی:
اطمینان حاصل کنید که محاسبات مدت زمان شرط بندی در قرارداد با منطق تجاری مشخص شده مطابقت دارد. با دور زدن بررسیهای مدت، تأیید کنید که کاربران نمیتوانند قبل از پایان مدت زمان شرطبندی، پاداشها را بازخرید کنند. همچنین، بررسی کنید که آیا مدت زمان شرط بندی می تواند توسط مهاجم برای دریافت پاداش های بیشتر مورد سوء استفاده قرار گیرد.
6. تماس های خارجی و مدیریت توکن:
بیشتر تماس های خارجی مربوط به قراردادهای رمزی خواهد بود. بنابراین، ما باید تعیین کنیم که قرارداد سهامداری با چه نوع توکن هایی برخورد خواهد کرد. بررسی تماس های خارجی برای هر گونه خطا و حملات ورود مجدد ضروری است. توکنهای کاهشدهنده یا توکنهای دارای کارمزد انتقال، مانند Safemoon، اگر منطق آنها به درستی اجرا نشود، میتوانند مشکل ساز شوند.
7. بررسی دستکاری قیمت:
دستکاری قیمت از طریق وام فلش یکی از رایج ترین هک ها در پروژه های DeFi است. ممکن است موقعیتهایی وجود داشته باشد که عوامل مخرب بتوانند از وامهای فلش برای دستکاری قیمتها در حین شرطبندی یا برداشتن مقدار زیادی از توکنها استفاده کنند. برای جلوگیری از سناریوهای حاشیه ای که می تواند منجر به حملات دستکاری قیمت مبتنی بر وام فوری و از دست دادن وجوه سایر کاربران شود، عملکردهای شرط بندی و برداشتن را به دقت بررسی کنید.
8. چند بررسی اضافی:
- حلقه ها: اگر منطق قرارداد شامل حلقه زدن روی آرایه ها باشد، مهم است که اطمینان حاصل شود که از حد گاز بلوک تجاوز نمی شود. این می تواند زمانی رخ دهد که اندازه آرایه بسیار بزرگ باشد، بنابراین باید بررسی کنید که چه عملکردهایی می توانند اندازه آرایه را افزایش دهند و آیا هر کاربری می تواند از آن برای ایجاد یک حمله DoS سوء استفاده کند. این رو چک کن گزارش.
- سازه ها: قراردادهای Staking از نوع ساختار برای ذخیره داده های کاربر یا استخر استفاده می کنند. هنگام اعلام یا دسترسی به یک ساختار در یک تابع، مهم است که مشخص کنید از "حافظه" یا "ذخیره سازی" استفاده شود. ممکن است به ما در صرفه جویی در مصرف گاز کمک کند. برای اطلاعات بیشتر مراجعه فرمایید به این مقاله.
- جلو دویدن: به دنبال هر سناریویی باشید که در آن عوامل مخرب می توانند هر معامله ای را به نفع خود انجام دهند.
- قابلیت مشاهده عملکرد/بررسی کنترل دسترسی: هر تابعی که به عنوان خارجی یا عمومی اعلام شود، برای هر کسی قابل دسترسی است. بنابراین، مهم است که اطمینان حاصل شود که هیچ یک از عملکردهای عمومی نمی توانند اقدامات حساسی را انجام دهند. بررسی اینکه پروتکل شرط بندی کنترل های مناسبی را برای جلوگیری از دسترسی غیرمجاز به سکه های شرط بندی شده و زیرساخت سیستم اجرا کرده است، بسیار مهم است.
- خطرات تمرکز: مهم است که به مالک قدرت بیش از حد ندهید. اگر آدرس ادمین به خطر بیفتد، ممکن است آسیب قابل توجهی به پروتکل وارد کند. بررسی کنید که امتیازات مالک یا سرپرست مناسب است و اطمینان حاصل کنید که پروتکل برنامهای برای رسیدگی به موقعیتهایی که کلیدهای خصوصی یک سرپرست درز میکند، دارد.
- مدیریت ETH / WETH: قراردادها اغلب شامل منطق خاصی برای مدیریت ETH هستند. به عنوان مثال، وقتی msg.value > 0 باشد، یک قرارداد ممکن است ETH را به WETH تبدیل کند در حالی که همچنان اجازه می دهد WETH مستقیماً دریافت شود. هنگامی که کاربر WETH را به عنوان ارز مشخص می کند اما ETH را همراه با تماس ارسال می کند، این می تواند برخی از متغیرهای ثابت را شکسته و منجر به رفتار نادرست شود.
تاکنون، پروتکلهای ذخیره نقدینگی و دستورالعملهای حسابرسی این پروتکلها را مورد بحث قرار دادهایم. به طور خلاصه، شرطبندی نقدینگی به کاربران اجازه میدهد تا بدون قربانی کردن نقدینگی، پاداشهای شرطبندی را کسب کنند. ما نقاط آسیبپذیر را در قراردادهای شرطبندی که حسابرسان باید به آنها توجه کنند، مانند مکانیسمهای برداشت، منطق حقالزحمه، مکانیسم ضرب/سوختن توکن LP، خطاهای گرد کردن، مدت زمان شرطبندی، تماسهای خارجی، و بررسیهای دستکاری قیمت، مشخص کردهایم.
ما به حسابرسان توصیه میکنیم اسناد مشخصات حسابرسی را بررسی کنند، مشخصات را با کد مطابقت دهند و حقالزحمهها و اعتبار سنجی نشانهها را بررسی کنند. ما همچنین بررسیهای اضافی مانند حلقه زدن روی آرایهها، مشخص کردن حافظه یا ذخیرهسازی برای دادههای نوع ساختار و سناریوهای اولیه را توصیه میکنیم. این دستورالعمل ها برای ممیزی پروتکل های شرط بندی مفید خواهد بود و به شناسایی اشکالات احتمالی کمک می کند.
11 نمایش ها
- محتوای مبتنی بر SEO و توزیع روابط عمومی. امروز تقویت شوید.
- پلاتوبلاک چین. Web3 Metaverse Intelligence. دانش تقویت شده دسترسی به اینجا.
- منبع: https://blog.quillhash.com/2023/03/10/guidelines-for-auditing-staking-protocols/
- :است
- $UP
- 100
- a
- قادر
- دسترسی
- قابل دسترسی است
- دسترسی
- مطابق
- اقدامات
- بازیگران
- اضافی
- علاوه بر این
- نشانی
- مدیر سایت
- مزیت - فایده - سود - منفعت
- معرفی
- اجازه دادن
- اجازه می دهد تا
- مقدار
- و
- هر کس
- مناسب
- هستند
- صف
- AS
- دارایی
- At
- حمله
- حمله
- توجه
- حسابرسی
- حسابرسی
- حسابرسان
- قدرت
- بطور خودکار
- در دسترس
- مستقر
- اساس
- BE
- قبل از
- شروع
- شروع
- مسدود کردن
- بلاگ
- شکستن
- اشکالات
- سوختگی
- کسب و کار
- by
- محاسبه
- محاسبات
- صدا
- نام
- تماس ها
- CAN
- نمی توان
- Осторожно
- موارد
- علت
- معین
- تبادل
- بررسی
- چک
- رمز
- سکه
- در معرض خطر
- مفهوم
- نگرانی
- شامل
- قرارداد
- قرارداد
- کنترل
- گروه شاهد
- تبدیل
- میتوانست
- پوشش
- بسیار سخت
- کریپتو کارنسی (رمز ارزها )
- واحد پول
- سفارشی
- داده ها
- DEFI
- پروژه های دفی
- deflationary
- سپرده
- مشخص کردن
- مستقیما
- بحث کردیم
- توزیع کردن
- توزیع شده
- سند
- مستندات
- اسناد و مدارک
- داس
- در طی
- کسب درآمد
- سود
- لبه
- هر دو
- اطمینان حاصل شود
- خطاهای
- ضروری است
- تاسیس
- و غیره
- ETH
- ethereum
- شبکه اتریوم
- مثال
- تجاوز
- بیش از حد
- بهره برداری
- سوء استفاده قرار گیرد
- خارجی
- منصفانه
- پرداخت
- هزینه
- کمی از
- فایل ها
- نام خانوادگی
- ثابت
- فلاش
- وام های فلاش
- به دنبال
- برای
- فرم
- مکرر
- از جانب
- تابع
- توابع
- بودجه
- GAS
- دریافت کنید
- دادن
- شدن
- دستورالعمل ها
- هک
- دسته
- اداره
- آیا
- کمک
- پنهان
- زیاد
- نگه داشتن
- علاقجات
- HTTPS
- اندیشه
- شناسایی
- تأثیر
- اجرا
- مهم
- in
- شامل
- افزایش
- اطلاعات
- شالوده
- در عوض
- بررسی
- مسائل
- IT
- ITS
- کلید
- بزرگ
- رهبری
- LIDO
- پسندیدن
- محدود
- مایع
- ژتون مایع
- نقدینگی
- وام
- وام
- نگاه کنيد
- به دنبال
- خاموش
- LP
- ساخته
- دست کاری
- مسابقه
- از نظر ریاضی
- بیشترین
- مکانیزم
- حافظه
- قدرت
- خردسال
- نعناع
- ذوب شده
- ضرب
- اشتباهات
- بیش
- اکثر
- منفی
- شبکه
- عدد
- of
- on
- ONE
- دیگر
- مشخص شده
- مالک
- مقاله
- پارامترهای
- پرداخت
- انجام
- دوره
- متناوب
- محل
- برنامه
- افلاطون
- هوش داده افلاطون
- PlatoData
- لطفا
- نقطه
- استخر
- ممکن
- پست
- پتانسیل
- قدرت
- جلوگیری از
- جلوگیری
- قیمت
- قیمت
- خصوصی
- کلیدهای خصوصی
- امتیازات
- مشکل
- سود
- پروژه ها
- پروتکل
- پروتکل
- عمومی
- محدوده
- گرفتن
- اخذ شده
- توصیه
- از گرو در اوردن
- به طور مکرر
- نشان دهنده
- درخواست
- نتیجه
- برگشت
- معکوس
- این فایل نقد می نویسید:
- پاداش
- پاداش
- خطرات
- قربانی کردن
- صفمون
- ذخیره
- سناریوها
- حساس
- سرویس
- محیط
- تنظیمات
- باید
- قابل توجه
- به طور قابل توجهی
- تنها
- شرایط
- اندازه
- So
- برخی از
- چیزی
- خاص
- مشخصات
- مشخصات
- مشخص شده
- سهام
- استیک
- ETH سهامدار
- سهامداران
- ردی
- جوایز Staking
- آغاز شده
- دولت
- steTH
- هنوز
- ذخیره سازی
- opbevare
- موضوع
- قابل توجه
- چنین
- عرضه
- که
- La
- بلوک
- شان
- آنها
- خودشان
- از این رو
- اینها
- آستانه
- زمان
- برچسب زمان
- به
- رمز
- توکنولوژی
- نشانه
- جمع
- تجارت
- داد و ستد
- معامله
- انتقال
- انواع
- به طور معمول
- برملا کردن
- us
- استفاده کنید
- کاربر
- کاربران
- اعتبار سنجی
- ارزش
- ارزشها
- تایید
- بررسی
- از طريق
- آسیب پذیری
- آسیب پذیر
- مسیر..
- راه
- با
- چی
- چه
- که
- در حین
- سفید
- کتاب سفید
- اراده
- با
- برداشت
- برداشت از حساب
- در داخل
- بدون
- شما
- شما
- زفیرنت