
اوراکلها یکی از مولفههای اصلی در فناوری بلاکچین محسوب میشوند و در تعین نحوه پاسخگویی بلاکچین به درخواستهای کاربران، نقشی کلیدی را ایفا میکنند. از آنجا که فرایندهای سختگیرانهای جهت ارتباط قراردادهای هوشمند با منابع داده خارجی وجود دارد، اوراکل وظیفه این تبادل دادهها را ایفا میکند. در ادامه این مقاله ما به معرفی، بررسی و موارد استفاده از اوراکلها در بلاکچین خواهیم پرداخت. پیشنهاد میکنیم به منظور درک بهتر مفاهیم ارائه شده، ابتدا مقاله قرارداد هوشمند چیست؟ را مطالعه کنید.
فهرست مطالب
اوراکل (Oracle) چیست؟
تصور کنید یک برنامه دیفای (DeFi) قرار است دادههای آب و هوایی را از منابعی مشخص دریافت و بر اساس شرایط اقلیمی، بهترین نرخ بیمه را به کاربران پیشنهاد کند. اما به دلیل اینکه فناوری بلاکچین و قراردادهای هوشمند نمیتوانند به دادههای خارج از زنجیره (شبکه بلاکچین) دسترسی پیدا کنند، عملاً کارکرد چنین برنامهای در بلاک چین با چالش مهمی مواجه است. اوراکل (Oracle) آمده است تا این کاستی را (خصوصاً در اپلیکیشنهای غیرمتمرکز) جبران کنند. به بیان ساده:
«اوراکلها همچون سرویسهای شخص ثالثی هستند که دادههای خارج از فضای بلاکچین را برای قراردادهای هوشمند ارسال میکنند. پس به نوعی آنها یک پل ارتباطی بین بلاکچین و دنیای خارج محسوب میشوند و موجب گسترش دامنه فعالیتهای قراردادهای هوشمند میگردند».
پیش از ادامه این بحث لازم است به این نکته اشاره کنیم که Oracle یک منبع داده نیست، بلکه صرفا لایهای است که منابع داده خارجی را پس از جستجو، تایید و احراز هویت، مجدداً به مقصد خاصی ارسال میکند. اطلاعات ارسالی اوراکلها در قالبهای فرمی مختلفی هستند که میتوان به دادههای قیمت، اتمام موفقیت آمیز یک پرداخت یا دمای اندازهگیری شده توسط یک سنسور اشاره کرد. برای فراخوانی دادهها از دنیای خارج، ابتدا باید یک قرارداد هوشمند فراخوانی شود. برخی اوراکلها نه تنها توانایی ارسال اطلاعات به قراردادهای هوشمند را دارند، بلکه قادرند آنها به منابع خارجی هم ارسال کنند.
کاربرد اوراکل در برنامههای غیرمتمرکز (DApps)
با یک مثال شروع میکنیم: فرض کنید دو نفر درخصوص نتیجه مسابقه فوتبال بین دو تیم ایتالیا و انگلیس شرطبندی کردهاند. شخص اول معتقد است ایتالیا برنده میشود و شخص دوم انگلیس را پیروز مسابقه میداند. آنها تصمیم میگیرند مبلغی را در یک قرارداد هوشمند بلاک کنند تا براساس نتیجه مسابقه به فرد برنده اعطا شود.
از آنجا که قرارداد هوشمند جهت باخبر شدن از نتیجه مسابقه قادر به ارتباط با منابع خارجی نیست، اوراکل وظیفه دریافت این دادهها از یک منبع معتبر و ارسال آن به قرارداد هوشمند را عهدهدار است. در پایان، قرارداد هوشمند براساس نتیجه مسابقه، وجوه را به فرد برنده پرداخت میکند.
موارد زیر نمونه هایی از دادههایی است که توسط اوراکلها به پلتفرمهای مختلف ارسال میشود:
- دادههای بازار سرمایه، مانند بستههای قیمتگذاری داراییها و اوراق بهادار.
- دادههای مرجع معیار مانند نرخ بهره.
- دادههای آب و هوایی برای محاسبه حق بیمه.
- دادههای موقعیت جغرافیایی، مانند آنچه در ردیابی زنجیره تامین استفاده می شود.
- دادههای ورزشی برای حل و فصل بازارهای پیشبینی و قراردادهای ورزشی.
- دادههای پرواز مانند مواردی که توسط باشگاهها برای جمعآوری بلیطهای پرواز استفاده میشود.
انواع مختلف اوراکلها در بلاکچین
اوراکلها را میتوان بسته به سطح کیفی دادهی آنها به پنج دسته طبقهبندی کرد:
- پایگاه داده (نرمافزاری یا سختافزاری)
- مسیر داده (ورودی یا خروجی)
- تراست (متمرکز یا غیرمتمرکز)
- اختصاصی
- انسانی
در ادامه هر کدام این موارد را بیشتر بررسی میکنیم.
۱. اوراکل پایگاه داده
این اوراکل به دو دسته نرمافزاری و سختافزاری تقسیم میشود:
الف) نرم افزاری:
اوراکل نرمافزاری (Software oracles)، توسط ارتباط با منابع اطلاعاتی آنلاین، دادهها را به بلاک چین منتقل میکند. این اطلاعات میتوانند از پایگاههای داده آنلاین، سرورها و وبسایتها بدست آیند.
این واقعیت که اوراکلهای نرمافزاری به اینترنت متصل هستند، به آنها این امکان را میدهد تا اطلاعات را برای قراردادهای هوشمند به صورت بلادرنگ انتقال دهند. همین امر آنها را به یکی از متداولترین اوراکل های بلاکچین بدل کرده است. اطلاعاتی که توسط اوراکلهای نرمافزاری ارایه میشوند معمولا شامل نرخ نوسان ارز، بهای یک دارایی دیجیتال یا اطلاعات لحظهای پروازهای یک شرکت هواپیمایی هستند.
ب) سختافزاری:
اوراکل سختافزاری (Hardware oracles)، برای بدست آوردن دادههای فیزیکی از دنیای واقعی و در دسترس قرار دادن آنها برای قراردادهای هوشمند طراحی شده است. چنین اطلاعاتی را میتوان از طریق سنسورهای الکترونیکی، اسکنر بارکد و سایر دستگاههای دادهخوان ارسال کرد. اساساً یک اوراکل سختافزاری وقایع دنیای حقیقی را به منظور قابل فهم شدن برای قراردادهای هوشمند، به مقادیر دیجیتال تبدیل میکند.
به عنوان مثال میتوان به سنسوری اشاره کرد که با رسیدن کامیون حامل کالا به محل بارگیری، اطلاعاتی را به یک قرارداد هوشمند ارسال میکند تا تصمیماتی بر اساس آن اتخاذ شود.
۲. اوراکل مسیر داده (اوراکل ورودی و خروجی)
اوراکل ورودی (Inbound oracles)، دادهها را از منابع خارجی به قراردادهای هوشمند منتقل میکنند و اوراکل خروجی (outbound oracles)، دادههای قراردادهای هوشمند را به دنیای خارج میفرستند.
سنسور اندازهگیری دما، نمونهای از اوراکل ورودی است که دادههای دما را به یک قرارداد هوشمند ارسال میکند. همچنین قفل هوشمند را میتوان به عنوان یک نمونه از اوراکل خروجی در نظر گرفت که در صورت واریز وجوه به نشانی مورد نظر، قرارداد هوشمند این اطلاعات را از طریق اوراکل خروجی به فانکشن مربوطه ارسال و قفل را باز میکند.
۳. اوراکل تراست (اوراکل متمرکز و غیرمتمرکز)
یک اوراکل متمرکز (Centralized oracles) همانند یک نهاد واحد است که تنها از یک منبع اطلاعاتی دادههای قرارداد هوشمند را تامین میکند. بنابراین، کارایی قرارداد هوشمند با نهاد در ارتباط با آن اوراکل گره خورده است. همچنین هرگونه رخنه توسط یک بازیگر مخرب، تاثیر مستقیمی بر عملکرد قرارداد هوشمند خواهد داشت. از این رو مشکل اصلی اوراکلهای متمرکز، اتکای آنها به یک منبع اطلاعاتی واحد است و این موجب افزایش آسیبپذیری قراردادهای هوشمند در برابر حملات هکرها میشود.
در سوی دیگر، اوراکلهای غیرمتمرکز (Decentralized oracles) برای افزایش اعتبار دادههای خود، از چندین منبع خارجی استفاده میکنند. از آنجا که این اوراکلها اعتبار و صحت دادههای ارسالی را با اجماع بین منابع خارجی تعیین میکنند، به آنها اوراکلهای اجماع (Consensus Oracles) نیز گفته میشود.
برخی از پروژههای بلاکچینی خدمات اوراکل غیرمتمرکز را به بلاکچینهای دیگر ارائه میدهند. همچنین اوراکلهای غیرمتمرکز میتوانند در بازارهای پیشبینی، جایی که درصد موفقیت یک نتیجه خاص را میتوان با اجماع جمعی تایید نمود، مثمرثمر باشند.
۴. اوراکل اختصاصی
اوراکل اختصاصی (Contract-specific oracles)، تنها جهت استفاده در یک قرارداد هوشمند مشخص طراحی شده است. بدین معنا که اگر کسی بخواهد چندین قرارداد هوشمند را بهکار گیرد، باید متناسب با تعداد آنها از اوراکلهای اختصاصی هم استفاده کند.
بنابراین استفاده از این نوع اوراکل بسیار زمانبر و پرهزینه بوده و اجرای آنها از سوی شرکتها و موسساتی که مایلند از منابع داده مختلفی استفاده کنند، چندان توجیهپذیر نیست. از طرف دیگر، از آنجا که این اوراکلها از ابتدا مختص یک قرارداد میباشند، توسعهدهندگان انعطافپذیری بیشتری جهت تنظیم آنها بر اساس نیازهای اختصاصی خود خواهند داشت.
۵. اوراکل انسانی
گاهی افراد دارای دانش تخصصی در یک زمینه خاص هم میتوانند به عنوان Oracle عمل کنند. آنها اطلاعات را پس از بررسی صحتشان (توسط منابع مختلف)، برای قراردادهای هوشمند ترجمه میکنند. به دلیل اینکه اوراکلهای انسانی هویت خود را به صورت رمزنگاری تأیید میکنند، احتمال جعل هویت در آنها توسط کلاهبرداران و ارایه دادههای نامعتبر بسیار کم است.
مشکلات و چالشهای اوراکل
به دلیل اینکه تصمیمات اتخاذ شده در قراردادهای هوشمند بر اساس دادههای اوراکلها تعیین میشوند و آنها نقشی کلیدی در یک اکوسیستم بلاکچینی ایفا میکنند، چالش اصلی آنها دستکاری در منابع دادهای است که به آنها استناد میکنند. این دستکاری میتواند توسط حملات هکرها و بازیگران مخرب انجام شود. به عنوان مثال هک شدن یک منبع داده میتواند منجربه ارسال اطلاعاتی غلط به یک اوراکل و اجرای قرارداد هوشمند در راستای اهداف هکر گردد.
همچنین به دلیل اینکه اوراکلها بخشی از اجماع اصلی بلاکچین محسوب نمیشوند، متاسفانه در مکانیزم امنیتی بلاکچینهای عمومی جایی نخواهند داشت. این موجب افزایش آسیبپذیری آنها میشود. با این حال روش های مختلفی برای اعتبارسنجی اطلاعات دریافتی از نودهای اوراکل در شبکه وجود دارد که در ادامه به معرفی آنها میپردازیم.
روشهای اعتبارسنجی منابع داده اوراکلها
معمولاً تعریف اعتبارسنجی منابع داده به فرآیند ارسال اطلاعات بر روی بلاکچین اطلاق میشود. برای درک بهتر و دقیقتر ماهیت فنی اوراکلهای بلاکچین میتوان دو مؤلفه «دستیابی به دادههای معتبر» و «ثبت آنها در بلاکچین» را جداگانه درنظر گرفت. نوشتن دادهها در بلاک چین ساده است: هنگامی که اطلاعات توسط قرارداد هوشمند اوراکل دریافت شود، از طریق یک فراخوانی در دسترس عموم قرار می گیرد.
اما بخش مهم اینجاست: چگونه میتوان از صحت دادههای ثبت شده در بلاکچین مطمئن شد؟
شهرت و پرداخت
اگر یک نود اوراکل به طور مداوم نتایج خوبی ارائه داد، شهرت آن افزایش مییابد. این میتواند به پرداخت های بیشتر برای ارائه داده مرتبط باشد که به عنوان یکی از روشهای اصلی تشویق در شبکههای Oracle عمل میکند.
منابع داده چندگانه
یک روش ساده برای کاهش ریسک اطلاعات نادرست، استفادهی نودها از میانگین نتایج داده دریافتی است. به این ترتیب، تنها در صورتی که اکثر منابع داده یا خود نود در معرض خطر قرار گیرد، دادههای نادرست روی زنجیره ثبت میشوند.
اوراکلهای متعدد
یک شبکه اوراکل یا مصرفکننده اطلاعات میتوانداز اوراکلهای متعددی برای کاهش خطر دادههای اشتباه استفاده کند. در این حالت احتمال اینکه اکثر اوراکلها، مخرب باشند بسیار کم است. (تنها در صورتی که همه اوراکلها بر منابع داده یکسانی تکیه کنند)
استیکینگ
در اینجا استیکینگ برخلاف استفاده رایج این کلمه به معنای کسب سود نقدینگی نیست. بلکه بدین معناست که نودهای Oracle باید توکنهایی را برای ضمانت دادههای خود وثیقه کنند. این مسلماً یکی از بهترین مکانیسمهای اعتمادسازی در اپراتورهای نود اوراکل است.
محیط اجرایی قابل اعتماد (TEE)
به زبان ساده، محیط اجرایی قابل اعتماد یا TEE به برنامهها این امکان را میدهد که در قسمت جداگانهای از پردازنده اصلی اجرا شوند. این موجب حفاظت بیشتر آنها در برابر حملات خرابکارانه میشود. با این کار در حالی که خود برنامه همچنان قادر به خواندن و نوشتن حافظه خارج از بخش جداگانهاش است، سایر بخشهای سیستمعامل قادر به خواندن دادهها نیستند. بنابراین اجرای سرویسهای اوراکل در TEE موجب ایجاد یک لایه امنیتی اضافه خواهد شد.
معرفی بهترین پروژههای اوراکل در بلاکچین
اوراکلها دارای مکانیزمی نسبتا قابل اعتماد هستند که ارتباط بین قراردادهای هوشمند را تسهیل میکنند. برای اینکه بلاکچینها تأثیری پایدار در کاربردهای عملی و صنایع مختلف داشته باشند، باید به طور مداوم با دادههای دنیای واقعی ارتباط برقرار کنند. این کار توسط اوراکلها ممکن میشود. در ادامه بهترین پروژههای اوراکل که در بلاک چین اجرا شدهاند را معرفی میکنیم.
۱. چین لینک (Chainlink)
چین لینک یک اوراکل یا نرمافزار واسطه است که دادههای قراردادهای هوشمند خود را از پلتفرمهای خارج از زنجیرهای (Off-Chain) دریافت میکند. این اکوسیستم متشکل از بیش از ۵۰ پروژه بلاکچینی و ۱۰۰ شرکت نرمافزاری است. چینلینک در سال ۲۰۲۰ به یکی از برترین ارائهدهندگان اوراکل بلاکچین بدل شد.
۲. بند پروتکل (BAND protocol)
بند، یک اوراکل میان زنجیرهای در بستر شبکه اتریوم است که قراردادهای هوشمند را قادر میسازد هر منبع داده خارجی یا API را به روشی مقیاسپذیر، تجمیع و به هم متصل کند. در واقع این یک نرمافزار به منظور تشویق کاربرانی است که دادههای دنیای واقعی را به اپلیکیشنهای غیرمتمرکز در بلاکچین ارایه میدهند.
۳. دیا (DIA)
دیا یک بلاکچین و یک شبکه معاملات مالی متن باز است که مانند بسیاری از رقبای خود با هدف حذف واسطه، افزایش امنیت و بالا بردن سرعت تبادلات جهانی ارائه شده است. از جمله اهداف پروژه DIA میتوان به آموزش سرمایهگذاری آنلاین و همچنین ارایه دادههای بلادرنگ اشاره کرد.
۴. تلور (Tellor)
Tellor یک اوراکل غیرمتمرکز است که در آن شبکهای از ماینرهای مبتنی بر الگوریتم اثبات کار (PoW) برای دریافت دادههای قراردادهای هوشمند، با یکدیگر به رقابت میپردازند.
آینده اوراکلها را چگونه ارزیابی میکنید؟
اوراکلها علیرغم چالشهای موجود از قبیل دستکاری در منابع اطلاعات، پیشرفتهای قابل توجهی داشتهاند. همچنین در آینده اتصال بین بلاکچینها و فیدهای داده خارجی، یک جهش بزرگ برای این فناوری محسوب میشود.
تجربه شخصی شما از کار کردن با پروژههای اوراکل در بلاکچین چیست؟ با توجه به برخی رخنههای امنیتی در Oracle، آینده این فناوری در بلاکچین را چگونه ارزیابی میکنید؟