آموزش  اضافه کردن بلوک در بلاک چین پایتون

2 سال پیش

آموزش  اضافه کردن بلوک در بلاک چین پایتون

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، به آموزش  اضافه کردن بلوک در بلاک چین پایتون خواهیم پرداخت.

پیشنهاد ویژه : پکیج آموزش پروژه محور پایتون

هر ماینر تراکنش‌ها را از یک استخر تراکنش‌هایی که قبلا ایجاد شده است، دریافت می‌کند. برای ردیابی تعداد پیام‌هایی که قبلا استخراج شده‌اند، باید یک متغیر سراسری ایجاد کنیم

last_transaction_index = 0

 

اکنون اولین ماینر خود را خواهیم داشت که یک بلاک به بلاک چین اضافه می کند.

افزودن بلوک اول

برای افزودن یک بلوک جدید، ابتدا یک نمونه از کلاس Block ایجاد می کنیم.

block = Block()

 

ما ۳ تراکنش برتر را از صف انتخاب می کنیم

for i in range(3):
   temp_transaction = transactions[last_transaction_index]
   # validate transaction

 

قبل از افزودن تراکنش به بلوک، ماینر اعتبار تراکنش را تأیید می کند. اعتبار تراکنش با آزمایش برابری هش ارائه شده توسط فرستنده در برابر هش تولید شده توسط ماینر با استفاده از کلید عمومی فرستنده تأیید می شود. همچنین، ماینر بررسی خواهد کرد که فرستنده موجودی کافی برای پرداخت تراکنش فعلی را دارد.

برای اختصار، ما این قابلیت را در آموزش قرار نداده ایم. پس از تایید تراکنش، آن را به لیست verified_transactions در نمونه بلوک اضافه می کنیم.

block.verified_transactions.append (temp_transaction)

 

ما آخرین شاخص تراکنش را افزایش می دهیم تا استخراج کننده بعدی تراکنش های بعدی را در صف انتخاب کند.

last_transaction_index += 1

 

دقیقاً سه تراکنش به بلوک اضافه می کنیم. پس از انجام این کار، بقیه متغیرهای نمونه کلاس Block را مقداردهی اولیه می کنیم. ابتدا هش آخرین بلوک را اضافه می کنیم.

block.previous_block_hash = last_block_hash

 

بعد، بلوک را با سطح دشواری ۲ ماین می کنیم.

block.Nonce = mine (block, 2)

 

توجه داشته باشید که اولین پارامتر تابع معدن یک شی باینری است. اکنون کل بلوک را هش می کنیم و یک خلاصه بر روی آن ایجاد می کنیم.

digest = hash (block)

 

در نهایت، بلوک ایجاد شده را به بلاک چین اضافه می کنیم و متغیر جهانی last_block_hash را برای استفاده در بلوک بعدی مجدداً راه اندازی می کنیم.

کل کد برای اضافه کردن بلوک در زیر نشان داده شده است

block = Block()
for i in range(3):
   temp_transaction = transactions[last_transaction_index]
   # validate transaction
   # if valid
   block.verified_transactions.append (temp_transaction)
   last_transaction_index += 1

block.previous_block_hash = last_block_hash
block.Nonce = mine (block, 2)
digest = hash (block)
TPCoins.append (block)
last_block_hash = digest

 

اضافه کردن بلوک های بیشتر

اکنون دو بلاک دیگر به بلاک چین خود اضافه می کنیم. کد اضافه کردن دو بلوک بعدی در زیر آمده است

# Miner 2 adds a block
block = Block()

for i in range(3):
   temp_transaction = transactions[last_transaction_index]
   # validate transaction
   # if valid
   block.verified_transactions.append (temp_transaction)
   last_transaction_index += 1
block.previous_block_hash = last_block_hash
block.Nonce = mine (block, 2)digest = hash (block)
TPCoins.append (block)last_block_hash = digest
# Miner 3 adds a block
block = Block()

for i in range(3):
   temp_transaction = transactions[last_transaction_index]
   #display_transaction (temp_transaction)
   # validate transaction
   # if valid
   block.verified_transactions.append (temp_transaction)
   last_transaction_index += 1

block.previous_block_hash = last_block_hash
block.Nonce = mine (block, 2)
digest = hash (block)

TPCoins.append (block)
last_block_hash = digest

 

هنگامی که این دو بلوک را اضافه می کنید، تعداد تکرارهایی را که برای یافتن Nonce انجام شده است را مشاهده خواهید کرد. در این مرحله، زنجیره بلوکی ما از ۴ بلوک شامل بلوک پیدایش تشکیل شده است.

دامپینگ کل بلاک چین

با استفاده از عبارت زیر می توانید محتویات کل بلاک چین را تأیید کنید

dump_blockchain(TPCoins)

 

خروجی مشابه تصویر زیر را مشاهده خواهید کرد

 

Number of blocks in the chain: 4
block # 0
sender: Genesis
-----
recipient:
۳۰۸۱۹f300d06092a864886f70d010101050003818d0030818902818100ed272b52ccb539e2cd779
c6cc10ed1dfadf5d97c6ab6de90ed0372b2655626fb79f62d0e01081c163b0864cc68d426bbe943
۸e8566303bb77414d4bfcaa3468ab7febac099294de10273a816f7047d4087b4bafa11f141544d4
۸e2f10b842cab91faf33153900c7bf6c08c9e47a7df8aa7e60dc9e0798fb2ba3484bbdad2e44302
۰۳۰۱۰۰۰۱
-----
value: 500.0
-----
time: 2019-01-14 16:18:02.042739
-----
--------------
=====================================
block # 1
sender:
۳۰۸۱۹f300d06092a864886f70d010101050003818d0030818902818100bb064c99c492144a9f463
۴۸۰۲۷۳aba93ac1db1f0da3cb9f3c1f9d058cf499fd8e54d244da0a8dd6ddd329ec86794b04d773e
b4841c9f935ea4d9ccc2821c7a1082d23b6c928d59863407f52fa05d8b47e5157f8fe56c2ce3279
c657f9c6a80500073b0be8093f748aef667c03e64f04f84d311c4d866c12d79d3fc3034563dfb02
۰۳۰۱۰۰۰۱
-----
recipient:
۳۰۸۱۹f300d06092a864886f70d010101050003818d0030818902818100be93b516b28c6e674abe7
abdb11ce0fdf5bb728b75216b73f37a6432e4b402b3ad8139b8c0ba541a72c8add126b6e1a1308f
b98b727beb63c6060356bb177bb7d54b54dbe87aee7353d0a6baa9397704de625d1836d3f42c7ee
۵۶۸۳f6703259592cc24b09699376807f28fe0e00ff882974484d805f874260dfc2d1627473b9102
۰۳۰۱۰۰۰۱
-----
value: 15.0
-----
time: 2019-01-14 16:18:01.859915
-----
--------------
sender:
۳۰۸۱۹f300d06092a864886f70d010101050003818d0030818902818100bb064c99c492144a9f463
۴۸۰۲۷۳aba93ac1db1f0da3cb9f3c1f9d058cf499fd8e54d244da0a8dd6ddd329ec86794b04d773e
b4841c9f935ea4d9ccc2821c7a1082d23b6c928d59863407f52fa05d8b47e5157f8fe56c2ce3279
c657f9c6a80500073b0be8093f748aef667c03e64f04f84d311c4d866c12d79d3fc3034563dfb02
۰۳۰۱۰۰۰۱
-----
recipient:
۳۰۸۱۹f300d06092a864886f70d010101050003818d0030818902818100a070c82b34ae143cbe59b
۳a2afde7186e9d5bc274955d8112d87a00256a35369acc4d0edfe65e8f9dc93fbd9ee74b9e7ea12
۳۳۴da38c8c9900e6ced1c4ce93f86e06611e656521a1eab561892b7db0961b4f212d1fd5b5e49ae
۰۹cf8c603a068f9b723aa8a651032ff6f24e5de00387e4d062375799742a359b8f22c5362e56502
۰۳۰۱۰۰۰۱
-----
value: 6.0
-----
time: 2019-01-14 16:18:01.860966
-----
--------------
sender:
۳۰۸۱۹f300d06092a864886f70d010101050003818d0030818902818100be93b516b28c6e674abe7
abdb11ce0fdf5bb728b75216b73f37a6432e4b402b3ad8139b8c0ba541a72c8add126b6e1a1308f
b98b727beb63c6060356bb177bb7d54b54dbe87aee7353d0a6baa9397704de625d1836d3f42c7ee
۵۶۸۳f6703259592cc24b09699376807f28fe0e00ff882974484d805f874260dfc2d1627473b9102
۰۳۰۱۰۰۰۱
-----
recipient:
۳۰۸۱۹f300d06092a864886f70d010101050003818d0030818902818100cba097c0854876f41338c
۶۲۵۹۸c658f545182cfa4acebce147aedf328181f9c4930f14498fd03c0af6b0cce25be99452a81d
f4fa30a53eddbb7bb7b203adf8764a0ccd9db6913a576d68d642d8fd47452590137869c25d9ff83
d68ebe6d616056a8425b85b52e69715b8b85ae807b84638d8f00e321b65e4c33acaf6469e18e302
۰۳۰۱۰۰۰۱
-----
value: 2.0
-----
time: 2019-01-14 16:18:01.861958
-----
--------------
=====================================
block # 2
sender:
۳۰۸۱۹f300d06092a864886f70d010101050003818d0030818902818100a070c82b34ae143cbe59b
۳a2afde7186e9d5bc274955d8112d87a00256a35369acc4d0edfe65e8f9dc93fbd9ee74b9e7ea12
۳۳۴da38c8c9900e6ced1c4ce93f86e06611e656521a1eab561892b7db0961b4f212d1fd5b5e49ae
۰۹cf8c603a068f9b723aa8a651032ff6f24e5de00387e4d062375799742a359b8f22c5362e56502
۰۳۰۱۰۰۰۱
-----
recipient:
۳۰۸۱۹f300d06092a864886f70d010101050003818d0030818902818100be93b516b28c6e674abe7
abdb11ce0fdf5bb728b75216b73f37a6432e4b402b3ad8139b8c0ba541a72c8add126b6e1a1308f
b98b727beb63c6060356bb177bb7d54b54dbe87aee7353d0a6baa9397704de625d1836d3f42c7ee
۵۶۸۳f6703259592cc24b09699376807f28fe0e00ff882974484d805f874260dfc2d1627473b9102
۰۳۰۱۰۰۰۱
-----
value: 4.0
-----
time: 2019-01-14 16:18:01.862946
-----
--------------
sender:
۳۰۸۱۹f300d06092a864886f70d010101050003818d0030818902818100cba097c0854876f41338c
۶۲۵۹۸c658f545182cfa4acebce147aedf328181f9c4930f14498fd03c0af6b0cce25be99452a81d
f4fa30a53eddbb7bb7b203adf8764a0ccd9db6913a576d68d642d8fd47452590137869c25d9ff83
d68ebe6d616056a8425b85b52e69715b8b85ae807b84638d8f00e321b65e4c33acaf6469e18e302
۰۳۰۱۰۰۰۱
-----
recipient:
۳۰۸۱۹f300d06092a864886f70d010101050003818d0030818902818100a070c82b34ae143cbe59b
۳a2afde7186e9d5bc274955d8112d87a00256a35369acc4d0edfe65e8f9dc93fbd9ee74b9e7ea12
۳۳۴da38c8c9900e6ced1c4ce93f86e06611e656521a1eab561892b7db0961b4f212d1fd5b5e49ae
۰۹cf8c603a068f9b723aa8a651032ff6f24e5de00387e4d062375799742a359b8f22c5362e56502
۰۳۰۱۰۰۰۱
-----
value: 7.0
-----
time: 2019-01-14 16:18:01.863932
-----
--------------
sender:
۳۰۸۱۹f300d06092a864886f70d010101050003818d0030818902818100be93b516b28c6e674abe7
abdb11ce0fdf5bb728b75216b73f37a6432e4b402b3ad8139b8c0ba541a72c8add126b6e1a1308f
b98b727beb63c6060356bb177bb7d54b54dbe87aee7353d0a6baa9397704de625d1836d3f42c7ee
۵۶۸۳f6703259592cc24b09699376807f28fe0e00ff882974484d805f874260dfc2d1627473b9102
۰۳۰۱۰۰۰۱
-----
recipient:
۳۰۸۱۹f300d06092a864886f70d010101050003818d0030818902818100a070c82b34ae143cbe59b
۳a2afde7186e9d5bc274955d8112d87a00256a35369acc4d0edfe65e8f9dc93fbd9ee74b9e7ea12
۳۳۴da38c8c9900e6ced1c4ce93f86e06611e656521a1eab561892b7db0961b4f212d1fd5b5e49ae
۰۹cf8c603a068f9b723aa8a651032ff6f24e5de00387e4d062375799742a359b8f22c5362e56502
۰۳۰۱۰۰۰۱
-----
value: 3.0
-----
time: 2019-01-14 16:18:01.865099
-----
--------------
=====================================
block # 3
sender:
۳۰۸۱۹f300d06092a864886f70d010101050003818d0030818902818100a070c82b34ae143cbe59b
۳a2afde7186e9d5bc274955d8112d87a00256a35369acc4d0edfe65e8f9dc93fbd9ee74b9e7ea12
۳۳۴da38c8c9900e6ced1c4ce93f86e06611e656521a1eab561892b7db0961b4f212d1fd5b5e49ae
۰۹cf8c603a068f9b723aa8a651032ff6f24e5de00387e4d062375799742a359b8f22c5362e56502
۰۳۰۱۰۰۰۱
-----
recipient:
۳۰۸۱۹f300d06092a864886f70d010101050003818d0030818902818100bb064c99c492144a9f463
۴۸۰۲۷۳aba93ac1db1f0da3cb9f3c1f9d058cf499fd8e54d244da0a8dd6ddd329ec86794b04d773e
b4841c9f935ea4d9ccc2821c7a1082d23b6c928d59863407f52fa05d8b47e5157f8fe56c2ce3279
c657f9c6a80500073b0be8093f748aef667c03e64f04f84d311c4d866c12d79d3fc3034563dfb02
۰۳۰۱۰۰۰۱
-----
value: 8.0
-----
time: 2019-01-14 16:18:01.866219
-----
--------------
sender:
۳۰۸۱۹f300d06092a864886f70d010101050003818d0030818902818100a070c82b34ae143cbe59b
۳a2afde7186e9d5bc274955d8112d87a00256a35369acc4d0edfe65e8f9dc93fbd9ee74b9e7ea12
۳۳۴da38c8c9900e6ced1c4ce93f86e06611e656521a1eab561892b7db0961b4f212d1fd5b5e49ae
۰۹cf8c603a068f9b723aa8a651032ff6f24e5de00387e4d062375799742a359b8f22c5362e56502
۰۳۰۱۰۰۰۱
-----
recipient:
۳۰۸۱۹f300d06092a864886f70d010101050003818d0030818902818100be93b516b28c6e674abe7
abdb11ce0fdf5bb728b75216b73f37a6432e4b402b3ad8139b8c0ba541a72c8add126b6e1a1308f
b98b727beb63c6060356bb177bb7d54b54dbe87aee7353d0a6baa9397704de625d1836d3f42c7ee
۵۶۸۳f6703259592cc24b09699376807f28fe0e00ff882974484d805f874260dfc2d1627473b9102
۰۳۰۱۰۰۰۱
-----
value: 1.0
-----
time: 2019-01-14 16:18:01.867223
-----
--------------
sender:
۳۰۸۱۹f300d06092a864886f70d010101050003818d0030818902818100cba097c0854876f41338c
۶۲۵۹۸c658f545182cfa4acebce147aedf328181f9c4930f14498fd03c0af6b0cce25be99452a81d
f4fa30a53eddbb7bb7b203adf8764a0ccd9db6913a576d68d642d8fd47452590137869c25d9ff83
d68ebe6d616056a8425b85b52e69715b8b85ae807b84638d8f00e321b65e4c33acaf6469e18e302
۰۳۰۱۰۰۰۱
-----
recipient: 
۳۰۸۱۹f300d06092a864886f70d010101050003818d0030818902818100bb064c99c492144a9f463
۴۸۰۲۷۳aba93ac1db1f0da3cb9f3c1f9d058cf499fd8e54d244da0a8dd6ddd329ec86794b04d773e
b4841c9f935ea4d9ccc2821c7a1082d23b6c928d59863407f52fa05d8b47e5157f8fe56c2ce3279
c657f9c6a80500073b0be8093f748aef667c03e64f04f84d311c4d866c12d79d3fc3034563dfb02
۰۳۰۱۰۰۰۱
-----
value: 5.0
-----
time: 2019-01-14 16:18:01.868241
-----
--------------
=====================================

 

منبع.

 

لیست جلسات قبل آموزش بلاک چین پایتون

  1. آموزش بلاک چین پایتون
  2. آموزش مقدماتی بلاک چین پایتون
  3. آموزش کلاینت در حال توسعه در بلاک چین پایتون
  4. آموزش کلاس مشتری در بلاک چین پایتون
  5. آموزش کلاس تراکنش در بلاک چین پایتون
  6. آموزش ایجاد چندین تراکنش در بلاک چین پایتون
  7. آموزش کلاس بلوک در بلاک چین پایتون
  8. آموزش ایجاد بلوک جنسیس در بلاک چین پایتون
  9. آموزش ایجاد بلاک چین پایتون
  10. آموزش اضافه کردن بلوک جنسیس در بلاک چین پایتون
  11. آموزش ایجاد ماینرها در بلاک چین پایتون
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه