Kitab “Ethereum Blockchain üçün Möhkəmlik Ağıllı Müqavilələrin Yaradılması. Praktik bələdçi »

Kitab “Ethereum Blockchain üçün Möhkəmlik Ağıllı Müqavilələrin Yaradılması. Praktik bələdçi »
Bir ildən artıqdır ki, “Ethereum Blockchain üçün Möhtəşəm Ağıllı Müqavilələrin Yaradılması” kitabı üzərində işləyirəm. Praktiki Bələdçi" kitabını təqdim etdi və indi bu iş tamamlandı və kitab Litr ilə nəşr olunur və mövcuddur.

Ümid edirəm ki, mənim kitabım Ethereum blockchain üçün Solidity smart kontaktlarını və paylanmış DApps yaratmağa tez başlamağınıza kömək edəcək. Praktik tapşırıqlarla 12 dərsdən ibarətdir. Onları tamamladıqdan sonra oxucu öz yerli Ethereum qovşaqlarını yarada, ağıllı müqavilələr dərc edə və onların metodlarına zəng edə, Oracle-dan istifadə edərək real dünya ilə smart müqavilələr arasında məlumat mübadiləsi edə və Rinkeby test debug şəbəkəsi ilə işləyə biləcək.

Kitab blokçeyn sahəsində qabaqcıl texnologiyalarla maraqlanan və maraqlı və perspektivli işlə məşğul olmağa imkan verəcək bilikləri tez bir zamanda əldə etmək istəyən hər kəsə ünvanlanıb.

Aşağıda kitabın məzmunu və birinci fəsli ilə tanış ola bilərsiniz (həmçinin Litr kitabın fraqmentləri mövcuddur). Rəy, şərh və təkliflər alacağıma ümid edirəm. Kitabın növbəti nəşrini hazırlayarkən bütün bunları nəzərə almağa çalışacağam.

MündəricatGirişKitabımız təkcə Ethereum blokçeyninin prinsiplərini anlamaq deyil, həm də bu şəbəkə üçün Solidity proqramlaşdırma dilində paylanmış DApps yaratmaqda praktiki bacarıqlar əldə etmək istəyənlər üçün nəzərdə tutulub.

Yalnız bu kitabı oxumaq deyil, dərslərdə təsvir olunan praktiki tapşırıqları yerinə yetirərək onunla işləmək daha yaxşıdır. İşləmək üçün sizə Debian və ya Ubuntu OS quraşdırılmış yerli kompüter, virtual və ya bulud serveri lazımdır. Bir çox işi yerinə yetirmək üçün Raspberry Pi-dən də istifadə edə bilərsiniz.

İlk dərsdə Ethereum blockchain-in iş prinsiplərinə və əsas terminologiyaya baxacağıq, həmçinin bu blokçeynin harada istifadə oluna biləcəyi haqqında danışacağıq.

Məqsəd ikinci dərs — Ubuntu və Debian serverində bu kurs çərçivəsində gələcək iş üçün şəxsi Ethereum blokçeyn node yaradın. Biz blokçeyn qovşağımızın işləməsini təmin edən geth kimi əsas kommunal proqramların, həmçinin mərkəzləşdirilməmiş məlumat saxlama demonunun quraşdırılması xüsusiyyətlərinə baxacağıq.

Üçüncü dərs sizə ucuz Raspberry Pi mikrokompüterində Ethereum ilə təcrübə aparmağı öyrədəcək. Rasberian əməliyyat sistemini (ƏS) Raspberry Pi-də, blokçeyn qovşağını gücləndirən Geth utilitində və Swarm mərkəzləşdirilməmiş məlumat saxlama demonunda quraşdıracaqsınız.

Dördüncü dərs Ethereum şəbəkəsindəki hesablara və kriptovalyuta vahidlərinə, həmçinin Geth konsolundan bir hesabdan digərinə vəsait köçürmə yollarına həsr olunub. Siz hesablar yaratmağı, pul köçürmə əməliyyatlarını başlatmağı, əməliyyat statusu və qəbzi əldə etməyi öyrənəcəksiniz.

Beşinci dərsdə Siz Ethereum şəbəkəsində smart müqavilələrlə tanış olacaq və onların Ethereum virtual maşını tərəfindən icrası haqqında məlumat əldə edəcəksiniz.

Ethereum özəl şəbəkəsində ilk ağıllı müqavilənizi yaradıb dərc edəcək və onun funksiyalarını necə çağıracağınızı öyrənəcəksiniz. Bunun üçün siz Remix Solidity IDE-dən istifadə edəcəksiniz. Siz həmçinin solc toplu kompilyatorunu necə quraşdırmağı və istifadə etməyi öyrənəcəksiniz.
Biz həmçinin Application Binary Interface (ABI) adlanan şey haqqında danışacağıq və sizə ondan necə istifadə etməyi öyrədəcəyik.

Altıncı dərs Node.js ilə işləyən JavaScript skriptlərinin yaradılmasına və Solidity smart müqavilələri ilə əməliyyatların yerinə yetirilməsinə həsr olunub.

Ubuntu, Debian və Rasberian OS-də Node.js-i quraşdıracaq, Ethereum lokal şəbəkəsində ağıllı müqavilə dərc etmək üçün skriptlər yazacaq və onun funksiyalarını çağıracaqsınız.

Bundan əlavə, siz skriptlərdən istifadə edərək adi hesablar arasında vəsait köçürməyi, həmçinin onları smart müqavilə hesablarına necə köçürməyi öyrənəcəksiniz.

Yeddinci dərsdə Siz Solidity ağıllı müqavilə tərtibatçıları arasında məşhur olan Truffle çərçivəsini necə quraşdırmağı və istifadə etməyi öyrənəcəksiniz. Siz truffle-müqavilə modulundan istifadə edərək müqavilə funksiyalarını çağıran JavaScript skriptləri yaratmağı və Truffle istifadə edərək ağıllı müqavilənizi sınamağı öyrənəcəksiniz.

Səkkizinci dərs Solidity məlumat növlərinə həsr edilmişdir. İmzalanmış və imzalanmamış tam ədədlər, imzalanmış ədədlər, sətirlər, ünvanlar, mürəkkəb dəyişənlər, massivlər, siyahılar, strukturlar və lüğətlər kimi məlumat növləri ilə işləyən ağıllı müqavilələr yazacaqsınız.

Doqquzuncu dərsdə Ethereum şəbəkəsi üçün ağıllı müqavilələr yaratmağa bir addım daha yaxın olacaqsınız. Siz Geth özəl şəbəkəsində, eləcə də Rinkeby test şəbəkəsində Truffle istifadə edərək müqavilələri dərc etməyi öyrənəcəksiniz. Rinkeby şəbəkəsində ağıllı müqavilənin sazlanması, onu əsas şəbəkədə dərc etməzdən əvvəl çox faydalıdır - orada demək olar ki, hər şey realdır, lakin pulsuzdur.

Dərsin bir hissəsi olaraq siz Rinkeby test şəbəkəsi qovşağı yaradacaq, onu vəsaitlə maliyyələşdirəcək və ağıllı müqavilə dərc edəcəksiniz.

Dərs 10 Ethereum Swarm paylanmış məlumat saxlanmasına həsr edilmişdir. Paylanmış yaddaşdan istifadə etməklə siz Ethereum blokçeynində böyük həcmdə məlumatların saxlanmasına qənaət etmiş olursunuz.

Bu dərslikdə siz yerli Swarm yaddaşı yaradacaq, fayllar və fayl kataloqları üzərində əməliyyatlar yazacaq və oxuyacaqsınız. Sonra siz ictimai Swarm şlüzlə işləməyi, Node.js-dən Swarm-a daxil olmaq üçün skriptlər yazmağı, həmçinin Perl Net::Ethereum::Swarm modulundan istifadə etməyi öyrənəcəksiniz.

Dərsin məqsədi 11 — məşhur Python proqramlaşdırma dili və Web3.py çərçivəsini istifadə edərək Solidity smart müqavilələri ilə işləmək ustası. Siz çərçivəni quraşdıracaqsınız, ağıllı müqaviləni tərtib etmək və dərc etmək üçün skriptlər yazacaqsınız və onun funksiyalarını çağıracaqsınız. Bu halda, Web3.py həm tək, həm də Truffle inteqrasiya olunmuş inkişaf mühiti ilə birlikdə istifadə ediləcək.

12-ci dərsdə Oracle istifadə edərək ağıllı müqavilələr və real dünya arasında məlumat ötürməyi öyrənəcəksiniz. Bu, veb saytlardan, IoT cihazlarından, müxtəlif cihazlardan və sensorlardan məlumat almaq və ağıllı müqavilələrdən məlumatları bu cihazlara göndərmək üçün faydalı olacaq. Dərsin praktiki hissəsində siz Rusiya Federasiyası Mərkəzi Bankının saytından USD və rubl arasında cari məzənnəni qəbul edən oracle və smart müqavilə yaradacaqsınız.

Dərs 1. Blokçeyn və Ethereum şəbəkəsi haqqında qısa məlumatDərsin məqsədi: Ethereum blokçeyninin iş prinsipləri, onun tətbiq sahələri və əsas terminologiyası ilə tanış olmaq.
Praktik tapşırıqlar: bu dərsə daxil deyil.

Bu gün çətin ki, blokçeyn texnologiyası (Blockchain), kriptovalyutalar (Kriptovalyuta və ya Kriptovalyuta), Bitcoin (Bitcoin), ilkin sikkə təklifi (ICO, İlkin sikkə təklifi), ağıllı müqavilələr (Smart Contract) haqqında heç nə eşitməmiş proqram tərtibatçısı yoxdur. eləcə də blokçeynlə əlaqəli digər anlayışlar və terminlər.

Blockchain texnologiyası yeni bazarlar açır və proqramçılar üçün iş yerləri yaradır. Əgər kriptovalyuta texnologiyalarının və ağıllı müqavilə texnologiyalarının bütün incəliklərini başa düşürsünüzsə, o zaman bu bilikləri praktikada tətbiq etməkdə problem yaşamamalısınız.

Qeyd etmək lazımdır ki, kriptovalyutalar və blokçeynlər ətrafında çoxlu spekulyasiyalar var. Kriptovalyuta məzənnələrinin dəyişməsi, piramidaların yaradılması, kriptovalyuta qanunvericiliyinin incəlikləri və s. haqqında müzakirələri bir kənara qoyacağıq. Təlim kursumuzda biz əsasən Ethereum blockchain (Ethereum, Ether) smart müqavilələrinin tətbiqinin texniki aspektlərinə və qeyri-mərkəzləşdirilmiş proqramların (Distributed Application, DApp) inkişafına diqqət yetirəcəyik.

Blockchain nədir

Blockchain (Block Chain) müəyyən bir şəkildə bir-birinə bağlı məlumat blokları zənciridir. Zəncirin başlanğıcında birinci blok (genezis bloku) və ya genezis bloku adlanan birinci blok var. Ondan sonra ikinci, sonra üçüncü və s.

Bütün bu məlumat blokları blokçeyn şəbəkəsinin çoxsaylı qovşaqlarında avtomatik olaraq təkrarlanır. Bu, blokçeyn məlumatlarının mərkəzləşdirilməmiş saxlanmasını təmin edir.
Blockchain sistemini şəbəkəyə qoşulmuş və məlumat blokları zəncirindəki bütün dəyişiklikləri təkrarlayan çoxlu sayda qovşaq (fiziki və ya virtual serverlər) kimi düşünə bilərsiniz. Bu, nəhəng multiserverli kompüterə bənzəyir və belə bir kompüterin (serverlərin) qovşaqları bütün dünyaya səpələnə bilər. Siz də kompüterinizi blokçeyn şəbəkəsinə əlavə edə bilərsiniz.

Paylanmış verilənlər bazası

Blockchain, blokçeyn şəbəkəsinin bütün qovşaqlarında təkrarlanan paylanmış verilənlər bazası kimi düşünülə bilər. Teorik olaraq, blokçeyn ən azı bir qovşaq işlədiyi müddətdə blokçeynin bütün bloklarını saxlayaraq işlək olacaq.

Paylanmış Məlumat Reyestri

Blokçeyni məlumatların və əməliyyatların (əməliyyatların) paylanmış kitabçası kimi düşünmək olar. Belə reyestr üçün başqa bir ad dəftərdir.

Məlumat paylanmış kitaba əlavə edilə bilər, lakin onu dəyişdirmək və ya silmək mümkün deyil. Bu qeyri-mümkünlüyə, xüsusən kriptoqrafik alqoritmlərin, zəncirə blokların əlavə edilməsi üçün xüsusi alqoritmlərin və mərkəzləşdirilməmiş məlumatların saxlanmasının istifadəsi ilə əldə edilir.

Bloklar əlavə edilərkən və əməliyyatlar (əməliyyatlar) yerinə yetirilərkən şəxsi və açıq açarlardan istifadə olunur. Onlar blokçeyn istifadəçilərinə yalnız öz məlumat bloklarına giriş imkanı verməklə məhdudlaşdırırlar.

Əməliyyatlar

Blockchain əməliyyatlar (əməliyyatlar) haqqında məlumatları bloklarda saxlayır. Eyni zamanda, köhnə, artıq başa çatmış əməliyyatlar geri qaytarıla və ya dəyişdirilə bilməz. Yeni əməliyyatlar yeni, əlavə edilmiş bloklarda saxlanılır.

Beləliklə, bütün əməliyyat tarixi blokçeynində dəyişməz olaraq qeyd edilə bilər. Buna görə də, blokçeyn, məsələn, bank əməliyyatlarını, müəllif hüquqları məlumatlarını, mülkiyyət sahiblərindəki dəyişikliklərin tarixini və s. təhlükəsiz saxlamaq üçün istifadə edilə bilər.

Ethereum blokçeynində sözdə sistem vəziyyətləri var. Əməliyyatlar icra olunduqca vəziyyət ilkin vəziyyətdən cari vəziyyətə keçir. Əməliyyatlar bloklarda qeydə alınır.

İctimai və özəl blokçeynlər

Burada qeyd etmək lazımdır ki, deyilənlərin hamısı yalnız ictimai blokçeyn şəbəkələri adlanan və heç bir fiziki və ya hüquqi şəxs, dövlət qurumu və ya hökumət tərəfindən idarə oluna bilməyən şəbəkələr üçün doğrudur.
Şəxsi blokçeyn şəbəkələri adlanan şəbəkələr öz yaradıcılarının tam nəzarəti altındadır və orada hər şey mümkündür, məsələn, zəncirin bütün bloklarının tam dəyişdirilməsi.

Blockchain-in praktik tətbiqləri

Blockchain nə üçün faydalı ola bilər?

Bir sözlə, blokçeyn bir-birinə etibar etməyən insanlar və ya şirkətlər arasında əməliyyatları (əməliyyatları) təhlükəsiz şəkildə həyata keçirməyə imkan verir. Blokçeyndə qeydə alınan məlumatlar (əməliyyatlar, şəxsi məlumatlar, sənədlər, sertifikatlar, müqavilələr, hesab-fakturalar və s.) qeydə alındıqdan sonra saxtalaşdırıla və ya dəyişdirilə bilməz. Buna görə də, blokçeyn əsasında, məsələn, müxtəlif növ sənədlərin etibarlı paylanmış reyestrlərini yaratmaq mümkündür.

Əlbəttə, bilirsiniz ki, kriptovalyuta sistemləri adi kağız pulları əvəz etmək üçün nəzərdə tutulmuş blokçeynlər əsasında yaradılır. Kağız pula fiat da deyilir (Fiat Money-dən).
Blockchain bloklarda qeydə alınan əməliyyatların saxlanmasını və dəyişməzliyini təmin edir, buna görə də ondan kriptovalyuta sistemləri yaratmaq üçün istifadə edilə bilər. Bu, müxtəlif istifadəçilər (hesablar) arasında kriptovalyutaların köçürülməsinin bütün tarixini ehtiva edir və istənilən əməliyyat izlənilə bilər.

Kriptovalyuta sistemləri daxilində əməliyyatlar anonim ola bilsə də, kriptovalyutanın çıxarılması və onun fiat pula dəyişdirilməsi adətən kriptovalyuta aktivinin sahibinin kimliyinin aşkarlanması ilə nəticələnir.

Ethereum şəbəkəsində işləyən proqram təminatı olan ağıllı müqavilələr, əməliyyatların bağlanması və onların icrasına nəzarət prosesini avtomatlaşdırmağa imkan verir. Bu, əməliyyat üçün ödəniş Ether kriptovalyutası ilə həyata keçirildikdə xüsusilə təsirlidir.

Solidity proqramlaşdırma dilində yazılmış Ethereum blockchain və Ethereum smart müqavilələri, məsələn, aşağıdakı sahələrdə istifadə edilə bilər:

  • sənədlərin notarial təsdiqinə alternativ;
  • daşınmaz əmlak obyektlərinin reyestrinin və daşınmaz əmlak obyektləri ilə əməliyyatlar haqqında məlumatların saxlanılması;
  • əqli mülkiyyətə dair müəllif hüquqları məlumatlarının (kitablar, şəkillər, musiqi əsərləri və s.) saxlanması;
  • müstəqil səsvermə sistemlərinin yaradılması;
  • maliyyə və bank işi;
  • beynəlxalq miqyasda logistika, malların hərəkətini izləmək;
  • fərdi məlumatların şəxsiyyət vəsiqəsi sisteminin analoqu kimi saxlanması;
  • ticarət sahəsində təhlükəsiz əməliyyatlar;
  • tibbi müayinələrin nəticələrinin, habelə müəyyən edilmiş prosedurların tarixinin saxlanması

Blockchain ilə bağlı problemlər

Ancaq əlbəttə ki, hər şey göründüyü qədər sadə deyil!

Məlumatların blokçeynə əlavə edilməzdən əvvəl yoxlanılması ilə bağlı problemlər (məsələn, onlar saxtadır?), blokçeynlə işləmək üçün istifadə olunan sistem və tətbiqi proqram təminatının təhlükəsizliyi ilə bağlı problemlər, girişi oğurlamaq üçün sosial mühəndislik üsullarından istifadə imkanları ilə bağlı problemlər var. kriptovalyuta pul kisələrinə və s.. P.

Yenə də əgər söhbət qovşaqları bütün dünyaya səpələnmiş ictimai blokçeyndən deyil, bir şəxsə və ya təşkilata məxsus özəl blokçeyndən gedirsə, onda burada etimad səviyyəsi etibar səviyyəsindən yüksək olmayacaq. bu şəxsdə və ya bu təşkilatda.

Onu da nəzərə almaq lazımdır ki, blokçeynində qeydə alınan məlumatlar hər kəs üçün əlçatan olur. Bu mənada blokçeyn (xüsusilə ictimai) məxfi məlumatların saxlanması üçün uyğun deyil. Bununla belə, blokçeynlə bağlı məlumatların dəyişdirilə bilməməsi müxtəlif növ saxtakarlıqların qarşısını almağa və ya araşdırmağa kömək edə bilər.

Ethereum mərkəzləşdirilməmiş tətbiqləri, kriptovalyuta ilə istifadə üçün ödəniş etsəniz, rahat olacaq. Kriptovalyutaya sahib olan və ya onu almaq istəyən insanlar nə qədər çox olsa, DApps və ağıllı müqavilələr bir o qədər populyarlaşacaq.

Blockchain ilə onun praktiki tətbiqinə mane olan ümumi problemlərə yeni blokların əlavə oluna biləcəyi məhdud sürət və əməliyyatların nisbətən yüksək qiyməti daxildir. Amma bu sahədə texnologiya fəal şəkildə inkişaf edir və texniki problemlərin zamanla həll olunacağına ümidlər var.

Başqa bir problem, Ethereum blokçeynindəki ağıllı müqavilələrin virtual maşınların təcrid olunmuş mühitində işləməsi və real dünya məlumatlarına çıxışı olmamasıdır. Xüsusilə, ağıllı müqavilə proqramı özü saytlardan və ya hər hansı fiziki cihazlardan (sensorlar, kontaktlar və s.) məlumatları oxuya bilməz və həmçinin hər hansı xarici cihazlara məlumat çıxara bilməz. Bu problemi və onun həlli yollarını sözdə Oracles - ağıllı müqavilələrin məlumat vasitəçilərinə həsr olunmuş dərsdə müzakirə edəcəyik.

Hüquqi məhdudiyyətlər də var. Bəzi ölkələrdə, məsələn, kriptovalyutadan ödəniş vasitəsi kimi istifadə etmək qadağandır, lakin siz ona qiymətli kağızlar kimi bir növ rəqəmsal aktiv kimi sahib ola bilərsiniz. Bu cür aktivləri birjada almaq və satmaq olar. İstənilən halda, kriptovalyutalarla işləyən layihə yaratarkən, layihənizin yurisdiksiyasına aid olduğu ölkənin qanunvericiliyi ilə tanış olmalısınız.

Blockchain zənciri necə yaranır

Artıq dediyimiz kimi, blokçeyn məlumat bloklarının sadə zənciridir. Əvvəlcə bu zəncirin birinci bloku əmələ gəlir, sonra ona ikinci əlavə edilir və s. Tranzaksiya məlumatlarının bloklarda saxlandığı güman edilir və ən son bloka əlavə edilir.

Şəkildə. 1.1-də biz bloklar ardıcıllığının ən sadə versiyasını göstərdik, burada birinci blok növbəti bloka aiddir.

Kitab “Ethereum Blockchain üçün Möhkəmlik Ağıllı Müqavilələrin Yaradılması. Praktik bələdçi »
düyü. 1.1. Blokların sadə ardıcıllığı

Bu seçimlə, zəncirdəki hər hansı bir blokun məzmununu dəyişdirmək çox asandır, çünki bloklarda dəyişikliklərdən qorunmaq üçün heç bir məlumat yoxdur. Nəzərə alsaq ki, blokçeyn aralarında etibar olmayan insanlar və şirkətlər tərəfindən istifadə olunmaq üçün nəzərdə tutulub, belə nəticəyə gələ bilərik ki, məlumatların saxlanması üçün bu üsul blokçeyn üçün uyğun deyil.

Blokları saxtakarlıqdan qorumağa başlayaq. Birinci mərhələdə biz hər bir bloku yoxlama məbləği ilə qorumağa çalışacağıq (şək. 1.2).

Kitab “Ethereum Blockchain üçün Möhkəmlik Ağıllı Müqavilələrin Yaradılması. Praktik bələdçi »
düyü. 1.2. Yoxlama məbləği ilə bu bloklar üçün qorunma əlavə edilməsi

İndi təcavüzkar bloku sadəcə dəyişdirə bilməz, çünki blok məlumatlarının yoxlama cəmini ehtiva edir. Yoxlama məbləğinin yoxlanılması məlumatların dəyişdirildiyini göstərəcək.

Yoxlama məbləğini hesablamaq üçün MD-5, SHA-1, SHA-256 və s. kimi hashing funksiyalarından birini istifadə edə bilərsiniz. Hash funksiyaları verilənlər bloku üzərində dönməz əməliyyatlar yerinə yetirməklə dəyəri (məsələn, sabit uzunluqlu mətn sətrini) hesablayır. Əməliyyatlar hash funksiyasının növündən asılıdır.

Məlumat blokunun məzmunu bir qədər dəyişsə belə, hash dəyəri də dəyişəcək. Hash funksiyasının dəyərini təhlil edərək, onun hesablandığı məlumat blokunu yenidən qurmaq mümkün deyil.

Belə müdafiə kifayət edəcəkmi? Təəssüf ki, heç bir.

Bu sxemdə yoxlama məbləği (hash funksiyası) yalnız fərdi blokları qoruyur, lakin bütün blokçeyni deyil. Hash funksiyasının hesablanması alqoritmini bilən təcavüzkar blokun məzmununu asanlıqla əvəz edə bilər. Həm də heç bir şey ona blokları zəncirdən çıxarmağa və ya yenilərini əlavə etməyə mane olmayacaq.

Bütövlükdə bütün zənciri qorumaq üçün hər bir blokda verilənlərlə birlikdə əvvəlki blokdan verilənlərin hashini də saxlaya bilərsiniz (şək. 1.3).

Kitab “Ethereum Blockchain üçün Möhkəmlik Ağıllı Müqavilələrin Yaradılması. Praktik bələdçi »
düyü. 1.3. Məlumat blokuna əvvəlki blokun hashını əlavə edin

Bu sxemdə bloku dəyişdirmək üçün bütün sonrakı blokların hash funksiyalarını yenidən hesablamaq lazımdır. Deyəsən, problem nədir?

Həqiqi blokçeynlərdə yeni blokların əlavə edilməsi üçün əlavə olaraq süni çətinliklər yaradılır - çoxlu hesablama resursları tələb edən alqoritmlərdən istifadə olunur. Nəzərə alsaq ki, blokda dəyişiklik etmək üçün təkcə bu bloku deyil, bütün sonrakıları yenidən hesablamaq lazımdır, bunu etmək çox çətin olacaq.

Onu da xatırlayaq ki, blokçeyn məlumatları çoxsaylı şəbəkə qovşaqlarında saxlanılır (təkrarlanır), yəni. Mərkəzləşdirilməmiş saxlama istifadə olunur. Və bu, blokun saxtalaşdırılmasını daha da çətinləşdirir, çünki bütün şəbəkə qovşaqlarında dəyişikliklər edilməlidir.

Bloklar əvvəlki blok haqqında məlumatları saxladığından, zəncirdəki bütün blokların məzmununu yoxlamaq mümkündür.

Ethereum blockchain

Ethereum blockchain, paylanmış DApp-ların yaradıla biləcəyi bir platformadır. Digər platformalardan fərqli olaraq, Ethereum Solidity proqramlaşdırma dilində yazılmış ağıllı müqavilələrdən (ağıllı müqavilələr) istifadə etməyə imkan verir.

Bu platforma 2013-cü ildə Bitcoin Magazine-in yaradıcısı Vitalik Buterin tərəfindən yaradılmış və 2015-ci ildə istifadəyə verilmişdir. Təlim kursumuzda öyrənəcəyimiz və ya edəcəyimiz hər şey xüsusi olaraq Ethereum blockchain və Solidity smart müqavilələrinə aiddir.

Madencilik və ya blokların necə yaradıldığı

Mədənçıxarma blokçeyn zəncirinə yeni bloklar əlavə etmək üçün kifayət qədər mürəkkəb və resurs tutumlu bir prosesdir və heç də “kriptovalyuta mədənçiliyi” deyil. Mining blokcheynin funksionallığını təmin edir, çünki Ethereum blokçeyninə əməliyyatlar əlavə etmək üçün məsul olan bu prosesdir.

Blokların əlavə edilməsində iştirak edən insanlar və təşkilatlar mədənçilər adlanır.
Miner qovşaqlarında işləyən proqram şəbəkə tərəfindən müəyyən edilmiş xüsusi hash dəyərini əldə etmək üçün sonuncu blok üçün Nonce adlı hashing parametrini tapmağa çalışır. Ethereum-da istifadə edilən Ethash hashing alqoritmi Nonce dəyərini yalnız ardıcıl axtarış vasitəsilə əldə etməyə imkan verir.

Əgər madenci node düzgün Nonce dəyərini tapırsa, bu, işin sübutu adlanır (PoW, Proof-of-work). Bu halda, Ethereum şəbəkəsinə blok əlavə olunarsa, mədənçi şəbəkə valyutasında - Eterdə müəyyən mükafat alır. Yazı zamanı mükafat 5 Eterdir, lakin zaman keçdikcə bu azalacaq.

Beləliklə, Ethereum madencileri bloklar əlavə etməklə şəbəkənin işləməsini təmin edir və bunun üçün kriptovalyuta pulları alırlar. İnternetdə mədənçilər və mədənçilik haqqında çoxlu məlumat var, lakin biz Ethereum şəbəkəsində Solidity müqavilələri və DApps yaratmağa diqqət yetirəcəyik.

Dərs xülasəsi

Birinci dərsdə siz blokçeynlə tanış oldunuz və onun xüsusi olaraq qurulmuş bloklar ardıcıllığı olduğunu öyrəndiniz. Əvvəllər qeydə alınmış blokların məzmunu dəyişdirilə bilməz, çünki bu, bir çox şəbəkə qovşaqlarında bütün sonrakı blokların yenidən hesablanmasını tələb edir ki, bu da çoxlu resurs və vaxt tələb edir.

Blockchain əməliyyatların nəticələrini saxlamaq üçün istifadə edilə bilər. Onun əsas məqsədi aralarında etibar olmayan tərəflər (şəxslər və təşkilatlar) arasında təhlükəsiz əməliyyatları təşkil etməkdir. Ethereum blockchain və Solidity smart müqavilələrinin hansı xüsusi biznes sahələrində və hansı sahələrdə istifadə oluna biləcəyini öyrəndiniz. Bu, bank sektoru, mülkiyyət hüquqlarının qeydiyyatı, sənədlər və s.

Blockchain istifadə edərkən müxtəlif problemlərin yarana biləcəyini də öyrəndiniz. Bunlar blokçeynə əlavə edilmiş məlumatların yoxlanılması problemləri, blokçeynin sürəti, əməliyyatların dəyəri, ağıllı müqavilələr və real dünya arasında məlumat mübadiləsi problemi, həmçinin istifadəçi hesablarından kriptovalyuta vəsaitlərini oğurlamağa yönəlmiş təcavüzkarların potensial hücumlarıdır. .

Blockchain-ə yeni blokların əlavə edilməsi prosesi kimi mədənçilik haqqında da qısaca danışdıq. Əməliyyatları başa çatdırmaq üçün mədənçilik lazımdır. Mining ilə məşğul olanlar blokçeynin işləməsini təmin edir və bunun üçün kriptovalyutada mükafat alırlar.

Dərs 2. Ubuntu və Debian ƏS-də iş mühitinin hazırlanmasıƏməliyyat sisteminin seçilməsi
Lazımi kommunalların quraşdırılması
Ubuntu-da Geth və Swarm-ın quraşdırılması
Debian-da Geth və Swarm quraşdırılması
İlkin hazırlıq
Go paylanması endirilir
Mühit dəyişənlərinin təyin edilməsi
Go versiyası yoxlanılır
Geth və Swarm quraşdırılması
Şəxsi blokçeyn yaratmaq
genesis.json faylı hazırlanır
İş üçün bir kataloq yaradın
Hesab yarat
Düyün işə salınması başlayır
Node Launch Options
Bizim qovşağımıza qoşulun
Mədənin idarə edilməsi və balansın yoxlanılması
Geth konsolunun bağlanması
Dərs xülasəsi

Dərs 3. Raspberry Pi 3-də iş mühitinin hazırlanmasıRaspberry Pi 3-ün işə hazırlanması
Rasberian quraşdırılması
Yeniləmələr quraşdırılır
SSH Girişini aktivləşdirir
Statik IP ünvanının təyin edilməsi
Lazımi kommunalların quraşdırılması
Go quraşdırılır
Go paylanması endirilir
Mühit dəyişənlərinin təyin edilməsi
Go versiyası yoxlanılır
Geth və Swarm quraşdırılması
Şəxsi blokçeyn yaratmaq
Hesabınızı və balansınızı yoxlayır
Dərs xülasəsi

Dərs 4. Hesablar və hesablar arasında pul köçürmələriHesablara baxın və əlavə edin
Hesabların siyahısına baxın
Hesabın əlavə edilməsi
geth hesabı əmr seçimləri
Hesab parolları
Ethereum-da kriptovalyuta
Ethereum Valyuta Vahidləri
Hesablarımızın cari qalığını müəyyən edirik
Bir hesabdan digərinə pul köçürün
eth.sendTransaction metodu
Tranzaksiya statusuna baxın
Əməliyyat qəbzi
Dərs xülasəsi

Dərs 5. İlk müqavilənizi dərc etməkEthereum-da ağıllı müqavilələr
Ağıllı Müqavilənin İcrası
Ethereum Virtual Maşın
İnteqrasiya edilmiş inkişaf mühiti Remix Solidity IDE
İşləyən kompilyasiya
Müqavilə funksiyalarını çağırmaq
Şəxsi şəbəkədə müqavilənin dərci
ABI tərifinin və müqavilənin ikili kodunun əldə edilməsi
Müqavilənin dərci
Müqavilə dərc əməliyyat statusu yoxlanılır
Müqavilə funksiyalarını çağırmaq
Toplu kompilyator solc
Ubuntu-da solc quraşdırılması
Debian-da solc quraşdırılması
HelloSol müqaviləsinin tərtib edilməsi
Müqavilənin dərci
Rasberian-da solc quraşdırılması
Dərs xülasəsi

Dərs 6. Ağıllı müqavilələr və Node.jsNode.js quraşdırılır
Ubuntu-da quraşdırma
Debian üzərində quraşdırma
Ganache-cli-nin quraşdırılması və işə salınması
Web3 quraşdırılması
Solc quraşdırılması
Rasberian-da Node.js quraşdırılması
Konsolda hesabların siyahısını əldə etmək üçün skript
Ağıllı müqavilə dərc etmək üçün skript
Parametrləri işə salın və əldə edin
Başlatma seçimləri əldə edilir
Müqavilənin tərtibi
Hesabınızın blokdan çıxarılması
ABI və müqavilə ikili kodu yüklənir
Lazım olan qaz miqdarının hesablanması
Bir obyekt yaradın və müqaviləni dərc etməyə başlayın
Müqavilənin nəşri skriptinin icrası
Ağıllı müqavilə funksiyalarını çağırmaq
Dərc edilmiş ağıllı müqaviləni yeniləmək mümkündürmü?
Web3 versiyası 1.0.x ilə işləmək
Hesabların siyahısını əldə etmək
Müqavilənin dərci
Müqavilə funksiyalarını çağırmaq
Bir hesabdan digərinə pul köçürün
Müqavilə hesabına vəsait köçürün
HelloSol smart müqaviləsinin yenilənməsi
Hesab balansınıza baxmaq üçün skript yaradın
call_contract_get_promise.js skriptinə getBalance funksiyasına zəng əlavə edin
Ağıllı müqavilə hesabını doldururuq
Dərs xülasəsi

Dərs 7. Truffle-a girişTruffle quraşdırılması
HelloSol layihəsi yaradın
Layihə kataloqu və fayllarının yaradılması
Müqavilə kataloqu
Kataloq köçürmələri
Kataloq testi
truffle-config.js faylı
HelloSol müqaviləsinin tərtib edilməsi
Müqaviləni dərc etməyə başlayın
Truffle Prompt-da HelloSol Müqavilə Funksiyalarına Zəng etmək
Node.js ilə işləyən JavaScript skriptindən HelloSol müqavilə funksiyalarının çağırılması
Truffle-müqavilə modulunun quraşdırılması
Müqavilə funksiyalarının getValue və getString çağırılması
Müqavilə funksiyalarının çağırılması setValue və setString
Müqavilənin dəyişdirilməsi və yenidən nəşri
Web3 versiyası 1.0.x ilə işləmək
HelloSol smart müqaviləsinə dəyişikliklər edilməsi
Müqavilə metodlarını çağırmaq üçün skriptlər
Truffle-da sınaq
Möhkəmlik testi
JavaScript testi
Dərs xülasəsi

Dərs 8. Möhkəmlik Məlumat NövləriMəlumat növlərinin öyrənilməsi üçün müqavilə
Boolean məlumat növləri
İşarəsiz tam ədədlər və işarəli tam ədədlər
Sabit nöqtə nömrələri
ünvan
Kompleks tipli dəyişənlər
Sabit Ölçü Massivləri
Dinamik massivlər
Transfer
Strukturlar
Lüğətlərin xəritəsi
Dərs xülasəsi

Dərs 9. Müqavilələrin özəl şəbəkəyə və Rinkeby şəbəkəsinə miqrasiyasıTruffle-dan özəl Geth şəbəkəsinə müqavilənin dərc edilməsi
Şəxsi şəbəkə qovşağının hazırlanması
İş üçün müqavilənin hazırlanması
Müqavilənin tərtib edilməsi və Truffle şəbəkəsinə köçürülməsi
Yerli şəbəkə miqrasiyasına başlamaq
Truffle artefaktlarının əldə edilməsi
Truffle-dan Rinkeby test şəbəkəsinə müqavilənin dərc edilməsi
Rinkeby ilə işləmək üçün Geth nodeunun hazırlanması
Düyün sinxronizasiyası
Hesabların əlavə edilməsi
Rinkeby hesabınızı efirlə doldurun
Rinkeby şəbəkəsinə müqavilə miqrasiyasının işə salınması
Rinkeby şəbəkəsində müqavilə məlumatlarına baxmaq
Rinkeby Network üçün Truffle Konsolu
Müqavilə funksiyalarını çağırmağın daha asan yolu
Node.js istifadə edərək müqavilə üsullarına zəng
Rinkby üçün Truffle konsolunda hesablar arasında pul köçürün
Dərs xülasəsi

Dərs 10. Ethereum Swarm Mərkəzləşdirilməmiş Məlumat SaxlamasıEthereum Swarm necə işləyir?
Swarm-ın quraşdırılması və işə salınması
Fayllar və qovluqlarla əməliyyatlar
Faylın Ethereum Swarm-a yüklənməsi
Ethereum Swarm-dan fayl oxunur
Yüklənmiş faylın manifestinə baxın
Alt kataloqları olan qovluqların yüklənməsi
Yüklənmiş qovluqdan faylın oxunması
İctimai Swarm Gateway istifadə
Node.js skriptlərindən Swarm-a daxil olmaq
Perl Net::Ethereum::Swarm modulu
Net::Ethereum::Swarm modulunun quraşdırılması
Məlumatların yazılması və oxunması
Dərs xülasəsi

Dərs 11. Python-da Ethereum ilə işləmək üçün Web3.py çərçivəsiWeb3.py quraşdırılır
Lazımi paketlərin yenilənməsi və quraşdırılması
Easysolc modulunun quraşdırılması
Web3.py istifadə edərək müqavilənin dərc edilməsi
Müqavilənin tərtibi
Provayderə qoşulur
Müqavilə dərcini həyata keçirin
Müqavilə ünvanını və abi-ni faylda saxlamaq
Müqavilənin nəşri skriptinin icrası
Zəng Müqavilə Metodları
JSON faylından müqavilənin ünvanı və abi oxunması
Provayderə qoşulur
Müqavilə obyektinin yaradılması
Zəng Müqavilə Metodları
Truffle və Web3.py
Dərs xülasəsi

Dərs 12. OraclesAğıllı müqavilə xarici dünyadan gələn məlumatlara etibar edə bilərmi?
Blockchain məlumat vasitəçiləri kimi Oracle
Verilənlər mənbəyi
Mənbədən məlumatları təmsil etmək üçün kod
Blockchain-də valyuta məzənnəsini qeyd etmək üçün Oracle
USDRateOracle Müqaviləsi
Ağıllı müqavilədə məzənnənin yenilənməsi
Veb Soket Provayderindən istifadə
RateUpdate hadisəsi gözlənilir
RateUpdate hadisəsini idarə etmək
Ağıllı müqavilədə məlumat yeniləməsinə başlamaq
Dərs xülasəsi

Mənbə: www.habr.com

Добавить комментарий