یرلگاولین کارها برای ایجاد شبکههای مبتنی بر بلاکچین و نرم افزارهای مربوط به آن، انتخاب یه زبان مناسب برایاین کار است. سختترین کار برای یک برنامه نویس تازه کار انتخاب یک زبان مناسب است. هیچ وقت نمیشود گفت که یک زبان برنامه نویسی میتواند به تمام نیازها و مسائل پیرامون یک پروژه پاسخگو باشد. این یعنی برای انجام یک پروژه امکان دارد به استفاده کردن از چندین زبان برنامه نویسی باشیم. با این حال زبان برنامه نویسی پایتون یکی از بهترین زبانهایی است که در بیشتر پروژه های بلاکچینی از آن استفاده شده است.
فهرست مطالب
زبان برنامه نویسی پایتون چیست؟
زبان برنامه نویسی پایتون (Python) زبانی شیگرا ، تفسیری و سطح بالا همانند زبان برنامه نویسی سی پلاس پلاس است. همچنین زبان پایتون به دلیل کاربرد گسترده ای که دارد مورد توجه جامعه برنامه نویسان شده است. این زبان به دلیل خوانایی خوب و نبودن پیچیدگی در آن برای کسانی که با زبان انگلیسی آشنا باشند و همچنین برای تازه کاران بسیار زبان مناسبی است. پایتون قابلیت این را دارد که برای کارهای مختلف از جمله گرفتن مقادیر زیادی از دادهها و اجرای الگوریتمهای ماشین لرنینگ پیاده سازی شود.
زبان برنامه نویسی پایتون یک زبان برنامه نویسی چند منظوره و به قولی همه فن حریف است و تقریبا در هر مکانی که فکر میکنید از دادهها گرفته تا محاسبات ریاضیات پیچیده، کاربرد دارد. این تعاریف به معنای آن است که بر خلاف زبان برنامه نویسی جاوا، پایتون فقط برای توسعه وب و اپلیکیشنها مورد استفاده قرار نمیگیرد. همانند بیشتر زبانهای برنامه نویسی، پایتون به صورت همزمان با یک مفسر کار میکند که خطوط نهایی کد را اجرا میکند.
تکنولوژی بلاکچین چیست؟
سیستمی که رمزارز بیتکوین به واسطه آن شکل گرفته، که درآن اطلاعات به صورت زنجیرهای از بلاکها به هم پیوسته هستند که به این دلیل به آن بلاکچین (Blockchain) گفته میشود. ارزدیجیتال بیتکوین اولین پروژه موفقیت آمیز تکنولوژی بلاکچین بوده و بعدها پس از افزایش توجهها به رمزارز بیتکوین، به سیستم بلاکچین هم توجهها افزایش یافت. سایر رمزارزها نیز بر اساس همین اصول شکل گرفتند.
باید خاطر نشان کرد این سیستم فقط به ذخیره اطلاعات مالی محدود نمیشود، و در شبکه بلاکچین میشود هر نوع دادهای را ذخیر کرد. همچنین دادههایی که در بلاکچین ذخیره میشود باید دارای ویژگیهایی از قبیل: ۱. غیرقابل تغییر ۲. غیرقابل نفوذ و هک شدن ۳. ماندگاری ۴. غیر متمرکز و توزیع شده، باشد.
این ویژگیها برای حفظ یکپارچگی بلاکچین و امنیت سیستمی که تراکنشهای مالی و غیرمالی در آن اتفاق میافتد حائز اهمیت است. با افزایش روزافزون پروژهای بلاکچینی، این سیستم نیز در دنیای فناوری خود را تثبیت میکند. این فناوری به دلیل توانایی خود باعث تضمین امنیت اطلاعات، اجرای تمرکززدایی و سرعت بخشیدن به فرآیندهای صنعت به ویژه صنعت مالی بسیار مورد توجه افراد قرار گرفته است.
بررسی بلاک چین به زبان ساده
به بیانی ساده بلاکچین یک پایگاه داده عظیم عمومی است که مالکیت و انتقال داراییهای دیجیتال را به طور برگشت ناپذیرامکان پذیر میدهد. شبکههای ارزهای دیجیتال مانند بیتکوین و اتریوم بر همین اساس ایجاد شدهاند. تکنولوژی بلاکچین یک فناوری شگفت انگیز است که به وسیلهی آن میتوانید ایده های خود را بر این بستر پیاده سازی کنید.
اگر به طور دیگر به تعریف تکنولوژی بلاکچین بپردازیم میتوان اینگونه گفت که بلاکچین یک فناوری دفترکل توزیع شدهای است که در آن میتوان بدون نیاز به یک یا چند نهاد متمرکز مشارکت کرد، تعاملات داشت و معاملات را انجام داد. همچنین از ویژگیهای مهم بلاکچین میتوان به شفافیت، تغییر ناپذیری و امنیت اشاره داشت. برای مطمئن بودن از امنیت دادهها در شبکه بلاکچین از الگوریتمهای پیشرفته ارز رمزنگاری شده استفاده میشود. برای رسیدن به اجماع (توافق)، یک شبکه بلاکچین از الگوریتمهای اجماع مانند اثبات کار (POW)، اثبات سهام (POS) و … استفاده میکنند.
بلاکچین و زبان برنامه نویسی پایتون
با محبوبیت روزافزون فناوری بلاکچین، اجتناب ناپذیر است که پایتون، با کتابخانههای قدرتمند خود، جایگاهی در برنامه نویسی بلاکچین پیدا کند. پایتون چندین ابزار و کتابخانه خوب برای اجرای اپلیکیشنهای غیرمتمرکز (dApps) و بلاکچین دارد. در حالی که فناوری بلاکچین کاربردهای جدیدی در زمینههای مختلف پیدا میکند، استفاده از پایتون آن را قدرتمندتر میسازد.
همانطور که در بالا اشاره کردیم، بلاکچین، زنجیرهای از بلاکها است. هر بلاک شامل یک هش (hash)، یک شمارنده (index) و دادههایی (data) درباره تراکنش خاصی است که انجام گرفته است. تمامی بلاکهای یک بلاکچین با ترکیبی از اعداد و حروفی به نام هش، به یکدیگر متصل هستند. همچنین هش هر بلاک شامل اطلاعات بلاک قبلی موجود در زنجیره است و دقیقا این همان چیزی است که باعث میشود کل زنجیره به هم متصل شوند و زنجیرهای از بلاکها را بسازند.
اگر مقدار یا هر اطلاعاتی دیگر در هر یک از بلاکها مورد نفوذ و تغییر قرار بگیرد، باعث میشود که هش نیز تغییر کند و با این تغییر، هش موجود در بلاک بعد از آن نیز تغییر میکند، که با این اتفاق، افراد موجود در شبکه از دستکاری اطلاعات آگاه میشوند و باعث جلوگیری از تقلب در زنجیره میشود. بنابراین برای هر هکری که بتواند با موفقیت یک بلاک را “هک” کند، نه تنها باید مقادیر یک بلاک را تغییر دهد، بلکه باید تمام بلاکهای قبل و بعد از آن را نیز تغییر دهد که این کار، عملا غیرممکن است.
بلاکچین یک فناوری پیشرفته است که باعث امنیت و درجه بالاتری از حریم خصوصی در برنامههای مختلف میشود. امروزه فناوری بلاکچین تنها به ارزهای رمزنگاری شده محدود نمیشود، بلکه در بخشهای مختلف از جمله دولت الکترونیک، شبکههای اجتماعی، تجارت الکترونیک، حمل و نقل، تدارکات، ارتباطات حرفهای و بسیاری موارد دیگر، پیاده سازی میشود.
ابزارهای پایتون برای برنامه نویسی بلاکچین
پایتون دارای ابزارها و کتابخانههایی است که میتوانند برای توسعه بلاکچین از جمله برنامههای غیرمتمرکز استفاده شوند. همانطور که در فناوری بلاکچین، پروتکلها و الگوریتمهای ایمن وجود دارد، پایتون نیز بستههای ابزار متعددی در مخزن رسمی خود در وبسایت pypi.org دارد. کتابخانههای خاص برای برنامههای غیرمتمرکز و پیاده سازی بلاکچین، در آدرسهای اینترنتی زیر در دسترس هستند:
https://pypi.org/search/?q=blockchain
https://pypi.org/search/?q=dapp
نصب کتابخانهها و ابزارهای پایتون برای برنامه نویسی بلاکچین
کتابخانهها و ابزارهای اضافی را میتوان بوسیله پایتون با استفاده از نصب کننده Pip با دستور زیر نصب کرد:
در سیستم عامل ویندوز باید از دستورالعمل زیر استفاده شود:
فناوری بلاکچین بسیار وابسته به رمزنگاری است، به همین خاطر برای تکمیل کردن خود از رمزنگاری پویا و رمزگذاری استفاده میکند. برایاین کار میتوان کتابخانه Hashlib را با استفاده از دستورالعمل بالا نصب کرد.
ساخت اپلیکیشنهای بلاکچین
کد زیر مربوط به یک بلاکچینایمن است که در حال تولید مقادیر هش است تا تراکنشها و سوابق کلی از امنیت بالایی برخوردار باشند. در کد زیر blockchainhash.py، مقدار هش پویا تولید میشود.این اصول ابتدایی هر بلاکچین با تراکنشهای مختلف در یک زنجیره است که بلاکچین کلی و نهایی را میسازد.
با اجرای کد، نتیجه نشان داده شده با مقادیر هش متفاوت به دست میآید و با استفاده از توابع رمزنگاری، امنیت بالاتری را فراهم میکند. با استفاده ازاین مقادیر هش، هک کردن یا اسنیف کردن (هر گاه اطلاعات در میان راه توسط یک ابزار دزدیده شود بدون اینکه ارتباط فرستنده و گیرنده قطع شود به آن اسنیف میگویند) تراکنش تقریبا غیرممکن است.
استقرار بلاکچین های توزیع شده مبتنی بر شبکه
امانند مثال قبلی، پیاده سازی تابع هش با بلاکها بر روی یک سیستم مستقل و متمرکز انجام میشود. در مورد بلاکچین واقعی، باید توزیع شود تا کاربران مختلف بتوانند تراکنشها و بلاکهای خود را آغاز کنند. برای پیاده سازیهای توزیع شده و مبتنی بر وب، فریمورکهای مختلفی در پایتون وجود دارد. Flask یکی از فریمورکهای وب شناخته شده و محبوب است که با برنامه نویسی پایتون استفاده میشود. برای نصب آن دستور زیر را باید بنویسیم:
در سیستم عامل ویندوز، دستورالعمل زیر برای نصب Flask با نصب پایتون موجود استفاده میشود:
الگوریتم اثبات کار بلاکچین توسط زبان برنامه نویسی پایتون
در برنامه نویسی بلاکچین، الگوریتم اثبات کار (PoW) یکی از الگوریتمهای بسیار مهم است. برای تایید و اعتبارسنجی تراکنشها استفاده میشود تا بلاکهای جدید در بلاکچین اضافه شوند. از آن به عنوان الگوریتم اجماع کلیدی برای تأیید و صحت تراکنشها یاد میشود. در شبکه بلاکچین، ماینرهای (miner) مختلفی برای اعتبارسنجی و تکمیل تراکنشهای خود شرکت میکنند. برای اعتبارسنجی موفق، ماینرها با ارزهای دیجیتال موجود در شبکه به عنوان پاداش خود، رمزارز آن شبکه را میگیرند.
این فرآیند همچنین از مشکل دوبار خرج کردن (double spending) جلوگیری میکند تا ارز دیجیتال یا تراکنش به روشی امن اجرا شود. به عنوان مثال، هنگامی که A یک فایل یا ارز دیجیتال را به B ارسال میکند، آن فایل خاص یا مقدار ارز موجود در سوابق A باید حذف شود و سپس باید در سوابق B منظور گردد. به طور سنتی، این نقشی است که توسط بانک انجام میشود. درمورد شبکه بلاکچین، این کار باید بدون هیچ واسطهای پیاده سازی شود و با استفاده از الگوریتمهای تخصصی به صورت خودکار اعتبار سنجی میشود. اگر مواردی وجود داشته باشد که تراکنش از طرف فرستنده حذف نشده باشد، ارز را بدون توجه به نوع ارز مورد استفاده، کم میکند.
پیاده سازی مبتنی بر وب بلاکچین با استفاده از وب سرور
در تصویر پایین پیاده سازی مبتنی بر وب بلاکچین را با استفاده از یک وب سرور نشان میدهد تا استقرار توزیع شده وجود داشته باشد.
با استفاده از cURL میتوان تراکنش را پیاده سازی کرد و تاثیر آن را بر روی بلاکچین تجسم کرد. کتابخانه cURL برای سیستم عامل ویندوز را میتوان از طریقاین لینک نصب کرد.
همانطور که در شکل پایین نشان داده شده است، اجرای کد و اجرای کلی با تمام سوابق و تراکنشها قابل تجزیه و تحلیل است تا شفافیت در عملیات وجود داشته باشد و از هرگونه تلاش برای هک شدن شبکه جلوگیری شود. با استفاده از اثبات کار (PoW)، یکپارچگی تراکنشها تثبیت میشود.
بررسی نهایی برنامه نویسی بلاک چین با زبان پایتون
دراین مقاله، به بررسی مفاهیم مهم و پایه ای فناوری بلاکچین با نسخه ساده ای از پایتون و همچنین معرفی بعضی از ابزارها و فریمورکهای این زبان برای استفاده در بلاکچین پرداختیم. باید این موضوع هم ذکر کنیم که این مقاله تمام موضوعات راجب پیاده سازی بلاکچین با استفاده از زبان برنامه نویسی پایتون را پوشش نمیدهد و صرفا بررسی برخی از مفاهیم آن است.