Kitab "Ethereum Blockchain üçün Solidity Ağı Təminatlarının Yaradılması. Praktik Bələdçi"

Kitab "Ethereum Blockchain üçün Solidity Ağı Təminatlarının Yaradılması. Praktik Bələdçi"
Bir ildən çoxdur ki, mən "Ethereum blokçeynində Solidity üçün ağıllı müqavilələr yaratmaq. Praktik rəhbərlik" adlı kitab üzərində çalışıram, və indi bu iş tamamlandı, kitab nəşr olundu və Litres-də mövcuddur..

Ümid edirəm ki, kitabım Solidity ilə ağıllı müqavilələrin və Ethereum blokçeyni üçün paylanmış tətbiqlərin yaradılmasına tez başlamağa kömək edəcək. O, praktiki tapşırıqlar ilə 12 dərsdən ibarətdir. Onları tamamlayan oxucu öz lokal Ethereum düyünlərini yarada, ağıllı müqavilələri yerləşdirə və onların metodlarını çağıraraq, real dünya ilə ağıllı müqavilələr arasında məlumat mübadiləsi apararaq, Rinkeby test şəbəkəsi ilə işləyə biləcək.

Kitab, blokçeyn texnologiyalarında qabaqcıl biliklərə yiyələnmək istəyən və maraqlı və perspektivli işlərlə məşğul olmaq istəyən hər kəs üçün nəzərdə tutulmuşdur.

Aşağıda kitabın məzmunu və birinci fəslini (həmçinin Litres-də kitabın parçaları da mövcuddur). Geri dönüş, şərhlər və təkliflər almağı ümid edirəm. Bütün bunları gələcək kitab redaksiyasını hazırlayarkən nəzərə alacağım.

MündəricatGirişKitabımız, yalnız Ethereum blokçeyni prinsiplərini anlamaqla yanaşı, bu şəbəkədə Solidity proqramlaşdırma dilində paylanmış tətbiqlərin yaradılması üzrə praktiki biliklər əldə etmək istəyənlər üçün hazırlandı.

Bu kitabı sadəcə oxumaq yerinə, dərslərdə təsvir olunan praktiki tapşırıqları yerinə yetirmək üçün işləmək daha yaxşıdır. İş üçün, yerli kompüter, virtual və ya bulud serveri ilə Debian və ya Ubuntu OS quraşdırılmalıdır. Həmçinin, bir çox tapşırıqları yerinə yetirmək üçün Raspberry Pi-dən istifadə edə bilərsiniz.

Birinci dərs Ethereum blokçeyni prinsiplərini və əsas terminologiyanı öyrənəcək, həmçinin bu blokçeynin harada istifadə oluna biləcəyini izah edəcəyik.

İkinci dərsin məqsədi Ethereum-un özəl blokçeyni düyünü yaratmaqdır ki, bu da bu kurs çərçivəsində Ubuntu və Debian serverində işləmək üçündür. Biz, blokçeynimizdəki düyünün işləməsini təmin edən geth kimi əsas utilitlərin quraşdırılması xüsusiyyətlərini müzakirə edəcəyik, eləcə də mərkəzləşdirilməmiş məlumat saxlama xidməti olan swarm-da demonu. Üçüncü dərs

sizi Raspberry Pi-də uyğun qiymətli eksperimentləri aparmağa öyrədəcək. Siz Raspberry Pi-də Rasberian əməliyyat sistemini, blokçeynin düyününün işləməsini təmin edən Geth utilitini, həmçinin mərkəzləşdirilməmiş məlumat saxlama xidməti Swarm-da demonu quraşdıracaqsınız. Dördüncü dərs

Ethereum şəbəkəsində hesablar və kriptovalyuta birimlərinə həsr olunur və Geth konsolundan bir hesabdan digərinə vəsaitlərin köçürülməsi yollarını öyrənəcəksiniz. Siz hesablar yaradacaq, vəsait köçürmə əməliyyatlarını başlatacaqsınız, əməliyyatın vəziyyətini və onun kvitansiyasını əldə edəcəksiniz. Beşinci dərsdə

Ethereum şəbəkəsində ağıllı müqavilələrlə tanış olacaqsınız, onların Ethereum virtual maşını tərəfindən necə icra edildiyini öyrənəcəksiniz. вы познакомитесь со смарт-контрактами в сети Ethereum, узнаете об их выполнении виртуальной машиной Ethereum.

Siz Ethereum özəl şəbəkəsində ilk smart müqavilənizi yaradacaq və yayımlayacaq, onun funksiyalarını necə çağırmağı öyrənəcəksiniz. Bunun üçün Remix Solidity IDE inkişaf mühitindən istifadə edəcəksiniz. Həmçinin, solc paket tərtibçisini quraşdırmağı və istifadəsini öyrənəcəksiniz.
Eyni zamanda, Application Binary Interface (ABI) adlanan ikili tətbiq interfeysi haqqında danışacağıq və onun istifadə etməyi öyrədəcəyik.

Altıncı dərs Solidity smart müqavilələri ilə işləyən Node.js altında çalışan JavaScript skriptlərinin yaradılmasına həsr olunub.

Ubuntu, Debian və Rasberian əməliyyat sistemində Node.js quraşdıracaq, Ethereum özəl şəbəkəsində smart müqaviləni yayımlamaq və onun funksiyalarını çağırmaq üçün skriptlər yazacaqsınız.

Bundan əlavə, skriptlər vasitəsilə adi hesablar arasında və smart müqavilələrin hesablarına vəsait köçürməyi öyrənəcəksiniz.

Yeddinci dərs Solidity smart müqavilələri üçün populyar olan Truffle inteqrasiya mühitini quraşdırmağı və istifadə etməyi öyrənəcəksiniz. JavaScript skriptləri yaradacaqsınız, truffle-contract modulu vasitəsilə müqavilələrin funksiyalarını çağıracaq və Truffle vasitəsilə smart müqavilənizi test edəcəksiniz.

Səkkizinci dərs Solidity məlumat tiplərinə həsr olunub. Zəngin və zənginsiz tam ədədlər, işarəli ədədlər, sətirlər, ünvanlar, mürəkkəb dəyişənlər, massivlər, enumerasiyalar, strukturlar və lüğətlər kimi məlumat tipləri ilə işləyən smart müqavilələr yaradacaqsınız.

Doqquzuncu dərs Ethereum əsas şəbəkəsi üçün smart müqavilələri yaratmağa bir addım daha yaxınlaşacaqsınız. Truffle vasitəsilə Geth özəl şəbəkəsində və Rinkeby test şəbəkəsində müqavilələri yayımlamağı öyrənəcəksiniz. Rinkeby şəbəkəsində smart müqaviləni debug etməklə əsas şəbəkəyə yayımlamadan əvvəl çox faydalıdır - orada demək olar ki, hər şey gerçəkdir, amma pulsuz.

Dərs çərçivəsində Rinkeby test şəbəkəsinin düyününü yaradacaq, onu vəsaitlə dolduracaq və smart müqavilənizi yayımlayacaqsınız.

Dərs 10 Ethereum Swarm-da paylanmış verilənlər depolarına həsr olunub. Paylanmış depolardan istifadə etməklə, Ethereum blokçeyndə böyük həcmli verilənlərin saxlanmasına qənaət edirsiniz.

Bu dərs çərçivəsində yerli Swarm depolmasını yaradacaq, faylların yazılması və oxunması əməliyyatlarını həyata keçirəcək, eyni zamanda fayl kataloqları ilə işləyəcəksiniz. Daha sonra, Swarm-a Node.js-dən müraciət etmək üçün skriptlər yazacaqsınız və Perl Net::Ethereum::Swarm modulu vasitəsilə işləyəcəksiniz.

Dərs 11-in məqsədi Solidity smart müqavilələri ilə məşğul olmaq üçün populyar Python proqramlaşdırma dilini və Web3.py çərçivəsini öyrənməkdir. Bu çərçivəni quraşdıracaq, smart müqavilənin tərtibi və yayımlanması, eyni zamanda onun funksiyalarını çağırmaq üçün skriptlər yazacaqsınız. Web3.py həm ayrı, həm də Truffle inteqrasiya mühitinə birlikdə istifadə ediləcək.

12-ci dərsdə sizin məlumatları ağırlanan müqavilələrlə və real dünya arasında ötürməyi öyrənəcəksiniz oracle-lardan istifadə etməklə. Bu sizə veb saytlarından, IoT cihazlarından, müxtəlif alətlərdən və sensorlardan məlumat əldə etmək və bu məlumatları ağırlanan müqavilələrdən bu cihazlara göndərmək üçün faydalı olacaq. Dərsin praktiki hissəsində siz bir oracle yaradacaq və Rusiyanın Mərkəzi Bankının saytından USD-rubl mübadilə kursunu əldə edən ağırlanan 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, tətbiq sahələri və əsas terminologiyası ilə tanış olmaq.
Praktiki tapşırıqlar: bu dərsdə təsdiq edilmişdir.

Bugün proqram təminatı (ПО) inkişaf etdirən bir mütəxəssis yoxdur ki, blokçeyn (Blockchain) texnologiyası, kriptovalyutalar (Cryptocurrency və ya Crypto Currency), bitcoin (Bitcoin), ilkin coin yerləşdirmə (ICO, Initial coin offering), ağırlanan müqavilələr (Smart Contract) və blokçeyn ilə əlaqəli digər anlayışlar və terminlər barədə heç nə eşitməsin.

Blokçeyn texnologiyası yeni bazarları açır və proqramçılar üçün iş yerləri yaradır. Əgər siz kriptovalyuta texnologiyalarının və ağırlanan müqavilələrin bütün incəliklərini öyrənirsinizsə, bu biliklərin tətbiqində heç bir problem yaşamamalısınız.

Deməliyik ki, kriptovalyutalar və blokçeyn ilə bağlı daudz spekulyasiyalar yaranır. Biz kriptovalyutaların qiymət dəyişiklikləri, piramidaların yaradılması, kriptovalyuta qanunvericiliyi və s. barədə mülahizələri bir kənara qoyacağıq. Bizim təhsil kursumuz əsasən Ethereum blokçeynində ağırlanan müqavilələrin tətbiqi və belə çağırılan desentralizə olunmuş tətbiqlərin (Distributed Application, DApp) inkişafına yönələcək.

Blokçeyn nədir

Blokçeyn (Blockchain, Block Chain) məlumat bloklarının müəyyən bir şəkildə bir-birinə bağlı zənciridir. Zəncirin əvvəlində birinci blok, ilkin blok (genesis block) və ya genetik blok adlanır. Onun ardınca ikinci, sonra üçüncü və s. gəlir.

Bütün bu məlumat blokları avtomatik olaraq blokçeyn şəbəkəsinin çoxsaylı nodlarında çoxaldılır. Beləliklə, blokçeyn məlumatlarının desentralizə olunmuş saxlanılması təmin edilir.
Siz blokçeyn sistemini bir çox nodlardan (fiziki və ya virtual serverlərdən) ibarət bir şəbəkə kimi təsəvvür edə bilərsiniz və bu nodlar məlumat blokları zəncirindəki bütün dəyişiklikləri çoxaldır. Bu, nəhəng bir çox serverli kompüterə bənzəyir, burada bu kompüterin nodları (serverləri) dünyada müxtəlif yerlərdə yerləşə bilər. Və siz də kompüterinizi blokçeyn şəbəkəsinə əlavə edə bilərsiniz.

Paylaşdırılmış məlumat bazası

Blokçeni, bütün bloklarin saxlanıldığı ən az bir düyün işlədiyi müddətcə işləyəcək bir paylanmış verilənlər bazası kimi təsəvvür etmək olar.

Paylanmış verilənlər registri

Blokçeni, bu paylanmış verilənlər və əməliyyatlar (transaksiyalar) registri kimi təsəvvür etmək olar. Belə bir registrin digər adı — debet kitabıdır.

Paylanmış registrə verilənlər əlavə oluna bilər, amma onların dəyişdirilməsi və ya silinməsi mümkün deyil. Bu mümkün olmayanlıq, xüsusilə kriptografik alqoritmlərin tətbiqi, blokların zəncirə əlavə edilməsi üçün xüsusi alqoritmlərin tətbiqi və verilənlərin mərkəzləşdirilməmiş saxlanması ilə əldə edilir.

Bloklar əlavə edilərkən və əməliyyatlar (transaksiyalar) icra edilərkən özəl və ictimai açarlardan istifadə olunur. Bu açarlar blokçenin istifadəçilərini məhdudlaşdırır, onlara yalnız öz verilənlər bloklarına daxil olmaq imkanı verir.

Transaksiyalar

Blokçen, əməliyyatlar (transaksiyalar) haqqında məlumatı bloklarda saxlayır. Bu zaman köhnə, artıq icra olunmuş transaksiyaları geri qaytarmaq və ya dəyişdirmək mümkün deyil. Yeni transaksiyalar yeni, əlavə olunmuş bloklarda saxlanılır.

Buna görə də blokçen, dəyişməz formada bütün transaksiyaların tarixini yazmaq üçün istifadə oluna bilər. Beləliklə, blokçen, məsələn, bank əməliyyatlarının etibarlı saxlanması, müəlliflik hüququ haqqında məlumatlar, əmlak sahiblərinin dəyişiklik tarixçəsi və s. üçün istifadə oluna bilər.

Ethereum blokçeni, sistemin vəziyyətlərini ehtiva edir. Transaksiyalar icra olunarkən vəziyyət başlanğıc vəziyyətindən indiki vəziyyətə dəyişir. Transaksiyalar bloklarda yazılır.

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

Bunu qeyd etmək lazımdır ki, dediklərimiz yalnız mərkəzi tərəfindən heç bir fiziki və ya hüquqi şəxs, dövlət orqanı və ya hakimiyyət tərəfindən idarə oluna bilməyən, beləliklə, əslən açıq blokçen şəbəkələri üçün doğrudur.
Belə adlanan özəl blokçen şəbəkələri onların yaradıcıları tərəfindən tam nəzarət altında saxlanılır, burada zəncirin bütün bloklarının tam dəyişdirilməsi mümkün olduğu üçün hər şey mümkündür.

Blokçenin praktiki tətbiqləri

Blokçenin nəyə yararlana biləcəyini düşünün?

Qısa desək, blokçen, bir-birinə inanmayan şəxslər və ya şirkətlər arasında əməliyyatları (müqavilələri) təhlükəsiz şəkildə həyata keçirməyə imkan tanıyır. Blokçeni daxilində saxlanan məlumatları (transaksiyalar, şəxsi məlumatlar, sənədlər, şəhadətnamələr, müqavilələr, yük sənədləri və s.) yazıldıqdan sonra saxtalaşdırmaq və ya dəyişdirmək mümkün deyil. Buna görə də, blokçen əsasında müxtəlif növ sənədlərin etibarlı paylanmış registrlərini yaratmaq mümkündür.

Əlbəttə ki, siz bilirsiniz ki, blokçenlərin əsasında adi kağız pulları əvəz etməyə yönəlmiş kripto valyuta sistemləri yaradılır. Kağız pul, eyni zamanda, fiat (Fiat Money) olaraq adlandırılır.
Blokçeyn, bloklara yazılmış əməliyyatların saxlanılması və dəyişdirilməzliyi təmin edir, buna görə də onu kriptovalyuta sistemlərinin yaradılması üçün istifadə etmək mümkündür. O, müxtəlif istifadəçilər (hesablar) arasında kripto vəsaitlərin mübadiləsinin bütün tarixini saxlayır və hər hansı bir əməliyyat izlənilə bilər.

Kriptovalyuta sistemləri daxilində əməliyyatlar anonim ola bilsə də, kriptovalyutanın çıxarılması və onu fiat pullara çevirmək adətən kriptovalyuta varidatının sahibinin şəxsiyyətinin açılmasına səbəb olur.

Həmin smarq-kontraktlar, Ethereum şəbəkəsində işləyən proqram təminatı olmaqla, əməliyyatların bağlanma prosesini avtomatlaşdırmağa və onların icrasını nəzarət etməyə imkan tanıyır. Bu, xüsusilə əməliyyatın ödənişinin Ether (efir) kriptovalyutası ilə həyata keçirildiyi halda təsirli olur.

Ethereum blokçeyni və Solidity proqramlaşdırma dili ilə yazılmış Ethereum smarq-kontraktları, məsələn, aşağıdakı sahələrdə istifadə oluna bilər:

  • sənədlərin notarial təsdiqinə alternativ;
  • əmlak obyektlərinin reyestrinin və əmlak əməliyyatları ilə bağlı məlumatların saxlanması;
  • intellektual mülkiyyət obyektlərinin (kitablar, şəkillər, musiqi əsərləri və s.) müəllif hüquqları ilə bağlı məlumatların saxlanması;
  • müstəqil səsvermə sistemlərinin yaradılması;
  • maliyyə və bank fəaliyyəti sahəsi;
  • beynəlxalq miqyasda logistika, yük daşınmalarının izlənməsi;
  • şəxsi məlumatların identifikasiya sisteminə alternativ kimi saxlanması;
  • ticarət sahəsində təhlükəsiz əməliyyatlar;
  • tibbi müayinələrin nəticələrinin və təyin edilmiş prosedurların tarixinin saxlanması.

Blokçeynlə bağlı problemlər

Amma, əlbəttə ki, hər şey düşündüyünüz qədər asan deyil!

Blokçeynin tərkibinə daxil edilən məlumatların (məsələn, saxta olub-olmadığınız) doğrulanması, blokçeyn ilə işləyə bilən sistem və tətbiq proqram təminatının təhlükəsizliyi, kriptovalyuta cüzdanlarına girişin oğurlanması üçün sosial mühəndislik metodlarının istifadə olunması ilə bağlı problemlər var.

Yenə də, əgər danışıq ictimai blokçeyn haqqında deyilsə, dünyanın hər tərəfində yayılmış düyünlərə sahib olan özəl blokçeyn varsa, burada etibar səviyyəsi həmin şəxsə və ya təşkilata olan etibar səviyyəsindən aşağı olmayacaqdır.

Həmçinin, blokçeynə yazılan məlumatların hamıya açıq olduğunu nəzərə almaq lazımdır. Bu mənada blokçeyn (xüsusilə ictimai) məxfi məlumatların saxlanılması üçün uyğun deyil. Ancaq blokçeyndəki məlumatların dəyişdirilməz olması müxtəlif növ dələduzluqların qarşısını almağa və ya araşdırmağa kömək edə bilər.

Ethereum-in mərkəzləşdirilməmiş tətbiqləri, onları istifadə etmək üçün kriptovalyuta ilə ödəniş edildiyi zaman daha rahat olacaq. Kriptovalyutaya malik olan və ya onu almağa hazır olan insanların sayı artdıqca, DApp və smart müqavilələrin popülarlığı da artacaq.

Blokçeyn texnologiyasının praktik tətbiqini çətinləşdirən ümumi problemlər arasında yeni blokların əlavə olunmasında məhdud bir sürət və nisbətən yüksək tranzaksiya xərclərini qeyd etmək olar. Lakin bu sahədə texnologiyalar aktiv inkişaf edir və texniki problemlərin zamanla həll ediləcəyinə ümidlər var.

Başqa bir problem isə Ethereum blokçeyni üzərində çalışan smart müqavilələrin izolyasiya olunmuş virtual maşın mühitində işləməsi və real dünya məlumatlarına çıxışı olmamasıdır. Xüsusilə, smart müqavilə proqramı saytlardan və ya fiziki cihazlardan (sensorlar, kontaktlar və s.) məlumat oxuya bilmir, eyni zamanda xarici cihazlara məlumat çıxara bilmir. Bu problemi və onun həll yollarını, 'Orakullar' adlanan smart müqavilələrin informasiya vasitəçilərinə həsr olunmuş dərsdə müzakirə edəcəyik.

Hüquqi sahədə də məhdudiyyətlər mövcuddur. Bəzi ölkələrdə, məsələn, kriptovalyutanın ödəmə vasitəsi olaraq istifadəsi qadağandır, lakin onu qiymətli kağızlar kimi bir növ rəqəmsal aktiv şəklində saxlamağa icazə verilir. Belə aktivlər birjada alınıb-satıla bilər. Hər halda, kriptovalyutalarla işləyən bir layihə yaradarkən, layihənizin düşdüyü ölkənin qanunvericiliyi ilə tanış olmaq vacibdir.

Blokçeynin zənciri necə formalaşır

Artıq dediyimiz kimi, blokçeyn sadə bir məlumat blokları zənciridir. Əvvəlcə bu zəncirin birinci bloku formalaşır, sonra ona ikinci əlavə olunur və beləcə davam edir. Təxminən, əməliyyatların məlumatları bloklarda saxlanılır və sonuncu bloqa əlavə edilir.

Şəkil 1.1-də birinci bloqun ikinciyə işarə etdiyi ən sadə bloklar ardıcıllığını göstərmişik.

Kitab "Ethereum Blockchain üçün Solidity Ağı Təminatlarının Yaradılması. Praktik Bələdçi"
Şəkil 1.1. Sadə bloklar ardıcıllığı

Lakin bu cür bir variantda, zəncirin hər hansı bir blokunun tərkibini saxtalaşdırmaq çox asandır, çünki bloklar dəyişikliklərdən qorumaq üçün heç bir məlumat ehtiva etmir. Ümumiyyətlə, blokçeyn insanların və şirkətlərin etimadsız olduğu bir mühitdə istifadəsi nəzərdə tutulduğuna görə, bu cür məlumatların saxlanma üsulunun blokçeyn üçün uyğun olmadığı nəticəsini çıxara bilərik.

Gəlin blokların saxtalaşdırılmasına qarşı mühafizəni gücləndirək. İlk mərhələdə, hər bir bloku kontrol sumu ilə qorumağa çalışacağıq (şəkil 1.2).

Kitab "Ethereum Blockchain üçün Solidity Ağı Təminatlarının Yaradılması. Praktik Bələdçi"
Şəkil 1.2. Blokların məlumatlarını kontrol sumu ilə qorumaq

İndi hücumçu bloku dəyişdirməkdə çətinlik çəkir, çünki blokda məlumatların yoxlama cəmi var. Yoxlama cəmi məlumatların dəyişdirildiyini göstərəcək.

Yoxlama cəmini hesablamaq üçün MD-5, SHA-1, SHA-256 və s. kimi hash funksiyalarından biri istifadə edilə bilər. Hash funksiyaları, bir blok məlumat üzərində geri dönməz əməliyyatlar apararaq (məsələn, sabit uzunluqda mətn sətiri şəklində) müəyyən bir dəyər hesablayır. Əməliyyatlar hash funksiyasının növündən asılıdır.

Məlumat bloqunun kiçik bir hissəsi dəyişdirilsə belə, hash funksiyasının dəyəri dəyişəcək. Hash funksiyasının dəyərini analiz edərək, onun hesablamaq üçün istifadə olunduğu məlumat blokunu bərpa etmək mümkün deyil.

Belə bir qoruma kifayət edəcəkmi? Təəssüf ki, yox.

Bu sxemdə yoxlama cəmi (hash funksiyası) yalnız ayrı blokları qoruyur, lakin bütün blok zəncirini deyil. Hash funksiyasının hesablama alqoritmini bilən hücumçu, blokun məzmununu asanlıqla dəyişə bilər. Həmçinin, onun zəncirdən blokları silməsinə və ya yeni bloklar əlavə etməsinə də heç bir maneə yoxdur.

Bütün zənciri bir bütün olaraq qorumaq üçün hər bir blokda, məlumatlarla yanaşı, əvvəlki blokun hash'ini də saxlamaq olar (şəkil 1.3).

Kitab "Ethereum Blockchain üçün Solidity Ağı Təminatlarının Yaradılması. Praktik Bələdçi"
Şəkil 1.3. Bloka əvvəlki blokun hash'ini əlavə edirik

Bu sxemdə bir bloku dəyişdirmək üçün bütün sonrakı blokların hash funksiyalarını yenidən hesablamaq lazımdır. Problemin nə olduğunu düşünmək olar.

Real blokçeynlərdə yeni bloklar əlavə etmək üçün əlavə çətinliklər yaradılır - çox sərfəli hesablama resursları tələb edən alqoritmlərdən istifadə olunur. Dəyişikliklər edərkən yalnız bu bloku deyil, bütün sonrakı blokları hesablamaq lazım olduğundan, bunu etmək olduqca çətindir.

Eyni zamanda, unutmayaq ki, blokçeyn məlumatları şəbəkənin çoxsaylı düyünlərində saxlanılır (təkrarlanır), yəni mərkəzləşdirilməmiş saxlama istifadə olunur. Bu, blokun saxtalaşdırılmasını çox çətinləşdirir, çünki dəyişikliklər bütün şəbəkə düyünlərinə tətbiq edilməlidir.

Bloklar əvvəlki blok haqqında məlumat saxladığı üçün, zəncirin bütün bloklarının məzmununu yoxlamaq mümkündür.

Ethereum blokçeyi

Ethereum blokçeyi, paylanmış DApp tətbiqləri yarada biləcəyiniz bir platformadır. Digər platformalardan fərqli olaraq, Ethereum, Solidity proqramlaşdırma dilində yazılmış zəngin müqavilələri (smart contracts) istifadə etməyə imkan tanıyır.

Bu platforma 2013-cü ildə Bitcoin Magazine jurnalının təsisçisi Vitalik Buterin tərəfindən yaradılıb və 2015-ci ildə işə salınıb. Bizim tədris kursumuzda öyrənəcək və edəcəyimiz hər şey dəqiqliklə Ethereum blokçeyi və Solidity zəngin müqavilələri ilə əlaqədardır.

Minerlik və ya bloklar necə yaradılır

Mədənçilik (mining) blockchain zəncirinə yeni bloklar əlavə etmək üçün olduqca mürəkkəb və resurs tələb edən bir prosesdir, ''kriptoqrafik valyuta çıxarmaq'' deyil. Mədənçilik, blokçeyn fəaliyyətini təmin edir, çünki məhz bu proses Ethereum blokçeynində tranzaksiyaların əlavə olunmasından cavabdehdir.

Blok əlavə etmək ilə məşğul olan insanlar və təşkilatlar mədənçilər (miner) adlanır.
Mədənçilərin düyünlərində çalışan proqram təminatı (ПО), son blok üçün Nonce adlanan bir hash parametresini təyin etməyə çalışır ki, nəticədə şəbəkə tərəfindən müəyyən edilmiş hash funksiyasının dəyərinə uyğun bir nəticə əldə olunsun. Ethereum-da tətbiq olunan Ethash hash alqoritmi, Nonce dəyərini yalnız ardıcıl yoxlama yolu ilə əldə etməyə imkan verir.

Əgər mədənçi düyünü doğru Nonce dəyərini tapsa, bu, ''işin sübutu'' (PoW, Proof-of-work) adlanır. Bu halda, blok Ethereum şəbəkəsinə əlavə edildiyi müddətdə, mədənçi şəbəkə valyutası - Ether-ə müəyyən bir mükafat alır. Kitabımızın hazırlandığı vaxtda mükafat 5 Ether-dir, lakin zamanla bu azaldılacaq.

Buna görə də, Ethereum mədənçiləri şəbəkənin fəaliyyətini təmin edir, bloklar əlavə edərək bunun üçün kriptovalyuta qazanırlar. İnternette mədənçilər və mədənçilik haqqında çoxlu məlumat tapa bilərsiniz, biz isə Solidity müqavilələrinin və Ethereum şəbəkəsindəki mərkəzsiz tətbiqlərin (DApp) yaradılmasına fokuslanacağıq.

Dərsin nəticələri

Birinci dərsdə siz blokçeyn ilə tanış oldunuz və onun xüsusi formada tərtib edilmiş blokların ardıcıllığı olduğunu öyrəndiniz. Əvvəlki yazılmış blokların məzmunu dəyişdirilə bilməz, çünki bunun üçün şəbəkənin bir çox düyünlərindəki bütün sonrakı blokların yenidən hesablanması lazım olacaq, bu da çoxlu resurs və vaxt tələb edir.

Blokçeyn, tranzaksiya nəticələrinin saxlanması üçün istifadə oluna bilər. Onun əsas məqsədi, arasında etimad olmayan tərəflər (şəxslər və təşkilatlar) arasında tranzaksiyaların təhlükəsiz icrasını təşkil etməkdir. Ethereum blokçeyi və Solidity smart müqavilələrinin hansı konkret iş sahələrində və sahələrdə istifadə oluna biləcəyini öyrəndiniz. Bunlar arasında bank sektoru, mülkiyyət hüquqlarının, sənədlərin qeydiyyatı və s. var.

Eyni zamanda, blokçeyn istifadə edərkən müxtəlif problemlərin ortaya çıxa biləcəyini də öyrəndiniz. Bunlar, blokçeynə əlavə olunan məlumatların təsdiqi ilə bağlı problemlər, blokçeyn sürəti, tranzaksiya xərcləri, smart müqavilələr ilə real dünya arasında məlumat mübadiləsi məsələləri və istifadəçilərin hesablarından kriptovalyuta oğurluğu məqsədilə hücumlar ola bilər.

Həmçinin, biz blockchain-ə yeni blokların əlavə edilməsi prosesi kimi mədənçilik haqqında qısa məlumat verdik. Mədənçilik, tranzaksiyaların işlənməsi üçün vacibdir. Mədənçilik edənlər blockchain-in işləkliyini təmin edirlər və bunun müqabilində kriptovalyuta ilə mükafat alırlar.

Dərs 2. Ubuntu və Debian-da iş mühitinin hazırlanmasıƏməliyyat sisteminin seçimi
Lazımi utilitlərin quraşdırılması
Ubuntu-da Geth və Swarm-ın quraşdırılması
Debian-da Geth və Swarm-ın quraşdırılması
Əvvəlcədən hazırlıq
Go distribusiyasının yüklənməsi
Ətraf mühit dəyişənlərinin quraşdırılması
Go versiyasının yoxlanılması
Geth və Swarm-ın quraşdırılması
Özəl blockchain yaradırıq
Готовим файл genesis.json
İş üçün kataloq yaradırıq
Hesab yaradılır
Node-un başlanğıcını edirik
Node-un başlama parametrləri
Node-umuza qoşuluruq
Mədənçiliyi idarə etmək və balansı yoxlamaq
Geth konsolunun bağlanması
Dərsin nəticələri

Dərs 3. Raspberry Pi 3-də iş mühitinin hazırlanmasıRaspberry Pi 3-ü işə hazırlamaq
Rasberian-ın quraşdırılması
Yeniləmələrin quraşdırılması
SSH girişinin aktivləşdirilməsi
Statik IP ünvanının quraşdırılması
Lazımi utilitlərin quraşdırılması
Go-nun quraşdırılması
Go distribusiyasının yüklənməsi
Ətraf mühit dəyişənlərinin quraşdırılması
Go versiyasının yoxlanılması
Geth və Swarm-ın quraşdırılması
Özəl blockchain yaradırıq
Hesabın və balansın yoxlanılması
Dərsin nəticələri

Dərs 4. Hesablar və hesablar arasında pul köçürməHesabları görüntüləmək və əlavə etmək
Hesablar siyahısına baxış
Hesabın əlavə edilməsi
geth account komanda parametrləri
Hesab parolları
Ethereum-da kriptovalyuta
Ethereum-un pul vahidləri
Hesablarımızın cari balansını müəyyən edirik
Bir hesabdan digərinə pul köçürmək
eth.sendTransaction metodu
Tranzaksiyanın vəziyyətini yoxlamaq
Tranzaksiya qəbzi
Dərsin nəticələri

Dərs 5. İlk müqaviləni yerləşdirməkEthereum-da smart müqavilələr
Smart müqavilənin icrası
Ethereum Virtual Maşını
Remix Solidity IDE inteqrasiya olunmuş inkişaf mühiti
Kompilyasiyanı işə salmaq
Müqavilə funksiyalarını çağırmaq
Müqaviləni özəl şəbəkədə yerləşdirmək
ABI tərifi və müqavilənin ikili kodunu əldə edirik
Müqaviləni yerləşdirmək
Müqavilə yerləşdirmə tranzaksiyasının vəziyyətini yoxlamaq
Müqavilə funksiyalarını çağırmaq
solc paket kompilatoru
Ubuntu-da solc-nu quraşdırmaq
Debian-da solc-nu quraşdırmaq
HelloSol müqaviləsinin kompilasiyası
Müqaviləni yerləşdirmək
Rasberian-da solc-nu quraşdırmaq
Dərsin nəticələri

Урок 6. Смарт-контракты и Node.jsУстановка Node.js
Ubuntu-da quraşdırma
Debian-da quraşdırma
Ganache-cli-nin quraşdırılması və işə salınması
Web3-nün quraşdırılması
solc-nun quraşdırılması
Rasberian-da Node.js-nin quraşdırılması
Konsolda hesabların siyahısını əldə etmək üçün skript
Smart müqaviləni yerləşdirmək üçün skript
İşə salma və parametrlərin alınması
Başlanğıc parametrlərini əldə etmək
Müqavilənin kompilasiyası
Hesabı açmaq
Müqavilənin ABI və ikili kodunu yükləmək
Gerekli qaz sayını qiymətləndirmək
Obyekt yaratma və müqavilənin yerləşdirilməsini işə salma
Müqavilənin yerləşdirilməsi skriptini işə salmaq
Smart müqavilənin funksiyalarını çağırmaq
Yerləşdirilmiş smart müqaviləni yeniləmək mümkündürmü?
Web3 versiya 1.0.x ilə işləmək
Hesabların siyahısını əldə etmək
Müqaviləni yerləşdirmək
Müqavilə funksiyalarını çağırmaq
Bir hesabdan digərinə pul köçürmək
Müqavilə hesabına pul köçürmək
HelloSol smart müqaviləsini yeniləyirik
Hesab balansını görüntüləmək üçün skript yaratmaq
Добавляем вызов функции getBalance в скрипт call_contract_get_promise.js
Smart müqavilənin hesabını doldurmaq
Dərsin nəticələri

Dərs 7. Truffle-ə girişTruffle-nu quraşdırmaq
HelloSol layihəsini yaradın
Layihənin kataloqunu və fayllarını yaratmaq
contracts kataloqu
migrations kataloqu
test kataloqu
Файл truffle-config.js
HelloSol müqaviləsinin kompilasiyası
Müqavilənin dərc edilməsini başlatma
Truffle-də HelloSol müqaviləsinin funksiyalarını çağırma
Вызов функций контракта HelloSol из скрипта JavaScript под управлением Node.js
truffle-contract modulunu quraşdırma
getValue və getString müqavilə funksiyalarını çağırma
setValue və setString müqavilə funksiyalarını çağırma
Müqaviləni dəyişdirmək və yenidən dərc etmək
Web3 versiya 1.0.x ilə işləmək
HelloSol smart müqaviləsində dəyişikliklər edirik
Müqavilə metodlarını çağırmaq üçün skriptlər
Truffle-də test aparmaq
Solidity-də test
JavaScript-də test
Dərsin nəticələri

Dərs 8. Solidity verilənlər növləriVerilənlər növlərini öyrənmək üçün müqavilə
Müqavilə verilənlər növləri
Tam ədədlər və işarəsiz ədədlər
Sabit desimal ədədlər
Ünvan
Mürəkkəb verilənlərin dəyişənləri
Sabit ölçülü massivlər
Dinamik massivlər
Siyahı
Strukturlar
mapping lüğətləri
Dərsin nəticələri

Dərs 9. Müqavilələrin özəl şəbəkəyə və Rinkeby şəbəkəsinə köçürülməsiTruffle-dən Geth özəl şəbəkəsinə müqavilə dərc etmə
Özəl şəbəkə düyününün hazırlanması
Müqavilənin işləməsi üçün hazırlanması
Truffle şəbəkəsinə müqavilənin tərcüməsi və köçürülməsi
geth yerli şəbəkəsində köçürmə başlatmaq
Truffle artefaktlarını əldə etmək
Rinkeby test şəbəkəsində Truffle-dən müqavilə dərc etmə
Rinkeby ilə işləmək üçün Geth düyününün hazırlanması
Düyün sinxronizasiyası
Hesabların əlavə edilməsi
Rinkeby hesabına eter yükləmək
Rinkeby şəbəkəsində müqaviləni köçürmək
Rinkeby şəbəkəsində müqavilə haqqında məlumatı görüntüləmək
Rinkeby şəbəkəsi üçün Truffle konsolu
Müqavilə funksiyalarını çağırmağın daha sadə yolu
Вызов методов контракта при помощи Node.js
Rinkeby üçün Truffle konsolunda hesablar arasında vəsait ötürmə
Dərsin nəticələri

Dərs 10. Ethereum Swarm-də mərkəzləşdirilməmiş məlumat saxlamaEthereum Swarm necə işləyir
Swarm-i quraşdırma və başlatma
Fayllar və kataloqlar ilə əməliyyatlar
Ethereum Swarm-ə fayl yükləmək
Ethereum Swarm-dən fayl oxumaq
Yüklənmiş faylın manifestini görüntüləmək
Alt kataloqlarla birlikdə kataloqları yükləmək
Yüklənmiş kataloqdan fayl oxumaq
Tanınmış Swarm keçidindən istifadə
Обращение к Swarm из скриптов Node.js
Perl Net::Ethereum::Swarm modulu
Net::Ethereum::Swarm modulunu quraşdırma
Məlumatları yazma və oxuma
Dərsin nəticələri

Dərs 11. Python-da Ethereum ilə işləmək üçün Web3.py çərçivəsiWeb3.py quraşdırma
Zəruri paketlərin yenilənməsi və quraşdırılması
easysolc modulunu quraşdırma
Web3.py ilə müqavilə dərc etmə
Müqavilənin kompilasiyası
Provayderə qoşulma
Müqavilənin dərc edilməsini həyata keçirmək
Müqavilənin ünvanını və abi-ni faylda saxlama
Müqavilənin yerləşdirilməsi skriptini işə salmaq
Müqavilə metodlarını çağırma
JSON faylından müqavilənin ünvanını və abi-ni oxumaq
Provayderə qoşulma
Müqavilə obyekti yaratmaq
Müqavilə metodlarını çağırma
Truffle və Web3.py
Dərsin nəticələri

Dərs 12. OkanlarSmart müqavilə xarici məlumatlara etibar edə bilərmi?
Orakllar blokçeyn üçün məlumat vasitəçiləri kimi
Məlumat mənbəyi
Mənbədən məlumatları təqdim etmək üçün kod
Blokçeyndə mübadilə kursunu yazmaq üçün orakl
USDRateOracle müqaviləsi
Smart müqavilədə mübadilə kursunu yeniləmək
Web Socket provayderindən istifadə
RateUpdate hadisəsini gözləmək
RateUpdate hadisəsini emal etmək
Smart müqavilədə məlumatın yenilənməsini başlatmaq
Dərsin nəticələri

Mənbə: habr.com

DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər 🔥 DDoS qoruması olan saytlara etibarlı hosting satın alın, VPS VDS serverlər | ProHoster