یادگیری ساخت بلاک چین؛ چگونه بلاک چین بسازیم؟

سریع‌ترین روش برای یادگیری نحوه کار بلاک چین، ساخت بلاک چین (Blockchain Building) است. اگر شیفته ظهور ارزهای دیجیتال هستید باید نحوه کار بلاک چین که فناوری موجود در ارزهای دیجیتال است را یاد بگیرید.

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

باید یادگیری را با انجام دادن فرا بگیرید. در ساخت بلاک چین با سطوح کدنویسی مواجه می‌شوید. با خواندن این مقاله، نحوه کار بلاک چین را یاد می‌گیرید و می‌توانید بلاک چینی با عملکرد مناسب ایجاد کنید.

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

اگر نمی‌دانید هش چیست برای شما توضیح خواهیم داد.

این راهنما مخصوص چه کسانی است؟ باید به خواندن و نوشتن اصول زبان برنامه نویسی Python آشنا باشید. هم چنین باید نحوه کار درخواست های HTTP را بدانید؛ زیرا زیرا با HTTP با بلاک چین صحبت خواهیم کرد.

به چه چیزی نیاز داریم؟ اطمینان حاصل کنید که نسخه بالاتری از پایتون ۳.۶ را نصب کرده‌اید. هم چنین باید Flask نسخه ۰.۱۲.۲ و کتابخانه درخواست‌ها نسخه ۲.۱۸.۴ را نیز نصب کنید.

به علاوه به یکی از کلاینت‌های HTTP نظیر Postman یا cURL نیز نیاز دارید.

مرحله اول: ساخت بلاک چین

ویرایشگر متن مورد نظر خود یا IDE را اجرا کنید. ویرایشگر متن PyCharm گزینه خوبی است. فایل جدیدی به اسم blockchain.py ایجاد کنید.

معرفی بلاک چین

ما بلاک چینی ایجاد خواهیم کرد که سازنده آن، فهرست خالی اولیه‌ای برای ذخیره بلاک چین ایجاد می‌کند، و بلاک چین دیگری برای ذخیره تراکنش‌ها ایجاد می‌کنیم. راهنمای کلاس بلاک چین ما بدین گونه است:

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

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

بلاک به چه شکل است؟

هر بلاک دارای یک شاخص یا ایندکس، ثبت زمانی (بر اساس زمان یونیکس)، فهرستی از تراکنش‌ها، گواه و هش بلاک قبلی است.

در ادامه مثالی از یک بلاک را ذکر می‌کنیم:

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

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

آیا این موضوع را متوجه شدید؟ اگر متوجه نشدید کمی زمان بگذارید تا کامل آن را متوجه شوید؛ زیرا هسته اصلی ایده بلاک چین است.

افزودن تراکنش‌ها به بلاک

ما به روشی برای افزودن تراکنش‌ها به بلاک نیاز داریم. روش مورد نظر ما  ()new_transaction است که کاملا سرراست و بدون پیچیدگی است:

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

پس از آن که ()new_transaction تراکنش جدیدی به فهرست افزود، شاخص بلاکی که تراکنش به آن افزوده خواهد شد را بر می‌گرداند. این نکته بعدا و هنگامی که کاربر تراکنش را ثبت می‌کند، مفید خواهد بود.

ایجاد بلاک‌های جدید در ساخت بلاک چین

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

علاوه بر ایجاد بلاک جنسیس، باید روش‌هایی برای ()new_block و ()new_transaction و ()hash را نیز به آن بیافزاییم:

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

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

درک گواه اثبات کار

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

برای درک بهتر این موضوع به بیان یک مثال میپردازیم.

در نظر بگیرید که عدد یکان هش حاصل ضرب x در y صفر باشد. بنابراین داریم

Hash(x*y)=ac23dc…0

برای این مثال، x را برابر با ۵ در نظر میگیریم و آن را در پایتون اجرا می‌کنیم:

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

جواب y نیز ۲۱ می‌شود؛ زیرا هش تولید شده باید به عدد صفر ختم شود:

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

در بیت کوین، به الگوریتم گواه اثبات کار هش‌کش می‌گویند و فرق آنچنانی با مثال فوق ندارد؛ هش‌کش الگوریتمی است که ماینرها برای حل آن و به منظور ایجاد بلاک جدید رقابت می‌کنند.

به طور کل، سختی با تعداد کاراکترها (اعداد، حروف و نشانه ها) جستجو شده در یک رشته از زنجیره تعیین می‌شود. سپس ماینرها برای جوابی که ارائه می‌دهند با دریافت کوین، پاداش دریافت می‌کنند.

شبکه به راحتی می‌تواند راهکار و جواب آنها را تایید کند.

پیاده سازی گواه اثبات کار مقدماتی

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

عدد p را طوری پیدا کنید که هنگامی که با جواب بلاک قبلی هش می‌شود، ۴ رقم آخر آن صفر باشد.

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

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

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

مرحله دوم: بلاک چین به عنوان API

ما از چارچوب فلسک پایتون استفاده خواهیم کرد. این چارچوب یک میکروفریم‌ورک است و تعیین اندپوینت‌ها برای توابع پایتون را آسان می‌کند. این امر به ما کمک می‌کند تا با بلاک چین با استفاده از درخواست‌های HTTP صحبت کنیم.

سه روش را ایجاد خواهیم کرد:

transaction/new/: برای ایجاد تراکنش جدید در بلاک

mine/: برای دستور استخراج بلاک جدید به سرور

chain/: برای برگشت بلاک چین کامل

ایجاد و تنظیم فلسک (Flask)

سرور، یک نود در شبکه بلاک چین ایجاد خواهد کرد. در ابتدا چند کد بویلرپلیت ایجاد می‌کنیم:

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

توضیح مختصری از چیزهایی که اضافه کرده‌ایم:

خط ۱۵: شروع به کار نود یا گره

خط ۱۸: ایجاد اسم تصادفی برای نود

خط ۲۱: شروع به کار بلاک چین

خط ۲۴ الی ۲۶: ایجاد اندپوینت mine/ که درخواست دریافت می‌کند

خط ۲۸ الی ۳۰: ایجاد اندپوینت transaction/new/ که درخواست را پست می‌کند؛ زیرا داده‌ها را به آن ارسال خواهیم کرد.

خط ۳۲ الی ۳۸: ایجاد اندپوینت chain/ که بلاک چین کامل را بر می‌گرداند

خط ۴۰ الی ۴۱: سرور را در پورت ۵۰۰۰ اجرا می‌کند

اندپوینت تراکنش (Transactions Endpoint) در ساخت بلاک چین

درخواست تراکنش به این شکل است. نحوه ارسال‌های کاربر به سرور این گونه است:

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

از آنجایی که روش خود برای افزودن تراکنش به بلاک را داریم، باقی موارد آسان است. تابع افزودن تراکنش به این شکل است:

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

اندپوینت ماینینگ در ساخت بلاک چین

اندپوینت ماینینگ بسیار ساده است و باید شامل سه مورد باشد:

  • محاسبه گواه اثبات کار
  • جایزه دادن به ماینر با افزودن تراکنشی که یک کوین اهدا می‌کند
  • ایجاد بلاک جدید با افزودن آن به زنجیره

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

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

مرحله سوم: تعامل با بلاک چین

می‌توانید با روش‌های ساده و قدیمی cURL یا Postman با API تعامل ایجاد کنید.

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

به کار انداختن سرور:

با ارائه‌ درخواست http://localhost:5000/mine، ماینینگ بلاک را امتحان می‌کنیم:

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

با ارائه درخواست POST به http://localhost:5000/transaction/new با بدنه شامل ساختار تراکنش، تراکنش جدیدی ایجاد می‌کنیم:

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

اگر از Postman استفاده نمی‌کنید، می‌توانید معادل این درخواست‌ها را با استفاده از cURL انجام دهید:

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

ما سرور خود را ریستارت و دو بلاک استخراج کردیم. برای بررسی زنجیره کامل درخواست http://localhost:5000/chain را اجرا می‌کنیم.

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

مرحله چهارم: اجماع

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

اگر بلاک چین‌ها متمرکز باشند، چگونه مطمئن شویم که بیانگر زنجیره یکسانی هستند؟ به این موضوع، مشکل اجماع می‌گوییم و اگر در شبکه خود بیش از یک نود می‌خواهیم، باید الگوریتم اجماع اجرا کنیم.

ثبت نودهای جدید در فرآیند ساخت بلاک چین

قبل از آن که بتوانیم الگوریتم اجماع پیاده سازی کنیم، به روشی نیاز داریم تا نودها در خصوص نودهای مجاور خود در شبکه باخبر شوند. هر نود داخل شبکه ما باید رجیستری یا ثبتی از سایر نودهای شبکه داشته باشد. بنابراین به اندپوینت‌های بیشتری نیاز داریم:

nodes/register/: این اندپوینت برای پذیرش فهرست نودهای جدید در قالب URL ها است.

nodes/resolve/: این اندپوینت برای پیاده سازی الگوریتم اجماع است که هر تناقضی را برطرف می‌کند تا اطمینان حاصل شود که نود مورد نظر، دارای زنجیره صحیح است.

ما باید سازنده بلاک چین خود را تغییر داده و اصلاح کنیم و روشی را برای ثبت نودها ارائه دهیم:

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

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

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

همانطور که اشاره شد، تناقض هنگامی به وجود می‌آید که یک نود نسبت به نود دیگر، زنجیره متفاوتی داشته باشد.

برای برطرف کردن این تناقض، قانونی وضع خواهیم کرد که بلندترین زنجیره معتبر، دارای مسئولیت و اعتبار باشد. به عبارت دیگر، بلندترین زنجیره شبکه، زنجیره موجود و دارای کارایی است. با استفاده از این الگوریتم، بین نودهای شبکه به اجماع دست می‌یابیم.

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

اولین روش ()valid_chain مسئول بررسی معتبر بودن زنجیره است و این امر را با بررسی هر بلاک و تایید هش و گواه انجام می‌دهد.

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

دو اندپوینت را در API خود ثبت می‌کنیم، یک اندپوینت برای افزودن نودهای مجاور و اندپوینت دیگر برای برطرف کردن تناقض‌ها:

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

در این مرحله اگر بخواهید، می‌توانید دستگاه دیگری تهیه و نود دیگری در شبکه ایجاد کنید و یا با استفاده از پورت متفاوت بر روی همان دستگاه، فرآیند دیگری شروع کنید. ما نود دیگری بر روی دستگاه خود و با پورت متفاوت آغاز کردیم و با نود فعلی خود، آن را ثبت کردیم. بنابراین دو نود داریم:

Http://localhost:5000

Http://localhost:5001

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

سپس چند بلاک جدید با نود ۲ استخراج کردیم تا اطمینان حاصل کنیم که زنجیره بزرگ‌تر بوده است. سپس درخواست nodes/resolve را بر روی نود ۱ اجرا می‌کنیم که زنجیره با الگوریتم اجماع جایگزین شده است:

ساخت بلاک چین تکنولوژی بلاک چین بلاک ارز دیجیتال پایتون

و تمام شد. با دوستان خود ساخت بلاک چین را آزمایش کنید!

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

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

اگر این مقاله را دوست داشتید یا پیشنهادی دارید در قسمت کامنت‌ها اعلام کنید. همچنین اگر متوجه اشتباهی در این مقاله شدید، با ما در میان بگذارید.


54321
امتیاز 5 از 11 رای

منبع hackernoon wikipedia
ممکن است شما دوست داشته باشید

ارسال نظر

جدید ترین قدیمی ترین محبوب ترین
mahdi

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

سلام؛
حتما تلاش خواهیم کرد تا مطالب رو بر اساس نیاز کاربران منتشر کنیم. ممنون از توجهتون

جعفریان

سلام وقت بخیر
می خواستم بدونم با بلاکچین میشه یکسری کد بارکدی بسازیم که بصورت نا محدود روی یک سری محصول حک یا لیبل بشه تا کسی نتونه جنس تقلبی وارد چرخه فروش کنه؟

ادمین سایت

سلام وقت بخیر، یکی از کاربردهای بلاکچین، استفاده کردن ازش در زنجیره تامین هستش و پروژه های زیادی دارن در این زمینه فعالیت میکنن، پیشنهاد میکنم مطالبی که در این زمینه داخل سایت قرار دادیم رو مطالعه کنین
فقط کافیه زنجیره تامین رو جستجو کنین و با پروژه های مرتبط آشنا بشین

سلیمان نمازی

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

ادمین سایت

با سلام
برای اطلاعات در این زمینه میتونید به پشتیبانی مجموعه میهن بلاکچین پیغام بدید
میهن بلاکچین :
مرجع آموزشی، تحلیلی و خبری در حوزه بلاکچین و ارزهای رمزنگاری شده

ارتباط با پشتیبانی :
@MBlockchain

سلیمان نمازی

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

ادمین سایت

سلام
با پشتیبانی تلگرام میهن بلاکچین ارتباط برقرار کنین

سلیمان نمازی

سلام. تلگرام @MBlockchain

کسی جواب نمیه!؟!
ما میخواهیم شبکه بلاک چین خودم را ایجاد کنم آیا برای این کار میشه ما را راهنمایی کنید؟
هزینه ساخت بلاکچین تقریبا چقدره؟

ادمین سایت

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