همانطور که میدانید، بیت کوین و سایر ارزهای دیجیتال بر روی بلاکچین ساخته شدهاند. اما خود بلاکچین توسط توسعهدهندگان و با زبانهای برنامهنویسی ساخته میشود. یکی از این زبانها که کار ساخت بلاکچین را آسانتر کرده است، پایتون (python) نام دارد. در این مقاله به شما میگوییم که ساخت بلاکچین با استفاده از زبان برنامهنویسی پایتون چگونه صورت میگیرد.
بلاکچین چیست؟
به بیان ساده بلاکچین یک دفتر کل دیجیتال مشترک و غیرقابل تغییر است که تراکنشها را از طریق یک شبکه غیرمتمرکز از رایانهها پردازش میکند. بلاکچین را میتوان به دو عبارت ساده تقسیم کرد: بلاک به معنای فضایی که تراکنشها در آن ذخیره میشود و زنجیره یا چین به معنای مجموعهای از رکوردهای مرتبط.
پس بلاکچین را بهعنوان زنجیرهای از بلوکهای مرتبط در نظر بگیرید که در آن هر بلوک از تراکنشهای تاییدشده با پارامترهای خاص تشکیل شده است. هر بلوک پس از بلوک دیگر به وجود میآید تا زنجیرهای از بلوکهای برگشتناپذیر ایجاد شود. به عبارت دیگر هر بلوک به بلوک دیگر وابستگی دارد. یک سیستم قوی و تغییرناپذیر که در آن هر کسی با مجوزهای صحیح میتواند یکپارچگی شبکه را بررسی کند.
در حال حاضر بسیاری از سیستمها مانند ارزهای دیجیتال، توکنهای غیرمثلی (NFT) و احتمالا در آینده نزدیک، انتخابات به بلاکچین متکی هستند. اجازه بدهید بدون تاخیر بیشتر با روش ساخت یک بلاکچین ساده با پایتون آشنا شویم.
روش ساخت بلاکچین با پایتون
روش ساخت بلاکچین با python به ما امکان میدهد تا فرآیند را ساده کنیم و روی مفاهیم کلیدی یک بلاکچین تمرکز داشته باشیم. برای درک بهتر فرآیند ساخت یک بلاکچین آن را به چند مرحله زیر تقسیم کردهایم.
- مرحله 1: ایجاد کلاس بلاکچین
- مرحله 2: نوشتن یک تابع برای ساخت بلوکهای جدید
- مرحله 3: نوشتن توابع برای ایجاد تراکنشهای جدید و دریافت آخرین بلوک
- مرحله 4: نوشتن یک تابع برای هش کردن بلوکها
- مرحله 5: ایجاد یک بلاکچین جدید و انتقال پول
در بخشهای بعدی به بررسی مختصر هرکدام از این مراحل میپردازیم.
مرحله 1
کار را با وارد کردن کتابخانههای موردنیاز شروع میکنیم. در این مورد به کتابخانه hashlib برای رمزگذاری، کتابخانه JSON برای قالببندی بلوکها و کتابخانه Time برای مهر زمانی هر بلوک نیاز خواهیم داشت. سپس به سراغ ایجاد یک کلاس بلاکچین میرویم و متغیرهای زیر را برای مقداردهی اولیه در نظر میگیریم.
- chain: یک فهرست خالی است که بلوکهایی را به آن اضافه خواهیم کرد تا به معنای واقعی کلمه یک بلاکچین ایجاد شود.
- pendingTransactions: پس از اینکه کاربران ارزهای دیجیتال را برای یکدیگر میفرستند، تراکنشهای آنها در این آرایه قرار میگیرد تا زمانی که به تایید برسند و به یک بلوک جدید وارد شوند.
- newBlock: از این روش برای گنجاندن هر بلوک در بلاکچین استفاده خواهد شد.
در شبکه بیت کوین، مکانیسم اجماع به نام اثبات کار معروف است که تامین امنیت شبکه را بر عهده دارد. برای اثبات به یک عدد تصادفی (هش) نیاز داریم که یافتن آن بسیار دشوار خواهد بود. مگر اینکه ماشینهای اختصاصی با کارایی بالا بهصورت شبانهروزی کار کنند.
مرحله 2
اکنون که مقداردهی اولیه یک بلاکچین خالی را به پایان رساندیم، وارد کردن بلوکها در آن را شروع خواهیم کرد. سپس شی JSON را با ویژگیهای زیر در پایتون تعریف میکنیم.
- شاخص (Index)
- مهر زمانی (Timestamp)
- تراکنشها (Transactions)
- اثبات (Proof)
- هش ایجادشده (Previous_Hash)
هنگامی که ویژگیهای فوق را به بلوک جدید اضافه کردیم، آنها را در بلاکچین قرار میدهیم. سپس فهرست معلق تراکنشها را خالی میکنیم و افزودن بلوک جدید را به self chain در پیش میگیریم.
مرحله 3
اکنون باید فهرستی از تراکنشها را در برنامه تعبیه کنیم. زیرا کل بلاکچین بدون وجود محتوا کاملا بیمعنا خواهد بود. این کار از سه متغیر مهم دریافتکننده، فرستنده و مقدار، تشکیل شده است. بدون گنجاندن این متغیرها در هر تراکنش، کاربران نمیتوانند ارز دیجیتال تازه تولیدشده را در معامله به کار ببرند. به یاد داشته باشید که این تراکنشها بیش از حد ساده شدهاند و بازتابدهند چیزهایی نیستند که ممکن است آنها را در یک ارز دیجیتال واقعی پیدا کنید.
مرحله 4
حالا زمان افزودن کریپتوگرافی به برنامه فرا میرسد. همانطور که میدانیم بیت کوین و بسیاری از بلاکچینهای دیگر از تابع هش رمزگذاری SHA-256 استفاده میکنند. مقداری که رشته متن (ذخیرهشده به عنوان مقدار یونیکد) را میپذیرد و یک رشته رمزگذاریشده 64 کاراکتری را بیرون میدهد. وقتی متنی را با پایتون در بلاکچین رمزگذاری میکنیم، یک بلوک برای آن در نظر گرفته میشود. بهعنوان مثال، رشته رمزگذاریشده یا «هش» بلوک پیدایش بیت کوین به شکل زیر است.
fbc13b85c4ade52e2def26eae950f3b55b174df887ad0f0fb5ebfd56881f7fcb
مرحله 5
با ایجاد یک کلاس برای بلاکچین و روشهای مختلفی که را برای ساختن یک بلوک جدید و یک تراکنش جدید به آن افزودهایم به مرحله ساخت بلاکچین وارد میشویم. در این مرحله برای نمونهای از کلاس Block chain مقداردهی اولیه را انجام دهید و برخی از تراکنشهای ساختگی را به پایان برسانید. مطمئن شوید که آنها را در چند بلوک فهرست کرده باشید.
جمعبندی
با استفاده از پایتون میتوان یک بلاکچین ابتدایی ساخت که میتوان آن را با بلوکهای پر از تراکنشهای ارزهای دیجیتال پر کرد. بسیاری از جزئیات دیگر مانند هزینه جمعآوری استخراجکنندگان، شمارش تراکنش، کلید عمومی/ خصوصی، ساختار درختی مرکل و غیره وجود دارد. با این حال بررسی فوق برای ما بهعنوان یک نمونه اساسی از بخشهای متحرک در یک بلاکچین میتواند مفید باشد.