مراقب قرارداد هوشمند غیرممکن باشید

گره منبع: 1576899

سه تصور غلط رایج در قراردادهای هوشمند

به عنوان توسعه دهندگان یک پلتفرم بلاک چین محبوب، گاهی اوقات از ما می پرسند که آیا قراردادهای هوشمند مشابه اتریوم روی چند زنجیره ای نقشه راه پاسخی که همیشه می دهم این است: نه، یا حداقل هنوز نه.

اما در دنیای پر هیاهو زنجیره‌های بلوکی، قراردادهای هوشمند رایج هستند، پس چرا اینطور نیست؟ خب، مشکل این است که در حالی که ما اکنون از سه مورد استفاده قوی برای بلاک چین های مجاز به سبک بیت کوین (منشا، سوابق بین شرکتی و امور مالی سبک وزن) می شناسیم، هنوز معادل قراردادهای هوشمند به سبک اتریوم را پیدا نکرده ایم.

این به این معنا نیست که مردم در مورد آنچه می خواهند قراردادهای هوشمند انجام دهند، ایده ندارند. در عوض، بسیاری از این ایده ها هستند به سادگی غیرممکن هستند. می بینید، وقتی افراد باهوش اصطلاح "قراردادهای هوشمند" را می شنوند، تخیل آنها به وحشی می رسد. آنها رویاهای نرم افزار هوشمند خودگردان را تداعی می کنند که به دنیا می رود و داده های آن را برای سوار شدن همراه می کند.

متأسفانه واقعیت قراردادهای هوشمند بسیار پیش پا افتاده تر از همه این موارد است:

قرارداد هوشمند قطعه‌ای از کد است که بر روی یک بلاک چین ذخیره می‌شود و توسط تراکنش‌های بلاک چین ایجاد می‌شود و داده‌ها را در پایگاه داده آن بلاک چین می‌خواند و می‌نویسد.

خودشه. واقعا قرارداد هوشمند فقط یک نام شیک برای کدی است که روی یک بلاک چین اجرا می شود و با وضعیت آن بلاک چین در تعامل است. و چی is کد؟ این پاسکال است، پایتون است، PHP است. این جاوا است، فرترن است، سی پلاس پلاس است. اگر از پایگاه های داده صحبت می کنیم، اینطور است روش های ذخیره شده در یک پسوند SQL نوشته شده است. همه این زبانها اساساً معادل هستند و مسائل مشابهی را به روشهای مشابه حل می کنند. البته، هر کدام نقاط قوت و ضعف خود را دارند - دیوانه خواهید بود که یک وب سایت به زبان C بسازید یا ویدیوهای HD را در Ruby فشرده کنید. اما در اصل حداقل اگر می خواستی می توانستی. شما فقط از نظر راحتی، عملکرد و احتمالاً موهایتان بهای سنگینی را پرداخت خواهید کرد.

مشکل قراردادهای هوشمند فقط این نیست که انتظارات مردم بیش از حد است. این است که این انتظارات بسیاری را به صرف زمان و هزینه برای ایده‌هایی سوق می‌دهد که احتمالاً قابل اجرا نیستند. به نظر می‌رسد شرکت‌های بزرگ منابع کافی برای پیمودن یک مسیر طولانی را دارند - از لحظه‌ای که مدیریت ارشد با یک فناوری جدید روبرو می‌شود تا زمانی که مزایا و محدودیت‌های آن فناوری واقعاً درک می‌شوند. شاید تجربه خودمان بتواند به کوتاه شدن این زمان کمک کند.

در طول نه ماه گذشته، موارد استفاده از قراردادهای هوشمند را مورد بررسی قرار داده‌ایم و بارها و بارها متوجه شده‌ایم که به سادگی نمی‌توان آنها را انجام داد. در نتیجه، ما سه تصور نادرست قرارداد هوشمند را که رایج‌ترین آنها هستند، شناسایی کرده‌ایم. این ایده ها اشتباه نیستند زیرا فناوری نابالغ است یا ابزارها هنوز در دسترس نیستند. بلکه آنها به اشتباه درک می کنند ویژگی های اساسی کد که در یک پایگاه داده زندگی می کند و به صورت غیرمتمرکز اجرا می شود.

تماس با خدمات خارجی

اغلب، اولین مورد استفاده پیشنهادی یک قرارداد هوشمند است که رفتار خود را در پاسخ به برخی رویدادهای خارجی تغییر می‌دهد. به عنوان مثال، یک بیمه نامه کشاورزی که به صورت مشروط بر اساس میزان بارندگی در یک ماه معین پرداخت می کند. فرآیند تصور شده چیزی شبیه به این است: قرارداد هوشمند تا زمان از پیش تعیین شده منتظر می ماند، گزارش آب و هوا را از یک سرویس خارجی بازیابی می کند و بر اساس داده های دریافتی به درستی رفتار می کند.

همه اینها به اندازه کافی ساده به نظر می رسد، اما غیرممکن است. چرا؟ از آنجا که بلاک چین یک سیستم مبتنی بر اجماع است، به این معنی که تنها در صورتی کار می‌کند که هر گره پس از پردازش هر تراکنش و بلوک به وضعیت یکسانی برسد. هر چیزی که در یک بلاک چین اتفاق می افتد باید کاملاً قطعی باشد و هیچ راهی برای ایجاد اختلاف وجود نداشته باشد. لحظه ای که دو گره صادق در مورد وضعیت زنجیره با هم اختلاف نظر دارند، کل سیستم بی ارزش می شود.

اکنون به یاد بیاورید که قراردادهای هوشمند به طور مستقل توسط هر گره در یک زنجیره اجرا می شود. بنابراین، اگر قرارداد هوشمند برخی از اطلاعات را از یک منبع خارجی بازیابی کند، این بازیابی به طور مکرر و جداگانه توسط هر گره انجام می شود. اما چون این منبع خارج از بلاک چین است، هیچ تضمینی وجود ندارد که هر گره همان پاسخ را دریافت کند. شاید منبع پاسخ خود را در فاصله زمانی بین درخواست‌های گره‌های مختلف تغییر دهد، یا شاید به طور موقت در دسترس نباشد. در هر صورت، اجماع شکسته می شود و کل بلاک چین می میرد.

پس راه حل چیست؟ در واقع، نسبتاً ساده است. به جای یک قرارداد هوشمند که بازیابی داده های خارجی را آغاز کند، یک یا چند طرف مورد اعتماد ("اوراکل") تراکنشی ایجاد می کند که آن داده ها را در زنجیره جاسازی می کند. هر گره یک کپی یکسان از این داده ها خواهد داشت، بنابراین می توان با خیال راحت از آن در محاسبات قرارداد هوشمند استفاده کرد. به عبارت دیگر، اوراکل هل می دهد داده ها روی بلاک چین به جای یک قرارداد هوشمند کشیدن آن در.

وقتی صحبت از قراردادهای هوشمند می شود که باعث رویدادهایی در دنیای خارج می شوند، مشکل مشابهی ظاهر می شود. به عنوان مثال، بسیاری ایده یک قرارداد هوشمند را دوست دارند که API یک بانک را برای انتقال پول فراخوانی می کند. اما اگر هر گره به طور مستقل کد را در زنجیره اجرا کند، چه کسی مسئول فراخوانی این API است؟ اگر پاسخ فقط یک گره باشد، اگر آن گره خاص، عمداً یا نه، عملکرد نادرست داشته باشد، چه اتفاقی می‌افتد؟ و اگر پاسخ هر گره باشد، آیا می توانیم به هر گره رمز عبور آن API اعتماد کنیم؟ و آیا واقعاً می خواهیم که API صدها بار فراخوانی شود؟ حتی بدتر از آن، اگر قرارداد هوشمند نیاز به دانستن اینکه آیا فراخوانی API موفقیت آمیز بوده است یا خیر، ما به مشکل وابستگی به داده های خارجی برمی گردیم.

مانند قبل، یک راه حل ساده در دسترس است. به جای اینکه قرارداد هوشمند یک API خارجی را فراخوانی کند، از یک سرویس قابل اعتماد استفاده می کنیم که وضعیت بلاک چین را نظارت می کند و اقدامات خاصی را در پاسخ انجام می دهد. به عنوان مثال، یک بانک می تواند فعالانه یک بلاک چین را تماشا کند و نقل و انتقالات پولی را انجام دهد که منعکس کننده تراکنش های زنجیره ای است. این هیچ خطری برای اجماع بلاک چین ایجاد نمی کند زیرا زنجیره نقش کاملاً منفعل را ایفا می کند.

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

اجرای پرداخت های زنجیره ای

در اینجا پیشنهاد دیگری است که ما تمایل زیادی به شنیدن آن داریم: استفاده از یک قرارداد هوشمند برای خودکار کردن پرداخت کوپن برای به اصطلاح "باند هوشمند". ایده این است که کد قرارداد هوشمند به‌طور خودکار پرداخت‌ها را در زمان‌های مناسب آغاز کند، از فرآیندهای دستی اجتناب کند و تضمین کند که صادرکننده نمی‌تواند پیش‌فرض شود.

البته، برای اینکه این کار عملی شود، وجوهی که برای انجام پرداخت‌ها استفاده می‌شود باید در داخل بلاک چین نیز زندگی کنند، در غیر این صورت یک قرارداد هوشمند نمی‌تواند پرداخت آنها را تضمین کند. اکنون به یاد بیاورید که یک بلاک چین فقط یک پایگاه داده است، در این مورد یک دفتر مالی است که حاوی اوراق قرضه منتشر شده و مقداری پول نقد است. بنابراین هنگامی که ما در مورد پرداخت کوپن صحبت می کنیم، آنچه در واقع در مورد آن صحبت می کنیم عملیات پایگاه داده است که به طور خودکار در زمان توافق شده انجام می شود.

در حالی که این اتوماسیون از نظر فنی امکان پذیر است، اما از مشکلات مالی رنج می برد. اگر وجوهی که برای پرداخت‌های کوپن استفاده می‌شود توسط قرارداد هوشمند اوراق کنترل می‌شود، در واقع می‌توان آن پرداخت‌ها را تضمین کرد. اما این به معنای آن سرمایه ها نیز هست نمی تواند توسط ناشر اوراق قرضه برای چیز دیگری استفاده شود. و اگر آن وجوه نه پس تحت کنترل قرارداد هوشمند هیچ راهی وجود ندارد که بتوان پرداخت را تضمین کرد.

به عبارت دیگر، اوراق قرضه هوشمند یا برای ناشر بی معنی است یا برای سرمایه گذار بی معنی است. و اگر در مورد آن فکر کنید، این یک نتیجه کاملا واضح است. از منظر یک سرمایه گذار، تمام هدف یک اوراق بهادار نرخ بازده جذاب آن است که به قیمت برخی ریسک های نکول تمام می شود. و برای ناشر، هدف اوراق قرضه جمع آوری سرمایه برای یک فعالیت مولد اما تا حدودی پرخطر، مانند ساخت یک کارخانه جدید است. هیچ راهی برای ناشر اوراق قرضه وجود ندارد که از وجوه جمع‌آوری‌شده استفاده کند و در عین حال تضمین کند که سرمایه‌گذار بازپرداخت خواهد شد. نباید تعجب آور باشد که ارتباط بین ریسک و بازده مشکلی نیست که بلاک چین بتواند آن را حل کند.

پنهان کردن داده های محرمانه

همانطور که من هستم قبلا در مورد آن نوشته شده است، بزرگترین چالش در استقرار بلاک چین ها شفافیت رادیکالی است که ارائه می کنند. به عنوان مثال، اگر ده بانک با هم یک بلاک چین راه‌اندازی کنند و دو بانک یک تراکنش دوجانبه انجام دهند، این امر بلافاصله برای هشت بانک دیگر قابل مشاهده خواهد بود. در حالی که راهبردهای مختلفی برای کاهش این مشکل وجود دارد، هیچ کدام از سادگی و کارایی یک پایگاه داده متمرکز، که در آن یک مدیر مورد اعتماد کنترل کاملی بر اینکه چه کسی می تواند چه چیزی را ببیند، کنترل دارد.

برخی افراد فکر می کنند که قراردادهای هوشمند می توانند این مشکل را حل کنند. آنها با این واقعیت شروع می کنند که هر قرارداد هوشمند شامل پایگاه داده مینیاتوری خود است که کنترل کامل روی آن دارد. تمام عملیات خواندن و نوشتن در این پایگاه داده با واسطه کد قرارداد انجام می شود و این امر باعث می شود که یک قرارداد نتواند مستقیماً داده های دیگری را بخواند. (این جفت محکم بین داده و کد کپسوله سازی نامیده می شود و پایه و اساس محبوبیت است برنامه نویسی شی گرا الگو.)

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

مخفی کردن داده ها در یک قرارداد هوشمند به همان اندازه ایمن است که پنهان کردن آنها در کد HTML یک صفحه وب. مطمئناً، کاربران عادی وب آن را نمی بینند، زیرا در پنجره مرورگر آنها نمایش داده نمی شود. اما تنها چیزی که لازم است این است که یک مرورگر وب یک تابع "مشاهده منبع" را اضافه کند (همانطور که همه آنها دارند)، و اطلاعات پنهان به طور جهانی قابل مشاهده می شود. به طور مشابه، برای داده‌های پنهان در قراردادهای هوشمند، تنها چیزی که لازم است این است که شخصی نرم‌افزار بلاک چین خود را تغییر دهد تا وضعیت کامل قرارداد را نمایش دهد و تمام ظاهر پنهان کاری از بین می‌رود. یک برنامه نویس نیمه کاره می تواند این کار را در یک ساعت یا بیشتر انجام دهد.

قراردادهای هوشمند برای چه هستند

با بسیاری از کارهایی که قراردادهای هوشمند نمی توانند انجام دهند، می توان پرسید که آنها واقعاً برای چه هستند. اما برای پاسخ به این سوال، باید به اصول خود بلاک چین ها برگردیم. به طور خلاصه، یک بلاک چین پایگاه داده را قادر می سازد تا به طور مستقیم و ایمن توسط اشخاصی که به یکدیگر اعتماد ندارند، بدون نیاز به مدیر مرکزی به اشتراک گذاشته شود. بلاک چین‌ها، میانجی‌گری داده‌ها را امکان‌پذیر می‌کنند و این می‌تواند منجر به صرفه‌جویی قابل توجهی در پیچیدگی و هزینه شود.

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

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

می توان راه های مختلفی برای بیان این قوانین تصور کرد، اما در حال حاضر دو پارادایم غالب وجود دارد که به ترتیب از بیت کوین و اتریوم الهام گرفته شده اند. روش بیت کوین، که ممکن است آن را «محدودیت های تراکنش» بنامیم، هر تراکنش را بر حسب موارد زیر ارزیابی می کند: (الف) ورودی های پایگاه داده حذف شده توسط آن تراکنش، و (ب) ورودی های ایجاد شده. در یک دفتر مالی، قانون بیان می‌کند که مقدار کل وجوه در ورودی‌های حذف شده باید با کل موجودی‌های ایجاد شده مطابقت داشته باشد. (ما اصلاح یک ورودی موجود را معادل حذف آن ورودی و ایجاد یک ورودی جدید به جای آن می دانیم.)

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

هر دوی این پارادایم ها موثر هستند و هر کدام مزایا و معایب خود را دارند، همانطور که من قبلا قبلا به طور عمیق مورد بحث قرار گرفت. به طور خلاصه، محدودیت های تراکنش به سبک بیت کوین، همزمانی و عملکرد عالی را ارائه می دهند، در حالی که قراردادهای هوشمند به سبک اتریوم انعطاف پذیری بیشتری را ارائه می دهند. بنابراین برای بازگشت به این سوال که قراردادهای هوشمند برای چه چیزی هستند:

قراردادهای هوشمند برای موارد استفاده از بلاک چین هستند که با محدودیت های تراکنش قابل اجرا نیستند.

با توجه به این معیار برای استفاده از قراردادهای هوشمند، من هنوز مورد استفاده قوی برای بلاک چین های مجاز که واجد شرایط هستند، نبینم. تمام برنامه‌های بلاک چین قانع‌کننده‌ای که من می‌شناسم را می‌توان با تراکنش‌های به سبک بیت‌کوین پیاده‌سازی کرد، که می‌توانند مجوزها و ذخیره‌سازی کلی داده‌ها و همچنین ایجاد، انتقال، ذخیره، مبادله و تخریب دارایی را انجام دهند. با این حال، موارد استفاده جدید هنوز ظاهر می شوند، و اگر برخی از آنها تعجب نکنم do به قدرت قراردادهای هوشمند نیاز دارد. یا حداقل، بسط پارادایم بیت کوین.

پاسخ هرچه که باشد، نکته کلیدی که باید به خاطر بسپارید این است که قراردادهای هوشمند به سادگی یکی از روش‌های محدود کردن تراکنش‌های انجام شده در پایگاه داده هستند. این بدون شک یک چیز مفید است و برای امن کردن آن پایگاه داده برای به اشتراک گذاری ضروری است. اما قراردادهای هوشمند نمی توانند کار دیگری انجام دهند و مطمئناً نمی توانند از مرزهای پایگاه داده ای که در آن ساکن هستند فرار کنند.

لطفا هر نظری را ارسال کنید در لینکدین.

تمبر زمان:

بیشتر از چندتایی