ساخت بلاکچین با پایتون، قبل از اینکه نحوه ساخت بلاکچین در پایتون را توضیح دهیم، بیاید نگاهی به عقب بیاندازیم. در سال ۲۰۰۸، یک نویسنده با نام مستعار ساتوشی ناکاموتو Satoshi Nakamoto وایت پیپری را منتشر کرد که نسخه کاملا نظیر به نظیر پول دیجیتالی را توصیف می کند. این سیستم دیجیتالی که منحصر به فرد است، برای اطمینان از امنیت هر معامله مجبور نیستند به تاییدهای شخص ثالث اعتماد کنند. در عوض، هر معامله دارای برچسب زمان است، سپس به زنجیره ای از اثبات کار مبتنی بر هش تبدیل می شود.
بنابراین هش کردن و اثبات کار چیست؟ ما این مفاهیم را در این مقاله معرفی خواهیم کرد و نشان می دهیم که چگونه آنها زمینه را برای یک سیستم پول دیجیتالی رمزنگاری شده ایجاد می کنند. اما نیاز است تا در ابتدا با زبان برنامه نویسی پایتون Python و مفهوم بلاکچین آشنا شوید. در این مقاله می خواهیم بررسی نماییم که چگونه بلاکچینی را با استفاده از زبان برنامه نویسی پایتون پیاده سازی کنیم.
لیست عناوینی که در این مقاله برای شما زوم ارزی عزیز آماده کرده ایم:
- معرفی زبان برنامه نویسی پایتون Python
- ویژگی های زبان برنامه نویسی پایتون Python
- بلاکچین Blockchain چیست؟
- چگونه می توان یک بلاکچین در پایتون Python ساخت؟
- آموزش ساخت بلاکچین با پایتون Python
- ۱.ایجاد بلاکچین
- ساختار یک بلاک
- افزودن تراکنش به یک بلاک
- ایجاد بلاک های جدید
- اجرای اثبات کار Proof of Work
- 2.یکپارچه سازی API
- 3.برقراری ارتباط با بلاکچین
معرفی زبان برنامه نویسی پایتون Python
پایتون یک زبان برنامه نویسی است که به دلیل کاربرد گسترده ای که دارد شناخته می شود. زبان برنامه نویسی پایتون به دلیل خوانایی و استفاده از زبان انگلیسی می تواند زبان رمزگذاری خوبی برای افراد تازه کار به شمار رود. پایتون می تواند برای کارهای مختلف از جمله جمع آوری مقادیر زیادی از داده ها و اجرای الگوریتم های یادگیری ماشین پیاده سازی شود.
پایتون یک زبان برنامه نویسی چند منظوره است و تقریبا در هر مکانی که از داده ها، محاسبات ریاضی یا کد استفاد ه می کند، کاربرد دارد. این بدان معناست که بر خلاف جاوا، پایتون محدود به توسعه وب نیست. مانند اکثر زبان های برنامه نویسی، پایتون همزمان با یک مفسر کار می کند که خطوط نهایی کد را اجرا می کند.
پایتون برای بسیاری از افراد در دسترس است. زبان برنامه نویسی پایتون می تواند برای کارهای کوچک همانند تامین انرژی بات ساده تا کارهای بزرگ برای مثال تجزیه و تحلیل حجم عظیمی از داده ها مورد استفاده قرار گیرد. در زبان برنامه نویسی پایتون اشکالاتی وجود دارد به عنوان مثال محاسبات آن به دلیل سبک اجرای خط به خط، معمولا کندتر است. اما در مقابل مزایایی که دارد آن را به یک گزینه جذاب کدگذاری تبدیل کرده است. در ادامه مطالب می توانید با چند نمونه از مزایای زبان برنامه نویسی پایتون آشنا شوید.
ویژگی های زبان برنامه نویسی پایتون Python
در این قسمت از مقاله چند نمونه از مزیت های بزرگ زبان برنامه نویسی پایتون Python آورده شده است:
۱.محبوبیت و دسترسی
پایتون جامعه بزرگی برای پشتیبانی از آن دارد، که به حفظ قابلیت دسترسی آن در هر سطح مهارت کمک می کند. همچنین open source است.
۲.سینتکس ساده
زبان برنامه نویسی پایتون یک سینتکس قابل یادگیری است و از کلمات انگلیسی استفاده می کند.
۳.خوانایی
خطوط کدی که در پایتون نوشته شده اند نیز به راحتی قابل خواندن هستند. به طور کلی در پایتون از یک قالب کاملا واضح برای تکمیل دستور استفاده می کند.
۴.مقیاس پذیری
بدون نگرانی در مورد بازنویسی یا تطبیق کد برای سایر سیستم عامل ها، در هنگام افزایش مقیاس می توانید برنامه ای را در پایتون شروع کنید.
بلاکچین 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 ایجاد کنید.
۱.ایجاد بلاکچین
اولین قدم ساختن یک راه حل کاربردی برای بلاکچین است. در ابتدا، ما باید یک کلاس 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 ساده است. آن به سادگی مقدار ۰ را تنظیم می کند و سپس حلقه 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 خود را از ابتدا شروع می کنیم. پس از پایان کار باید سه endpoint مانند زیر ایجاد کنیم.
- mine endpoint/
- /transaction/new endpoint
- chain endpoint/
سرانجام ما سرور را روی پورت ۵۰۰۰ اجرا می کنیم.
این برنامه اکنون تقریبا ایجاد شده است. تمام کاری که ما باید انجام دهیم ایجاد متد کلاس تراکنش است.
Endpoint استخراج
آخرین endpoint که می خواهیم ایجاد کنیم، endpoint استخراج است. برای انجام این کار، باید اطمینان حاصل کنیم که سه کار زیر را انجام می دهد.
.محاسبه اثبات کار
.بلاکچین جدید را بسازید و سپس ان را به زنجیره اضافه کنید.
.به ماینرها پاداش دهید.
3.برقراری ارتباط با بلاکچین
آخرین مرحله تعامل با بلاکچین و یا برقراری ارتباط با بلاکچین است. ما قصد داریم از Postman برای تعامل و برقراری ارتباط با شبکه بلاکچین با استفاده از API که ایجاد کردیم، استفاده کنیم.
کد زیر را روی Python Console اجرا کنید.
کلام پایانی درباره ی ساخت بلاکچین با پایتون
در ابتدای این مقاله ما به معرفی زبان برنامه نویسی پایتون و بلاکچین پرداختیم. این مقاله می تواند شما را در ساخت بلاکچین به وسیله زبان پایتون کمک نماید. امیدواریم توانسته باشیم آموزش های لازم را در اختیار شما کاربران عزیز قرار دهیم.
از اینکه تا پایان مقاله “ساخت بلاکچین با پایتون” همراه ما بودید از شما سپاس گزاریم.
بیشتر بخوانید:
- نود بلاکچین چیست؟
- بلاکچین و صنعت هنر
- بلاکچین و اینترنت اشیا pdf
- نحوه نوشتن پیام روی بلاکچین
- درامد از بلاکچین چگونه است؟
- بلاکچین چیست؟ و چگونه کار می کند؟
- ساخت بلاکچین خصوصی چگونه است؟
- درآمد برنامه نویسی بلاکچین چقدر است؟
- بازار کار برنامه نویسی بلاکچین چگونه است؟
- فرق بلاکچین و ارز دیجیتال + مهم ترین تفاوت ها
- ساخت توکن روی بستر اتریوم ERC20 + رایگان
- کارآموز برنامه نویسی بلاکچین | کاراموز solidity
- زبان های برنامه نویسی بلاک چین Block Chain
- آشنایی با بلاکچین نسل سوم | بررسی سه نسل از بلاکچین
- قرارداد هوشمند چیست؟ | همه چیز در باره smart contract
- انواع بلاک چین | معرفی انواع بلاکچین و آشنایی با کاربرد آن ها
- حمله دیداس DDoS چیست؟ |آشنایی با حملات Dos و DDOS
- پل بلاکچین Blockchain Bridge | آشنایی با پل های بلاکچین
- ساخت بلاکچین با پایتون | آموزش ساخت بلاکچین با زبان برنامه نویسی پایتون
- ارتباط بلاکچین و هوش مصنوعی چیست؟
- Dapp چیست؟
- راه حل های لایه ۲ بلاکچین چیست؟
- دفتر کل توزیع شده DLT چیست؟
- مولتی چین Multichain چیست؟
نظرات کاربران
میخوام بدونم یک ایده رو چطوری با بلاکچین اجرایی میکنن؟
بلاکچین به درد چه سازمانهایی می خوره ؟
سازمانهایی که بدنبال تولید و گسترش نرم افزارهای غیرمتمرکز در حوزه های مختلف هستند
سازمانها و کمپانی هایی که الان از بلاکچین استفاده می کنند چه نام دارند؟
بیت کوین چه تفاوتی با بلاکچین دارد؟
بیت کوین نرم افزار یا ساختاری (رمز ارزی) است که از بستر بلاکچین برای تولید و گسترش آن استفاده شده است
تفاوت سرورهای سنتی با بلاکچین چیست؟
پایگاه داده های قدیمی برای ساخت نرم افزار های متمرکز میباشد اما بلاکچین برای ساخت نرم افزار های غیرمتمرکز استفاده میشود
چند نوع بلاکچین داریم؟
بلاکچین یک نوع پایگاه داده با ویژگی های زیاد میباشد که بدلیل ویژگیهای زیاد به آن شبکه ی بلاکچین هم میگویند. نوع خاصی ندارد و هر توسعه دهنده ای میتواند از این ساختار استفاده میکند
بلاکچین چه کاربردهایی را دارد؟
هر بدنبال هر نوع نرم افزار #غیرمتمرکز باشید باید از بستر شبکه بلاکچین استفاده شود: از قراردادهای هوشمند، رمزارز، دی اپ ها و …