قبول خطاهاایمنیزندهبودن
ارز دیجیتال پای نتورک چگونه کار میکند؟
ما در مقاله پیشین که لینک آن در پایین همین پارگراف آمده است، در مورد ارز دیجیتال پای نتورک (Pi network) حرف زدیم و درباره اینکه چقدر میتوان به آن اعتماد کرد، مباحثی را مطرح کردیم. نتیجهگیری آن بحث این بود که در نهایت این شمایید که تصمیم میگیرید به آن اعتماد کنید یا نه؛
ما در مقاله پیشین که لینک آن در پایین همین پارگراف آمده است، در مورد ارز دیجیتال پای نتورک (Pi network) حرف زدیم و درباره اینکه چقدر میتوان به آن اعتماد کرد، مباحثی را مطرح کردیم.
نتیجهگیری آن بحث این بود که در نهایت این شمایید که تصمیم میگیرید به آن اعتماد کنید یا نه؛ اما من بهعنوان کسی که در این چند سال ارزهای دیجیتال مختلف و کلاهبرداریهای این حوزه را مطالعه میکنم، تصمیم گرفتم به ارز دیجیتال پای نتورک اعتماد کنم. چون به نظرم ارز دیجیتال پای نتورک قابلاعتماد است.
در پایان مقاله پیشین در مورد دلایل به وجود آمدن این ارز صحبت کردیم. یکی از این دلایل این بود که ارزهای دیجیتال دیگر مثل بیتکوین و اتریوم به این راحتی قابل ماینینگ نیستند، زیرا سختافزار گرانقیمتی لازم دارند، برق زیادی مصرف میکنند و فرآیند استخراجشان هم به طبیعت کره زمین آسیب میزند. این یکی از مسائلی است که ارز دیجیتال پای نتورک میخواهد حل کند.
پیش از ادامه، حتما مقاله پیشین ما را بخوانید.
چرا بیتکوین ماینینگ سخت است؟
مسئلهای که در ارزهای دیجیتال وجود دارد، جلوگیری از خرج کردن دوباره یا Double spent است؛ یعنی باید کاری کنیم که مطمئن شویم یک نفر نمیتواند مثلا یک بیتکوین را دو بار خرج کند.
بانکها این کار را با ثبت تراکنشها و اطلاعات هویتی افراد انجام میدهند.
در شبکه بیتکوین طبعا هویت واقعی ثبت نمیشود. وقتی کسی مثلا درخواست میکند که یک بیتکوین را به کس دیگری بدهد، در ابتدا ماینرها کل بلاکچین بیتکوین را چک میکنند و حساب میکنند که این فرد چقدر دارایی دارد. اگر داراییاش کمتر از مقدار بیتکوین موردتقاضا برای ارسال است، شبکه به فرد با یک خطا اعلام میکند که داراییاش کافی نیست.
فرض کنید دارایی فرد الف ۱۰ بیتکوین است. او درخواست ارسال ۲ بیتکوین را به فرد ب میکند. تعدادی از ماینرها تلاش میکنند که تراکنش وی را تایید کنند.
اما همزمان ممکن است او بخواهد ۲ بیتکوین دیگر به فرد ج بفرستد. در این حالت چون هنوز تراکنش قبلی ثبت نشده است و همه بلاکچینها با هم بهروزرسانی نشدهاند، دارایی وی هنوز ۱۰ بیتکوین است. در این حالت ممکن است گروه دیگری از ماینرها نیز تلاش کنند تراکنش دوم را ثبت کنند.
خرج کردن دوباره
اگر هماهنگی و توافقی بین این ماینرها برای تایید این تراکنشها صورت نگیرد، چه اتفاقی خواهد افتاد؟ ممکن است یک گروه ماینر تراکنش اول را تایید کنند و آن را در بلاکچینی که خود ذخیره کردهاند، ثبت کنند. طبق این بلاکچین دارایی فرد الف پس از تراکنش اول ۸ بیتکوین خواهد بود.
از آنسو هم گروه دیگر ماینرها تراکنش دوم را تایید میکنند و در نتیجه طبق بلاکچین آنها نیز دارایی فرد دوباره ۸ بیتکوین است.
پس فرد الف عملا ۲ بیتکوین را دو بار خرج کرده است و همهچیز درست به نظر میآید. اما میدانیم که درست نیست؛ زیرا دارایی فرد الف باید ۶ بیتکوین باشد.
برای جلوگیری از این مسئله وقتی یک بلاک متناسب با معیارها ساخته میشود، این بلاک باید به دست تمام اعضای شبکه برسد تا اولا همه توافق کنند که این بلاک معیارهای لازم برای وصل شدن به بلاکچین را دارد و همچنین همه اعضا بدانند که بلاک جدیدی ثبت شده است و همه تراکنشهای آن بلاک را ببینند تا در مثال حاضر متوجه شوند که فرد الف قبل از ارسال ۲ بیتکوین به فرد ج، ۲ بیتکوین دیگر به فرد ب نیز فرستاده است.
به این هماهنگیها و تایید بلاکها «توافق» (Consensus) میگویند.
در این حالت همچنین به دلیل اینکه معیارهای سفت و سختی برای معتبر بودن یک بلاک در شبکه وجود دارد و از آنسو بلاکچین بهصورت توزیعشده ذخیره شده است، امکان دستکاری و هک کردن خود بلاکچین هم عملی نیست؛ زیرا نیازمند این است که شما همه بلاکچینهای دنیا را همزمان با هم دستکاری کنید.
به همین دلیل هم الگوریتم اثبات کار در شبکه بیتکوین که برای ساختن بلوکهایی با معیارهای معتبر استفاده میشود، همواره تضمین میکند که تولید یک بلاک جدید یعنی تایید تراکنشهای آن بلاک، ۱۰ دقیقه طول بکشد تا زمان کافی برای اینکه بلاک به دست همه اعضای شبکه برای برسد و بررسی و تایید شود، وجود داشته باشد.
البته این ۱۰ دقیقه شاید بر اساس سرعت و زمان پاسخگویی شبکه اینترنت در سال ۲۰۰۹ تنظیم شده است و امروز زمان کمتری لازم باشد.
همچنین اگر مثلا بهجای یک شبکه فردبهفرد (Peer to Peer) که شبکه بیتکوین از آن استفاده میکند، از یک شبکه با کنترل مرکزی بهره ببریم مشخصا سرعت ارسال و دریافت دادههای بسیار بیشتر هم میشود.
حل مسئله خرج کردن دوباره (Double spent Problem) به این طرق مشکلاتی را دارد. مثلا منابع زیادی مصرف میکند و در نتیجه از عهده همه برنمیآید. همچنین به گرمایش زمین هم منجر میشود.
ارز دیجیتال پای نتورک چگونه کار میکند؟
ارز دیجیتال پای نتورک از پروتکل توافق استلار (Stellar Consensus Protocol) یا SCP و توافقنامه بایزنتاین (Federated Byzantine Agreement) استفاده میکند. در نتیجه برای توضیح نحوه کار ارز دیجیتال پای نتورک باید این دو پروتکل را توضیح دهیم.
بازه خطای بایزنتاین در ارز دیجیتال پای نتورک
برخلاف بانکها که با داشتن یک سرور مرکزی و البته گاوصندوقها تراکنشها را انجام میدهند، در شبکه یک ارز دیجیتال تراکنشها توسط نودهای (Node) مختلف تایید میشود. منظور از نود، کامپیوترها یا دستگاههای پردازشی هست که به شبکه وصل هستند و تایید تراکنشها را انجام میدهند.
برای اینکه تراکنشی بین نودهای غیرمرکزی مستقل تایید شود، باید آنها با هم روی درستی تراکنشی توافق داشته باشند. این اتفاق باید دائما بیفتد. برای تایید تراکنشها هم میتوان آنها را تکتک بین نودها جابهجا کرد و توافق یا عدمتوافق تکتک نودها را گرفت. یک حالت هم این است که آنها در دستهدسته کرد و دستهدسته روی این توافق رای گرفت. این دستهها را میتواند بلاک (Block) هم نامید.
چنین شبکهای همچنین باید بتواند نودهایی را که بهغلط یا دروغ تراکنشی را تایید میکنند یا پیامهای خارج از چارچوب میفرستند، نیز تحمل کند و دچار مشکل نشود.
پروتکلهای متعددی برای رسیدن به توافق در یک شبکه از نودها وجود دارد. نودهای شبکه اتریوم و بیتکوین به روشی که در پاراگرافهای بالا گفتیم و اثبات کار نام دارد، روی تایید تراکنشها توافق میکنند.
پروتکلهای بسیاری برای ایجاد توافق از شکلی از پروتکل بازه خطای بایزنتاین (Byzantine Fault Tolerant) یا BFT استفاده میکنند.
در پروتکل بازه خطای بایزنتاین، پیامهایی پیدرپی بین نودها ردوبدل شده و روی درستی تراکنشها رایگیری میشود. وقتی حداقل ۶۶ درصد نودها بهدرستی یک تراکنش یا یک دسته تراکنش رای مثبت بدهند، آن تراکنش یا آن بلاک تایید شده و در بلاکچین یا هر سیستم دیگری ذخیره میشود.
این فرآیند بسیار سریعتر از الگوریتم اثبات کار است. با اینکه تعداد پیامهای تبدیلشده در الگوریتم BFT بسیار بیشتر از روش اثبات کار است، اما چون سرعت اینترنت در جهان امروزه زیاد است و حجم این پیامها هم فقط چند کیلوبایت است، الگوریتم BFT بسیار سریعتر از اثبات کار است. پروتکل BFT توان پردازشی بسیار کمی لازم دارد که حتی یک تلفن هوشمند هم از عهده آن برمیآید و همچنین انرژی چندانی هم مصرف نمیکند.
اگر با ارز دیجیتال لیبرای فیسبوک آشنا باشید، میدانید که لیبرا هم از BFT استفاده میکند؛ اما این پروتکل یک مشکل دارد. آنهم این است که نمیتوان آن را بهصورت غیرمرکزی ایجاد کرد.
یعنی حتما باید مرکزی باشد که مثلا نتایج رایگیری را به همه نودها اعلام کند. در نتیجه این نود مرکزی میتواند کنترل شبکه را به عهده بگیرد و در صورت هک شدن، کل شبکه به خطر بیفتد.
در سیستم ارز دیجیتال لیبرای فیسبوک نیز علاوه بر این، خود نودها با تایید فیسبوک به شبکه اضافه میشدند؛ یعنی مثل شبکه بیتکوین و اتریوم، هرکسی نمیتواند با استفاده کامپیوتر و اینترنت خود وارد شبکه شود و تراکنشها را تایید کند. بلکه باید از طرف فیسبوک اجازه بگیرد.
پروتکل توافق استلار در ارز دیجیتال پای نتورک
در سال ۲۰۱۵ دکتر دیوید مازیر (David Mazière) استاد دانشکده کامپیوتر استنفورد، الگوریتمی را بر پایه BFT معرفی کرد که این مشکل مرکزی بودن را نداشت. این الگوریتم پروتکل توافق استلار (SCP) یا توافقنامه بَنزنتاین (FBA) نام دارد.
برای اینکه پروتکل استلار را بفهمیم بهتر است آن را با الگوریتم اثبات کار و همچنین پروتکل بازه خطای بایزنتاین یا BFT مقایسه کنیم.
۱- عضویت آزاد
در الگوریتم اثبات کار هرکسی میتواند با داشتن یک کامپیوتر یا دستگاه ماینر و اینترنت به شبکه ارز دیجیتال وصل شده و شروع به تایید تراکنشها یا همان ماینینگ بکند. ماینرها یا همان تاییدکنندهها هم میتوانند هر وقت دلشان خواست بدون اینکه تاثیری روی فرآیند «توافق» بگذارند، به شبکه وارد یا از آن خارج شوند.
در پروتکل BFT باید یک لیست از ماینرها یا تاییدکنندهها وجود داشته باشد که توسط یک واحد مرکزی انتخاب و صلاحیتشان تایید شده است. معمولا هم این واحد مرکزی شرکتی است که پشت یک ارز دیجیتال قرار دارد. در مورد ارز لیبرا، این تایید صلاحیت دست فیسبوک است.
شما در این حالت میتوانید تنها درصورتیکه به تایید تراکنشها بپردازید که واحد مرکزی شما را تایید کرده باشد.
در پروتکل استلار هیچ لیست تایید شدهای از ماینرها یا تاییدکنندههای تراکنش وجود ندارد. بهجای این کار هر ماینری فهرستی تهیه میکند و به شبکه میگوید که به چه ماینرهای دیگری اعتماد دارد.
کد معرفی که برای استفاده از اپلیکیشن ارز دیجیتال پای نتورک استفاده میکنید تا حدی برای همین است. شما با استفاده از کد معرف یک ماینر و استفاده از آن در گوشی خود، آن ماینر معرف را به لیست مورد اعتماد خود اضافه میکنید. هرچند بعدها میتوان این لیست را تغییر داد.
این لیست ماینرهای مورد اعتماد Quorum slice نام دارد. مشخصا وقتی ماینرهای مختلف فهرستهای خود را ارائه دهند، بین این لیست ماینرها همپوشانی ایجاد میشود. این همپوشانی باعث میشود بتوان ارتباط غیرمستقیمی بین همه ماینرها ایجاد کرد و یک سیستم برای ایجاد «توافق» به دست آورد.
در پروتکل استلار بدون اینکه نیازی به یک واحد کنترل مرکزی باشد، شما میتوانید یک شبکه از ماینرهای با عضویت آزاد درست کنید که هرکسی بتواند در آن عضو شود یا از آن خارج گردد. برای ورود به این سیستم کافی است چند ماینر شما را به لیست مورد اعتمادشان اضافه کنند.
این سیستم عضویت آزاد باعث ایجاد یک شبکه غیرمرکزی از تاییدکنندهها یا ماینرها میشود.
۲- ایمنی
طبق یکی از قضیههایی که در علوم کامپیوتر وجود دارد هر شبکهای از نودهای ماینر، میتواند فقط دو ویژگی از سه ویژگی «قبول خطاها یا بازه خطاها» (Fault Tolerance)، «ایمنی» (Safety) و «زندهبودن» (Liveness) را داشته باشد. هیچ سیستمی نمیتواند هر سه این ویژگیها را با هم داشته باشد. بلکه فقط دو ویژگی را میتوان همزمان داشت.
قبول خطاها
قبول خطاها یا بازه خطاها به این معنی است که یک سیستم میتواند بخشی از عدم تایید تراکنشها توسط همه نودها را تحمل کند و همچنان به کارش ادامه دهد؛ یعنی مثلا اگر یک یا چند نود به هر دلیلی دیگر به شبکه وصل نباشند، شبکه همچنان بتواند به کارش ادامه دهد. از این طریق است که مثلا در شبکه بیتکوین اگر یک نود شبکه را ترک کند، مشکلی پیش نمیآید. بسیاری از پروتکلهای تایید تراکنش این ویژگی را بهعنوان یکی از دو ویژگی مذکور انتخاب میکنند.
همچنین اینکه پروتکل بازه خطای بایزنتاین فقط نیاز به توافق ۶۶ درصد از ماینرها دارد، همین قبول خطاها و عدم توافقها است.
ایمنی
ایمنی به این معنی است که سیستم اجازه نمیدهد اتفاق بدی در سیستم رخ دهد؛ مثلا اگر بخشی از نودها یک تراکنش یا بستهای تراکنشها را تایید نکنند، دو بلاکچین مجزا که در یکی این تراکنش ثبت شده و در دیگری نه ایجاد نمیشود؛ یعنی بلاکچین دوشاخه (Fork) نمیشود.
اگر مثلا بخشی از نودها روی یک بلاک یا بسته تراکنش توافق نکنند، شبکه کارش متوقف میشود و سیستم شروع به عیبیابی میکند تا در نهایت توافق جمعی حاصل شود.
زندهبودن
زندهبودن تضمینی است که هیچوقت شبکه متوقف نمیشود؛ یعنی تضمین میکند که شرایطی پیش نخواهد آمد که یک بلاک تاییدنشده که همه نودها روی آن توافق ندارند، باعث متوقف شدن فرآیند تایید نمیشود و سیستم به کارش ادامه میدهد. چنین انتخابی میتواند در یک مقطع باعث دوشاخه شدن بلاکچین شود، یعنی برخلاف چیزی که «ایمنی» مانع از آن میشود.
فرض کنید به هر دلیل امروز اتصال اینترنت چین با بقیه دنیا قطع شود. در این حالت بیتکوین ماینرهای چینی همچنان به تایید تراکنشها ادامه میدهند؛ اما چون دیگر با بقیه ماینرهای دنیا ارتباط ندارند، بلاکهای موردتوافق آنها نمیتواند توسط ماینرهای خارج از چین تایید شود.
برعکس ماینرهای خارج از چین نیز روی بلاکهایی توافق میکنند که ماینرهای چینی آنها را تایید نکردهاند.
در این حالت ماینرهای داخل چین، بلاکچین را با بلاکهای موردتوافق خود بدون توافق ماینرهای خارج از چین و ماینرهای خارج از چین، بلاکچین را با بلاکهای موردتوافق خود بدون توافق ماینرهای چینی خواهند ساخت. چنین اتفاقی باعث ایجاد دو نسخه از بلاکچین میشود. یک بلاکچین خارج از چین و یک بلاکچین داخل چنین.
یعنی بلاکچین بیتکوین بعد از قطع اینترنت چین دوشاخه میشود.
«زندهبودن» و «ایمنی» فرآیند توافق مشخصا در تضاد هم هستند. پس سازنده یک شبکه مجبور است یکی از دو را انتخاب کند و نمیتواند همزمان هر دو را داشته باشد.
در فرآیند اثبات کار «قبول خطاها» و «زندهبودن» انتخاب شده است. پروتکلهای مختلف BFT، همه «قبول خطاها» را پذیرفتهاند؛ اما برخی «ایمنی» را ترجیح میدهند و برخی دیگر «زندهبودن» را. پروتکل استلار «قبول خطاها» و «ایمنی» را برمیگزیند.
در پروتکل استلار اگر موقعیتی پیش بیاید که احتمال یک دوشاخه شدن وجود داشته باشد، فرآیند تایید تراکنشها متوقف میشود تا یک توافق جمعی روی دسته تراکنشها موردبحث حاصل گردد.
۳- تاخیر کم
در شبکه بیتکوین به علت استفاده از الگوریتم اثبات کار، ده دقیقه طول میکشد که تراکنشها و دادههای داخل یک بلاک تایید شده و به بلاکچین متصل گردد؛ اما در تراکنشهای بزرگ مثلا بین ۱۰ هزار تا یکمیلیون دلار، توصیه شده است که بعدازاینکه تراکنش مدنظر شما تایید شد، بهتر از ۵ بلاک دیگر صبر کنید که مطمئن شوید تراکنش مدنظر شما حتم تایید شده است و همه نودها روی آن توافق دارند. این یعنی شما برای انجام یک تراکنش حداقل ۱۰ دقیقه و برای اطمینان تا ۶۰ دقیقه هم باید صبر کنید.
در پروتکلهای بر پایه BFT مثل همین پروتکل استلار، هیچ فرآیند اثبات کار یا همان ماینینگی وجود ندارد. تایید تراکنشها صرفا با ارسال و دریافت پیامها بین نودها و با استفاده از رایگیری انجام میشود. چنین کاری توان پردازشی کمی لازم دارد که حتی یک تلفن هوشمند هم از عهده آن برمیآید. حجم دادههای مبادلهشده هم پایین است و در نتیجه سرعت اینترنت زیادی هم لازم ندارد.
این فرآیند تبادل پیامها بسیار سریعتر از فرآیند اثبات کار است. در نتیجه پروتکل استلار تاخیر بسیار کمی دارد و سریع میتواند تراکنشها را در ۳ تا ۵ ثانیه تایید کند. این یکی از مهمترین ویژگیها ارزهای نسل سوم مثل ارز دیجیتال پای نتورک، نئو (Neo) و ارز دیجیتال گرم تلگرام است که البته دیگر به تاریخ پیوست.
چون در پروتکل استلار «ایمنی» بهجای «زندهبودن» انتخاب شده است، شما لازم نیست چند بلاک صبر کنید تا مطمئن شوید که بلاکچین دوشاخه نشده است و تراکنش شما مورد تایید همه نودها است.
۴- امنیت مجانبی
پیشازاین درباره حمله ۵۱ درصد در شبکه بیتکوین گفتیم. گفتیم که اگر یک نود یا یک گروه از نودها در شبکه بیتکوین بتوانند بیش از نیمی از توان پردازشی شبکه را در اختیار بگیرند، عملا میتوانند روی تایید تراکنشها کنترل داشته باشند.
در پروتکلهای بر پایه BFT مثل همین پروتکل استلار به دلیل وجود امنیت مجانبی (asymptotic security) مهم نیست یک نود چقدر توان پردازشی داشته باشد. این نود نمیتواند کنترل شبکه را در دست بگیرد. دلیلش این است که دیگر برای تایید تراکنشها حل یک مسئله تصادفی که در فرآیند اثبات کار وجود دارد، ضروری نیست. ماینرها یا همان کسانی که تراکنش تایید میکنند، صرفاً موافقت یا عدم موافقت خود را با یک بلاک را با استفاده از امضای دیجیتال خود که روی بلاک موردنظر میزنند، به بقیه اعلام کنند.
توافق مورد اعتماد در ارز دیجیتال پای نتورک
در کنار اینها ارز دیجیتال پای نتورک یک قاعده اضافه نیز برای تایید تراکنشها دارد. در این شبکه شما میتوانید در لیست کسانی که ماینرهای مورد اعتماد شما هستند، مشخص کنید که اگر مثلا یک، دو یا چند ماینر خاص تراکنش یا بلاکی را تایید کردند، آن تراکنش یا بلاک مورد تایید شما هم هست. در این حالت شما در فرآیند ماینینگ شرکت میکنید اما همیشه لازم نیست مثلا گوشی شما به اینترنت وصل باشد و اپلیکیشن پای نتورک هم در آن در حال اجرا بماند.
تنها چیزی که لازم است این است که شما در هر ۲۴ ساعت گوشی خود را بردارید، اپلیکیشن پای نتورک را باز کنید و با زدن روی گزینه نشاندادهشده، ابراز کنید که انسان هستید و آن گوشی صرفا توسط یک بات یا کد کامپیوتری کنترل نمیشود.
نظرات