Əvvəlki bir neçə ilin tendensiyalarına nəzər salsaq, hər zaman blockchain haqqında eşitmişik, lakin xüsusiyyətləri haqqında çox deyil.
Bitcoin, Ethereum, Dogecoin, Matic və başqaları kimi kriptovalyutaların blokçeyn texnologiyasına güvəndiyini hamımız bilirik. Blockchain 2021-ci ildə çoxsaylı sənayelərdə inqilab edən və yeni nailiyyətlərə yol açan mühüm hadisələrə rəhbərlik etdi.
Blockchain, məlumatları redaktə etmək, sındırmaq və ya aldatmaq çətin və ya qeyri-mümkün bir şəkildə saxlamaq üçün bir vasitədir. Bu, təkrarlanan və blokçeynin bütün kompüter sistemləri şəbəkəsində yayılan əməliyyatların rəqəmsal kitabıdır.
Bu, demək olar ki, bütün kriptovalyutaları gücləndirən yenilikçi verilənlər bazası texnologiyasıdır. Blockchain verilənlər bazasının eyni nüsxələrini bütün şəbəkəyə yaymaqla sistemi sındırmağı və ya aldatmağı inanılmaz dərəcədə çətinləşdirir.
Bitcoin hazırda blokçeyn üçün ən məşhur istifadə olsa da, texnologiya çox geniş çeşiddə tətbiqlərə xidmət edə bilər.
Kriptovalyutalar və blokçeynlər son illərdə getdikcə populyarlaşır və bu tendensiyanın davam edəcəyi gözlənilir.
Bu dərslikdə JavaScript ilə sadə blokçeyn hazırlayacağıq. Bu sizə blokçeynin necə işlədiyinə dair əsas anlayışı təmin edəcək.
Gəlin onu MelodyCoin adlandıraq və dərhal hərəkətə keçək!
Blok yaratmaq
Başlamaq üçün bütün kodumuzu yerləşdirəcəyimiz yeni JavaScript faylı yaradacağıq.
Gəlin onu main.js adlandıraq və blokçeyn və blokların necə görünməsinin təsviri ilə başlayaq.
Blok sinfi yaradın və ona başlamaq üçün Object() { [doğma kod] } funksiyasını verin.
Yeni blok yaratarkən tarix və əvvəlki blokun hashını verməlisiniz:
Burada hər bir əmlak üçün təriflər verilmişdir:
- Zaman damğası blokun nə vaxt edildiyini göstərir. Siz seçdiyiniz formatdan istifadə edə bilərsiniz (bu halda UNIX vaxt damğası).
- Bu bloka qoşulmaq istədiyiniz istənilən məlumat forması data parametrinə daxil edilə bilər. Əgər kriptovalyuta yaratmaq istəyirsinizsə, göndərən/qəbuledici və buraya köçürülən pulun miqdarı kimi əməliyyat məlumatlarını saxlaya bilərsiniz.
- ƏvvəlkiHash əvvəlki blokun hashini saxlayan sətirdir. Bu, bloklar zəncirini yaradacaq və sonradan blokçeynimizin bütövlüyünü təmin etmək üçün vacib olacaq.
Haşların yaradılması
Hər bir blok əvvəlki bloka keçid verir (beləliklə, əvvəlkiHash xassəsi). Yəni hər bir blok hash tələb edir. Hash barmaq izinə bənzəyir. Hər blok üçün fərqlidir.
Blokun hashı onun bütün məzmununu hash funksiyasından keçirərək hesablana bilər.
Beləliklə, cari blokun hashını hesablayan funksiyanı həyata keçirərək başlayaq.
Beləliklə, Block sinfi altında hesablamaHash funksiyasını təyin edirik:
Bununla belə, SHA256 hash JavaScript tərəfindən dəstəklənmir və xarici kitabxanadan əldə edilməlidir.
Crypto-js bir neçə hash alqoritmlərinin təhlükəsiz tətbiqlərini ehtiva edən fantastik paketdir.
Sonra onu main.js kodumuza idxal edə bilərik.
İndi hesablamaHash() funksiyamız var, gəlin onu Blok funksiyamızda istifadə edək:
Blokun necə göründüyünü təsvir etdikdən sonra Blockchain-in necə görünəcəyini müəyyən edə bilərik. Beləliklə, yeni bir sinif yaradaq.
Bu ssenaridə blokçeyn mülkiyyət zənciri olan çox sadə bir obyektdir. Bu, zəncirdəki bütün blokları tutan massivdir.
Blokları əlavə etməzdən əvvəl əvvəlcə “genez bloku” kimi tanınan şeyi yaratmalıyıq. Bu, zəncirdəki ilk blokdur və əvvəlki bloku göstərə bilməməsi ilə unikaldır (bu, birincidir!).
Beləliklə, genezis blokunu qurmaq üçün sinifimizə createGenesisBlock () adlı funksiya əlavə edəcəyəm. Blockchain sinifimizin Object() { [doğma kod] } funksiyasına qayıdın.
İndi yeni Blockchain nümunəsi qurduğumuz zaman genezis blokunu daxil edə bilərik:
Blockchain Metodları
İndi gəlin Blockchain sinfimizə yeni bloklar əlavə etmək və ən son bloku əldə etmək kimi işləri görməyə imkan verəcək üsullar əlavə edək.
getLatestBlock funksiyası ən sadədir. O, sadəcə olaraq zəncir massivinin son üzvünü qaytarır:
AddBlock texnikası bir az daha cəlbedicidir.
Zəncirimizə yeni blok əlavə etməzdən əvvəl, əvvəlcə həmin blokun əvvəlkiHash sahəsini müvafiq şəkildə təyin etməliyik.
O, zəncirimizə ən son əlavə edilmiş blokun hash-ə uyğunlaşdırılmalıdır. Yeni blokun hashını da hesablamalıyıq:
Test
Gəlin görək MelodyCoin-imiz necə çıxdı.
Bunu həyata keçirmək üçün blokçeyn nümunəsi yaradın. Gəlin daha bir neçə blok əlavə edək:
Orada iki yeni blok yaratdıq. Gəlin blokçeynimizin hazırda necə göründüyünə nəzər salaq.
MelodyCoin sətirlənəcək və dörd boşluqla formatlanacaq:
Blockchain-in bütövlüyünü yoxlayın
Blokçeynlər fantastikdir, çünki blok əlavə edildikdən sonra zəncirin qalan hissəsini etibarsız etmədən dəyişdirilə bilməz.
Ancaq bu tətbiqetmə ilə blokçeynimizin bütövlüyünü yoxlamaq üçün mənim üçün heç bir üsul yoxdur.
Blockchain-imizə isChainValid funksiyasını təqdim edək. Zəncir qanuni olarsa, həqiqətə qayıdacaq; əks halda false qaytaracaq:
Dürüstlüyün sınaqdan keçirilməsi
İndi blokçeynimizin bütövlüyünü sınaqdan keçirə bilərik. Bunu indi icra etsək, zəncirimizin orijinal olduğunu təsdiqləyəcək.
İndi blokçeynimizə müdaxilə etməyə çalışaq. Gəlin blok 2-ni dəyişdirək və onun məzmununu üzərinə yazaq (tutaq ki, dörd əvəzinə 100 sikkə köçürdük).
Bunu həyata keçirdikdə, proqramın zəncirə müdaxilə etmək səylərimizi tanıdığını görə bilərik.
Bununla belə, buna qarışmağım üçün başqa bir üsul olduğuna inana bilərsiniz. Blokdakı məzmunu dəyişdirdim, lakin hashı yenidən hesablamadım. Beləliklə, siz ağıllı olmağa və eyni blokun hashını yenidən hesablamağa cəhd edə bilərsiniz.
Bizim kiçik blokçeyn quraşdırmamızda olan hər şey budur! Bu, bizə yeni bloklar əlavə etməyə və zəncir daxilində məlumatların dəyişdirilməsini aşkar etməyə imkan verir.
Kiçik blokçeynimizlə bağlı həll etməli olduğumuz iki problem var:
- Müasir kompüterlər son dərəcə sürətlidir və saniyələr ərzində zəncirimizə minlərlə blok əlavə edə bilər. Biz heç kimin blokçeynimizə spam göndərməsini istəmirik.
- Bizim blokçeynimiz hələ də müdaxiləyə qarşı həssasdır. Siz blokun məzmununu yeniləyə və sonra bütün aşağıdakı bloklar üçün hashları (və əvvəlki hashları) sadəcə olaraq yenidən hesablaya bilərsiniz. Bununla qarışsanız belə, qanuni bir zəncirlə nəticələnəcəksiniz.
Bu narahatlıqları həll etmək üçün blokçeynlər “iş sübutu” kimi tanınan bir texnikadan istifadə edir. Bu yanaşmadan istifadə edərək blok yaratmaq üçün əhəmiyyətli miqdarda hesablama resurslarından istifadə etdiyinizi nümayiş etdirməlisiniz. Buna da deyilir dağ-mədən.
İşin sübutu blokun hashinin müəyyən bir sıfır miqdarı ilə başlamasını tələb edir. Bəs hashınızın bu qaydaya uyğun olub olmadığını necə bilmək olar?
Blokun məzmunu onun hashını müəyyən edir. Beləliklə, məzmunu dəyişdirməmək şərti ilə həmişə eyni hash alırıq.
Hər bir blokun həlli kimi ona əlavə edilmiş qeyri-dəqiq dəyəri olmalıdır. Bu, əslində blokumuzun hashı kifayət qədər sıfırlarla başlayana qədər yeniləyə biləcəyimiz bəzi təsadüfi məlumatlardır. Hash funksiyasının çıxışını dəyişdirə bilməyəcəyiniz üçün çoxlu müxtəlif kombinasiyaları sınaqdan keçirməli və ən yaxşısına ümid etməlisiniz.
Blockchain ilə mədənçiliklə tanış olun
Gəlin Blok sinifimizə nonce daxil etməklə başlayaq. Nonce, blokumuzun hash-ə təsir etmək üçün dəyişdirə biləcəyimiz vahid dəyərdir.
Zaman damğasını və ya məlumatları dəyişdirə bilmirik.
Sonra, blokun faktiki mədən işini yerinə yetirəcək mineBlock() funksiyasını yazaq. Bu funksiya parametr kimi lazım olan çətinliklə göndəriləcək və blokumuzun hashı kifayət qədər sıfırlarla başlayana qədər icra etməyə davam edəcək.
Mən sadəcə olaraq, bizim hash kifayət qədər sıfırlarla başlayana qədər davam edəcək əsas while dövrəsini yaratdım. Neçə sıfır lazım olduğunu müəyyən etmək üçün çətinlikdən istifadə edirik. 5 çətinliklə hashımız 5 sıfırla başlamalıdır.
Haşımız kifayət qədər sıfırları ehtiva etmədikdə, biz nonceni bir artırırıq və hashı yenidən hesablayırıq. Və əgər çətinliyə uyğun hash tapsaq, onu konsola daxil edirik.
Etməli olduğumuz daha bir şey var. HesablamaHash metodumuzda qeyri-dəyişənləri həqiqətən nəzərə almırıq, ona görə də budur:
Blockchain Sinfi
Gəlin bu yeni yanaşmanı blokçeyn sinfimizdə sınaqdan keçirək və bunun necə getdiyini görək.
Başlamaq üçün mən Obyekt() funksiyasında blokçeynimizin çətinliyini müəyyən edəcəyəm. Biz onu burada müəyyən edirik, çünki daha sonra haradasa istifadə edə bilərik.
Bundan sonra addBlock funksiyası elə dəyişdirilməlidir ki, onu zəncirimizə əlavə etməzdən əvvəl bloku minalayır.
Blockchain-dən istifadə edin
İndi gəlin yeni blokçeynimizi işin sübutu alqoritmi ilə istifadə edək. Burada bir neçə console.log ifadəsi əlavə edin.
Bu kodu icra etdikdə, mədən prosesinin artıq xüsusilə sürətli olmadığını müşahidə edə bilərik.
Alqoritmin üç sıfırla başlayan (çətinliklə konfiqurasiya edildiyi kimi) heşləri olan blokları yaratmaq üçün bir az vaxt lazımdır.
Beləliklə, əsas blokçeyn quraşdırmamızın sonu oldu.
İşin sübutu mexanizmi sayəsində blokçeynimizə yeni blokların nə qədər tez əlavə olunduğunu tənzimləyə bilərik.
Bu, blokçeynlərdə ən əhəmiyyətli təhlükəsizlik xüsusiyyətidir. İndi bunun necə işlədiyini başa düşdükdən sonra, özünüzü yaratmağa başlayın!
Cavab yaz