شناخت بیت کوین – بخش هفتم: جاهای خالی
بالاخره به بخش هفتم، یعنی بخش آخر سلسله مقالات «شناخت بیت کوین»، نوشته گیاکومو زوکو، رسیدیم. در قسمتهای پیشین کار خود را از انسان نخستین آغاز کردیم و به نقش مردم در تحولات مالی پرداختیم؛ شرح مختصری از اختراع پول دادیم و اشتباهات موجود در این اختراع را مورد بررسی قرار دادیم. در قسمت پنج و شش هم به ترتیب کمیابی دیجیتال و قراردادهای هوشمند را تشریح کردیم.
پیش از آنکه کار خود را شروع کنیم باید یادآوری کرد که درک درستی از قسمتهای پیشین ضروری است؛ چرا که در بخشهای قبلی به اهمیت وجود امضاهای دیجیتال پرداختیم و کوین جوین را توصیف کردیم و حالا به مفاهیمی نظیر کارمزد استخراج، جدول زمانی شرح وقایع منحصر و تراکنشهای آف چین (off-chain) اشاره خواهیم کرد.
اثباتی بر منحصر به فرد بودن: زنجیره زمانی
سر انجام به انتهای بررسی نقشه «ب» رسیدیم و کار را از همانجا که آغاز کردیم، یعنی سوال «کِی؟» به پایان میبریم.
پاسخ سوال «کیِ» مهم است؛ چرا که شناخت مفهومی با نام فناوری بلاک چین را توجیه میکند. فناوریای که از معنی اصلیش فاصله گرفته و تنها بهعنوان راهکاری برای جداول زمانیِ شرح وقایعِ منحصر به حساب میآید. نکته جالب اینجاست که ساتوشی ساختار مشابه را تایم چین یا زنجیره زمانی نامید.
حالا بیایید سعی کنیم تا بفهمیم که این مسئله چه مشکلی را حل میکند. برای این کار باید آرام آرام به عقب برگردیم. شما سیستم دیجیتالی برای پول نقد طراحی کردید که ایجاد و مالکیت ارزها در آن غیرمتمرکز است و از تلفیق هوشمندانه پازلها و امضاها در آن استفاده کردید.
سوال اینجاست که چطور مانع دوباره خرج کردن یک UTXO مشخص میشوید؟ اگر کارول، یک کاربر نه چندان رو راست، ساتوشیهایی را به آدرس دنیل بفرستد و سپس یک تراکنش دیگر با همان مقدار ساتوشی برای حسابی متعلق به خودش بفرستد، کدام تراکنش توسط سیستم اجرا میشود؟ از نقطه نظر امضاها و اسکریپتها و صد البته صدور و اثبات انجام، هر دوی این تراکنشها قابل قبولاند.
به علاوه چطور جلوی ماینرها را میگیرید که در برچسبهای زمانی بلاکها تقلب نکنند و نرخ عرضه ارزها را دستکاری ننمایند؟ اگر «مینی» که یک ماینر است بتواند صدها معمای اثبات کار را با سختی کم حل کند، اما برچسبهای زمانی تقلبی را در پازلها قرار دهد که نشان دهد فاصله ماین هر بلاک ده دقیقه به طول انجامیده چه میشود؟ یک کاربر تازه وارد چطور میتواند این تقلب را کشف کند؟
در تجربه قبلیتان در مورد طلای دیجیتال، به برچسبهای زمانی که توسط سرورها ایجاد میشود اعتماد میکردید و آنها هم هر دو مشکل را باهم حل میکردند. ولی حالا که سروری مرکزی وجود ندارد، چه کسی میتواند توالی درست زمانی را تایید کند؟
اگر این شبکه بتواند به نوعی رای گیری کند، میتواند به یک اجماع دموکراتیک برسد. اما رای گیری تنها در سیستمهایی که مقدار مشخصی از مشترکان با هویت مشخص (معمولا از آنها با عنوان فدراسیون یاد میشود) دارد امکان پذیر است و شما نمیتوانید به همین سادگیها از تعداد نودها برای رای گیری استفاده کنید. چرا که هر کاربر میتواند هزاران و میلیونها نود مختلف باشد؛ این موضوع با نام حملات سیبل (Sybil Attack) شناخته میشود. پس باید مقاومت سیبلی ایجاد کنید تا بتوانید تمام نودها را به سمت یک تاریخچه مشخص، ثابت و غیر قابل تغییر سوق دهید.
متاسفانه یک راهکار قطعی و معین بر اساس ریاضیات امکانپذیر نیست. این در حالی است که یک راهکار آماریِ مجانب، محتمل است و شما هم انقدری باهوش هستید که به چنین راهکاری برسید. ایده این است: هر بار که ماینری سعی بر حل پازلهای اثبات کار میکند، باید در پیامشان تصویری از تایم لاین فعلی تراکنش را نیز قرار دهد.
به جای آنکه فقط پیامهایشان را ایجاد کنند، مجبورند تا از یک تابع هش دیگری رد شوند به بلاکی پیچیدهتر برسند. در هر یک از بلاکها علاوه بر پیام ایجاد، برچسب زمانی و یک رقم تصادفی که برای حل پازل در یک سختی مشخص، کافی است، راهحل بلاک قبلی (که چیزی در حدود ۱۰ دقیقه قبل توسط ماینرهای دیگر پیدا شده است) و تراکنشهایی که این کاربر پیشتر انجام داده نیز وجود دارد.
بلاکی که تراکنشی مشابه بلاک قبلی را داشته باشد، غیرقابل قبول به حساب میآید. بلاکی که برچسب زمانی ناسازگار با برچسبهای قدیمی را داشته باشد، از بین خواهد رفت.
با استفاده از این ترفند، تمام مشترکان تشویق میشوند به سمت نسخهای پایدار از یک توالی زمانی بروند. مینی میتواند در پیام خود یک تراکنش مجاز و متناقض را که پیشتر تایید شده (دوباره خرج کردن)، قرار دهد یا برای دور زدن سختی شبکه، برچسب زمانی را تغییر دهد، در این صورت نودها این بلاک را رد میکنند. در این حال مینی ارزشی که تازه ایجاد شده را از دست خواهد داد و فقط وقت و انرژیاش را برای هیچ، تلف کرده است.
ماینرها برای حل کردن پازلها پول خرج میکنند و طبیعی است که به دنبال پاداش حل کردن پازلها و ایجاد بلاکهایی باشند که رد نمیشوند. حداقل در سناریوهایی که ماینرها به دنبال پاداش مالیاند، این مسئله خطری برای سیستم به حساب میآید.
کارمزد ماینینگ
این راهکار در عین حال که بی نظیر است اما همچنان فاقد مشوق برای ماینرهاست تا تراکنشهای افراد دیگر را نیز لحاظ کنند. ماینرها میتوانند خیلی راحت قدرت پردازشی که برای تایید اسکریپتها و امضاها استفاده میشود را ذخیره و تنها ارزهای ایجاد شده و مجاز خودشان را لحاظ کنند، در غیر این صورت بلاکها را خالی نمایند. به علاوه نرخ کاهشی ساتوشیها که به واسطه الگوی عرضه کنترلشده ایجاد شده، باعث خواهد شد تا مشوقهای مالی رفته رفته به سمت صفر میل کند و در پایان چرخه به صفر برسد.
شما این مشکل را با کارمزد ماینینگ حل میکنید. کارمزد ماینینگ یک مبلغ اضافی است که کاربران در تراکنششان پیوست میکنند تا ماینرها را تشویق به انجام تراکنش کنند.
کارمزد ماینینگ به این صورت کار میکند: سیستم به ماینرها اجازه میدهد علاوه بر ساتوشیهای جدیدی که تولید میکنند، از پاداش تراکنشهای دیگر نیز استفاده نمایند. به علاوه اختلاف ساتوشیهای ایجاد شده و UTXOهای مصرف شده در تمام تراکنشهای قابل قبول، در بلاک وجود دارد. کارمزدها به میزان تراکنش بستگی ندارد، بلکه به پیچیدگی اسکریپت، تعداد امضاها و به طور کلی ابعاد تراکنش و صد البته اولویت مورد نظر در بلاکها مرتبط است.
مشکلات مربوط به مقیاس پذیری و تاریکی
حداقل کارمزد لازم برای انجام تراکنش بسته به عرضه و تقاضای فضای بلاک متغیر است. عرضه، تعداد تراکنشهایی است که میتوان به تایم چین اضافه کرد (این میزان به حجم ۴ مگابایتی هر بلاک محدود است) و از طرف دیگر شامل نرخ ایجاد هر بلاک هم میشود (هر ده دقیقه یکبار). تقاضا اما، در خصوص هر کاربر متفاوت است؛ مثلا یک کاربر حاضر است تا در ازای پرداخت مبلغ کمتر، مدت زمان بیشتری را برای انجام تراکنش منتظر بماند، برخی کیف پولها طیف گستردهای از کارمزدها را شامل میشوند. به عبارت سادهتر افزایش تقاضا برای فضای بلاک، باعث افزایش کارمزد استخراج میشود. این مسئله مشخصاً بر مقیاس پذیری سیستم تاثیر میگذارد. به طور خاص، از آنجایی که کارمزد استخراج ارتباطی به میزان مبادله شده ندارد، میتوان گفت که باعث کاهش قابلیت بخشپذیری هم میشود.
به علاوه استفاده از زنجیره زمانی یعنی هر نود باید حساب همه چیز در شبکه را زیر نظر بگیرد: هر تراکنش درون زنجیرهای باید دانلود و تایید شود و این عمل باید توسط تمام استفاده کنندگان (ماینرها) سیستم و حتی آنهایی که بعدا اضافه میشوند، صورت گیرد. مشخصاً چنین سیستمی مقیاس پذیر نیست. تاریکی هم ندارد، چرا که همه یک کپی از تراکنشها را در اختیار دارند و این امکان وجود دارد که در هر لحظه به بررسی و تشریح آنها پرداخت.
این امکان وجود دارد که وضعیت را برای برخی از کاربران بهتر کرد. بهای این کار ایجاد یک کلاس با دسترسی بیشتر از کاربران عادی است. مثلا اگر شما سایز و سرعت ساخت بلاکها را بالا ببرید، عرضه افزایش مییابد و قیمت با کاهش همراه میشود. اما هزینه اجرای نودها، با قابلیت تایید اعتبار مستقل تراکنشها و بلاکها، بسیار بیشتر از میزان افزایش عرضه، بالا خواهد رفت و بدین ترتیب تجمع مکانی سیستم به سمت تمرکز پیش میرود. مطمئنا یک کلاس مخصوص از نودها میتواند به عنوان یک پیام امضا شده برای کاربران رده پایینتر (آن دستهای که تراکنشی را تایید نمیکنند) بدل شوند و به آنها این تضمین را بدهند که تراکنششان امضا شده است. ضرب سکه هم دقیقا برای کاری مشابه ایجاد شده بود! ولی درست به مانند ضرب سکه، این استراتژی که SPV نام دارد، شدیدا متمرکز است و ریسک دخالت و حملات سیاسی و همچنین سانسور امثال مالوری را بالا میبرد.
الگویی جدید با نام برون زنجیرهای
یک راه هوشمندانه برای کاهش محدودیت اجماع در تمام سیستم، بدون به خطر انداختن غیرمتمرکز بودن آن، استفاده از چیزی است که «الگوی برون زنجیرهای» نام دارد.
این ایده بسیار ساده است: از ثبت هر تراکنش در بلاک تا زمانی که شدیدا ضروری است، پرهیز کنید. با این کار در واقع بیشتر ترافیک از زنجیره زمانی عمومی (و اجماع سراسری پر هزینهاش) منحرف و از آن تنها برای حل اختلاف نظرها و تسویهها در مدت زمانهای مشخص استفاده میشود.
این تغییر بنیادین شبیه به روشی است که مردم از دادگاهها و قراردادها در سیستم قانون استفاده میکنند: دادگاهها معمولا پیشنویسهایی عمومی ایجاد میکنند و به نوعی از «اجماع سراسری قانونی» میرسند، اما به نسبت، کند و پر هزینه است؛ از همین رو مردم و طرفین معاملات تنها قرار قراردادهای دو طرفه را میان خودشان امضا میکنند و از دادگاه میخواهند تا آنها را تایید کند و تنها در مواقع حل اختلاف و تاریخ سر رسید به دادگاه مراجعه میکنند.
قراردادهای هوشمند پیشرفته میتوانند نیاز به اعتماد برای این روند بازگشت [به دادگاه] را به حداقل برسانند: بر خلاف سیستم قانونی فعلی، تایم چین غیرمتمرکز از فسادهای انسانی و جهت گیریهای افراد مصون است و عموما به کدهای رمزنگاریشده تکیه میکند. بر خلاف اسناد اعتباری که در بخش مجازیسازی به آنها اشاره کردیم، تراکنشهای آف چین مجازی نیستند؛ آنها تراکنشهایی قابل قبولاند که به احتمال زیاد بدون توجه به صداقت طرفین درگیر، به سیستم تحمیل میشوند.
خیلی زود میفهمید که این طرح جدید، میتواند باعث بهبود تاریکی در سیستم شما هم بشود. به جای اینکه تمام نودها برای همیشه تمام تراکنشها را ثبت کنند، بیشتر تراکنشها به صورت خصوصی میان طرفین به ثبت میرسند؛ بنابراین بررسی آنها توسط عناصر مخرب سختتر، پر هزینهتر، با درصد موفقیت کمتر و غیرقابل اتکاتر خواهد شد.
کاربرد اصلی این استراتژی، یک شبکه ثانویه از کانالهای پرداخت دو طرفه و با مبالغی است که از پیش در کانالها قرار گرفتهاند. این کانالها میتوانند تراکنشها به شیوهای اتمی و با حداقل اعتماد منتقل کنند. کاربران این راهکار تازه را با نامی شاعرانه خطاب میکنند؛ «شبکه صاعقه» یا «شبکه لایتنینگ». مخففی که معمولا مثل یک برچسب روی پروتکل اصلیِ سیستم شما با نام LNP/BP نوشته میشود و مشابه TCP/IP است.
در میان اما، مثالهای دیگری نیز از همین طرح وجود دارند: تکنیکهایی که اسکریپتهای اصلی را تا زمانی که به آنها نیاز نباشد در تایم چین اصلی نمیآورد و بدین ترتیب فضای بیشتری در بلاک باقی میماند و حفظ حریم خصوصی نیز بالاتر میرود. مردم از این تکنیکها با نامهای تَپ روت (Taproot)، گرفت روت (Graftroot)، جی روت (g root)، اسکریپت بدون اسکپریت (Scriptless Script) و غیره یاد میکنند.
با اتمام این بخش، حالا کاربران شما تمام چیزی که برای استفاده از سیستم شما در زندگی روزمرهشان لازم دارند را در اختیار دارند و میتوانند از آن برای بدست آوردن دوباره مهمترین ویژگیهای پول بهره ببرند. ممنون ساتوشی!
سرانجام داستان مرد غارنشین ما هم به پایان رسید. از گذشته تاریخ به اینجا رسیدیم و تنها زمان است که میتواند آینده پیش روی ما را روشن کند. پس پیش به سوی آینده!
متاسفیم که این مطلب نتوانسته نظر شما را جلب کند. لطفا با نظرات و پیشنهادات خود، ما را در بهبود همیشگی سایت یاری دهید.