Blockchain nə qurmalıyıq?

Bəşəriyyətin bütün tarixi zəncirlərdən qurtulmaq və yeni, daha da güclü olanlar yaratmaq üçün davamlı bir prosesdir. (Anonim müəllif)

Çoxsaylı blokçeyn layihələrini (Bitshares, Hyperledger, Exonum, Ethereum, Bitcoin və s.) təhlil edərək başa düşürəm ki, texniki baxımdan onların hamısı eyni prinsiplər üzərində qurulub. Blokçeynlər, bütün dizayn, dekor və təyinat müxtəlifliyinə baxmayaraq, bir-biri ilə müəyyən üsullarla birləşən bünövrəsi, divarları, damı, pəncərələri, qapıları olan evləri xatırladır. Bina dizaynının əsas prinsiplərini başa düşsəniz və istifadə olunan materialların xüsusiyyətlərini bilsəniz, müəyyən bir evin nəzərdə tutulan məqsədini təyin edə bilərsiniz. Hal-hazırda blokçeynlə bağlı hər kəsin eşitdiyi bir vəziyyət yaranıb, lakin arxitektura və iş prinsiplərini az adam başa düşür. Buna görə də blokçeyn texnologiyalarından istifadənin nə üçün və necə məna kəsb etdiyi barədə anlaşılmazlıq var.

Bu yazıda biz bütün blokçeynlər üçün ümumi olan xassələri və prinsipləri təhlil edəcəyik. Sonra, blokçeyndən istifadə edərək həll edilə bilən problemlərə baxaq və materialı gücləndirmək üçün virtual saytımızda kiçik, lakin real blokçeyn quraq!

Beləliklə, blokçeyninin əvvəlcə hansı problemləri həll etdiyini xatırlayaq.

Əminəm ki, çoxları paylanmış, mərkəzləşdirilməmiş, ictimai və dəyişməz verilənlər bazası haqqında deyəcək. Bəs bütün bunlar nə üçün lazım idi?

İstənilən texnologiyanı öyrənməyə standartları oxumaqla başlamağa üstünlük verirəm, çünki öyrənilən mövzuya dair bütün məqalələr və kitablar onlara əsaslanır. Hal-hazırda heç bir blokçeyn standartı yoxdur; ISO yalnız yaratmışdır komitələr inkişafı üçün. Hal-hazırda, hər bir ictimai blokçeyn layihəsinin öz Ağ kağız sənədi var ki, bu da mahiyyətcə texniki spesifikasiyadır. İlk ictimaiyyətə məlum olan blokçeyn layihəsi Bitcoin şəbəkəsidir. Şəbəkənin rəsmi saytına gedin və baxmaq hamısı başladı harada.

Blockchain Challenge

Beləliklə, blockchain-in Bitcoin qabaqcıl şəbəkəsində həll etdiyi vəzifə, vasitəçilər olmadan etibarlı olmayan bir mühitdə rəqəmsal aktivlərə (aktivlərə) sahibliyin etibarlı ötürülməsini həyata keçirməkdir. Məsələn, Bitcoin şəbəkəsində rəqəmsal aktiv bitcoin rəqəmsal sikkələridir. Bitcoin və digər blokçeynlərin bütün texniki həlləri bu problemi həll etməyə çalışır.

Blockchain-in həll etdiyi problemlər

Tutaq ki, müəyyən maliyyə təşkilatı bütün dünyada şəbəkə qurduğunu deyir ki, onun köməyi ilə istənilən şəxsə pul köçürmək mümkündür. Ona inanacaqsan? Əgər bu təşkilat Visa və ya MasterCarddırsa, çox güman ki, siz buna inanacaqsınız, lakin nisbətən desək, AnonymousWorldMoney olsa, yəqin ki, inanmayacaqsınız. Niyə? Amma ona görə ki, biz çox yaxşı bilirik ki, paylanmış sistemlər özəl şirkətlər tərəfindən necə hazırlanır, hansı məqsədlər üçün edilir və bunun nəyə gətirib çıxara bilər. Gəlin bu cür sistemlərin problemlərinə və onların blokçeyn texnologiyalarından istifadə etməklə necə həll oluna biləcəyinə daha yaxından nəzər salaq.

Deyək ki, şərti AnonymousWorldMoney-də verilənlər bazası olan serverlər var və onlardan bir neçəsinin müxtəlif məlumat mərkəzlərində olması yaxşıdır. Göndərən pul köçürdükdə, bütün serverlərə təkrarlanan əməliyyat qeydə alınır və pul alıcıya çatır.

Blockchain nə qurmalıyıq?

İdeal bir dünyada bu sxem əla işləyir, lakin bizdə aşağıdakı problemlər yaranır:

  1. Bir tərəfdən iştirakçıların müəyyən edilməsi problemi, digər tərəfdən isə əməliyyatların anonimliyinə ehtiyac. Bunlar. pulu müəyyən bir alıcıya və elə bir şəkildə köçürməlisiniz ki, bu əməliyyat haqqında əməliyyatın iştirakçılarından başqa heç kim bilməsin. Bankların konkret fiziki və ya hüquqi şəxslə əlaqəli hesab nömrələri və bank kartları var və bank sirri əməliyyat məlumatlarını qoruyur. Və kim zəmanət verir ki, şərti AnonymousWorldMoney şəxsi məlumatları və əməliyyat məlumatlarını öz məqsədləri üçün istifadə etmir?
  2. Alıcının ona köçürülən məbləği dəqiq aldığına necə əmin olmaq olar? Nisbətən desək, göndərən 100 dollar köçürüb, alan isə 10 dollar alıb. Göndərən öz qəbzi ilə AnonymousWorldMoney ofisinə gəlir və məmur öz versiyasını göstərir, orada göndəricinin cəmi 10 dollar köçürdüyü yazılır.
  3. Etibarsız bir mühit problemi, məsələn, ikiqat xərcləmə adlı bir fırıldaq. Vicdansız iştirakçı ödəniş bütün serverlərə təkrarlanana qədər balansını bir neçə dəfə xərcləyə bilər. CAP teoremi, əlbəttə ki, heç kim ləğv etmədi və nəticədə razılaşma əldə ediləcək, lakin kimsə göstərilən xidmətlərə və ya mallara görə pul almayacaq. Buna görə də, əgər ödəniş təşkilatına və ya əməliyyatların iştirakçılarına tam etibar yoxdursa, o zaman etimada deyil, kriptoqrafiyaya əsaslanan şəbəkə qurmaq lazımdır.
  4. Şərti AnonymousWorldMoney qəsdən və ya zərərli niyyətə görə əlçatmaz ola biləcək məhdud sayda serverlərə malikdir.
  5. AnonymousWorldMoney öz maddi komissiyasını alacaq.
  6. Nəzarət imkanı. Bitcoin-in işləməsi zamanı məlum oldu ki, insanlar təkcə bir-birinə sikkə köçürmək deyil, həm də əməliyyat üçün müxtəlif şərtləri, proqram iş ssenarilərini yoxlamaq, şərtlərdən asılı olaraq avtomatik olaraq hərəkətləri yerinə yetirmək və s.

Blockchain bu problemləri necə həll edir

  1. İştirakçıların identifikasiyası bir cüt açardan istifadə etməklə həyata keçirilir: şəxsi və ictimai, rəqəmsal imza alqoritmi isə göndərən və alıcının şəxsiyyətini anonim qoyaraq unikal şəkildə müəyyən edir.
  2. Əməliyyatlar bloklara yığılır, blokun hashı hesablanır və növbəti bloka yazılır. Bloklarda heşlərin qeyd edilməsinin bu ardıcıllığı blokçeyn texnologiyasına öz adını verir və eyni zamanda blokları və ya bloklardan fərdi əməliyyatları nəzərəçarpacaq dərəcədə dəyişməyi/silməyi qeyri-mümkün edir. Beləliklə, əgər əməliyyat blokçeynə daxil edilərsə, onun məlumatlarının dəyişməz qalacağına əmin ola bilərsiniz.
  3. İkiqat xərcləmə fırıldaqçılığının qarşısı hansı məlumatların etibarlı hesab ediləcəyi və hansının atılacağı ilə bağlı şəbəkə konsensusa nail olmaqdır. Bitcoin şəbəkəsində konsensus iş sübutu (PoW) ilə əldə edilir.
  4. Şəbəkənin etibarlılığına hər bir iştirakçının öz qovşağını idarə edə biləcəyi, blokçeynin tam nüsxəsini ala biləcəyi və üstəlik müstəqil olaraq əməliyyatların düzgünlüyünü yoxlamağa başlaya biləcəyi blokçeynin ictimai olması ilə əldə edilir. Qeyd etmək lazımdır ki, müasir blokçeynlər təkcə ictimai (açıq) deyil, həm də özəl (qapalı) blokçeynlər qurmağa, eləcə də birləşmiş sxemlərdən istifadə etməyə imkan verir.
  5. Blokçeyn komissiyalardan tamamilə xilas olmayacaq, çünki... şəbəkəni dəstəkləyən insanlara pul ödəməlisən, lakin blokçeyndə komissiyaya ehtiyac o qədər inandırıcı şəkildə sübut olunur ki, onun zəruriliyinə şübhə yoxdur.
  6. Müasir blokçeynlər blokçeynində Ağıllı Müqavilələr adlanan biznes məntiqini həyata keçirmək qabiliyyətinə malikdir. Ağıllı müqavilələrin məntiqi müxtəlif yüksək səviyyəli dillərdə həyata keçirilir.

Sonra, bu həlləri daha ətraflı nəzərdən keçirəcəyik.

Blockchain arxitekturası

Blockchain Komponentləri

Hər bir iştirakçı blokçeynin tam surəti (tam node) ilə öz nodeunu işə sala bilər. Blockchain-də əməliyyatları qeyd edə bilən tam qovşaqlar adlanır konsensus qovşaqları (şahid) və ya mədənçilər (mədənçi). Yalnız əməliyyatların düzgünlüyünü yoxlayan tam qovşaqlar çağırılır audit qovşaqları (audit). Yüngül müştərilər (yüngül müştərilər) blokçeynin tam nüsxələrini saxlamır, lakin tam qovşaqlardan istifadə edərək şəbəkə ilə qarşılıqlı əlaqə qurur.
Əksər istifadəçilər əməliyyatlar etmək üçün yüngül müştərilər və ya veb cüzdanlardan istifadə edirlər. Bütün qovşaqlar bir-birinə bağlıdır. Bu elementlər dəsti ilə şəbəkə arxitekturası daha sabit olur:

Blockchain nə qurmalıyıq?

Əməliyyatın həyat dövrü

Gəlin əməliyyatın həyat dövrünə baxaq və onu hissə-hissə parçalayaq:

Blockchain nə qurmalıyıq?

Blockchain texnologiyaları

Texniki həllər və onların bir-biri ilə əlaqələri üzərində daha ətraflı dayanaq.

Təsdiqləmə

Hər bir blokçeyn əməliyyatı rəqəmsal imzalanmalıdır. Buna görə də, əməliyyatı başa çatdırmaq üçün hər bir iştirakçının bir açar cütü olmalıdır: özəl / ictimai. Bəzən bir cüt açar pul kisəsi adlanır, çünki açarlar iştirakçının unikal rəqəmsal ünvanı və balansı ilə unikal şəkildə əlaqələndirilir. Əslində, açarlar və ünvanlar müxtəlif say sistemlərində sadəcə rəqəmlər sətirləridir. Açar və pul kisəsi ünvanlarına nümunələr:

Private key: 0a78194a8a893b8baac7c09b6a4a4b4b161b2f80a126cbb79bde231a4567420f
Public key: 0579b478952214d7cddac32ac9dc522c821a4489bc10aac3a81b9d1cd7a92e57ba
Address: 0x3814JnJpGnt5tB2GD1qfKP709W3KbRdfb27V

Blokçeynlərdə rəqəmsal imza yaratmaq üçün elliptik əyrilərə əsaslanan alqoritmdən istifadə olunur: Elliptik Əyri Rəqəmsal İmza Alqoritmi (ECDSA). Onun işləməsi üçün şəxsi açar (256-bit nömrə) adətən təsadüfi olaraq alınır. Açar seçimlərin sayı 2-dən 256-ya qədərdir, buna görə də şəxsi açarların dəyərlərinə uyğun gəlməyin praktiki mümkünsüzlüyündən danışa bilərik.

Sonra, açıq açar özəl açardan onun dəyərini elliptik əyridə yerləşən nöqtənin koordinatlarına vurmaqla əldə edilir və nəticədə eyni əyri üzərində yeni bir nöqtənin koordinatları alınır. Bu əməliyyat əməliyyatları rəqəmsal imzalamaq üçün uyğun açar cütü əldə etməyinizi təmin edir. Nəhayət, pul kisəsinin ünvanı açıq açardan unikal şəkildə alınır.

Blockchain-də istifadə olunan kriptoqrafiya haqqında təfərrüatları olan bir çox məqalə var, məsələn: Bir sözlə Bitcoin – Kriptoqrafiya

Şəxsi açar ciddi şəkildə məxfi olmalı və təhlükəsiz saxlanmalıdır. Açıq açar hər kəsə məlumdur. Şəxsi açar itirilərsə, aktivə (sikkələrə) giriş bərpa edilə bilməz və pul əbədi olaraq itiriləcəkdir. Buna görə də, şəxsi açarları etibarlı şəkildə saxlamaq vəzifəsi son dərəcə aktualdır, çünki Bu, hər zaman pasportunuzla gəlib hesabınızı bərpa edə biləcəyiniz bank deyil. Fləş disklərə bənzər soyuq kripto pul kisələrinin istehsalı üçün bütöv bir sənaye var:

Blockchain nə qurmalıyıq?

və ya daha etibarlı üsullardan istifadə edə bilərsiniz, məsələn, tokenlərdə şəxsi açarın dəyərini möhürləmək:

Blockchain nə qurmalıyıq?

Əməliyyatlar

Əməliyyat strukturu haqqında daha ətraflı məlumatı məqalədə tapa bilərsiniz Qısaca bitcoin – Tranzaksiya. Hər bir əməliyyatın ən azı aşağıdakı məlumatları ehtiva etdiyini başa düşmək bizim üçün vacibdir:

From: 0x48C89c341C5960Ca2Bf3732D6D8a0F4f89Cc4368 - цифровой адрес отправителя
To: 0x367adb7894334678b90аfe7882a5b06f7fbc783a - цифровой адрес получателя
Value: 0.0001 - сумма транзакции
Transaction Hash: 0x617ede331e8a99f46a363b32b239542bb4006e4fa9a2727a6636ffe3eb095cef - хэш транзакции

Sonra, əməliyyat şəxsi açarla imzalanır və göndərilir (protokolun işləməsi ilə bağlı təfərrüatlara baxın Bir sözlə bitkoin-Protokol) tranzaksiyaların etibarlılığını yoxlayan blokçeynindəki bütün qovşaqlara. Əməliyyat yoxlama alqoritmi qeyri-trivialdır və daxildir iki onlarla addım.

Əməliyyat blokları

Əməliyyatların etibarlılığını yoxladıqdan sonra qovşaqlar onlardan bloklar əmələ gətirir. Əməliyyatlara əlavə olaraq, bloka əvvəlki blokun hashı və nömrə (Nonce counter) yazılır və cari blokun hashı SHA-256 alqoritmi ilə hesablanır. Haşın müəyyən edilmiş mürəkkəblik şərtləri olmalıdır. Məsələn, Bitcoin şəbəkəsində hashın çətinliyi şəbəkənin gücündən asılı olaraq hər 2 həftədən bir avtomatik olaraq dəyişdirilir ki, təxminən hər 10 dəqiqədə bir blok yaradılsın. Mürəkkəblik aşağıdakı şərtlə müəyyən edilir: tapılan hash əvvəlcədən müəyyən edilmiş nömrədən az olmalıdır. Əgər bu şərt yerinə yetirilmirsə, onda Nonce-ə 1 əlavə edilir və hashın hesablanması işi təkrarlanır. Bir hash seçmək üçün Nonce sahəsindən istifadə olunur, çünki Bu, blokda dəyişdirilə bilən yeganə məlumatdır, qalanları dəyişməz qalmalıdır. Etibarlı hashın müəyyən sayda aparıcı sıfırları olmalıdır, məsələn, real hashlardan biri:

000000000000000000000bf03212e7dd1176f52f816fa395fc9b93c44bc11f91

Uğurla hash tapmaq Bitcoin və ya Ethereum şəbəkələri üçün görülən işin sübutudur (Proof-of-Work, PoW). Haşların tapılması prosesi qızıl mədəninə bənzər mədənçilik adlanır. Adı prosesin mahiyyətini kifayət qədər dəqiq müəyyənləşdirir, çünki seçimlərin sadə bir axtarışı var və kimsə uyğun bir hash tapsa, bu, həqiqətən şansdır. Bu, tonlarla tullantı süxurda əsl qızıl külçəsi tapmaq kimidir. Blok mükafatı indi 12.5 BTC-dir və onu 3900 dollar olan hazırkı Bitcoin məzənnəsinə vursanız, bir kiloqramdan çox xalis qızıl alırsınız. Uğrunda mübarizə aparacaq bir şey var!

Həşi uğurla tapdıqdan sonra blok və tapılan hash özü növbəti blok kimi blokçeynə yazılır. Blokların strukturu haqqında daha ətraflı məlumatı məqalədə tapa bilərsiniz Bir sözlə Bitcoin - Blockchain, və aşağıda sadələşdirilmiş diaqramdır:

Blockchain nə qurmalıyıq?

Blockchain hələ əvvəlki blokun hashına malik olmayan blokla başlayır. Blokçeyndə yalnız bir belə blok var və onun öz Genesis bloku var. Qalan bloklar eyni struktura malikdir və yalnız əməliyyatların sayına görə fərqlənir. Hazırda Bitcoin və ya Ethereum-da yaradılan real əməliyyatlara və bloklara baxmaq olar Blok Explorer.

Bitcoin-də blokların ölçüsü 1MB ilə məhdudlaşır və təxminən 200 baytlıq bir əməliyyatda minimum məlumat miqdarı ilə blokdakı əməliyyatların maksimum sayı təxminən 6000 ola bilər. Buradan, yeri gəlmişkən, hər kəsin güldüyü Bitcoin-in performansını izləyir: blok təxminən hər 10 dəqiqədə * 60 saniyədə = 600 saniyədə yaradılır ki, bu da təxminən 10 TPS-lik rəsmi performans verir. Baxmayaraq ki, əslində bu məhsuldarlıq deyil, qəsdən həyata keçirilən iş alqoritmidir. Ethereum-da rəqabət üçün onlar sadəcə blok yaratma müddətini 15 saniyə etdi. və məhsuldarlıq formal olaraq yüksəldi. Buna görə də, konsensus olaraq PoW istifadə edən blokçeynlərdə performansı müqayisə etməyin heç bir mənası yoxdur, çünki hər hansı bir dəyərə təyin edilə bilən keş hesablanmasının mürəkkəbliyindən birbaşa asılıdır.

Çəngəllər

Məsələn, bir neçə qovşaq mürəkkəblik şərtlərinə cavab verən, lakin dəyəri fərqli olan (başqa sözlə, fərqli konsensuslara gəldilər) hash tapsalar və blokçeynə bloklar yazsalar nə olacaq? Gəlin görək blockchain bu vəziyyətdən necə qoruyur. Bu vəziyyətdə, sözdə bir çəngəl meydana gəlir və blockchain zəncirin iki versiyasına malikdir:

Blockchain nə qurmalıyıq?

Sonra nə olacaq? Sonra şəbəkənin bir hissəsi bir zəncirdən N+2 blokunda, digər hissəsi isə digərindən işləməyə başlayır:

Blockchain nə qurmalıyıq?

Bu bloklardan biri daha əvvəl tapılacaq və blokçeynə göndəriləcək, sonra isə qaydalara uyğun olaraq blokçeyn daha uzun zəncirə keçməli və alternativ blokdan bütün əməliyyatları ləğv etməli olacaq:

Blockchain nə qurmalıyıq?

Eyni zamanda, bir iştirakçının əməliyyatı yalnız ləğv edilmiş çəngəl bloklarından birində olduğu bir vəziyyət yarana bilər. Buna görə də, istədiyiniz əməliyyatın blokçeyndə qeydə alındığından əmin olmaq üçün ümumi bir tövsiyə var - əməliyyata etibar etməzdən əvvəl blokçeynə növbəti bir neçə blok əlavə olunana qədər gözləməlisiniz. Fərqli blokçeynləri gözləmək üçün neçə blokla bağlı tövsiyələr dəyişir. Məsələn, Bitcoin şəbəkəsi üçün minimum 2 blok, maksimum 6 blokdur.

Blok çəngəlləri ilə eyni mənzərə qondarma 51% hücumu zamanı müşahidə ediləcək - bu, bir qrup madencinin saxta əməliyyatları ilə zənciri ləğv etməyə çalışaraq alternativ blok zəncirini inkişaf etdirməyə çalışdığı zamandır. Baxmayaraq ki, hazırda fırıldaqçılıq əvəzinə öz gücünü vicdanla mədənçiliyə sərf etmək daha sərfəlidir.

Konsensus

Blockchain-də bloku qeyd etmək üçün şəbəkə konsensusa gəlməlidir. Kompüter rabitə şəbəkələrində konsensusa nail olmaq vəzifəsini xatırlayaq. Problem Bizans generallarının BFT vəzifəsi kimi tərtib edilmişdir (Bizans qüsurlarına dözümlülük). Bizans ordusunun problemlərinin mənzərəli təsvirini buraxmaqla problemi belə formalaşdırmaq olar: bəzi şəbəkə qovşaqları onları qəsdən təhrif edə bilsələr, şəbəkə qovşaqları necə ümumi nəticəyə gələ bilər. BFT probleminin həlli üçün mövcud alqoritmlər göstərir ki, fırıldaqçılar 1/3-dən az olduqda şəbəkə düzgün işləyə bilər. Niyə BFT konsensusu Bitcoin şəbəkəsinə tətbiq edilməyib? PoW-dan istifadə etmək nə üçün lazım idi? Bir neçə səbəb var:

  • BFT kiçik sabit qovşaqlar dəsti ilə yaxşı işləyir, lakin ictimai blokçeyndə qovşaqların sayı gözlənilməzdir və üstəlik, qovşaqlar təsadüfi olaraq açıla və söndürülə bilər.
  • İnsanları blokçeyn qovşaqlarını işə salmağa həvəsləndirmək lazımdır. Bunun üçün insanlar mükafatlandırılmalıdır. BFT-də formal olaraq mükafat almaq üçün heç bir şey yoxdur, lakin PoW-da mükafatın nə üçün olduğu intuitiv səviyyədə hər kəsə aydındır: blok hashını tapmaq prosesində prosessor tərəfindən istehlak edilən elektrik enerjisi üçün.

PoW-a əlavə olaraq, müasir blokçeynlərdə istifadə olunan bir neçə başqa konsensus var, məsələn:

  • PoS (Proof-of-Stake) - blokçeynində Hyperledger
  • DPoS (Delegated Proof-of-Stake) - blokçeynində BitShares
  • BFT-nin modifikasiyaları: SBFT (Sadələşdirilmiş BFT) və PBFT (Praktik BFT), məsələn, blockchain-də Eksonum

PoS konsensusunda bir az dayanaq, çünki... Şəxsi blokçeynlərdə ən çox yayılmış PoS və onun növləridir. Niyə özəl olaraq? Bir tərəfdən, PoS xüsusiyyətləri PoW ilə müqayisədə daha yaxşıdır, çünki Konsensusa nail olmaq üçün daha az hesablama resurslarına ehtiyac var, bu da blokçeynə məlumat yazma sürətinin artması deməkdir. Ancaq digər tərəfdən, PoS-in fırıldaqçılıq üçün daha çox imkanları var, buna görə də bunu neytrallaşdırmaq üçün blokçeynin bütün iştirakçıları tanınmalıdır.

PoS konsensusu hesabdakı vəsaitin miqdarından, daha doğrusu, hesabda deyil, girovda, yəni blokçeynə əməliyyatlarla blok yaza bilən qovşağın seçilməsinə əsaslanır. Girov olaraq nə qədər çox vəsaitiniz varsa, şəbəkə blok yazmaq üçün qovşağınızı seçəcək. Blok etibarsız olduqda depozit geri qaytarılmayacaq. Bu, fırıldaqçılıqdan qorunma təmin edir. Aşağıdakı PoS varyasyonları var:

  • Delegated PoS (DPoS) konsensusu iştirakçıları “seçicilərə” və “təsdiqləyicilərə” bölür. Sikkə sahibləri (səsvermə iştirakçıları) blokçeyndəki əməliyyatları yoxlamaq və qeyd etmək səlahiyyətlərini digər iştirakçılara həvalə edirlər. Beləliklə, validatorlar bütün hesablama işlərini görür və buna görə mükafat alırlar və səsvermə iştirakçılarının olması validatorların dürüstlüyünə zəmanət verir, çünki onlar istənilən vaxt dəyişdirilə bilər.
  • LPoS (Leased Proof-of-Stake) konsensusu sizə vəsaitlərinizi digər qovşaqlara icarəyə verməyə imkan verir ki, onların blokları təsdiqləmək şansı daha yüksək olsun. Bu. Faktiki əməliyyatın yoxlanılmasında və blok mədənçiliyində iştirak etmədən əməliyyatlar üçün komissiya ala bilərsiniz.

Hələ geniş yayılmayan bir sıra konsensuslar da var; Mən onları məlumat üçün burada sadalayacağam və konsensus alqoritmlərinin öz icmalını, məsələn, məqalədə tapa bilərsiniz: Blockchain-də konsensus alqoritmləri.

  • PoET (Geçmiş Zamanın sübutu)
  • PoC (Tübutun sübutu)
  • PoB (yanıq sübutu)
  • PoWeight (Çəki sübutu)
  • PoA (Fəaliyyət sübutu) – PoW + PoS
  • PoI (Əhəmiyyətliliyin sübutu)

Blokçeynlərin etibarlılığı və yerləşdirmə modelləri

İctimai blokçeyn

Davamlılıq Ictimai və ya başqa ad İcazəsiz blokçeyn Bu, hər kəsə məlumatı birləşdirməyə və nəzərdən keçirməyə və ya hətta öz qovşağına qoşulmağa imkan verməklə əldə edilir və etibar PoW konsensusuna əsaslanır.

Şəxsi blokçeyn

Xüsusi və ya Şəxsi İcazəli Blockchain. Bu blokçeynlərdə yalnız müəyyən bir qrup iştirakçının (təşkilatlar və ya insanlar) məlumat əldə etmək imkanı var. Bu cür blokçeynlər ümumi fayda və ya səmərəliliyi artırmaq məqsədi ilə təşkilatlar tərəfindən qurulur. Onların etibarlılığı iştirakçıların ümumi məqsədləri və PoS və BFT konsensus alqoritmləri ilə təmin edilir.

Blockchain konsorsiumu

Orada Konsorsium və ya İctimai icazəli blokçeyn. Bunlar hər kəsin baxmaq üçün qoşula biləcəyi blokçeynlərdir, lakin iştirakçı yalnız digər iştirakçıların icazəsi ilə məlumat əlavə edə və ya öz qovşağına qoşula bilər. Belə blokçeynlər müştərilərin və ya məhsulların istehlakçılarının və ya bütövlükdə cəmiyyətin inamını artırmaq üçün təşkilatlar tərəfindən qurulur. Burada etibarlılıq həm də iştirakçılar və eyni PoS və BFT konsensus alqoritmləri arasında etibarın olması ilə əldə edilir.

Smart müqavilələr

Bitcoin-dən sonra tətbiq olunan blokçeynlər, bu və ya digər dərəcədə ağıllı müqavilələri icra etmək qabiliyyətini əlavə etdi. Əslində, ağıllı müqavilə proqram kodunun icrası üçün yerləşdirildiyi bir əməliyyatdır. Ethereum şəbəkəsində ağıllı müqavilələr EVM-də (Ethereum Virtual Machine) icra olunur. Ağıllı müqavilənin icrasına başlamaq üçün o, başqa bir əməliyyat tərəfindən açıq şəkildə işə salınmalı və ya icra üçün ilkin şərtlər yerinə yetirilməlidir. Ağıllı müqavilənin icrasının nəticələri də blokçeynində qeyd olunacaq. Blockchain-dən kənar məlumatların qəbulu mümkündür, lakin son dərəcə məhduddur.

Ağıllı müqavilədən istifadə edərək hansı biznes məntiqi həyata keçirilə bilər? Əslində, çox şey yoxdur, məsələn, blockchain məlumatlarından istifadə edərək şərtlərin yoxlanılması, bu şərtlərdən asılı olaraq rəqəmsal aktivlərin sahiblərinin dəyişdirilməsi, blokçeyn daxilində daimi yaddaşda məlumatların qeyd edilməsi. Məntiq xüsusi yüksək səviyyəli Solidity dilində həyata keçirilir.

Ağıllı müqavilələrdən istifadə etməklə həyata keçirilən funksionallığın klassik nümunəsi ICO-lar üçün tokenlərin buraxılmasıdır. Məsələn, mən təvazökar 500 AlexToken buraxmaq üçün ağıllı bir müqavilə tətbiq etdim. By Etherscan-da keçid edir

Solidity dilində ağıllı müqavilənin mənbə kodu

pragma solidity ^0.4.23;
library SafeMath {
/**
* @dev Multiplies two numbers, throws on overflow.
**/
function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
if (a == 0) {
return 0;
}
c = a * b;
assert(c / a == b);
return c;
}
/**
* @dev Integer division of two numbers, truncating the quotient.
**/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// assert(b > 0); // Solidity automatically throws when dividing by 0
/**
* @title SafeMath
* @dev Math operations with safety checks that throw on error
*/
// uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return a / b;
}
/**
* @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
**/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a);
return a - b;
}
/**
* @dev Adds two numbers, throws on overflow.
**/
function add(uint256 a, uint256 b) internal pure returns (uint256 c) {
c = a + b;
assert(c >= a);
return c;
}
}
/**
* @title Ownable
* @dev The Ownable contract has an owner address, and provides basic authorization control
* functions, this simplifies the implementation of "user permissions".
**/
contract Ownable {
address public owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev The Ownable constructor sets the original `owner` of the contract to the sender account.
**/
constructor() public {
owner = msg.sender;
}
/**
* @dev Throws if called by any account other than the owner.
**/
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
/**
* @dev Allows the current owner to transfer control of the contract to a newOwner.
* @param newOwner The address to transfer ownership to.
**/
function transferOwnership(address newOwner) public onlyOwner {
require(newOwner != address(0));
emit OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
}
/**
* @title ERC20Basic interface
* @dev Basic ERC20 interface
**/
contract ERC20Basic {
function totalSupply() public view returns (uint256);
function balanceOf(address who) public view returns (uint256);
function transfer(address to, uint256 value) public returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
}
/**
* @title ERC20 interface
* @dev see https://github.com/ethereum/EIPs/issues/20
**/
contract ERC20 is ERC20Basic {
function allowance(address owner, address spender) public view returns (uint256);
function transferFrom(address from, address to, uint256 value) public returns (bool);
function approve(address spender, uint256 value) public returns (bool);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
/**
* @title Basic token
* @dev Basic version of StandardToken, with no allowances.
**/
contract BasicToken is ERC20Basic {
using SafeMath for uint256;
mapping(address => uint256) balances;
uint256 totalSupply_;
/**
* @dev total number of tokens in existence
**/
function totalSupply() public view returns (uint256) {
return totalSupply_;
}
/**
* @dev transfer token for a specified address
* @param _to The address to transfer to.
* @param _value The amount to be transferred.
**/
function transfer(address _to, uint256 _value) public returns (bool) {
require(_to != address(0));
require(_value <= balances[msg.sender]);
balances[msg.sender] = balances[msg.sender].sub(_value);
balances[_to] = balances[_to].add(_value);
emit Transfer(msg.sender, _to, _value);
return true;
}
/**
* @dev Gets the balance of the specified address.
* @param _owner The address to query the the balance of.
* @return An uint256 representing the amount owned by the passed address.
**/
function balanceOf(address _owner) public view returns (uint256) {
return balances[_owner];
}
}
contract StandardToken is ERC20, BasicToken {
mapping (address => mapping (address => uint256)) internal allowed;
/**
* @dev Transfer tokens from one address to another
* @param _from address The address which you want to send tokens from
* @param _to address The address which you want to transfer to
* @param _value uint256 the amount of tokens to be transferred
**/
function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {
require(_to != address(0));
require(_value <= balances[_from]);
require(_value <= allowed[_from][msg.sender]);
balances[_from] = balances[_from].sub(_value);
balances[_to] = balances[_to].add(_value);
allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
emit Transfer(_from, _to, _value);
return true;
}
/**
* @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
*
* Beware that changing an allowance with this method brings the risk that someone may use both the old
* and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
* race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
* @param _spender The address which will spend the funds.
* @param _value The amount of tokens to be spent.
**/
function approve(address _spender, uint256 _value) public returns (bool) {
allowed[msg.sender][_spender] = _value;
emit Approval(msg.sender, _spender, _value);
return true;
}
/**
* @dev Function to check the amount of tokens that an owner allowed to a spender.
* @param _owner address The address which owns the funds.
* @param _spender address The address which will spend the funds.
* @return A uint256 specifying the amount of tokens still available for the spender.
**/
function allowance(address _owner, address _spender) public view returns (uint256) {
return allowed[_owner][_spender];
}
/**
* @dev Increase the amount of tokens that an owner allowed to a spender.
*
* approve should be called when allowed[_spender] == 0. To increment
* allowed value is better to use this function to avoid 2 calls (and wait until
* the first transaction is mined)
* From MonolithDAO Token.sol
* @param _spender The address which will spend the funds.
* @param _addedValue The amount of tokens to increase the allowance by.
**/
function increaseApproval(address _spender, uint _addedValue) public returns (bool) {
allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_addedValue);
emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
return true;
}
/**
* @dev Decrease the amount of tokens that an owner allowed to a spender.
*
* approve should be called when allowed[_spender] == 0. To decrement
* allowed value is better to use this function to avoid 2 calls (and wait until
* the first transaction is mined)
* From MonolithDAO Token.sol
* @param _spender The address which will spend the funds.
* @param _subtractedValue The amount of tokens to decrease the allowance by.
**/
function decreaseApproval(address _spender, uint _subtractedValue) public returns (bool) {
uint oldValue = allowed[msg.sender][_spender];
if (_subtractedValue > oldValue) {
allowed[msg.sender][_spender] = 0;
} else {
allowed[msg.sender][_spender] = oldValue.sub(_subtractedValue);
}
emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
return true;
}
}
/**
* @title Configurable
* @dev Configurable varriables of the contract
**/
contract Configurable {
uint256 public constant cap = 1000000000*10**18;
uint256 public constant basePrice = 100*10**18; // tokens per 1 ether
uint256 public tokensSold = 0;
uint256 public constant tokenReserve = 500000000*10**18;
uint256 public remainingTokens = 0;
}
/**
* @title CrowdsaleToken 
* @dev Contract to preform crowd sale with token
**/
contract CrowdsaleToken is StandardToken, Configurable, Ownable {
/**
* @dev enum of current crowd sale state
**/
enum Stages {
none,
icoStart, 
icoEnd
}
Stages currentStage;
/**
* @dev constructor of CrowdsaleToken
**/
constructor() public {
currentStage = Stages.none;
balances[owner] = balances[owner].add(tokenReserve);
totalSupply_ = totalSupply_.add(tokenReserve);
remainingTokens = cap;
emit Transfer(address(this), owner, tokenReserve);
}
/**
* @dev fallback function to send ether to for Crowd sale
**/
function () public payable {
require(currentStage == Stages.icoStart);
require(msg.value > 0);
require(remainingTokens > 0);
uint256 weiAmount = msg.value; // Calculate tokens to sell
uint256 tokens = weiAmount.mul(basePrice).div(1 ether);
uint256 returnWei = 0;
if(tokensSold.add(tokens) > cap){
uint256 newTokens = cap.sub(tokensSold);
uint256 newWei = newTokens.div(basePrice).mul(1 ether);
returnWei = weiAmount.sub(newWei);
weiAmount = newWei;
tokens = newTokens;
}
tokensSold = tokensSold.add(tokens); // Increment raised amount
remainingTokens = cap.sub(tokensSold);
if(returnWei > 0){
msg.sender.transfer(returnWei);
emit Transfer(address(this), msg.sender, returnWei);
}
balances[msg.sender] = balances[msg.sender].add(tokens);
emit Transfer(address(this), msg.sender, tokens);
totalSupply_ = totalSupply_.add(tokens);
owner.transfer(weiAmount);// Send money to owner
}
/**
* @dev startIco starts the public ICO
**/
function startIco() public onlyOwner {
require(currentStage != Stages.icoEnd);
currentStage = Stages.icoStart;
}
/**
* @dev endIco closes down the ICO 
**/
function endIco() internal {
currentStage = Stages.icoEnd;
// Transfer any remaining tokens
if(remainingTokens > 0)
balances[owner] = balances[owner].add(remainingTokens);
// transfer any remaining ETH balance in the contract to the owner
owner.transfer(address(this).balance); 
}
/**
* @dev finalizeIco closes down the ICO and sets needed varriables
**/
function finalizeIco() public onlyOwner {
require(currentStage != Stages.icoEnd);
endIco();
}
}
/**
* @title LavevelToken 
* @dev Contract to create the Lavevel Token
**/
contract AlexToken is CrowdsaleToken {
string public constant name = "AlexToken";
string public constant symbol = "ALT";
uint32 public constant decimals = 18;
}

və şəbəkənin gördüyü ikili təmsil

60806040526000600355600060045533600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560146101000a81548160ff021916908360028111156200006f57fe5b0217905550620001036b019d971e4fe8401e74000000600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200024a6401000000000262000b1d179091906401000000009004565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620001986b019d971e4fe8401e740000006001546200024a6401000000000262000b1d179091906401000000009004565b6001819055506b033b2e3c9fd0803ce8000000600481905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b019d971e4fe8401e740000006040518082815260200191505060405180910390a362000267565b600081830190508281101515156200025e57fe5b80905092915050565b611cb880620002776000396000f300608060405260043610610112576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146104c7578063095ea7b31461055757806318160ddd146105bc57806323b872dd146105e7578063313ce5671461066c578063355274ea146106a3578063518ab2a8146106ce57806366188463146106f957806370a082311461075e57806389311e6f146107b55780638da5cb5b146107cc578063903a3ef61461082357806395d89b411461083a578063a9059cbb146108ca578063bf5839031461092f578063c7876ea41461095a578063cbcb317114610985578063d73dd623146109b0578063dd62ed3e14610a15578063f2fde38b14610a8c575b60008060008060006001600281111561012757fe5b600560149054906101000a900460ff16600281111561014257fe5b14151561014e57600080fd5b60003411151561015d57600080fd5b600060045411151561016e57600080fd5b3494506101a7670de0b6b3a764000061019968056bc75e2d6310000088610acf90919063ffffffff16565b610b0790919063ffffffff16565b9350600092506b033b2e3c9fd0803ce80000006101cf85600354610b1d90919063ffffffff16565b111561024c576101f66003546b033b2e3c9fd0803ce8000000610b3990919063ffffffff16565b915061022e670de0b6b3a764000061022068056bc75e2d6310000085610b0790919063ffffffff16565b610acf90919063ffffffff16565b90506102438186610b3990919063ffffffff16565b92508094508193505b61026184600354610b1d90919063ffffffff16565b6003819055506102886003546b033b2e3c9fd0803ce8000000610b3990919063ffffffff16565b6004819055506000831115610344573373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156102dd573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35b610395846000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a361045184600154610b1d90919063ffffffff16565b600181905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f193505050501580156104bf573d6000803e3d6000fd5b505050505050005b3480156104d357600080fd5b506104dc610b52565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561051c578082015181840152602081019050610501565b50505050905090810190601f1680156105495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561056357600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b8b565b604051808215151515815260200191505060405180910390f35b3480156105c857600080fd5b506105d1610c7d565b6040518082815260200191505060405180910390f35b3480156105f357600080fd5b50610652600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c87565b604051808215151515815260200191505060405180910390f35b34801561067857600080fd5b50610681611041565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b3480156106af57600080fd5b506106b8611046565b6040518082815260200191505060405180910390f35b3480156106da57600080fd5b506106e3611056565b6040518082815260200191505060405180910390f35b34801561070557600080fd5b50610744600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061105c565b604051808215151515815260200191505060405180910390f35b34801561076a57600080fd5b5061079f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112ed565b6040518082815260200191505060405180910390f35b3480156107c157600080fd5b506107ca611335565b005b3480156107d857600080fd5b506107e16113eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561082f57600080fd5b50610838611411565b005b34801561084657600080fd5b5061084f6114ab565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561088f578082015181840152602081019050610874565b50505050905090810190601f1680156108bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108d657600080fd5b50610915600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114e4565b604051808215151515815260200191505060405180910390f35b34801561093b57600080fd5b50610944611703565b6040518082815260200191505060405180910390f35b34801561096657600080fd5b5061096f611709565b6040518082815260200191505060405180910390f35b34801561099157600080fd5b5061099a611716565b6040518082815260200191505060405180910390f35b3480156109bc57600080fd5b506109fb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611726565b604051808215151515815260200191505060405180910390f35b348015610a2157600080fd5b50610a76600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611922565b6040518082815260200191505060405180910390f35b348015610a9857600080fd5b50610acd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119a9565b005b600080831415610ae25760009050610b01565b8183029050818382811515610af357fe5b04141515610afd57fe5b8090505b92915050565b60008183811515610b1457fe5b04905092915050565b60008183019050828110151515610b3057fe5b80905092915050565b6000828211151515610b4757fe5b818303905092915050565b6040805190810160405280600981526020017f416c6578546f6b656e000000000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600154905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610cc457600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610d1157600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610d9c57600080fd5b610ded826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e80826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f5182600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b601281565b6b033b2e3c9fd0803ce800000081565b60035481565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083111561116d576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611201565b6111808382610b3990919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561139157600080fd5b60028081111561139d57fe5b600560149054906101000a900460ff1660028111156113b857fe5b141515156113c557600080fd5b6001600560146101000a81548160ff021916908360028111156113e457fe5b0217905550565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561146d57600080fd5b60028081111561147957fe5b600560149054906101000a900460ff16600281111561149457fe5b141515156114a157600080fd5b6114a9611b01565b565b6040805190810160405280600381526020017f414c54000000000000000000000000000000000000000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561152157600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561156e57600080fd5b6115bf826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611652826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60045481565b68056bc75e2d6310000081565b6b019d971e4fe8401e7400000081565b60006117b782600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a0557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611a4157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6002600560146101000a81548160ff02191690836002811115611b2057fe5b021790555060006004541115611c0a57611ba5600454600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015611c89573d6000803e3d6000fd5b505600a165627a7a723058205bbef016cc7699572f944871cb6f05e69915ada3a92a1d9f03a3fb434aac0c2b0029

Ağıllı müqavilələr haqqında ətraflı məlumatı məqalədə tapa bilərsiniz: Ethereum-da ağıllı müqavilələr nədir.

Nəticə

Müasir blokçeynlərin qurulduğu texnologiyaları və onların bir-biri ilə necə əlaqəli olduğunu sadaladıq. İndi blokçeyn vasitəsilə hansı problemləri həll etmək olar, hansı həllər isə ən yaxşı halda səmərəsiz olacaqdır. Beləliklə, blockchain-dən istifadə etmək lazım deyil, əgər:

  • Əməliyyatlar etibarlı mühitdə həyata keçirilir;
  • Vasitəçilər komissiyasının olması iştirakçıların həyatını pisləşdirmir;
  • İştirakçıların rəqəmsal aktivlər kimi təqdim edilə bilən əmlakı yoxdur;
  • Rəqəmsal aktivlərdə heç bir paylanma yoxdur, yəni. dəyər yalnız bir iştirakçıya məxsusdur və ya verilir.

Blockchain-i gələcək nə gözləyir? İndi biz yalnız blokçeyn texnologiyalarının inkişafının mümkün yolları haqqında fərziyyə edə bilərik:

  • Blockchain, məsələn, SQL və ya NoSQL ilə eyni ümumi verilənlər bazası texnologiyasına çevriləcək;
  • Blockchain, HTTP İnternet üçün olduğu kimi geniş yayılmış protokola çevriləcək;
  • Blockchain planetdə yeni maliyyə və siyasi sistemin əsasına çevriləcək!

Növbəti hissədə hazırda hansı blokçeynlərin mövcud olduğunu və niyə müxtəlif sənayelərdə istifadə edildiyini nəzərdən keçirəcəyik.

Bu hələ başlanğıcdır!

Mənbə: www.habr.com

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