اوراکل (Oracle) چیست؟
اوراکل (Oracle)، منابع سیستمهای خارجی هستند که وظیفه تزریق اطلاعات حیاتی به شبکه بلاک چین را برعهده دارند. قراردادهای هوشمند برای عملکرد خود به این اطلاعات نیاز مبرم دارند.
هر شبکه بلاک چینی با حجم بزرگی از دادهها روبرست. از طرف دیگر در ایجاد قراردادهای هوشمند و نوآوریهای که به طور دائم در این بستر شکل میگیرد نیاز به استفاده از اوراکل به یک امر گریز ناپذیر تبدیل شده است.
باید توجه داشت که قراردادهای هوشمندی که در بستر بلاک چین به اجرا در میآیند، باعث کاهش هزینههای تراکنش و افزایش کارآیی بسیاری از صنایع میشوند. همچنین قراردادهای هوشمند خطراتی را که یک قرارداد دارد و ممکن است نقصهایی در آن صورت بگیرد را به میزان قابل توجهی کاهش میدهد. به عبارت دیگر شفافیت سرلوحه کار آن قرار دارد. اما با این حال دارای محدودیت بسیاری است که اوراکل میتواند بخشی از آنها را پوشش دهد.
اوراکل با دادن اطلاعات شخص ثالث به شبکه و یا قراردادهای هوشمند باعث تسریع عملکرد اکوسیستم میشود. برای اینکه درک کاملی از اینکه وظیفه اوراکل در بلاکچین چیست؟ و چرا به آن نیاز داریم، به دست آورید اجازه دهید در مورد یکی از ویژگیهای اصلی بلاک چین یعنی تمرکززدایی، توضیح کاملی ارائه دهیم.

راهحل بلاک چینها
از آنجایی که بلاک چین دارای ماهیتی به نام دفتر کل توزیعشده است، باید دادههای خروجی با دادههای ورودی یکسان باشند. اگر چنین رخدادی صورت نگیرد گره موجود در شبکه برای انجام اعتبارسنجی به دنبال گره همسان خواهد بود و در صورتی که یافت نشود در خروجی نتیجه متفاوتی دریافت خواهد کرد. چنین معماری در شبکه، به گونهای است که هیچگونه دخل و تصرفی در آن امکانپذیر نیست.
بیایید با یک مثال ساده اینگونه توضیح دهیم. وقتی شخصی به نام A به شخص B ، مقدار 5 دلار می فرستد باید به میزان موجودی فرد B، پنج دلار اضافه شود. یا به عبارت دیگر اگر ورودی برابر 5 دلار باشد باید خروجی نیز برابر همان مقدار به صاحب حساب واریز شود. در این میان، هر گونه تغییر به عنوان یک مشکل بزرگ محسوب خواهد شد. چنین روشی در شبکه نیز پیادهسازی شده است و باید نتایج بدست آمده در ورودی و خروجی یکسان باشند.
اما جای سوال اینجاست اگر چنین اتفاقی رخ نداد و خروجی اشتباه بود چه روی خواهد داد؟ یک بلاک چین فرضی را تصور کنید که در آن از APIها برای تایید تراکنشها استفاده میشود. در این حالت اگر مقدار متغیری را مثلا براساس قیمت ETH از حساب شخص A به شخص B ارسال کنیم. باید قراردادمان را با استفاده از یک API فراخوانی کنیم تا در وهله اول قیمت ETH را دریافت کرده، سپس آن را به شخص B ارسال کنیم. اما باید توجه کرد که وقتی گره دیگری اقدام به تایید این موضوع میکند باید همین API را نیز فراخوانی کند. از این رو، اوراکل به عنوان یک ضرورت برای بلاک چین به شمار میرود، زیرا وظیفه اعتبارسنجی متغیرها و اجماع را برعهده دارد.
اعتبارسنجی اوراکلها
اعتبارسنجی کار بسیار دشواری است. فرض کنید که در هنگام تراکنش یک API فراخوانی شود، اگر API تغییر کرده و کد مخربی در آن تزریق شده باشد، در این صورت نتیجه همه گرهها با یکدیگر متفاوت خواهد بود. این بدان معناست که هیچ یک از گرهها نمیتوانند درباره وضعیت واقعی بلاک چین به توافق برسند.
به همین دلیل است که در بلاک چینهای اتریوم و اکثر بلاک چینها تراکنشها باید به صورت قطعی صورت گیرد. یعنی تراکنش باید مورد تایید همه گرهها قرار بگیرد و روند بازگشتی برای تایید مجدد موردنیاز نباشد تا صحت تراکنش را مورد تایید قرار دهند. زیرا در این صورت تماسهایی که با API صورت میگیرد ممکن است هک شده و منبعهای آن به سرعت مستهلک شوند. در چنین وضعیتی به هیچ وجه تراکنش تایید نمیشود. یا به عبارت سادهتر اگر اوراکلها اجازه تراکنش متغییر در بلاک چینها را فراهم کنند دیگر خبری از اجماع در بلاک چین نخواهد بود.

اجماع در بلاک چین
در بلاک چین، مکانیسم توافق بر روی یک مقدار داده را اجماع میگویند و دترمانیسم (قطعیت) در بلاک چین برای اینکه گرهها به یک اجماع برسند به عنوان یک ضرورت مهم شناخته میشود. شاید درباره اجماع اطلاعاتی داشته باشید مانند اجماع اثبات کار (PoW)، اجماع ناکاموتو، اجماع بیزانس و یا اثبات سهام (PoS). در کل باید گفت که اجماع یک عنصر کلیدی است که باعث میشود بلاک چین در وهله اول بتواند کار خود را به درستی انجام دهد.
اما واقعیت امر این است که ما به بلاک چینی نیاز داریم که بتوانیم آن را با دنیای واقعی پیوند دهیم. ما باید قیمت ETH و سایر ارزهای دیجیتال را در یک قرارداد قرار دهیم تا بتوانیم در حوزه DeFi فعالیت داشته باشیم. برای اینکه از بلاک چین استفاده کنیم و به اهداف اصلی آن یعنی استفاده از قرارداهای هوشمند دست یابیم به دادههای ورودی نیاز داریم. از همین رو برای اینکه با محدودیتهای پیشرو مواجه شویم و آنها را برطرف کنیم به اوراکلها نیاز داریم.
اوراکلها و قراردادهای هوشمند
بلاک چینها به طور کامل به قراردادهای هوشمند وابسته هستند. این قراردادها در واقع برنامههای کامپیوتری متشکل از کدهایی هستند که نحوه عملکرد آن را تعریف میکند. در کل باید گفت که قراردادهای هوشمند به صورت خودکار، کاملا شفاف و در یک شبکه غیرمتمرکز اجرا میشوند.
با توجه به اینکه در قراردادهای هوشمند واسطهها حذف میشوند هزینه تراکنشها نیز به میزان زیادی کاهش مییابد. همچنین از آنجایی که در بلاک چین به اجرا در میآیند تغییرناپذیر هستند.
این قراردادها مزایای زیادی دارند. اما به علت اینکه دادههای درون زنجیرهای (on chain) یک بلاک چین محدود است ظرفیت گستردهای برای توسعه ندارند. از اینرو برای تعاملشان با دنیای خارج از شبکه و اجرا شدن با دادههای بیرونی دارای محدودیتیهایی هستند. در این میان، اوراکلها به عنوان یک راهحل معرفی شدهاند.
اوراکلها چگونه کار میکنند؟
اوراکلها در واقع دستگاههایی هستند که یک بلاک چین را به دادههای دریافتی از بیرون زنجیره متصل میکنند. این اوراکلها دادهها را از طریق یک تراکنش خارجی وارد میکنند. به این ترتیب ما میتوانیم اطمینان یابیم که هر زنجیره حاوی اطلاعات لازم برای تایید زنجیره بلوکی است. به همین دلیل از اوراکلها نیز به عنوان میانافزار بلاک چین نام میبرند. در واقع اوراکل پلی بین دو جهان مجزا از هم است که باعث پیوند آنها با یکدیگر میشود.

مشکل اوراکل چیست؟
بیایید یک قدم به عقب برگردیم و به یاد بیاوریم که چرا ما در نخستین قدم درصدد ساخت زنجیره هستیم. هدف ما مگر از ساخت زنجیره این نبود که باعث تمرکززدایی شویم. اگر دادهها از جای دیگری بیایند و این دادهها را از طریق یک API، گره و یا منبع وارد کنیم آیا اساسا کل هدف بلاک چین که تمرکززدایی بود را حذف نکردیم!
اوراکل متمرکز به این معنی است که یک نهاد بر قرارداد هوشمند شما نظارت دارد و قرارداد شما هیچ تفاوتی با یک قرارداد معمولی ندارد. حتی اگر اوراکل بهترین نیت را هم داشته باشد باز هم قالب اعتماد نیست. بارها مشاهده شده است که اوراکل متمرکز هک شده و یا مورد حمله گرفته است و این امر در نهایت منجر به فروپاشی و یا ایجاد یک فاجعه در پروژه شده است. وجود اوراکلهای متمرکز در بلاک چین یک نقطه شکست بزرگ برای اکوسیستم است.
باز تعریفی کامل از مشکل اوراکل
از آنجایی که بلاک چینها به تنهایی نمیتوانند به دادههای خارجی دسترسی داشته باشند، از این رو باید از اوراکلها استفاده کنند. اما استفاده از اوراکلهای متمرکز مزیت قراردادهای هوشمند را از بین میبرد و خطرات امنیتی بزرگی به همراه دارد.
راه حل تمرکزدایی اوراکلها چیست؟
اکوسیستم چینلینک (Chainlink) این مشکل را به طور کامل حل کرده و استانداردی برای اوراکل های غیرمتمرکز ارائه داده است.
اوراکل غیرمتمرکز چیست؟
اوراکل غیرمتمرکز یا شبکه اوراکل های غیرمتمرکز، مجموعهای از اوراکل های بلاک چینهای مستقل هستند که دادههای بیرونی را جمعآوری کرده و در اختیار یک بلاک چین قرار میدهند. این شبکه دادههای ورودی را ذخیره میکند تا جایی که به یک مقدار مشخصی برسد. سپس آنها را بازیابی میکند تا به صحت دادهها اطمینان حاصل کند. بدین صورت قادر خواهد بود تا مانع از ورود اطلاعات نادرست به شبکه گردد و قانون تمرکززدایی را رعایت کند.
چینلینک چارچوب مشخصی را برای انتخاب شبکه مستقل توسط گرهها به وجود آورده است. با استفاده از این چارچوب میتوان به دادههای دنیای واقعی دست یافت. بدین ترتیب قراردادهای هوشمند نیز به پتانسیل واقعی خود دست مییابند. کاربران هم از زیرساختهای مربوط به بلاک چینهای غیرمتمرکز استفاده میکنند.

اوراکل های غیرمتمرکز چگونه مشکلات را حل میکنند؟
در حال حاضر بازارهای بسیار وسیعی از اکوسیستم چینلینک استفاده میکنند. این فناوری به کاربران کمک میکند تا شبکهای از گرههای مستقل را انتخاب کرده و دادههای مورد نیاز خود را از آن استخراج کنند. چنین عملکردی باعث میشود تا قراردادهای هوشمند مانع از مستهلک شدن دادههای دریافتی شما شود.
این فناوری، آگنوستیک بلاک چین (blockchain agnostic) نامیده میشود. هدف آن این است که بلاکچینهای بیشتری یکپارچهسازی شوند. با این کار همه بلاک چینها میتوانند از دادههای بیرون از زنجیره به صورت ایمن و مطمئن استفاده کنند.
جمعبندی
بلاکچینها برای اینکه بتوانند در صنایع تاثیرپذیر و برنامههای کاربردی مورد استفاده قرار گیرند باید قادر باشند با دنیای واقعی در ارتباط باشند. چنین رویکردی با اوراکل ها بسیار بحث برانگیز و دشوار است. در حال حاضر پیشرفتهایی در این حوزه صورت گرفته است که نمونه بارز آن ایجاد اکوسیستم چینلینک است. اما در حالت کلی باید گفت که برای تحقق اهداف اوراکل های غیرمتمرکز مسیر طولانی در پیش است.