اجرا کردن یک بلاک چین به زبان ساده !
پیاده سازی یک بلاک چین
اگر شما در یک جزیره متروکه گیر افتاده باشید، دانستن نحوه اداره فرآیند اجماع غیر متمرکز و یا به عبارت دیگر اداره کردن یک بلاک چین خیلی ساده با کاغذ و قلم می تواند خیلی مفید باشد. تمام چیزی که برای این کار نیاز خواهید داشت چند نفر بازمانده، این مقاله، یک خودکار و چند تکه کاغذ می باشد. اگر در این باره مطمئن نیستید، می توانید به مطالعه بیشتر در این زمینه بپردازید.
بیایید به آن ماجرای اول برگردیم و از این فرآیند همراه با قهرمانان نترسمان گذر کنیم که به تازگی به جزیره متروکه ای در جنوب اقیانوس آرام سقوط کرده اند. این قهرمانان Hugo، Sawyer، Kate و Jack می باشند.
تصور کنید این گروه می خواهند IslandCoin را ایجاد کنند که یک ارز جدید انقلابی است و اقتصاد ناتوان داد و ستد جزیره ای را به پایان می رساند. اعضای این گروه توافق کرده اند که هر کدام از آنها با صد کوین شروع کنند. از آنجایی که فلزی ندارند تا کوین های واقعی را ضرب کنند، آنها مجبورند که این کار را با چند تکه کاغذ انجام دهند. این گروه در مورد موضوع اعتماد کردن کمی گیج شده اند و نتوانسته اند به فرد خاصی برای پیگیری موجودی ها اعتماد کنند. تنها گزینه باقی مانده برای آنها پشتیبانی گروهی از موجودی ها بوده است.
ما با چیزی شروع می کنیم که احتمالا ساده ترین پیاده سازی بلاک چین جزیره مورد نظر ماست. در مقالات آینده می توانیم پیاده سازی های بیشتری را مورد بررسی قرار دهیم و آنها را به مفاهیمی مانند گواه اثبات کار و گواه اثبات سهام وصل کنیم و این به ما کمک خواهد کرد که محاسن و معایب آنها را ببینیم. اما در حال حاضر بیایید با ساده ترین شکل ممکن شروع کنیم.
به طور ساده می توان گفت که آنچه ما می خواهیم در این مثال به آن برسیم، حفظ و نگهداری یک جدول ساده از موجودی ها در یک تکه کاغذ است. این جدول نشان می دهد که هر یک از قهرمانان ما چند کوین دارند. از آنجا که ما نمی توانیم تنها یک تکه کاغذ را به عنوان تنها منبع حقیقت داشته باشیم، باید چیز ها را به طور مساوی نگه داریم و اجازه دهیم هر یک از اعضای گروه نسخه خود را داشته باشد و این دقیقا بخش غیر متمرکز ماجرا می باشد. از طرفی ما همگی میخواهیم و امیدواریم که همه این کاغذ ها در نهایت یک چیز را نشان دهند. این امر نیز بخشاجماع قضیه می باشد.
ایا این کاغذ باید دارای چه ویژگی هایی باشد ؟
این کاغذ اولین توافق صورت گرفته است و به همین خاطر روز اول بر روی آن نوشته شده است. این موجودی ها از کجا آمده اند؟ ما از قبل توافق کردیم که عادلانه است که هر یک از اعضای گروه با ۱۰۰ کوین شروع کند. همچنین نیاز است که یکی از اعضا این کاغذ را بنویسد. مهم نیست که چه کسی این کار را انجام دهد پس فرضا Hugo این کار را می کند. او فردی خواهد بود که این کاغذ را به همه نشان خواهد داد و مطمئن می شود که همه یک کپی از آن را ذخیره می کنند که البته فرض می کنیم که یک دستگاه فتوکپی عالی نیز در جزیره موجود است.
از آنجا که انتظار می رود که موجودی کوین ها تغییر کند، ما در انتهای هر روز کاغذ را به روز رسانی خواهیم کرد. ممکن است هر روز Hugo این به روز رسانی را منتشر نکند زیرا ما می خواهیم تا آنجا که امکان دارد اوضاع را عادلانه پیش ببریم.
از آنجا که اعتماد متقابل در این گروه وجود ندارد، بخش مهم دیگری که نباید فراموش شود تایید به روز رسانی از جانب هر یک از اعضای گروه می باشد. یک روش ساده برای این کار، امضای کاغذ توسط هر یک از اعضای گروه می باشد اما این امضا تنها زمانی صورت می گیرد که آنها با مفاد نوشته شده بر روی کاغذ توافق کنند.
برای اینکه کاغذ نهایی و تصویب شده تلقی شود، چند نفر باید آن را امضا کنند؟
در این زمینه نیاز به اجماع اکثریت است و بنابراین از آنجا که ما جمعا ۴ نفر هستیم، اکثریت یعنی ۳ نفر از ما. کاغذ بالا توسط هر چهار نفر امضا شده است و در نتیجه نهایی تلقی می شود. چرا ما هر چهار امضا را در همه کاغذ ها نیاز نخواهیم داشت؟ زیرا این امر باعث می شود که یک فرد کل فرآیند را به خطر بیاندازد. اگر Sawyer برای چند روز به سفر ماهی گیری برود، گروه تا زمانی که او برنگردد قادر به آپدیت کردن موجودی ها نخواهند بود و این امر قدرت بیش از حدی را به یک فرد می دهد. چرا ما به اکثریت نیاز داریم و ۲ امضا از ۴ امضا کافی نمی باشد؟ زیرا در این حالت ممکن است دو نفر نسخه ای را امضا کنند و دو نفر دیگر نیز نسخه متفاوتی را امضا نمایند که با همدیگر مطابقت ندارند. نمی توان دو نسخه متناقض از حقیقت داشت و هر دو هم نهایی تلقی شوند.
در صبح روز دوم Kate می خواهد یک گوجه فرنگی بخرد. Hugo هر گوجه فرنگی را در عوض ۲ کوین می فروشد. Kate یک تکه کاغذ جدید برمی دارد و انتقال را بر روی آن می نویسد:
این اولین اقدام Kate است و بنابراین او آن را به صورت بالا برچسب می زند. به علاوه Kate این کاغذ را امضا می کند. ما همگی باید امضای او را داشته باشیم تا مطمئن شویم که کس دیگری این انتقال را از حساب او جعل نکرده است.
در انتهای روز دوم، گروه می خواهد یک به روز رسانی انجام دهد. Hugo روز اول کاغذ را منتشر کرد و امضای همه را جمع آوری کرد. منطقی است که این کار به نوبت انجام گیرد. گروه توافق می کنند که این کار را به صورت چرخشی انجام دهند. فرضا روز دوم Sawyer مسئولیت انتشار کاغذ را دارد. کاغذی که او منتشر می کند، انتقال Kate را نیز نشان می دهد:
این کاغذی که Sawyer تدوین کرده هنوز نهایی نشده است زیرا تنها توسط Sawyer امضا شده است. او لازم است که امضا های بیشتری را جمع آوری کند که Sawyer در میان اعضای گروه می گردد و از هر یک از آنها می خواهد که کاغذ را تایید و امضا نمایند. تایید این کاغذ خیلی آسان است. اول تایید کننده لازم است که به مجموعه امضا های خود نگاه کند و کاغذی را که موجودی دیروز را نشان می دهد، پیدا کند. سپس تایید کننده باید لیست جدید انتقال ها را نگاه کند. در این مورد تنها یک انتقال و آن هم توسط Kate انجام شده است. تایید این انتقال آسان است و می توانیم مطمئن شویم که واقعا Kate آن را امضا کرده است و می توانیم مطمئن شویم که Kate این مقدار کوین را در حساب دارد تا بدهی خود را به Hugo بدهد.
زمانی که هر یک از ساکنان جزیره، فرآیند تایید خود را کامل کردند و کاغذ را امضا نمودند، Sawyer کاغذ نهایی را دارد و آن را در میان همه پخش می کند. در آخر روز دوم همه یک کپی دارند و با خوشحالی و رضایت به تختخواب می روند.
روز سوم بر عهده ماست. این سیستم به خوبی کار می کند و همه هیجان زده هستند تا کوین های خود را خرج کنند. Hugo می خواهد مقداری هیزم از Sawyer به قیمت ده کوین بخرد. Sawyer می خواهد مقداری قرص از Jack به قیمت 25 کوین بخرد و Jack نیز گرسنه است و می خواهد یک گوجه فرنگی را از Hugo با قیمت دو کوین خریداری نماید. آنها هر کدام در یک تکه کاغذ این انتقال ها را مفصل شرح می دهند:
زمانی که غروب می رسد، فرضا فردی که باید موجودی های امروز را منتشر کند، Kate می باشد. برای اینکه مطمئن شویم که Kate همه این انتقال ها را در کاغذ پیشنهادی خود ثبت کرده است، همه باید به او یک کپی از درخواست انتقال خود را بدهند. منطقی است که به همه کپی داده شود زیرا فردی که می خواهد انتقال را انجام دهد، لازم نیست که حتما به یاد داشته باشد که امروز نوبت کیست که انتشار را انجام دهد.
فرض کنید Jack در رساندن یک کپی از درخواست انتقال خود به Kate درنگ می کند و بعد از نوشته شدن گزارش آن روز، درخواست را به Kate می رساند:
Jack از اینکه این کاغذ مشمول انتقال او باشد، ناامید شده است. این یعنی Hugo پرداختی Jack را برای گوجه دریافت نخواهد کرد و گوجه را برای شام به Jack نمی دهد. Jack قرار است آن شب را گرسنه به تختخواب برود. او با عصبانیت بیرون می رود تا چیزی برای خوردن پیدا کند و گزارش آن روز Kate را امضا نمی کند. خوشبختانه Kate قادر است که امضا های کافی را از بقیه اعضای گروه دریافت کند:
Kate توانست سه امضا برای گزارش خود بدست بیاورد که صحت موجودی ها و انتقال را تایید می کنند. در اینجا ما اکثریت را داریم و بنابراین این کاغذ نهایی تلقی می شود.
روز چهارم است و کسی نمی داند Jack کجاست. او شب قبل به ماهی گیری رفته و در طوفان گیر کرده است و به اردوگاه برنگشته است. این ممکن است مشکل آفرین باشد زیرا امروز نوبت Jack است که به روز رسانی موجودی ها را انجام دهد.
Kate می خواهد که امروز چند تا انتقال انجام دهد که او آنها را بر روی یک تکه کاغذ می نویسد و به هر کدام یک کپی می دهد:
غروب فرا می رسد و Jack هنوز برنگشته است. گروه قبلا توافق کرده بود که امروز نوبت او است که به روز رسانی را انجام دهد اما او برنگشته و به روز رسانی امروز انجام نمی شود.
روز پنجم است و Hugo مسئول به روز رسانی است. چند روزی است که باران باریده است و Hugo مکان گرم تری برای خواب می خواهد. او از Sawyer می خواهد که یک کلبه چوبی کوچک برای او بسازد. Sawyer برای این کار ۲۰۰ کوین می خواهد. این کمی مشکل است زیرا Hugo تنها ۹۸ کوین دارد. البته Hugo ایده دیوانه کننده ای دارد. او امروز مسئول به روز رسانی است و می خواهد این انتقال را به Sawyer ثبت کند.
امروز انتقال دیگری موجود نبوده است. Hugo انتقال های دیروز Kate را دارد و همچنین انتقال روز قبل Jack را که نهایی نشد هم دارد. او همه آنها را با این انتقال آشفته جدید جمع می کند:
Hugo این به روز رسانی را امضا می کند، اگرچه این انتقال او در واقع منطقی نیست. برای نهایی شدن این به روز رسانی او باید دو امضای دیگر نیز پیدا کند. وقتی که او به Sawyer و Kate می رسد، آنها از روی موجودی نهایی قبلی متوجه می شوند که Hugo ۹۲ کوین داشته است. چگونه او می تواند ۲۰۰ کوین را به Sawyer بفرستد؟ آنها از امضای گزارش خودداری می کنند تا او خطای موجود را اصلاح کند. او به اکراه موافقت می کند و یک به روز رسانی صحیح را ارائه می دهد. این به روز رسانی صحیح در نهایت امضا می شود:
این به روز رسانی نهایی شده است زیرا ۳ امضا دارد.
صبح روز ششم است. Jack سرانجام به اردوگاه برمی گردد. او چند روز سخت را در طوفان گذرانده است. او در بحث های دو روز گذشته شرکت نداشته است و از انتقال ها خبر ندارد و موجودی به روز رسانی شده را در اختیار ندارد. او مطمئن نیست که چه تعداد کوین دارد. او از اولین نفری که می بیند تقاضای آخرین به روز رسانی را می کند. به روز رسانی روز پنجم به او داده می شود و به روز رسانی انجام شده توسط Kate در روز سوم هم به او داده می شود.
همگام سازی با بقیه گروه برای Jack آسان است. او می تواند ببیند که این به روز رسانی موجودی ها حداقل سه بار امضا شده اند و نسبتا مطمئن می شود که اشکالی در آنها نیست. او خودش نیز بر اساس این به روز رسانی ها و آخرین به روز رسانی خود از روز دوم محاسباتی را انجام می دهد. این باعث می شود که Jack بتواند در انتقال های امروز شرکت کند و مانند این باشد که چیزی را از دست نداده است.
این سیستم به نظر می رسد که به خوبی کار کند. درست است که در اینجا مقداری ساده سازی انجام شده است اما نیاز های ساکنان جزیره را مرتفع می کند. ما نمی توانیم بدون وایت پیپر یک بلاک چین عملکردی داشته باشیم. اعضای این گروه دستاورد های خود را با انتشار وایت پیپر زیر جشن می گیرند:
چرا چنین چیزی را یک بلاک چین تلقی می کنیم؟
در اینجا هر تکه کاغذی که روزانه منتشر می شود در واقع نماینده یک بلاک است. هر بلاک شماره گذاری شده و به بلاک قبلی اشاره می کند و زنجیره ای از بلاک ها را شکل می دهد. به منظور تایید وضعیت فعلی موجودی ها، هر مشاهده گری باید از ابتدای زنجیره شروع کند و هر یک از بلاک ها را به ترتیب یکی پس از دیگری تایید کند. این موجودی ها به تدریج ساخته شده اند.
آیا این یک پیاده سازی ایده آل بلاک چین است؟ احتمالا نه و می تواند به شیوه های زیادی بهبود پیدا کند. به عنوان مثال، این بلاک چین تنها چهار نفر را پشتیبانی می کند. اگر فرد دیگری نیز به این جزیره راه پیدا کند برسر این بلاک چین چه اتفاقی می افتد؟ آیا این پروتکل باز هم متناسب آنها خواهد بود؟ این پروتکل در حال حاضر نیاز به اجازه دارد. چگونه می توان نیاز به اجازه را از آن حذف کرد؟ اگر آن را با گواه اثبات کار یا گواه اثبات سهم تغییر دهیم، چه اتفاقی می افتد؟
با اکادمی هلاکویی همراه شوید تا پاسخ تمامی سوالات خود را در زمینه بلاک چین بیابید.
دیدگاهتان را بنویسید