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

قرارداد اسپات

مقدمه

قرارداد اسپات 1 نقطه ارتباط بین اوراکل‌ها و قراردادهای هسته است. به عنوان یک قرارداد رابط عمل می‌کند و تنها لیست ilk فعلی را ذخیره می‌کند.

جزئیات قرارداد

ریاضی

تمام عملیات ریاضی برای بررسی سرریزشدن‌ و زیرریزشدن‌ها استفاده می‌شوند.

پیچیدگی

تمام متدها در زمان ثابت اجرا می‌شوند.

متغیرها

  • ‍ilk‍ یک نوع مشخص از داده وثیقه است
  • ilk.pip قراردادی است که قیمت فعلی یک نوع مشخص از ilk را نگه می‌دارد
  • ilk.mat نسبت لیکویدیشن برای یک نوع مشخص از ilk است
  • vat هسته سیستم زربان است
  • par ارزش زر در دارایی مرجع است( معادل ۱۰۰۰ تومان برای هر زر)

وثیقه

تنها کاربران مجاز می‌توانند هر متغیری را در قرارداد به‌روز کنند.

مکانیسم‌ و مفاهیم کلیدی

تابع Poke

تابع poke تنها تابع تأیید نشده در اسپات است. این تابع یک bytes32 از ilk را به‌روز می‌کند:

  1. ابتدا تابع peek را فرا‌ می‌خواند که برای ilk داده شده فراخوانی می‌شود و val و has (یک داده باینری که اگر در ماژول امنیتی اوراکل خطا وجود داشته باشد مقدار آن false است) را دریافت می‌کند. فراخوانی تابع بعدی تنها در صورتی اتفاق می‌افتد که has == true باشد.
  2. هنگام محاسبه اسپات مقدار par برای این محاسبه بسیار مهم است زیرا این مقدار رابطه بین زر و یک واحد ارزش در قیمت را تعریف می‌کند. سپس val بر par تقسیم شده و مقدار حاصل بر ilk.mat تقسیم می‌شود. که در نهایت قیمت فعلی نقطه برای ilk داده شده را می‌دهد.
  3. پس از محاسبه spot تابع file فراخوانی می‌شود که باعث به‌روزرسانی vat با قیمت لیکویدیشن فعلی از ilk فراخوانی شده، می‌شود.

نکات

متدهای spotter در مقایسه با بیشتر بخش‌های سیستم زر نسبتاً ابتدایی است. در متد poke ، فضای زیادی برای خطای کاربر وجود ندارد. اگر یک bytes32 اشتباه وارد ورودی شود، فراخوانی تابع با خطا مواجه خواهد شد..

هر ماژولی که در اجرای اسپات قرار دارد در واقع به نوعی دسترسی کامل به ریشه را دارد و بنابراین می‌تواند ilk هایی که نیاز به به‌روزرسانی دارند، را اضافه و حذف کند. اگرچه این مشکل سیستم را کاملا با شکست مواجه نمی‌ٰکند، اما ممکن است خطرات قابل توجهی را به همراه داشته باشد.

حالات شکست

خطای برنامه‌نویسی

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

تغذیه اوراکل‌

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

منقضی شدن قیمت اسپات

هنگامی که poke در زمان‌های مناسبی فراخوانی نشود، قیمت اسپات در قرارداد مدیریت صندوق‌ها قدیمی خواهد شد. این اتفاق ممکن است به دلایل مختلفی از جمله همکاری مشترک یا توطئه ماینرها اتفاق بیفتد و منجر به نتایج منفی مانند تسویه‌های نامناسب یا عدم دسترسی به تسویه‌هایی می‌شوند که باید امکان‌پذیر باشند.

1 Spot