پیاده سازی بلاک چین در کمتر از ۲۰۰ خط کد

بلاک چین
Facebooktwittergoogle_pluspinterestlinkedinmail
Print Friendly, PDF & Email

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

این خود باعث شده تا درک مفهوم بلاک چین پیچیده تر بنظر برسد درصورتیکه اینگونه نیست. در این نوشته به معرفی یک بلاک چین ساده که در کمتر از 200 خط نوشته شده است می پردازم.


ساختار بلاک

اولین مرحله منطقی تصمیم گیری درباره ساختار و بدنه بلاک می باشد. برای اینکه همه چیز را در ساده ترین حالت خود نگه داریم، تنها موارد ضروری را درون بلاک خود درنظر می گیریم از جمله: index, timestamp, data, hash, previews_hash

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

برای حفظ یکپارچگی بلاک ها باید مقدار hash بلاک قبلی درون بلاک فعلی وجود داشته باشد.

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

هش بلاک

برای اینکه بتوانیم یکپارچگی داده ها را حفظ کنیم بایستی بلاک را هش کنیم. در این نمونه از SHA-256 استفاده می کنیم. دقت داشته باشید که این هش هیچ ارتباطی با mining ندارد چراکه در این نمونه کد ProofOfWork وجود ندارد.

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

تولید یک بلاک

برای تولید یک بلاک باید هش بلاک قبلی را بدانیم و سپس باقیمانده هش مورد نیاز را ایجاد کنیم(=index, hash, data, timestamp). داده درون بلاک چیزی است که توسط کاربر ارائه می شود.

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

ذخیره سازی بلاک ها

در اینجا از یک آرایه درون حافظه برای ذخیره سازی بلاک چین استفاده کرده ایم. اولین بلاک از بلاک چین را genesis-block می نامند که در این مثال hard code شده است.

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

اعتبارسنجی یکپارچگی بلاک ها

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

انتخاب طولانی ترین زنجیره

همیشه فقط و فقط بایستی یک مجموعه از بلاک ها درون زنجیره وجود داشته باشد. این خاصیت اصلی بلاک چین می باشد. در حالتی که تداحلی بوجود امده باشد(بعنوان مثال دو گره بلاک شماره 72 را تولید می کنند)، آن زنجیره ای را انتخاب می کنیم که طولانی ترین تعداد بلاک ها را داشته باشد.

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

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

برقراری ارتباط با دیگر گره ها

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

  • زمانیکه یک گره بلاکی جدید ایجاد می کند، به همه گره های درون شبکه اطلاع رسانی می کند.
  • زمانیکه یک گره به یک peer جدید متصل می شود، آخرین بلاک را درخواست می کند.
  • زمانیکه یک گره با بلاکی مواجه می شود که ایندکسی بزرگتر از ایندکس فعلی که از آن مطلع است دارد، یا آن بلاک را به زنجیره خود اضافه می کند یا اینکه تمام بلاک چین را درخواست می کند.

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

کنترل گره ها

کاربر بایستی بتواند به نحوی بر روی گره کنترل داشته باشد. برای این کار یک سرور HTTP راه اندازی میکنیم.

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

همانطور که در کد بالا دیدید، کاربر می تواند عملیات های زیر را با گره انجام دهد:

  • لیست کردن همه بلاک ها
  • ایجاد بلاک جدید با محتوای ارائه شده توسط خود
  • لیست کردن یا اضافه کردن Peer ها

معماری

دقت داشته باشید که این گره دقیقا دو وب سرور را مشخص می کند. یکی برای کاربر که بتواند گره را کنترل کند(سرورHTTP) و دیگری برای مدیرت ارتباطات و تعاملات بین گره ها(Websocket HTTP Server).

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

برای کسب اطلاعات بیشتر در زمینه فنی این نمونه کد می تواند از صفحه این کد در گیت هاب بازدید کنید.

۱ دیدگاه

  • الي فروردین ۸, ۱۳۹۷ at ۱:۵۹ ق٫ظ پاسخ

    با سلام ، ممنون بابت اطلاعات خوب و مفیدتون
    خواستم بپرسم اگر به صورت دستی ، یک بلاک رو هش کنیم، با چه برنامه ای میتونیم در بلاک چین اجراش کنیم؟؟؟

ارسال دیدگاه

اجرا شده توسط: همیار وردپرس