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

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

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

در این قسمت از مقاله چند نمونه از مزیتهای بزرگ زبان برنامه نویسی پایتون Python آورده شده است:
1.محبوبیت و دسترسی
پایتون جامعه بزرگی برای پشتیبانی از آن دارد، که به حفظ قابلیت دسترسی آن در هر سطح مهارت کمک میکند. همچنین open source است.
2.سینتکس ساده
زبان برنامه نویسی پایتون یک سینتکس قابل یادگیری است و از کلمات انگلیسی استفاده میکند.
3.خوانایی
خطوط کدی که در پایتون نوشته شده اند نیز به راحتی قابل خواندن هستند. به طور کلی در پایتون از یک قالب کاملا واضح برای تکمیل دستور استفاده میکند.
4.مقیاس پذیری
بدون نگرانی در مورد بازنویسی یا تطبیق کد برای سایر سیستم عاملها، در هنگام افزایش مقیاس میتوانید برنامه ای را در پایتون شروع کنید.
بلاکچین Blockchain چیست؟

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

اگر میخواهید نحوه ساخت بلاکچین را بیاموزید، در جای درستی قرار گرفته اید. بیایید با هم یاد بگیریم که چگونه میتوانید بلاکچین در پایتون بسازید. مقالات زیادی در حوزه بلاکچین وجود دارد اما تعداد محدودی از آنها در ارتباط با ساخت بلاکچین صحبت میکنند. شما میتوانید یک بلاکچین ایجاد کنید تا مفهوم آن را درک کنید.
ایده اصلی پشت بلاکچین ماهیت غیرمتمرکز آن است. این واقعیت که همه اینها در داخل چگونه کار میکند شما را مجذوب خود میکند. ممکن است بلاکچین ساده به نظر برسد اما در داخل پروتکلها و الگوریتمهای زیادی وجود دارد که آن را عملی میکند. ما قصد داریم از پایتون برای ایجاد بلاکچین استفاده کنیم. این مقاله میتواند شما را در ساخت بلاکچین به وسیله زبان برنامه نویسی پایتون کمک نماید.
آموزش ساخت بلاکچین با پایتون Python
ما این آموزش را ارائه دادیم تا همه بتوانند آن را دنبال کنند. بنابراین، اگر نمیدانید چگونه میتوانید بلاکچین را از ابتدا بسازید، میتوانید از این مقاله استفاده نمایید.
ما در این مقاله از Python 3.6+ برای آموزش استفاده کرده ایم. اگر تصمیم دارید از نسخههای دیگر پایتون استفاده کنید، در ابتدا باید تحقیق کنید. برای این آموزش در ابتدا این نسخه از پایتون را نصب کنید.
نصب پایتون با استفاده از pip
شما باید پایتون را با استفاده از pip نصب کنید. همچنین باید کتابخانه Requests و Flask را نصب کنید. برای انجام این کار، به سادگی دستور زیر را اجرا کنید.

اگر از محیط ویندوز استفاده میکنید، میتوانید مستقیما به 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 ایجاد کنیم.

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

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

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

آخرین تابعی که ما میخواهیم ایجاد کنیم last_block است. برای فراخوانی آخرین بلاک در زنجیره استفاده میشود.
همچنین میتوانیم در اینجا سه تابع دیگر ایجاد کنیم.
.()register_node: برای ثبت نود جدید و افزودن آن به شبکه
.()valid_proof: اطمینان حاصل خواهد کرد که بلاک ارسال شده به زنجیره مشکل را حل میکند.
.()valid_chain: این بررسی میکند که آیا بلاکهای بعدی در زنجیره معتبر هستند یا خیر.
طرح اولیه blockchain.py به شرح زیر است.

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

همانطور که میبینید، current_transactions اضافه شد که شامل سه متغیر به نامهای sender، recipient و amount میباشد.
پس از افزودن، این روش شاخص بلاک یا index بلاک را به زنجیره ارسال میکند. این بلاک بعدی است که قرار است استخراج شود.
ایجاد بلاکهای جدید
قبل از شروع ایجاد بلاکهای جدید، باید بلاک genesis را ایجاد کنیم. برای انجام این کار، ما باید از یک کد ساده مانند زیر استفاده کنیم.

این خط باید به کلاس بلاکچین شما اضافه شود.
برای روش ()new_block باید دو متغیر را به عنوان پارامتر ارسال کنید. این شامل proof و previous_hash است.
حال، بیایید نگاهی به روش ()new_block در زیر بیاندازیم.

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

حال میخواهیم کد new_block را توضیح دهیم. ما یک لیست بلاک ایجاد میکنیم که شامل سه پارامتر مهم است. پس از تعریف آنها، همچنین کد را برای تنظیم مجدد لیست current_transaction مینویسیم و سپس بلاک را به زنجیره اضافه میکنیم. متد new_block، وقتی فراخوانی میشود بلاک را بر میگرداند.
همچنین بیایید روش last_block را در زیر تعریف کنیم.
@property
def last_block(self):
فراخوانی میکند و آخرین بلاک زنجیره را بر میگرداند.
Return self.chain[-1]
همچنین کد مربوط به روش ()hash به شرح زیر است:

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

اجرای اثبات کار Proof of Work
گام بعدی ما در ساخت blockchain.py اجرای اثبات کار است. اثبات کار چیست؟ این یک روش اجماعی است که برای افزودن بلاکهای جدید به زنجیره استفاده میشود. این یک چالش برای ماینر است، و هنگامی که ماینر مشکل را حل کرد، بلاک بعدی تایید میشود. ماینرها در عوض بر اساس پیچیدگی مساله پاداش میگیرند.
اثبات کار بیت کوین به Hashcash معروف است. این اطمینان حاصل میکند که اجماع شبکه بیت کوین همانطور که در نظر گرفته شده است کار میکند.
بیایید متد یا روش ()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 خود را از ابتدا شروع میکنیم. پس از پایان کار باید سه endpoint مانند زیر ایجاد کنیم.
- mine endpoint/
- /transaction/new endpoint
- chain endpoint/
سرانجام ما سرور را روی پورت 5000 اجرا میکنیم.
این برنامه اکنون تقریبا ایجاد شده است. تمام کاری که ما باید انجام دهیم ایجاد متد کلاس تراکنش است.

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

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

کلام پایانی درباره ی ساخت بلاکچین با پایتون
در ابتدای این مقاله ما به معرفی زبان برنامه نویسی پایتون و بلاکچین پرداختیم. این مقاله میتواند شما را در ساخت بلاکچین به وسیله زبان پایتون کمک نماید. امیدواریم توانسته باشیم آموزشهای لازم را در اختیار شما کاربران عزیز قرار دهیم.
از اینکه تا پایان مقاله “ساخت بلاکچین با پایتون” همراه ما بودید از شما سپاس گزاریم.
بیشتر بخوانید:
- نود بلاکچین چیست؟
- بلاکچین و صنعت هنر
- بلاکچین و اینترنت اشیا pdf
- نحوه نوشتن پیام روی بلاکچین
- درامد از بلاکچین چگونه است؟
- بلاکچین چیست؟ و چگونه کار میکند؟
- ساخت بلاکچین خصوصی چگونه است؟
- درآمد برنامه نویسی بلاکچین چقدر است؟
- بازار کار برنامه نویسی بلاکچین چگونه است؟
- فرق بلاکچین و ارز دیجیتال + مهمترین تفاوتها
- ساخت توکن روی بستر اتریوم ERC20 + رایگان
- کارآموز برنامه نویسی بلاکچین | کاراموز solidity
- زبانهای برنامه نویسی بلاک چین Block Chain
- آشنایی با بلاکچین نسل سوم | بررسی سه نسل از بلاکچین
- قرارداد هوشمند چیست؟ | همه چیز در باره smart contract
- انواع بلاک چین | معرفی انواع بلاکچین و آشنایی با کاربرد آنها
- حمله دیداس DDoS چیست؟ |آشنایی با حملات Dos و DDOS
- پل بلاکچین Blockchain Bridge | آشنایی با پلهای بلاکچین
- ساخت بلاکچین با پایتون | آموزش ساخت بلاکچین با زبان برنامه نویسی پایتون
- ارتباط بلاکچین و هوش مصنوعی چیست؟
- Dapp چیست؟
- راه حلهای لایه ۲ بلاکچین چیست؟
- دفتر کل توزیع شده DLT چیست؟
- مولتی چین Multichain چیست؟
تیم محتوا
نفیسه جمالی دانش آموخته مهندسی کامپیوتر و از نویسندگان حوزه بلاکچین و ارزهای دیجیتال است که بیش از 3 سال در زمینه تولید محتوای تخصصی این حوزه فعالیت دارد. تمرکز اصلی او بر مفاهیم فنی بلاکچین، راهکارهای مقیاس پذیری، امنیت شبکه، لایههای دوم، ساختار پروژههای رمزارزی و آموزشهای کاربردی است.او با بهرهگیری از دانش فنی و تجربه فعالیت در بازار رمزارزها، تلاش میکند مفاهیم پیچیده بلاکچین را به صورت دقیق، ساختاریافته و قابل فهم برای کاربران ارائه کند. مقالات او با رویکرد آموزشی و مبتنی بر منابع معتبر تهیه میشوند و بر شفافیت مفاهیم و پرهیز از بزرگ نمایی پروژهها تأکید دارند.محتوای منتشر شده توسط نفیسه جمالی صرفا با هدف آموزش و اطلاع رسانی تهیه میشود و به منزله توصیه سرمایه گذاری یا پیشنهاد معاملاتی نیست.
میخوام بدونم یک ایده رو چطوری با بلاکچین اجرایی میکنن؟
بلاکچین به درد چه سازمانهایی می خوره ؟
در پاسخ به نسیم
سازمانهایی که بدنبال تولید و گسترش نرم افزارهای غیرمتمرکز در حوزه های مختلف هستند
سازمانها و کمپانی هایی که الان از بلاکچین استفاده می کنند چه نام دارند؟
بیت کوین چه تفاوتی با بلاکچین دارد؟
در پاسخ به بوران
بیت کوین نرم افزار یا ساختاری (رمز ارزی) است که از بستر بلاکچین برای تولید و گسترش آن استفاده شده است
تفاوت سرورهای سنتی با بلاکچین چیست؟
در پاسخ به رامین
پایگاه داده های قدیمی برای ساخت نرم افزار های متمرکز میباشد اما بلاکچین برای ساخت نرم افزار های غیرمتمرکز استفاده میشود
چند نوع بلاکچین داریم؟
در پاسخ به رضا
بلاکچین یک نوع پایگاه داده با ویژگی های زیاد میباشد که بدلیل ویژگیهای زیاد به آن شبکه ی بلاکچین هم میگویند. نوع خاصی ندارد و هر توسعه دهنده ای میتواند از این ساختار استفاده میکند
بلاکچین چه کاربردهایی را دارد؟
در پاسخ به یاسر
هر بدنبال هر نوع نرم افزار #غیرمتمرکز باشید باید از بستر شبکه بلاکچین استفاده شود: از قراردادهای هوشمند، رمزارز، دی اپ ها و …