قرارداد اسپات
این صفحه مرجع قرارداد هوشمند در سطح ذخیرهسازی و توابع است؛ مخاطب آن حسابرسی، بازبینی مستقل و کار مستقیم با قراردادهای روی زنجیره است. مسیر یکپارچهسازی سازمانی از راهنمای یکپارچهسازی سازمانی میگذرد و مستقل از این مرجع است.
مقدمه
قرارداد اسپات 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 در زمانهای مناسبی فراخوانی نشود، قیمت اسپات در قرارداد مدیریت صندوقها قدیمی خواهد شد. این اتفاق ممکن است به دلایل مختلفی از جمله همکاری مشترک یا توطئه ماینرها اتفاق بیفتد و منجر به نتایج منفی مانند تسویههای نامناسب یا عدم دسترسی به تسویههایی میشوند که باید امکانپذیر باشند.