قرارداد اسپات
مقدمه
قرارداد اسپات 1 نقطه ارتباط بین اوراکلها و قراردادهای هسته است. به عنوان یک قرارداد رابط عمل میکند و تنها لیست ilk
فعلی را ذخیره میکند.
جزئیات قرارداد
ریاضی
تمام عملیات ریاضی برای بررسی سرریزشدن و زیرریزشدنها استفاده میشوند.
پیچیدگی
تمام متدها در زمان ثابت اجرا میشوند.
متغیرها
ilk
یک نوع مشخص از داده وثیقه استilk.pip
قراردادی است که قیمت فعلی یک نوع مشخص ازilk
را نگه میداردilk.mat
نسبت لیکویدیشن برای یک نوع مشخص ازilk
استvat
هسته سیستم زربان استpar
ارزش زر در دارایی مرجع است( معادل ۱۰۰۰ تومان برای هر زر)
وثیقه
تنها کاربران مجاز میتوانند هر متغیری را در قرارداد بهروز کنند.
مکانیسم و مفاهیم کلیدی
تابع Poke
تابع
poke
تنها تابع تأیید نشده در اسپات است. این تابع یک
bytes32
از
ilk
را بهروز میکند:
- ابتدا تابع
peek
را فرا میخواند که برایilk
داده شده فراخوانی میشود وval
وhas
(یک داده باینری که اگر در ماژول امنیتی اوراکل خطا وجود داشته باشد مقدار آنfalse
است) را دریافت میکند. فراخوانی تابع بعدی تنها در صورتی اتفاق میافتد کهhas == true
باشد. - هنگام محاسبه اسپات مقدار
par
برای این محاسبه بسیار مهم است زیرا این مقدار رابطه بین زر و یک واحد ارزش در قیمت را تعریف میکند. سپسval
برpar
تقسیم شده و مقدار حاصل برilk.mat
تقسیم میشود. که در نهایت قیمت فعلی نقطه برایilk
داده شده را میدهد. - پس از محاسبه
spot
تابعfile
فراخوانی میشود که باعث بهروزرسانیvat
با قیمت لیکویدیشن فعلی ازilk
فراخوانی شده، میشود.
نکات
متدهای
spotter
در مقایسه با بیشتر بخشهای سیستم زر نسبتاً ابتدایی است. در متد
poke
، فضای زیادی برای خطای کاربر وجود ندارد. اگر یک
bytes32
اشتباه وارد ورودی شود، فراخوانی تابع با خطا مواجه خواهد شد..
هر ماژولی که در اجرای اسپات قرار دارد در واقع به نوعی دسترسی کامل به ریشه را دارد و بنابراین میتواند
ilk
هایی که نیاز به بهروزرسانی دارند، را اضافه و حذف کند. اگرچه این مشکل سیستم را کاملا با شکست مواجه نمیٰکند، اما ممکن است خطرات قابل توجهی را به همراه داشته باشد.
حالات شکست
خطای برنامهنویسی
یک باگ در اسپات احتمالاً منجر به بهروزرسانی نشدن قیمتهای وثیقهها خواهد شد. در این صورت، سیستم باید یک اسپات جدید را تأیید کند که سپس قادر خواهد بود قیمتها را بهروز کند. به طور کلی این یک شکست فاجعهبار نیست زیرا این فقط باعث متوقف شدن تمام نوسانات قیمت برای مدتی خواهد شد.
تغذیه اوراکل
در واقع اسپات بر مبنای اعتماد به یک مجموعه از اوراکلهای قابل اطمینان برای ارائه دادههای قیمت کار میکند. در صورتی که این فیدهای قیمت شکست خورده باشند، امکان تولید زر بیپشتوانه وجود خواهد داشت یا صندوقهای امن ممکن است به طور نادرست تسویه شوند.
منقضی شدن قیمت اسپات
هنگامی که
poke
در زمانهای مناسبی فراخوانی نشود، قیمت اسپات در قرارداد مدیریت صندوقها قدیمی خواهد شد. این اتفاق ممکن است به دلایل مختلفی از جمله همکاری مشترک یا توطئه ماینرها اتفاق بیفتد و منجر به نتایج منفی مانند تسویههای نامناسب یا عدم دسترسی به تسویههایی میشوند که باید امکانپذیر باشند.
1 Spot