تورینگ کامل: معنای آن چیست، چرا اتریوم به آن نیاز داشت و چرا بیت کوین از آن اجتناب کرد

تورینگ کامل: معنای آن چیست، چرا اتریوم به آن نیاز داشت و چرا بیت کوین از آن اجتناب کرد

یکی از دوستانم که در امور مالی سنتی کار می‌کند، یک بار از من پرسید که چرا اتریوم می‌تواند کل برنامه‌های مالی را روی بلاکچین خود اجرا کند در حالی که بیت‌کوین اساساً فقط می‌تواند از یک آدرس به آدرس دیگر پول ارسال کند. او گفت: «هر دو بلاکچین هستند. تفاوت واقعی آنها چیست؟»

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

این قیاس بی‌نقص نیست. یک دانشمند کامپیوتر به چندین نکته اشاره می‌کرد که من بیش از حد ساده‌سازی کرده بودم. اما این باعث شد دوستم سوال درست را بپرسد: «پس چرا کسی باید دستگاه فروش خودکار باشد؟»

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

این ایده از کجا می‌آید و چرا یک مقاله ریاضی مربوط به سال ۱۹۳۶ هنوز هم اهمیت دارد؟

آلن تورینگ در سال ۱۹۳۶ مقاله‌ای با عنوان «درباره اعداد قابل محاسبه» منتشر کرد. او ۲۳ ساله بود. در آن، او ماشینی را توصیف کرد که آنقدر ساده بود که انگار اسباب‌بازی بود. یک نوار چسب که به سلول‌هایی تقسیم شده بود. یک هد که نمادها را می‌خواند و می‌نویسد. قوانینی که به هد می‌گویند بر اساس آنچه می‌خواند چه کاری انجام دهد. نوار، هد، قوانین. این کل ماشین است.

این بخشی است که هنوز هم مرا به لرزه می‌اندازد. تورینگ ثابت کرد که این ماشین به طرز مسخره‌ای ساده می‌تواند هر چیزی را که هر کامپیوتری محاسبه می‌کند، محاسبه کند. نه بعضی چیزها. هر چیزی. تلفن شما همین الان عملیات نوار و هد را انجام می‌دهد. سروری که ChatGPT را اجرا می‌کند هم همینطور. تراشه داخل ماشین شما هم همینطور. او همه اینها را در سال ۱۹۳۶، قبل از اینکه حتی یک کامپیوتر الکترونیکی روی زمین وجود داشته باشد، اثبات کرد. این مقاله تقریباً ۹۰ سال قدمت دارد و هر دانشکده علوم کامپیوتر روی کره زمین هنوز آن را در ترم اول تدریس می‌کند.

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

تورینگ کامل

چگونگی تأثیر این موضوع در بیت کوین: چرا ساتوشی محدودیت را انتخاب کرد

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

اولین باری که فهمیدم چرا این موضوع مهم است، داشتم در مورد هک DAO در اتریوم می‌خواندم (به آن خواهم پرداخت). یک فراخوانی تابع بازگشتی ۱۵۰ میلیون دلار از یک قرارداد هوشمند را از بین برد، زیرا کد می‌توانست خود را در یک حلقه بی‌نهایت فراخوانی کند که توسعه‌دهندگان هرگز پیش‌بینی نکرده بودند. در بیت کوین، این هک غیرممکن است. نه بعید. غیرممکن. اسکریپت بیت کوین نمی‌تواند خود را فراخوانی کند. نمی‌تواند حلقه بزند. نمی‌تواند تکرار کند. این زبان برای بیان نوع اشکالی که ۱۵۰ میلیون دلار برای اتریوم هزینه داشته، بسیار محدود است.

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

آنچه ویتالیک ساخت و چرا همه چیز را تغییر داد

ویتالیک بوترین ۱۹ ساله بود که در سال ۲۰۱۳ وایت پیپر اتریوم را منتشر کرد. سوال او ساده و بنیادی بود: چه می‌شد اگر خود بلاکچین می‌توانست هر برنامه‌ای را اجرا کند؟ نه فقط «ارسال سکه از A به B» بلکه هر کاری که یک کامپیوتر می‌تواند انجام دهد؟

من در دانشگاه بودم که وایت پیپر اتریوم منتشر شد. من آن را در یک فایل PDF که کسی در یک انجمن بیت کوین به اشتراک گذاشته بود، خواندم. نیمی از پاسخ‌ها می‌گفتند که ویتالیک یک نابغه است. نیمی دیگر می‌گفتند که او در حال ساخت سیستمی است که فوراً هک می‌شود. هر دو درست می‌گفتند.

اتریوم در سال ۲۰۱۵ با دو قطعه که آن را به یک سیستم تورینگ کامل تبدیل می‌کرد، عرضه شد. سالیدیتی (Solidity) زبان برنامه‌نویسی برای نوشتن قراردادهای هوشمند است. این زبان دارای حلقه‌ها، شرط‌ها، ذخیره‌سازی وضعیت و فراخوانی توابع است. هر آنچه که نیاز دارید. ماشین مجازی اتریوم (Ethereum Virtual Machine) این قراردادها را به طور همزمان روی هر گره در شبکه اجرا می‌کند. این دو قطعه در کنار هم به توسعه‌دهندگان اجازه می‌دهند هر کدی را که می‌توانند بنویسند، پیاده‌سازی کنند.

همین یک تصمیم، دلیل وجود DeFi، NFTها، DAOها و جریان میلیاردها دلار از طریق برنامه‌هایی است که هیچ شرکت واحدی آنها را کنترل نمی‌کند. هر کاربرد جالب در حوزه کریپتو، از Uniswap گرفته تا Aave و OpenSea، تنها به این دلیل امکان‌پذیر است که اتریوم می‌تواند کد دلخواه را اجرا کند.

اما ویتالیک شرط بست. او شرط بست که قدرت انعطاف‌پذیری از ریسک پیچیدگی بیشتر است. هک DAO در سال ۲۰۱۶ این شرط را به سختی آزمایش کرد. سوءاستفاده‌های DeFi که هر ساله میلیاردها دلار هزینه دارند، همچنان آن را آزمایش می‌کنند. و جامعه بیت‌کوین همچنان به این ضررها اشاره می‌کند و می‌گوید: «به همین دلیل است که ما ساده ماندیم.» هر دو طرف حرف خود را می‌زنند.

مشکل توقف و دلیل وجود هزینه‌های گس

این بخشی است که وقتی برای اولین بار آن را فهمیدم، شب‌ها خوابم نمی‌برد.

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

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

راه حل اتریوم رک و پوست‌کنده اما مؤثر است: گس. هر محاسبه‌ای هزینه گس دارد. شما به تراکنش خود گس اضافه می‌کنید. وقتی گس تمام شود، کد متوقف می‌شود. فرقی نمی‌کند که تمام شده باشد یا نه. فرقی نمی‌کند که در میانه انتقال پول شما بوده باشد. گس به صفر می‌رسد، اجرا پایان می‌یابد. به همین دلیل است که کارمزد گس اتریوم متفاوت است. یک انتقال ساده: ۲۱۰۰۰ گس. یک مبادله پیچیده دیفای: ۲۰۰۰۰۰. یک ضرابخانه NFT با هنر درون زنجیره‌ای: نیم میلیون. شما برای میزان محاسباتی که هر گره باید انجام دهد، هزینه پرداخت می‌کنید.

بیت‌کوین به این مشکل نگاه کرد و گفت «نه». نمی‌توان حلقه نوشت، نمی‌توان در آن گیر کرد. هر اسکریپتی خاتمه می‌یابد. به مکانیزم بنزین نیازی نیست. زبان برای بیان «همیشه» بسیار محدود است.

ژوئن ۲۰۱۶: وقتی این تئوری در واقعیت به ۱۵۰ میلیون دلار رسید

هر بحثی در مورد کامل بودن تورینگ در حوزه کریپتو، سرانجام به این لحظه می‌رسد.

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

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

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

جامعه اتریوم به هارد فورک کردن زنجیره و معکوس کردن سرقت رأی داد. این انشعاب، اتریوم کلاسیک را ایجاد کرد. توسعه‌دهندگان از این موضوع درس گرفتند. محافظان ورود مجدد به استاندارد تبدیل شدند. الگوی «بررسی‌ها-اثرات-تعاملات» به یک اصل تبدیل شد. اما حقیقت اساسی تغییر نکرد: کد تورینگ کامل همیشه می‌تواند حاوی اشکالاتی باشد که سازندگان آن پیش‌بینی نکرده‌اند. این یک نقص در اتریوم نیست. این نتیجه محاسبات است.

تورینگ کامل

محدودیت بیت‌کوین کمتر می‌شود: Taproot و BitVM

مرز بین تورینگ کامل و تورینگ ناقص به اندازه گذشته برای بیت کوین مشخص نیست.

Taproot در نوامبر ۲۰۲۱ عرضه شد و قابلیت‌های Bitcoin Script را گسترش داد. پرداخت‌های شرطی پیچیده‌تر، حریم خصوصی بهتر از طریق امضاهای Schnorr، درخت‌های نحوی انتزاعی مرکلایز شده که شرایط یک تراکنش را تا زمان اجرا پنهان می‌کنند. هنوز Turing کامل نیست. اما رساتر از قبل است.

BitVM که در سال ۲۰۲۳ پیشنهاد شد، پا را فراتر می‌گذارد. این سیستمی را برای انجام محاسبات دلخواه خارج از زنجیره و سپس تأیید نتیجه در بیت‌کوین توصیف می‌کند. به این شکل به آن فکر کنید: محاسبات واقعی در جای دیگری اتفاق می‌افتد و بیت‌کوین فقط در صورتی وارد عمل می‌شود که کسی نتیجه را مورد اعتراض قرار دهد. در تئوری، این امر عملاً بیت‌کوین را برای موارد استفاده خاص، بدون تغییر زبان اسکریپت، به یک شبکه تورینگ کامل تبدیل می‌کند.

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

صرف نظر از این، جهت‌گیری به سمت بیان بیشتر است. Taproot در حال حاضر هر آنچه را که ممکن است گسترش داده است. BitVM آن را بیشتر گسترش خواهد داد. اما انتظار نداشته باشید که بیت‌کوین به اتریوم تبدیل شود. فرهنگ‌ها برای این کار بسیار متفاوت هستند.

چرا هر بلاکچین جدیدی به هر حال کامل بودن تورینگ را انتخاب می‌کند؟

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

هر زنجیره، بده‌بستان‌های متفاوتی داشت. اتریوم با EVM و Solidity (بزرگترین اکوسیستم، بالاترین کارمزد در L1) پیش رفت. سولانا Sealevel را برای اجرای موازی با استفاده از Rust (سریع اما توسعه دشوارتر) ساخت. کاردانو Haskell و تأیید رسمی (از نظر ریاضی دقیق، پذیرش کندتر) را انتخاب کرد. اما همه آنها به کامل بودن Turing بله گفتند زیرا همه آنها می‌خواستند قراردادهای هوشمند، DeFi، NFTها، DAOها و هر چیز دیگری را که نیاز به منطق سفارشی دارد، اجرا کنند.

مشکلات امنیتی واقعی هستند. سوءاستفاده‌های دیفای هر ساله میلیاردها دلار هزینه دارند. هک DAO تازه آغاز کار بود. اما این صنعت به این نتیجه رسید که مزایای قابلیت برنامه‌ریزی از خطرات آن بیشتر است. حتی بیت‌کوین، زنجیره اصلی که عمداً محدود شده بود، با Taproot و BitVM به سمت بیان‌پذیری بیشتر حرکت می‌کند.

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

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

هر بار که از Uniswap یا Aave یا هر پروتکل DeFi استفاده می‌کنم، به این موضوع فکر می‌کنم. هر مبادله‌ای که انجام می‌دهم، کدی است که روی یک ماشین مجازی Turing-complete اجرا می‌شود. هر تراکنش این ریسک نظری را به همراه دارد که یک اشکال پیش‌بینی نشده می‌تواند کل قرارداد را از بین ببرد. من به هر حال از این پروتکل‌ها استفاده می‌کنم زیرا کاربرد آن برای من ارزش ریسک را دارد. اما هرگز فراموش نمی‌کنم که این ریسک وجود دارد. و هرگز فراموش نمی‌کنم که بیت‌کوین مسیر متفاوتی را انتخاب کرد و آن مسیر حکمت خاص خود را دارد. دستگاه فروش خودکار هرگز پول شما را نمی‌دزدد. سرآشپز می‌تواند آشپزخانه را به آتش بکشد.

هر سوالی دارید؟

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

نه دقیقاً، اما در حال کسب قابلیت‌های بیشتر است. Taproot (2021) منطق شرطی بیشتری اضافه کرد. BitVM (2023) محاسبات خارج از زنجیره را با تأیید درون زنجیره‌ای پیشنهاد می‌دهد. این موارد، بیت‌کوین را بدون اینکه کاملاً تورینگ کامل شود، قابل برنامه‌ریزی‌تر می‌کنند. جامعه بیت‌کوین پیشرفت‌های تدریجی و دقیق را به تغییرات رادیکال ترجیح می‌دهد.

یک صندوق اتریوم ۱۵۰ میلیون دلاری در سال ۲۰۱۶ از طریق یک اشکال ورود مجدد (reentrancy) تخلیه شد. تابع برداشت، قبل از به‌روزرسانی موجودی، اتر ارسال می‌کرد. مهاجم این تابع را به صورت بازگشتی فراخوانی می‌کرد و هر بار قبل از اینکه قرارداد به نتیجه برسد، اتر بیشتری دریافت می‌کرد. این امر فقط به این دلیل امکان‌پذیر است که زبان اتریوم از فراخوانی‌های بازگشتی پشتیبانی می‌کند. در بیت‌کوین غیرممکن است زیرا اسکریپت بیت‌کوین نمی‌تواند بازگشتی باشد.

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

از نظر طراحی. ویتالیک می‌خواست اتریوم یک پلتفرم محاسباتی همه منظوره باشد. ساتوشی می‌خواست بیت‌کوین یک شبکه پرداخت امن باشد. کد ساده‌تر، سوءاستفاده از آن را دشوارتر می‌کند. قدرت اتریوم باعث ایجاد DeFi و NFT شد. محدودیت‌های بیت‌کوین از بروز باگ‌هایی که منجر به هک ۱۵۰ میلیون دلاری DAO شد، جلوگیری کرد. هر دو انتخاب‌های معتبری برای اهداف مختلف هستند.

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

Ready to Get Started?

Create an account and start accepting payments – no contracts or KYC required. Or, contact us to design a custom package for your business.

Make first step

Always know what you pay

Integrated per-transaction pricing with no hidden fees

Start your integration

Set up Plisio swiftly in just 10 minutes.