ساخت بلاکچین با پایتون | آموزش ساخت بلاکچین با زبان برنامه نویسی پایتون

ساخت بلاکچین با پایتون
بازدید 115
۱۲

ساخت بلاکچین با پایتون، قبل از اینکه نحوه ساخت بلاکچین در پایتون را توضیح دهیم، بیاید نگاهی به عقب بیاندازیم. در سال ۲۰۰۸، یک نویسنده با نام مستعار ساتوشی ناکاموتو Satoshi Nakamoto وایت پیپری را منتشر کرد که نسخه کاملا نظیر به نظیر پول دیجیتالی را توصیف می کند. این سیستم دیجیتالی که منحصر به فرد است، برای اطمینان از امنیت هر معامله مجبور نیستند به تاییدهای شخص ثالث اعتماد کنند. در عوض، هر معامله دارای برچسب زمان است، سپس به زنجیره ای از اثبات کار مبتنی بر هش تبدیل می شود.

بنابراین هش کردن و اثبات کار چیست؟ ما این مفاهیم را در این مقاله معرفی خواهیم کرد و نشان می دهیم که چگونه آنها زمینه را برای یک سیستم پول دیجیتالی رمزنگاری شده ایجاد می کنند. اما نیاز است تا در ابتدا با زبان برنامه نویسی پایتون Python و مفهوم بلاکچین آشنا شوید. در این مقاله می خواهیم بررسی نماییم که چگونه بلاکچینی را با استفاده از زبان برنامه نویسی پایتون پیاده سازی کنیم.

معرفی زبان برنامه نویسی پایتون Python

معرفی زبان برنامه نویسی پایتون Python

معرفی زبان برنامه نویسی پایتون Python

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

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

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


ویژگی های زبان برنامه نویسی پایتون Python

ویژگی های زبان برنامه نویسی پایتون Python

ویژگی های زبان برنامه نویسی پایتون Python

در این قسمت از مقاله چند نمونه از مزیت های بزرگ زبان برنامه نویسی پایتون Python آورده شده است:

۱.محبوبیت و دسترسی

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

۲.سینتکس ساده

زبان برنامه نویسی پایتون یک سینتکس قابل یادگیری است و از کلمات انگلیسی استفاده می کند.

۳.خوانایی

خطوط کدی که در پایتون نوشته شده اند نیز به راحتی قابل خواندن هستند. به طور کلی در پایتون از یک قالب کاملا واضح برای تکمیل دستور استفاده می کند.

۴.مقیاس پذیری

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


بلاکچین Blockchain چیست؟

بلاکچین Blockchain چیست؟

بلاکچین Blockchain چیست؟

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

  1. غیر قابل تغییر
  2. غیر قابل هک
  3. ماندگار
  4. توزیع شده

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

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

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

برای مطالعه ی بیشتر در مورد بلاکچین با کلیک روی این نوشته به مقاله ی بلاکچین مراجعه کنید


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

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

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

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

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


آموزش ساخت بلاکچین با پایتون Python

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

ما در این مقاله از Python 3.6+ برای آموزش استفاده کرده ایم. اگر تصمیم دارید از نسخه های دیگر پایتون استفاده کنید، در ابتدا باید تحقیق کنید. برای این آموزش در ابتدا این نسخه از پایتون را نصب کنید.

نصب پایتون با استفاده از pip

شما باید پایتون را با استفاده از pip  نصب کنید. همچنین باید کتابخانه Requests و Flask را نصب کنید. برای انجام این کار، به سادگی دستور زیر را اجرا کنید.

نصب پایتون با استفاده از pip

نصب پایتون با استفاده از pip

اگر از محیط ویندوز استفاده می کنید، می توانید مستقیما به python.org بروید تا آخرین نسخه Python را بارگیری کنید. در این آموزش از Python 3.8.1 استفاده کرده ایم.

برای IDE، استفاده از PyCharm را ترجیح می دهیم. از نسخه Python Community برای آموزش استفاده می کنیم. شما در استفاده از هر IDE دلخواه آزاد هستید. یکی دیگر از گزینه های عالی Visual Studio Code یک محیط توسعه یکپارچه و open source رایگان است.

آخرین ابزاری که به آن ممکن است نیاز داشته باشید، Postman که یک HTTP client است. همچنین می توانید از CURL استفاده کنید. ما همچنین توصیه می کنیم برای ایجاد یک محیط کاملا متفاوت برای توسعه خود، یک محیط مجازی نصب کنید. برای تنظیم صحیح آن می توانید این راهنما را دنبال کنید.

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


۱.ایجاد بلاکچین

اولین قدم ساختن یک راه حل کاربردی برای بلاکچین است. در ابتدا، ما باید یک کلاس Blockchain ایجاد کنیم.

1.ایجاد بلاکچین

1.ایجاد بلاکچین

در ادامه باید یک تابع new_block ایجاد کنیم که برای ایجاد بلاک های جدید استفاده می شود و سپس آنها را به زنجیره موجود اضافه کنیم. کد مربوط به تابع new_block به شرح زیر است:

تابع new_block ایجاد کنید

تابع new_block ایجاد کنید

روش new_transcaction تراکنش جدیدی ایجاد کرده و سپس تراکنش را به لیست تراکنش موجود اضافه می کند.

تراکنش جدیدی ایجاد کنید سپس تراکنش را به لیست تراکنش موجود اضافه کنید

تراکنش جدیدی ایجاد کنید سپس تراکنش را به لیست تراکنش موجود اضافه کنید

ما همچنین یک تابع هش داریم که هش را برای بلاک ایجاد می کند.

هش را برای بلاک ایجاد کنید

هش را برای بلاک ایجاد کنید

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

همچنین می توانیم در اینجا سه تابع دیگر ایجاد کنیم.

.()register_node: برای ثبت نود جدید و افزودن آن به شبکه

.()valid_proof: اطمینان حاصل خواهد کرد که بلاک ارسال شده به زنجیره مشکل را حل می کند.

.()valid_chain: این بررسی می کند که آیا بلاک های بعدی در زنجیره معتبر هستند یا خیر.

طرح اولیه blockchain.py به شرح زیر است.

طرح اولیه blockchain.py

طرح اولیه blockchain.py

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

ساختار یک بلاک

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

  1. شاخص index
  2. برچسب زمان timestamp
  3. لیست تراکنش ها
  4. هش بلاک قبلی

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


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

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

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

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

همانطور که می بینید، current_transactions اضافه شد که شامل سه متغیر به نام های sender، recipient و amount می باشد.

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


ایجاد بلاک های جدید

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

ایجاد بلاک های جدید

ایجاد بلاک های جدید

این خط باید به کلاس بلاکچین شما اضافه شود.

برای روش ()new_block باید دو متغیر را به عنوان پارامتر ارسال کنید. این شامل proof و previous_hash است.

حال، بیایید نگاهی به روش ()new_block در زیر بیاندازیم.

روش ()new_block

روش ()new_block

لیست تراکنش فعلی را خالی تنظیم کنید.

لیست تراکنش فعلی را خالی تنظیم کنید

لیست تراکنش فعلی را خالی تنظیم کنید

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

همچنین بیایید روش last_block را در زیر تعریف کنیم.

@property

def last_block(self):

فراخوانی می کند و آخرین بلاک زنجیره را بر می گرداند.

Return self.chain[-1]

همچنین کد مربوط به روش ()hash به شرح زیر است:

کد مربوط به روش ()hash

کد مربوط به روش ()hash

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

بررسی blockchain.py

بررسی blockchain.py


اجرای اثبات کار Proof of Work

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

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

بیایید متد یا روش ()proof_of_work را تعریف کنیم. این روش بخشی از کلاس بلاکچین خواهد بود.

روش ()proof_of_work

روش ()proof_of_work

اولین متد proof_of_work ساده است. آن به سادگی مقدار ۰ را تنظیم می کند و سپس حلقه while را اجرا می کند تا روش valid_proof اجرا شود. اگر False است، ۱ را به proof اضافه کنید.

با افزودن صفرهای بیشتر می توانید سختی هش را افزایش دهید. این موضوع ما را به انتهای Blockchain.py هدایت می کند. کد ما به صورت زیر است:

با افزودن صفرهای بیشتر می توانید سختی هش را افزایش دهید

با افزودن صفرهای بیشتر می توانید سختی هش را افزایش دهید

با افزودن صفرهای بیشتر می توانید سختی هش را افزایش دهید

با افزودن صفرهای بیشتر می توانید سختی هش را افزایش دهید

Return self.last_block[‘index’]+1

@staticmethod

Def hash(block):

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

کد زیر یک هش بلاک SHA-256 ایجاد می کند.

()block_string=json.dumps(block‚ sort_keys=True).encode

()return hashlib.sha256(block_string).hexdigest

@property

Def last_block(self):

آخرین بلاک زنجیره را فراخوانی می کند و برمی گرداند.

return self.chain[-1]


2.یکپارچه سازی API

در اینجا ما یک بلاکچین ایجاد می کنیم که برای استفاده موثر از آن، باید یک API ایجاد کنیم. برای انجام این کار ما قصد داریم از Flask استفاده کنیم.

Flask یک framework کوچک است به این معنی که شما می توانید کتابخانه های مورد نیاز خود را اضافه کنید. همچنین شما را قادر می سازد تا به راحتی نقطه پایانی یا endpoint تابع پایتون را ایجاد کنید.

برای ایجاد API، ابتدا باید اطمینان حاصل کنیم که بلاکچین ما می تواند درخواست ها را از طریق HTTP بپذیرد. برای انجام این کار، ما باید متدهای بیشتری ایجاد کنیم.

اکنون، ما blockchain.py را اصلاح خواهیم کرد.

اصلاح blockchain.py

اصلاح blockchain.py

در اینجا ما یک نود تصادفی ایجاد می کنیم. پس از اتمام، کلاس Blockchain خود را از ابتدا شروع می کنیم. پس از پایان کار باید سه endpoint مانند زیر ایجاد کنیم.

  •  mine endpoint/
  • /transaction/new endpoint
  •  chain endpoint/

سرانجام ما سرور را روی پورت ۵۰۰۰ اجرا می کنیم.

این برنامه اکنون تقریبا ایجاد شده است. تمام کاری که ما باید انجام دهیم ایجاد متد کلاس تراکنش است.

ایجاد متد کلاس تراکنش

ایجاد متد کلاس تراکنش

Endpoint استخراج

آخرین endpoint که می خواهیم ایجاد کنیم، endpoint استخراج است. برای انجام این کار، باید اطمینان حاصل کنیم که سه کار زیر را انجام می دهد.

.محاسبه اثبات کار

.بلاکچین جدید را بسازید و سپس ان را به زنجیره اضافه کنید.

.به ماینرها پاداش دهید.

به ماینرها پاداش دهید

به ماینرها پاداش دهید


3.برقراری ارتباط با بلاکچین

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

کد زیر را روی Python Console اجرا کنید.

کد را روی Python Console اجرا کنید

کد را روی Python Console اجرا کنید


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

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

از اینکه تا پایان مقاله “ساخت بلاکچین با پایتون” همراه ما بودید از شما سپاس گزاریم.


بیشتر بخوانید:

اشتراک گذاری

نوشته شده توسط:

تیم محتوا

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

نظرات کاربران

0 0 رای ها
امتیازدهی به مقاله
اشتراک در
اطلاع از
12 نظرات خود را ثبت نمایید
تازه‌ترین
قدیمی‌ترین بیشترین رأی
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
Mojtaba
2 سال قبل

میخوام بدونم یک ایده رو چطوری با بلاکچین اجرایی میکنن؟

نسیم
3 سال قبل

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

علی پارسی
پاسخ به  نسیم
2 سال قبل

سازمانهایی که بدنبال تولید و گسترش نرم افزارهای غیرمتمرکز در حوزه های مختلف هستند

جعفر
3 سال قبل

سازمانها و کمپانی هایی که الان از بلاکچین استفاده می کنند چه نام دارند؟

بوران
3 سال قبل

بیت کوین چه تفاوتی با بلاکچین دارد؟

علی پارسی
پاسخ به  بوران
2 سال قبل

بیت کوین نرم افزار یا ساختاری (رمز ارزی) است که از بستر بلاکچین برای تولید و گسترش آن استفاده شده است

رامین
3 سال قبل

تفاوت سرورهای سنتی با بلاکچین چیست؟

علی پارسی
پاسخ به  رامین
2 سال قبل

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

رضا
3 سال قبل

چند نوع بلاکچین داریم؟

علی پارسی
پاسخ به  رضا
2 سال قبل

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

یاسر
3 سال قبل

بلاکچین چه کاربردهایی را دارد؟

علی پارسی
پاسخ به  یاسر
2 سال قبل

هر بدنبال هر نوع نرم افزار #غیرمتمرکز باشید باید از بستر شبکه بلاکچین استفاده شود: از قراردادهای هوشمند، رمزارز، دی اپ ها و …