راه پرداخت
رسانه فناوری‌های مالی ایران

چگونه در یک جزیره دورافتاده فقط با یک کاغذ و خودکار بلاکچین ایجاد کنیم؟

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

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

ما کارمان را با پیاده‌سازی بلاکچین در جزیره آغاز می‌کنیم. در آینده نسخه‌های پیچیده‌تری از این بلاکچین را ایجاد خواهیم کرد و آن را به مفاهیمی چون اثبات کاری (Proof of Work) و اثبات سهم (Proof of Stake) گره می‌زنیم تا ویژگی‌های مثبت و مشکلات این تکنولوژی‌ها را بشناسیم. ولی فعلا سراغ بلاکچین ساده خودمان می‌رویم.

ما مشخصا بدنبال چه چیزی هستیم؟ در واقع این موضوع بسیار ساده است. همه تلاش ما ایجاد جدولی ساده از دادوستدهای افراد است. این جدول نشان می‌دهد که هریک از قهرمانان ما چقدر سکه برایش باقی مانده. نکته کار اینجاست که از آنجایی که نمی‌توانیم فقط یک نسخه کاغذ از جدول داشته باشیم (چراکه ممکن است جعل شود!)‌ به هر یک از چهار عضو گروه یک نسخه از این جدول را خواهیم داد. این همان غیرمتمرکز بودن (decentralized) است. طبیعتا امیدواریم که همه چهار کاغذ در هر زمانی اطلاعات ثابتی را نمایش دهند. این همان اجماع (consensus) است.

اولین کاغذ پیاده سازی بلاکچین در جزیره متروک!

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

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

صبح روز دوم کیت از هوگو گوجه فرنگی به قیمت ۲ سکه می‌خرد. کیت یک تکه کاغذ درمیاورد و این دادوستد را یادداشت می‌کند.

این اولی تراکنش کیت است. پس شماره #1 را روی آن ثبت می‌کند. همچنین این کاغذ را امضا می‌کند تا کس دیگری نتواند به اسم کیت تراکنشی انجام دهد.

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

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

در صورتیکه همه‌ی اعضا این کاغذ را امضا کنند، سایر می‌تواند صورت وضعیت روز دوم را منتشر کرده و یک کپی از آن را به هرکس بدهد. اینگونه همگی می‌توانند با آسودگی خیال به خواب بروند.

روز سوم از راه می‌رسد. سیستم به خوبی کار می‌کند و همگی هیجان خرج کردن سکه‌هایشان را دارند. هوگو از سایر مقداری چوب به مبلغ ۱۰ سکه می‌خرد. سایر به جک ۲۵ سکه می‌دهد و چند قرص از او می‌گیرد و جک که بسیار گشنه‌اش شده است از هوگو چند گوجه فرنگی به قیمت ۲ سکه می‌گیرد.

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

جک که کمی دیرتر رسیده است متوجه می‌شود کیت موجودی حساب امروز او را بدون لحاظ کردن تراکنش نوشته است:

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

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

کیت قصد دارد چند خرید امروز انجام دهد. تراکنش‌های خود را می‌نویسد و یک نسخه از آن را به همه می‌دهد:

شب فرارسیده است و خبری از جک نیست. پس حساب روز چهارم هیچ جا نوشته نمی‌شود.

امروز روز پنجم است و هوگو مسئولیت نوشتن و توزیع کاغذها را بر عهده دارد. چند روزی است که باران شدیدی می‌بارد و هوگو نیازمند خانه گرم‌تری است. او از سایر درخواست می‌کند که خانه چوبی کوچکی برایش بسازد و سایر برای این‌کار ۲۰۰ سکه از او می‌خواهد. ولی این مشکل است چراکه هوگو فقط ۹۸ سکه دارد. ایده خبیثانه‌ای به ذهنش می‌زند: مسئولیت امروز با اوست و او می‌تواند یادداشتی مبنی بر انتقال ۲۰۰ سکه به سایر را ثبت کند.

امروز هیچ تراکنش دیگری وجود نداشته است. او دو تراکنش باقیمانده کیت از دیروز و تراکنش جک از پریروز را بهمراه تراکنش خود به کاغذ روزانه اضافه می‌کند:

پیاده سازی بلاکچین

ولی کیت و سایر به سرعت متوجه این اشتباه هوگو می‌شوند چراکه او در برگه روز پیش فقط ۹۸ سکه داشته و چطور ممکن است ۲۰۰ سکه به سایر منتقل کند؟ پس از او می‌خواهند تا برگه را تصحیح کند.

پیاده سازی بلاکچین

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


 

به نظر می‌رسد که این سیستم به خوبی عمل می‌کند. هرچند پیاده سازی بلاکچین ما اندکی ساده است ولی برای ساکنان این جزیره باندازه کافی خوب است و درست عمل می‌کند. اهالی جزیره مقاله علمی سیستم ابداعی خود را نیز منتشر می‌کنند که می‌توانید از اینجا دانلود کنید.

ولی چرا به این یک بلاکچین می‌گوییم؟

هر کاغذی که در انتهای روز منتشر می‌شود نشان‌دهنده‌ی یک بلاک (‌Block) است. هر بلاک به شیوه‌ای شماره‌گذاری شده است که نشان‌دهنده بلاک قبلی است که این تشکیل زنجیره‌ای از بلاک‌ها (بلاکچین) را می‌دهد. برای اینکه وضعیت فعلی موجودی هر کس تایید شود بیننده‌ی بیرونی می‌بایست به اولین بلاکی که شکل گرفته است نگاه بیاندازد. به این بلاک، بلاک پیدایش(genesis block) می‌گویند.

آیا این شیوه، بهینه‌ترین شیوه پیاده سازی بلاکچین است؟

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

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

منبع: Hackernoon

ارسال یک پاسخ

آدرس ایمیل شما منتشر نخواهد شد.