ساخت بلاکچین با پایتون

faeze feizi

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

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

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

برای مشاهده تصاویر، باید ابتدا وارد سایت شوید، یا در سایت ثبت نام رایگان کنید.


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

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

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


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

برای مشاهده تصاویر، باید ابتدا وارد سایت شوید، یا در سایت ثبت نام رایگان کنید.


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

1.محبوبیت و دسترسی​

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

2.سینتکس ساده​

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

3.خوانایی​

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

4.مقیاس پذیری​

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


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

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

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

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

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

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

برای مشاهده تصاویر، باید ابتدا وارد سایت شوید، یا در سایت ثبت نام رایگان کنید.


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

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


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

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

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

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

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

برای مشاهده تصاویر، باید ابتدا وارد سایت شوید، یا در سایت ثبت نام رایگان کنید.


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

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

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

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


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

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

برای مشاهده تصاویر، باید ابتدا وارد سایت شوید، یا در سایت ثبت نام رایگان کنید.


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

برای مشاهده تصاویر، باید ابتدا وارد سایت شوید، یا در سایت ثبت نام رایگان کنید.


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

برای مشاهده تصاویر، باید ابتدا وارد سایت شوید، یا در سایت ثبت نام رایگان کنید.


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

برای مشاهده تصاویر، باید ابتدا وارد سایت شوید، یا در سایت ثبت نام رایگان کنید.


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

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

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

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

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

طرح اولیه Blockchain.Py به شرح زیر است.

برای مشاهده تصاویر، باید ابتدا وارد سایت شوید، یا در سایت ثبت نام رایگان کنید.


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

 

faeze feizi

عضو شناخته شده
عضو قدیمی

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

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

  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 را توضیح دهیم. ما یک لیست بلاک ایجاد می کنیم که شامل سه پارامتر مهم است. پس از تعریف آنها، همچنین کد را برای تنظیم مجدد لیست Current_transaction می نویسیم و سپس بلاک را به زنجیره اضافه می کنیم. متد New_block، وقتی فراخوانی می شود بلاک را بر می گرداند.

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

@Property

Def Last_block(Self):​

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

Return Self.Chain[-1]​

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

برای مشاهده تصاویر، باید ابتدا وارد سایت شوید، یا در سایت ثبت نام رایگان کنید.


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

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

برای مشاهده تصاویر، باید ابتدا وارد سایت شوید، یا در سایت ثبت نام رایگان کنید.


بررسی Blockchain.Py


 

faeze feizi

عضو شناخته شده
عضو قدیمی

اجرای اثبات کار Proof Of Work​

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

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

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

برای مشاهده تصاویر، باید ابتدا وارد سایت شوید، یا در سایت ثبت نام رایگان کنید.


روش ()Proof_of_work

اولین متد Proof_of_work ساده است. آن به سادگی مقدار 0 را تنظیم می کند و سپس حلقه While را اجرا می کند تا روش Valid_proof اجرا شود. اگر False است، 1 را به 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 خود را از ابتدا شروع می کنیم. پس از پایان کار باید سه Endpoint مانند زیر ایجاد کنیم.

  • Mine Endpoint/
  • /Transaction/New Endpoint
  • Chain Endpoint/
سرانجام ما سرور را روی پورت 5000 اجرا می کنیم.

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

برای مشاهده تصاویر، باید ابتدا وارد سایت شوید، یا در سایت ثبت نام رایگان کنید.


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

Endpoint استخراج

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

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

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

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

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

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

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

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

برای مشاهده تصاویر، باید ابتدا وارد سایت شوید، یا در سایت ثبت نام رایگان کنید.


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


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

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