1– laboratoriya mashg’ulot Mavzu: Blockchain prototipini ishlab chiqish muhiti va tuzilishi



Yüklə 1,05 Mb.
Pdf görüntüsü
səhifə4/6
tarix03.06.2023
ölçüsü1,05 Mb.
#124404
1   2   3   4   5   6
1-labaratoriya blokchain

1.5. Blok zanjiridagi blok tuzilishi 


Har bir blokda indeks, vaqt tamg'asi (unix vaqti), tranzaktsiyalar ro'yxati, isbot va 
oldingi blokning xeshlari mavjud. 
Mana bitta blok qanday ko'rinishiga misol: 
Shu nuqtada, zanjirning g'oyasi aniq bo'lishi kerak - har bir yangi blok oldingi 
blokning xeshini o'z ichiga oladi. Bu juda muhim, chunki bu blokcheynga 
o'zgarmasligini beradi: agar tajovuzkor zanjirdagi oldingi blokni buzsa, keyingi barcha 
bloklarda noto'g'ri xeshlar mavjud. 
1.6. Blokka tranzaktsiyalar qo'shish 
Usul blokga tranzaktsiyalarni qo'shish uchun javobgar bo'ladi 
new_transaction(): 
 2-rasm. new_transaction() usuli 
 


new_transaction() tranzaktsiyani ro'yxatga qo'shgandan so'ng, u tranzaktsiya 
qo'shiladigan blok indeksini qaytaradi, ya'ni keyingi almashtiriladigan (yaratilgan) blok. 
Kelajakda bu tranzaktsiyani yuborayotgan foydalanuvchi uchun foydali bo'ladi. 
 
1.7. Yangi bloklarni yaratish 
Blokcheyn namunasi yaratilgandan so'ng, unga genezis blokini kiritish kerak - 
o'tmishdoshlari bo'lmagan birinchi blok. Bundan tashqari, ushbu genezis blokiga "dalil" 
qo'shish kerak bo'ladi, bu konchilik (yoki bajarilgan ishni tasdiqlash) natijasidir. Biz 
keyinroq qazib olishni ko'rib chiqamiz. 
Konstruktorda 
genezis 
blokini 
yaratishdan 
tashqari, 
biz 
new_block(), 
new_transaction() va hash() usullarini ham yozamiz: 


Blokcheyn prototipi skeleti bilan deyarli bajarildi. Endi yangi bloklar qanday 
yaratilganligini bilib olaylik. 
1.8. Tugallangan ishni tasdiqlash algoritmi 
Proof of Work (PoW) algoritmi - bu blokcheynda yangi bloklar qanday yaratilishi 
yoki "qazib olinishi". PoW ning maqsadi muammoni hal qiladigan raqamni topishdir. 
Raqam shunday bo'lishi kerakki, uni topish qiyin, lekin tarmoqdagi har kim tomonidan 
tekshirish oson (hisob-kitoblar haqida gapirganda). Bu algoritmning asosiy vazifasi. 
Yaxshiroq fikr olish uchun oddiy misolni ko'rib chiqaylik. 
X sonining boshqa songa ko'paytirilgan xeshi nol bilan tugashi kerak. Shunday 
qilib, hash(x * y) = ac23dc...0. Soddalashtirilgan misol uchun, aytaylik, x = 5. Bu 
Pythonda qanday ishlaydi: 


1 from hashlib import sha256
2
3 x = 5
4 y = 0 # Biz hali ham y ning nimaga teng ekanligini bilmaymiz 
5 while sha256(f'{x*y}'.encode()).hexdigest()[-1] != "0":
6 y += 1
7
8 print(f'The solution is y = {y}') 
Bu erda yechim quyidagicha: y = 21. Olingan xesh nol bilan tugashi uchun: 
hash(5 * 21) = 1253e9373e...5e3600155e860 

Yüklə 1,05 Mb.

Dostları ilə paylaş:
1   2   3   4   5   6




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©azkurs.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin