اوراکل در بلاکچین چیست؛ چشم قرارداد هوشمند کجاست
برای ثبت سفارش به حساب نیاز دارید. ثبت نام رایگان است.
فرض کنید تتر را به عنوان وثیقه در یک پلتفرم وام دهی گذاشته اید و نیمه شب موقعیتتان تسویه اجباری می شود. قرارداد هوشمندی که این کار را کرد، خودش قیمت را ندیده بود. کسی به او گفته بود قیمت چند است.
آن «کسی»، اوراکل است. و اگر بخواهیم یک جمله درباره اهمیتش بگوییم همین است: اوراکل تنها نقطه ای در یک سیستم به اصطلاح بدون اعتماد است که مجبورید دوباره به یک نفر اعتماد کنید.
پیش از ادامه یک نکته لازم: در جستجوی فارسی، کلمه اوراکل بیشتر به شرکت نرم افزاری اوراکل یا فال اوراکل مربوط می شود. آنچه اینجا می خوانید اوراکل در بلاکچین است؛ موضوع کاملا متفاوتی.
بلاکچین عمدا کور است. یک قرارداد هوشمند فقط چیزهایی را می بیند که روی همان زنجیره ثبت شده اند و هیچ راهی برای دیدن بیرون ندارد؛ نه قیمت دلار را می داند، نه نتیجه یک مسابقه را، نه اینکه هواپیما تاخیر داشته یا نه.
این محدودیت باگ نیست، ویژگی است. اگر هر گره ای می توانست خودش برود از اینترنت داده بگیرد، گره های مختلف داده های متفاوتی می گرفتند و شبکه هیچ وقت به توافق نمی رسید. اجماع فقط وقتی کار می کند که همه دقیقا یک ورودی را ببینند.
پس داده بیرونی باید اول روی زنجیره نوشته شود و بعد قرارداد بخواندش. کاری که اوراکل می کند همین است: نوشتن داده دنیای واقعی روی زنجیره، به شکلی که همه گره ها یک عدد واحد ببینند.
ساده ترین تصور این است که یک سرور قیمت را می خواند و روی زنجیره می نویسد. این همان مدلی است که سریع ترین راه برای خالی شدن یک پروتکل است، چون آن یک سرور می تواند اشتباه کند یا خریداری شود.
مدلی که در عمل جا افتاده، شبکه ای از چند تامین کننده مستقل است که داده را از چند منبع می گیرند و خروجی مشترک را روی زنجیره منتشر می کنند. نکته جالب در جزئیات به روزرسانی است. مستندات چین لینک توضیح می دهد که فید قیمت با هر تغییر کوچکی به روز نمی شود؛ دو محرک دارد: یکی «آستانه انحراف»، یعنی وقتی قیمت بیش از درصد مشخصی جابجا شود، و دیگری «ضربان»، یعنی حداکثر فاصله زمانی مجازی که اگر بگذرد به هر حال یک به روزرسانی انجام می شود.
چرا این جزئیات مهم است؟ چون یعنی عددی که قرارداد هوشمند می بیند همیشه دقیقا قیمت لحظه بازار نیست. بین دو به روزرسانی، یک اختلاف کوچک وجود دارد. در بازار آرام بی اهمیت است. در ریزش شدید، همین اختلاف تعیین می کند چه کسی تسویه می شود.
تقسیم بندی های کتابی زیادند، اما دو تفکیک عملی اند:
- ورودی و خروجی. اوراکل ورودی داده بیرون را به زنجیره می آورد؛ اوراکل خروجی نتیجه یک قرارداد را به دنیای بیرون می برد، مثلا دستور پرداختی که باید در یک سیستم بانکی اجرا شود.
- متمرکز و غیرمتمرکز. این تفکیک اصلی است. اوراکل متمرکز یعنی همه امنیت پروتکل به یک منبع وابسته است. غیرمتمرکز یعنی برای دستکاری داده باید چند تامین کننده مستقل را همزمان به هم زد.
اوراکل سخت افزاری هم وجود دارد؛ سنسور، دستگاه ردیاب، اینترنت اشیا. در عمل بخش کوچکی از کاربردهای امروز است و بیشتر در ارائه ها دیده می شود تا در محصولات زنده.
ادبیات رایج می گوید بلاکچین واسطه ها را حذف می کند. درباره خود زنجیره تا حدی درست است. درباره هر برنامه ای که به داده بیرونی نیاز دارد، درست نیست.
یک پروتکل وام دهی می تواند کدی بی نقص و ممیزی شده داشته باشد و باز هم تخلیه شود، اگر مهاجم بتواند قیمتی را که اوراکل گزارش می دهد دستکاری کند. راه معمول هم پیچیده نیست: بازاری با عمق کم پیدا می کنی، با سرمایه نسبتا کم قیمتش را برای چند لحظه جابجا می کنی، و پروتکلی که قیمتش را از همان بازار می خواند بر اساس عدد غلط تصمیم می گیرد. حمله به قرارداد نبوده؛ حمله به چشم های قرارداد بوده.
پس وقتی پروژه ای می گوید «کاملا غیرمتمرکز»، سوال درست این است: داده اش از کجا می آید، چند منبع مستقل دارد، و اگر آن منبع خراب شود چه اتفاقی می افتد. این سوال بیشتر از بررسی خود کد، پروژه های ضعیف را لو می دهد.
اوراکل ممکن است بحثی فنی به نظر برسد، اما اثرش مستقیم است:
- وام و وثیقه. نقطه تسویه شما را عددی تعیین می کند که اوراکل گزارش کرده، نه عددی که در صرافی می بینید. تفاوتشان معمولا ناچیز است و در نوسان شدید، نیست. تفصیلش در پلتفرم های وام دهی و ریسک تسویه آمده.
- استیبل کوین های وثیقه دار. حفظ لنگر قیمت به داده بیرونی وابسته است.
- مشتقات و بازارهای پیش بینی. کل تسویه شان روی خروجی اوراکل بنا شده.
- پل های بین زنجیره ای. بخش بزرگی از سرقت های بزرگ این حوزه، از همین لایه انتقال پیام و داده اتفاق افتاده؛ فهرست کامل تر الگوهای سوءاستفاده در انواع کلاهبرداری و حمله در بازار رمزارز آمده.
اول، قطعی اینترنت. این را کم گفته اند و پرهزینه است: اوراکل در روزی که شما اینترنت ندارید کار می کند. شبکه به روزرسانی می شود، قیمت پایین می آید و ربات تسویه، موقعیت شما را می بندد. سیستم منتظر شما نمی ماند. یعنی هر موقعیت اهرم دار یا وثیقه داری که برای مدیریتش باید آنلاین باشید، در ایران یک ریسک اضافه دارد که در هیچ راهنمای خارجی حساب نشده. حاشیه امن بیشتری بگذارید یا اصلا سراغش نروید.
دوم، نرخ تومان روی زنجیره نیست. هیچ اوراکل شناخته شده ای نرخ تومان به دلار را به صورت قابل اتکا منتشر نمی کند. هر قرارداد یا سرویسی که ادعا کند بر اساس نرخ ریال به شکل خودکار تسویه می کند، آن نرخ را از یک منبع متمرکز می گیرد؛ یعنی همان اعتمادی که قرار بود حذف شود. اگر با چنین سرویسی طرف شدید، بپرسید منبع نرخ کجاست. در مقابل، معامله ای که نرخش را قبل از ثبت سفارش می بینید و همان جا تسویه می شود، مثل خرید و فروش ووچر ارزی، این ابهام را ندارد؛ نرخ را یک طرف انسانی اعلام می کند و شما قبول یا رد می کنید.
اوراکل در بلاکچین دقیقا چیست؟
سرویسی که داده دنیای واقعی، مثل قیمت یا نتیجه یک رویداد، را روی زنجیره می نویسد تا قرارداد هوشمند بتواند بخواندش. خود بلاکچین نمی تواند به بیرون نگاه کند، پس بدون اوراکل هیچ برنامه ای که به داده بیرونی نیاز دارد امکان پذیر نیست.
تفاوت اوراکل با یک ای پی آی ساده چیست؟
ای پی آی داده را به یک برنامه می دهد و اگر اشتباه بدهد، فقط همان برنامه اشتباه می کند. اوراکل داده را روی زنجیره می نویسد و آن عدد برای همه گره ها و همه قراردادها یکی است و برگشت ناپذیر. به همین دلیل بحث اصلی اوراکل درباره خواندن داده نیست، درباره این است که چطور مطمئن شویم داده دستکاری نشده.
چین لینک چه نسبتی با اوراکل دارد؟
چین لینک شناخته شده ترین شبکه اوراکل غیرمتمرکز است و بسیاری از پروتکل های بزرگ قیمتشان را از آن می گیرند. اوراکل یک مفهوم است و چین لینک یکی از پیاده سازی های آن؛ رقبای دیگری هم وجود دارند. جزئیاتش را در معرفی چین لینک و نحوه کارش بخوانید.
آیا اوراکل می تواند دستکاری شود؟
بله، و این یکی از رایج ترین مسیرهای حمله در دیفای بوده است. روش معمول دستکاری خود اوراکل نیست، بلکه دستکاری بازاری است که اوراکل از آن قیمت می خواند؛ به خصوص وقتی آن بازار عمق کمی دارد. اوراکل هایی که از چند منبع مستقل میانگین می گیرند در برابر این حمله مقاوم ترند، ولی مصون نیستند.
اوراکل پل داده است، و در عین حال ضعیف ترین حلقه بیشتر برنامه های غیرمتمرکز. دفعه بعد که پروژه ای ادعا کرد بدون واسطه و بدون اعتماد کار می کند، یک سوال بپرسید: عددی که این قرارداد بر اساسش تصمیم می گیرد از کجا می آید؟ اگر جواب یک منبع باشد، آن پروژه دقیقا به اندازه همان یک منبع قابل اعتماد است. برای شناخت بقیه اجزای این اکوسیستم، دیفای و ساختارش نقطه شروع خوبی است.