CodeCrafters
سلام🥸همونطور که از پست قبلی متوجه شدیم با زبان های بسیاری میتونیم بلاکچین رو طراحی کنیم و خب تو این پست قراره بلاکچینی رو برای زنجیره تامینی با استفاده از پایتون پیاده کنیم زنجیر تامین یکی دیگه از کاربرد های بلاکچین در کنار ارز دیجیتیال و قرار داد های هوشمند…
ساخت بلاک های اولیه و تراکنش
خب در نهایت به این میرسیم که چطوری میتونیم از کلس هامون استفاده کنیم
این تیکه کد، یک نمونه ساده از استفاده از کلاس بلاکچین و متود های اون را نشان میده. در اینجا، یک ابجکت از کلاس Blockchain ایجاد میشود و سه تراکنش برای ردیابی محصولات غذایی اضافه میشه. بعد از اون تراکنشهای معلق ماین شده و یک بلاک جدید به زنجیره اضافه میشود و اعتبار زنجیره چک میشه و در نهایت بلاکها و تراکنشها نمایش داده میشود.
پ ن: توضیح عمقی تر درمورد کلاس Blockchain
#blockchain
@Code_Crafters
خب در نهایت به این میرسیم که چطوری میتونیم از کلس هامون استفاده کنیم
blockchain = Blockchain()
#A: ایجاد تراکنش
blockchain.add_transaction(Transaction('Farm', 'Warehouse', 'Tomatoes', 70))
blockchain.add_transaction(Transaction('Warehouse', 'Distributor', 'Tomatoes', 90))
blockchain.add_transaction(Transaction('Distributor', 'Retailer', 'Tomatoes', 80))
#B: ماین کردن تراکنشهای معلق
blockchain.mine_pending_transactions()
#C: بررسی اعتبار زنجیره
print(f"Blockchain valid: {blockchain.is_chain_valid()}")
#D: نمایش بلاکها و تراکنشها
for block in blockchain.chain:
print(block)
for tx in block.transactions:
print(f"txt = {tx}")
این تیکه کد، یک نمونه ساده از استفاده از کلاس بلاکچین و متود های اون را نشان میده. در اینجا، یک ابجکت از کلاس Blockchain ایجاد میشود و سه تراکنش برای ردیابی محصولات غذایی اضافه میشه. بعد از اون تراکنشهای معلق ماین شده و یک بلاک جدید به زنجیره اضافه میشود و اعتبار زنجیره چک میشه و در نهایت بلاکها و تراکنشها نمایش داده میشود.
پ ن: توضیح عمقی تر درمورد کلاس Blockchain
مورد اول difficulty: این متغییر نشان میدهه که برای ماین کردن یک بلاک جدید چه تعداد صفر در ابتدای هش باید وجود داشته باشد.فرض کنید که مقدار difficulty در بلاکچین برابر 3 باشد.
ب فرض کنیم ما بلاکی را میخواهیم ماین کنیم و هش بلاک باید اینگونه باشد:
hash: 000abc123
دوم ()init: در این متد، زنجیره با ایجاد بلاک اول (genesis block) شروع میشود و لیست تراکنشهای در انتظار برای ماین کردن خالی میشود.
سوم:create_genesis_bloc()k: این متد بلاک اول یا genesis block را با شماره بلاک 0، هش بلاک قبلی صفر، زمان فعلی و بدون تراکنش ایجاد میکند. معمولا بلاک اول زنجیره رو خوومون درست میکنیم و بدون تراکنش و هش صفر
چهار: get_latest_block(): این متد آخرین بلاک در زنجیره را برمیگرداند.
پنج:add_transaction(transaction): این متد یک تراکنش را به لیست تراکنشهای در انتظار برای ماین کردن اضافه میکند.
شش:mine_pending_transactions: این متد تمام تراکنشهای در انتظار را ماین میکند و بلاک حاوی آنها را به زنجیره اضافه میکند.
هفت:mine_block(block): این متد یک بلاک را با استفاده از الگوریتم Proof of Work ماین میکند، تا هش بلاک با تعداد صفرهای مشخص (بر اساس difficulty) شکل بگیرد.
هشت:()is_chain_valid: این متد بررسی میکند که زنجیره فعلی اعتبار دارد یا نه، با مقایسه هشهای بلاکها و هشهای محاسبه شده.
#blo
#blockchain
@Code_Crafters
🔥6