Шта треба да изградимо блоцкцхаин?

Целокупна историја човечанства је непрекидан процес ослобађања од ланаца и стварања нових, још јачих. (Анонимни аутор)

Анализирајући бројне блокчејн пројекте (Битсхарес, Хиперледгер, Еконум, Етхереум, Битцоин, итд.), схватам да су са техничке тачке гледишта сви они изграђени на истим принципима. Блоцкцхаинс подсећају на куће, које и поред све разноликости дизајна, декора и намена имају темеље, зидове, кров, прозоре, врата који су међусобно повезани на одређене начине. А ако разумете основне принципе дизајна зграде и знате својства коришћених материјала, онда можете одредити намјену одређене куће. Тренутно је настала ситуација са блокчеином да су сви чули за њега, али мало људи разуме архитектуру и принципе рада. Због тога постоји неразумевање зашто и како има смисла користити блоцкцхаин технологије.

У овом чланку ћемо анализирати својства и принципе који су заједнички за све блокове. Затим, хајде да погледамо проблеме који се могу решити коришћењем блоцкцхаина и да бисмо ојачали материјал, хајде да направимо мали, али прави блоцкцхаин на нашем виртуелном сајту!

Дакле, хајде да се подсетимо које проблеме је блоцкцхаин у почетку решио.

Сигуран сам да ће многи рећи за дистрибуирану, децентрализовану, јавну и непроменљиву базу података. Али зашто је све ово било потребно?

Више волим да почнем да проучавам било коју технологију читајући стандарде, пошто су сви чланци и књиге о теми која се проучавају засновани на њима. Али тренутно не постоје блокчејн стандарди; ИСО је само створио комитети за њихов развој. Тренутно, сваки јавни блоцкцхаин пројекат има свој документ Беле књиге, који је у суштини техничка спецификација. Први јавно познати блоцкцхаин пројекат је Битцоин мрежа. Идите на званичну веб страницу мреже и гледај где је све почело.

Блоцкцхаин Цхалленге

Дакле, задатак који је блокчејн решио у пионирској мрежи Битцоин је да изврши поуздан пренос власништва над дигиталном имовином (имовином) у окружењу без поверења без посредника. На пример, у Битцоин мрежи, дигитална имовина су биткоин дигитални новчићи. И сва техничка решења биткоина и других блок ланаца своде се на решавање овог проблема.

Проблеми које блоцкцхаин решава

Претпоставимо да одређена финансијска организација каже да је изградила мрежу широм света уз помоћ које је могуће пренети новац било којој особи. Хоћеш ли јој веровати? Ако је ова организација Виса или МастерЦард, вероватно ћете веровати, али ако, релативно говорећи, АнонимоусВорлдМонеи, вероватно нећете. Зашто? Али зато што добро знамо како дистрибуиране системе праве приватне компаније, за које сврхе и чему то може довести. Хајде да ближе погледамо проблеме таквих система и како се они могу решити коришћењем блоцкцхаин технологија.

Рецимо да у условном АнонимоусВорлдМонеи-у постоје сервери са базама података, и добро је ако их има неколико у различитим центрима података. Када пошиљалац пренесе новац, трансакција се региструје, која се реплицира на све сервере, а новац стиже до примаоца.

Шта треба да изградимо блоцкцхаин?

У идеалном свету ова шема функционише одлично, али у нашем се јављају следећи проблеми:

  1. Проблем идентификације учесника с једне стране и потреба за анонимношћу трансакција с друге стране. Оне. потребно је да пренесете новац одређеном примаоцу и то на начин да нико не зна за ову трансакцију осим учесника у трансакцији. Банке имају бројеве рачуна и банковне картице повезане са одређеним физичким или правним лицем, а банкарска тајна штити информације о трансакцијама. И ко гарантује да условни АнонимоусВорлдМонеи не користи личне податке и информације о трансакцијама у сопствене сврхе?
  2. Како се уверити да је прималац примио тачно онај износ који му је пренет? Релативно говорећи, пошиљалац је пребацио 100 долара, а прималац 10 долара. Пошиљалац долази у канцеларију АнонимоусВорлдМонеи са својом признаницом, а службеник показује своју верзију, где пише да је пошиљалац пребацио само 10 долара.
  3. Проблем непоузданог окружења, на пример, превара која се зове двострука потрошња. Несавесни учесник може потрошити свој салдо неколико пута док се уплата не реплицира на све сервере. ЦАП теорема, наравно, нико није отказао, и договор ће на крају бити постигнут, али неко неће добити новац за пружену услугу или робу. Стога, ако не постоји потпуно поверење у платну организацију или учеснике у трансакцијама, онда је неопходно изградити мрежу засновану не на поверењу, већ на криптографији.
  4. Условни АнонимоусВорлдМонеи има ограничен број сервера који могу постати недоступни ненамерно или због злонамерне намере.
  5. АнонимоусВорлдМонеи ће узети своју опипљиву провизију.
  6. Могућност контроле. Током рада Битцоин-а, испоставило се да људи желе не само да преносе кованице једни другима, већ и да провере различите услове за трансакцију, програмирају сценарије рада, аутоматски извршавају радње у зависности од услова итд.

Како блоцкцхаин решава ове проблеме

  1. Идентификација учесника се врши помоћу пара кључева: приватног и јавног, а алгоритам дигиталног потписа јединствено идентификује пошиљаоца и примаоца, остављајући њихов идентитет анонимним.
  2. Трансакције се прикупљају у блокове, хеш блока се израчунава и уписује у следећи блок. Ова секвенца бележења хешова у блоковима даје име блокчејн технологији, а такође онемогућава неприметно мењање/брисање блокова или појединачних трансакција из блокова. Дакле, ако је трансакција укључена у блоцкцхаин, можете бити сигурни да ће њени подаци остати непромењени.
  3. Превара са двоструком потрошњом се спречава постизањем мрежног консензуса о томе које податке сматрати валидним, а које одбацити. У Битцоин мрежи, консензус се постиже доказом о раду (ПоВ).
  4. Поузданост мреже је постигнута чињеницом да је блок ланац јаван, где сваки учесник може да покрене сопствени чвор, добије комплетну копију блокчејна и, штавише, самостално почне да проверава трансакције на исправност. Треба напоменути да савремени блок ланци омогућавају изградњу не само јавних (отворених) већ и приватних (затворених) блокова, као и коришћење комбинованих шема.
  5. Блокчејн се неће у потпуности ослободити провизија, јер... морате платити људима који подржавају мрежу, али у блокчејну је потреба за провизијом доказана тако убедљиво да нема сумње у њену неопходност.
  6. Савремени блокови имају могућност имплементације пословне логике, која се у блокчејну назива Смарт Цонтрацтс. Логика паметних уговора је имплементирана на различитим језицима високог нивоа.

Затим ћемо детаљније размотрити ова решења.

Блоцкцхаин архитектура

Блоцкцхаин Цомпонентс

Сваки учесник може покренути сопствени чвор са пуном копијом блок ланца (пуни чвор). Позивају се пуни чворови који могу да снимају трансакције на блок ланцу консензус чворова (сведок) или рудари (рудар). Позивају се пуни чворови који само проверавају исправност трансакција ревизијски чворови (ревизија). Лаки клијенти (лаки клијенти) не чувају пуне копије блоцкцхаина, већ комуницирају са мрежом користећи пуне чворове.
Већина корисника користи лаке клијенте или веб новчанике за обављање трансакција. Сви чворови су повезани једни са другима. Са овим скупом елемената, архитектура мреже постаје стабилнија:

Шта треба да изградимо блоцкцхаин?

Животни циклус трансакције

Хајде да погледамо животни циклус трансакције и разложимо га део по део:

Шта треба да изградимо блоцкцхаин?

Блоцкцхаин технологије

Да се ​​задржимо детаљније на техничким решењима и њиховим међусобним везама.

Идентификација

Свака блоцкцхаин трансакција мора бити дигитално потписана. Стога, да би извршио трансакцију, сваки учесник мора имати пар кључева: приватни / јавни. Понекад се пар кључева назива новчаником, јер кључеви су јединствено повезани са јединственом дигиталном адресом и стањем учесника. У стварности, кључеви и адресе су само низови бројева у различитим системима бројева. Примери кључева и адреса новчаника:

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

За креирање дигиталног потписа у блокчејновима користи се алгоритам заснован на елиптичним кривима: Еллиптиц Цурве Дигитал Сигнатуре Алгоритам (ЕЦДСА). Да би функционисао, приватни кључ (256-битни број) се обично узима насумично. Број опција кључа је 2 на степен од 256, тако да можемо говорити о практичној немогућности подударања вредности приватних кључева.

Затим се јавни кључ добија из приватног множењем његове вредности са координатама тачке која се налази на елиптичној кривој, што резултира координатама нове тачке на истој кривој. Ова акција осигурава да добијете пар кључева погодан за дигитално потписивање трансакција. Коначно, адреса новчаника је јединствено изведена из јавног кључа.

Постоји много чланака са детаљима о криптографији која се користи у блокчејну, на пример: Биткоин укратко – криптографија

Приватни кључ мора бити строго поверљив и заштићен. Јавни кључ је свима познат. Ако се изгуби приватни кључ, приступ средству (кованицама) се не може вратити и новац ће бити изгубљен заувек. Стога је задатак безбедног чувања приватних кључева изузетно релевантан, јер Ово није банка у коју увек можете доћи са пасошем и вратити свој рачун. Постоји читава индустрија за производњу такозваних хладних крипто новчаника, сличних флеш дисковима:

Шта треба да изградимо блоцкцхаин?

или можете користити поузданије методе, на пример, утискивање вредности приватног кључа на токене:

Шта треба да изградимо блоцкцхаин?

Трансакција

Више детаља о структури трансакције можете пронаћи у чланку Биткоин укратко – Трансакција. За нас је важно да разумемо да свака трансакција има најмање следеће податке:

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

Затим се трансакција потписује приватним кључем и шаље (погледајте детаље о раду протокола Биткоин укратко-протокол) свим чворовима у блокчејну који проверавају валидност трансакција. Алгоритам верификације трансакције није тривијалан и укључује два туцета корака.

Трансакциони блокови

Након провере валидности трансакција, чворови формирају блокове од њих. Поред трансакција, хеш претходног блока и број (Нонце цоунтер) се уписују у блок, а хеш тренутног блока се израчунава коришћењем СХА-256 алгоритма. Хеш мора да има утврђене услове сложености. На пример, у Битцоин мрежи, тежина хеша се аутоматски мења сваке 2 недеље у зависности од снаге мреже, тако да се блок генерише отприлике једном на сваких 10 минута. Сложеност је одређена следећим условом: пронађени хеш мора бити мањи од унапред одређеног броја. Ако овај услов није испуњен, онда се 1 додаје нонце, а посао израчунавања хеша се понавља. За одабир хеша користи се поље Нонце, јер Ово је једини податак у блоку који се може променити; остали морају остати непромењени. Важећи хеш мора имати одређени број водећих нула, као што је један од правих хешова:

000000000000000000000bf03212e7dd1176f52f816fa395fc9b93c44bc11f91

Успешно проналажење хеша је доказ обављеног посла (Прооф-оф-Ворк, ПоВ) за мреже Битцоин или Етхереум. Процес проналажења хешева се зове рударење, слично копању злата. Назив прилично тачно дефинише суштину процеса, јер постоји једноставна претрага опција, а ако неко пронађе одговарајући хеш, онда је ово права срећа. То је као да нађете прави златни грумен у тонама отпадног камена. Награда за блок је сада 12.5 БТЦ и ако је помножите са тренутном стопом биткоина од 3900 долара, добићете више од килограма чистог злата. Има се за шта борити!

Након успешног проналажења хеша, блок и сам пронађен хеш се уписују у блок ланац као следећи блок. Више детаља о структури блокова можете пронаћи у чланку Биткоин укратко-Блоцкцхаин, а испод је поједностављени дијаграм:

Шта треба да изградимо блоцкцхаин?

Блокчејн почиње са блоком који још нема хеш претходног блока. Постоји само један такав блок у блокчејну и има своје име Генесис блоцк. Преостали блокови имају исту структуру и разликују се само по броју трансакција. Праве трансакције и блокови који се тренутно креирају у Битцоин или Етхереум могу се видети у Блоцк Екплорер.

Величина блокова у Битцоин-у је ограничена на 1МБ и са минималном количином информација у трансакцији од око 200 бајтова, максимални број трансакција у блоку може бити око 6000. Одавде, иначе, следи перформансе Битцоин-а, којима се сви смеју: блок се генерише отприлике једном на сваких 10 минута * 60 секунди = 600 секунди, што даје формални учинак од око 10 ТПС. Иако у ствари, ово није продуктивност, већ намерно спроведен алгоритам рада. У Етхереуму, за такмичење, једноставно су направили време генерисања блокова од 15 секунди. а продуктивност је формално порасла. Стога, у блокчејновима који користе ПоВ као консензус, нема смисла уопште поредити перформансе, јер директно зависи од сложености прорачуна кеша, који се може доделити било којој вредности.

Форкс

Шта се дешава ако, на пример, неколико чворова пронађе хешове који испуњавају услове сложености, али се разликују по вредности (другим речима, дошли су до различитих консензуса) и уписују блокове у блок ланац? Хајде да видимо како блоцкцхаин штити од ове ситуације. У овом случају долази до такозване виљушке, а блок ланац има две верзије ланца:

Шта треба да изградимо блоцкцхаин?

Шта се даље дешава? Затим, део мреже почиње да ради на блоку Н+2 из једног ланца, а део из другог:

Шта треба да изградимо блоцкцхаин?

Један од ових блокова ће бити пронађен раније и послат у блоцкцхаин, а затим ће, према правилима, блоцкцхаин морати да пређе на дужи ланац и поништи све трансакције из алтернативног блока:

Шта треба да изградимо блоцкцхаин?

Истовремено, може настати ситуација када је трансакција учесника била само у једном од блокова виљушке, који је отказан. Стога, да бисте били сигурни да је жељена трансакција снимљена у блок ланцу, постоји општа препорука - пре него што верујете трансакцији, требало би да сачекате док се следећих неколико блокова не додају у блок. Препоруке о томе колико блокова треба чекати за различите блокчејнове се разликују. На пример, за Битцоин мрежу минимум је 2 блока, максимум је 6.

Иста слика са блок виљушкама ће се посматрати током такозваног 51% напада - то је када група рудара покушава да развије алтернативни ланац блокова, настојећи да откаже ланац својим лажним трансакцијама. Иако је тренутно, уместо на превару, исплативије потрошити своју моћ на поштено рударење.

Консензус

Да би се снимио блок на блоцкцхаин-у, мрежа мора постићи консензус. Подсетимо се задатка постизања консензуса у рачунарским комуникационим мрежама. Проблем је формулисан као задатак византијских генерала БФТ (Византијска толеранција на кварове). Изостављајући сликовит опис проблема византијске војске, проблем се може формулисати на следећи начин: како чворови мреже могу доћи до заједничког резултата ако их неки мрежни чворови могу намерно искривити. Постојећи алгоритми за решавање БФТ проблема показују да мрежа може исправно да функционише ако има мање од 1/3 преваранта. Зашто БФТ консензус није примењен на Битцоин мрежу? Зашто је било потребно користити ПоВ? Постоји неколико разлога:

  • БФТ добро функционише са малим фиксним скупом чворова, али у јавном блокчејну број чворова је непредвидив и, штавише, чворови се могу насумично укључивати и искључивати.
  • Неопходно је мотивисати људе да покрену блокчејн чворове. Да би то учинили, људи морају бити награђени. У БФТ-у формално нема за шта да се добије награда, али за шта је награда у ПоВ-у свима је јасно на интуитивном нивоу: за струју коју процесор потроши у процесу проналажења хеша блока.

Поред ПоВ-а, постоји неколико других консензуса који се користе у модерним блок-чејновима, на пример:

  • ПоС (Прооф-оф-Стаке) - на блокчејну Хиперледгер
  • ДПоС (Делегатед Прооф-оф-Стаке) - на блокчејну БитСхарес
  • Модификације БФТ-а: СБФТ (поједностављени БФТ) и ПБФТ (практични БФТ), на пример у блокчејну Еконум

Хајде да се задржимо мало на ПоС консензусу, јер... Управо су ПоС и његове варијанте најраспрострањенији у приватним блок-чејновима. Зашто приватно? С једне стране, карактеристике ПоС-а су боље у поређењу са ПоВ-ом, јер Да би се постигао консензус, потребно је мање рачунарских ресурса, што значи да се повећава брзина писања података у блоцкцхаин. Али с друге стране, ПоС има више могућности за превару, тако да да би се то неутралисало, сви учесници у блокчејну морају бити познати.

ПоС консензус се заснива на избору чвора који може да упише блок са трансакцијама у блокчејн у зависности од износа средстава на рачуну, тачније, не на рачуну, већ у колатералу, тј. Што више средстава имате као колатерал, већа је вероватноћа да ће мрежа изабрати ваш чвор за писање блока. Депозит се неће вратити ако је блок неважећи. Ово обезбеђује заштиту од преваре. Постоје следеће варијације ПоС-а:

  • Делегирани ПоС (ДПоС) консензус дели учеснике на „гласаче“ и „валидаторе“. Власници новчића (учесници са гласањем) делегирају своје овлашћење за верификацију и снимање трансакција на блокчејну другим учесницима. Тако валидатори обављају сав рачунски посао и за то добијају награду, а присуство учесника у гласању гарантује поштење валидатора, јер могу се променити у било ком тренутку.
  • ЛПоС (Леасед Прооф-оф-Стаке) консензус вам омогућава да закупите своја средства другим чворовима како би они имали веће шансе за валидацију блокова. То. Можете добити провизију за трансакције без учешћа у стварној верификацији трансакције и рударењу блокова.

Постоји низ других консензуса који још увек нису широко коришћени, само ћу их овде навести ради информација, а преглед самих алгоритама консензуса може се наћи, на пример, у чланку: Алгоритми консензуса у блокчејну.

  • ПоЕТ (Прооф-оф-Елапсед Тиме)
  • ПоЦ (доказ капацитета)
  • ПоБ (Прооф-оф-Бурн)
  • ПоВеигхт (Прооф-оф-Веигхт)
  • ПоА (Прооф-оф-Ацтивити) – ПоВ + ПоС
  • ПоИ (Прооф-оф-Импортанс)

Поузданост и модели примене блокчејн-а

Јавни блоцкцхаин

Постојаност Јавност или друго име Блоцкцхаин без дозволе Ово се постиже омогућавањем било коме да се повеже и прегледа информације или чак повеже сопствени чвор, а поверење се гради на ПоВ консензусу.

Приватни блоцкцхаин

Приватан или Приватни Дозвољени блоцкцхаин. У овим блокчејновима само одређена група учесника (организације или људи) има приступ информацијама. Организације граде такве блокове са циљем повећања укупне користи или ефикасности. Њихова поузданост је обезбеђена заједничким циљевима учесника и ПоС и БФТ алгоритмима консензуса.

Блоцкцхаин Цонсортиум

Тамо Конзорцијум или Публиц Пермиссионед блоцкцхаин. Ово су блок ланци на које свако може да се повеже да би их прегледао, али учесник може додати информације или повезати свој чвор само уз дозволу других учесника. Такве блокчејнове изграђују организације како би повећале поверење купаца или потрошача производа или друштва у целини. Овде се поузданост постиже и присуством поверења између учесника и истих ПоС и БФТ алгоритама консензуса.

Смарт Цонтрацтс

Блоцкцхаинс имплементирани након Битцоин-а су, у једном или другом степену, додали могућност извршавања паметних уговора. У суштини, паметни уговор је трансакција у којој се програмски код ставља за извршење. Паметни уговори на Етхереум мрежи се извршавају у ЕВМ-у (Етхереум Виртуал Мацхине). Да бисте започели извршавање паметног уговора, он мора бити експлицитно покренут другом трансакцијом или морају бити испуњени предуслови за извршење. Резултати извршења паметног уговора такође ће бити забележени у блокчејну. Примање података изван блокчејна је могуће, али изузетно ограничено.

Која пословна логика се може имплементирати помоћу паметног уговора? У ствари, нема много, на пример, провера услова коришћењем података из блокчејна, промена власника дигиталне имовине у зависности од ових услова, снимање података у трајно складиште унутар блокчејна. Логика је имплементирана у посебном језику високог нивоа Солидити.

Класичан пример функционалности која се имплементира помоћу паметних уговора је издавање токена за ИЦО. На пример, имплементирао сам паметни уговор за издавање скромних 500 АлекТокена. Од стране веза у Етхерсцан је

изворни код паметног уговора на језику Солидити

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;
}

и бинарни приказ како га мрежа види

60806040526000600355600060045533600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600560146101000a81548160ff021916908360028111156200006f57fe5b0217905550620001036b019d971e4fe8401e74000000600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200024a6401000000000262000b1d179091906401000000009004565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620001986b019d971e4fe8401e740000006001546200024a6401000000000262000b1d179091906401000000009004565b6001819055506b033b2e3c9fd0803ce8000000600481905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6b019d971e4fe8401e740000006040518082815260200191505060405180910390a362000267565b600081830190508281101515156200025e57fe5b80905092915050565b611cb880620002776000396000f300608060405260043610610112576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146104c7578063095ea7b31461055757806318160ddd146105bc57806323b872dd146105e7578063313ce5671461066c578063355274ea146106a3578063518ab2a8146106ce57806366188463146106f957806370a082311461075e57806389311e6f146107b55780638da5cb5b146107cc578063903a3ef61461082357806395d89b411461083a578063a9059cbb146108ca578063bf5839031461092f578063c7876ea41461095a578063cbcb317114610985578063d73dd623146109b0578063dd62ed3e14610a15578063f2fde38b14610a8c575b60008060008060006001600281111561012757fe5b600560149054906101000a900460ff16600281111561014257fe5b14151561014e57600080fd5b60003411151561015d57600080fd5b600060045411151561016e57600080fd5b3494506101a7670de0b6b3a764000061019968056bc75e2d6310000088610acf90919063ffffffff16565b610b0790919063ffffffff16565b9350600092506b033b2e3c9fd0803ce80000006101cf85600354610b1d90919063ffffffff16565b111561024c576101f66003546b033b2e3c9fd0803ce8000000610b3990919063ffffffff16565b915061022e670de0b6b3a764000061022068056bc75e2d6310000085610b0790919063ffffffff16565b610acf90919063ffffffff16565b90506102438186610b3990919063ffffffff16565b92508094508193505b61026184600354610b1d90919063ffffffff16565b6003819055506102886003546b033b2e3c9fd0803ce8000000610b3990919063ffffffff16565b6004819055506000831115610344573373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156102dd573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a35b610395846000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040518082815260200191505060405180910390a361045184600154610b1d90919063ffffffff16565b600181905550600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc869081150290604051600060405180830381858888f193505050501580156104bf573d6000803e3d6000fd5b505050505050005b3480156104d357600080fd5b506104dc610b52565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561051c578082015181840152602081019050610501565b50505050905090810190601f1680156105495780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561056357600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b8b565b604051808215151515815260200191505060405180910390f35b3480156105c857600080fd5b506105d1610c7d565b6040518082815260200191505060405180910390f35b3480156105f357600080fd5b50610652600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610c87565b604051808215151515815260200191505060405180910390f35b34801561067857600080fd5b50610681611041565b604051808263ffffffff1663ffffffff16815260200191505060405180910390f35b3480156106af57600080fd5b506106b8611046565b6040518082815260200191505060405180910390f35b3480156106da57600080fd5b506106e3611056565b6040518082815260200191505060405180910390f35b34801561070557600080fd5b50610744600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061105c565b604051808215151515815260200191505060405180910390f35b34801561076a57600080fd5b5061079f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112ed565b6040518082815260200191505060405180910390f35b3480156107c157600080fd5b506107ca611335565b005b3480156107d857600080fd5b506107e16113eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561082f57600080fd5b50610838611411565b005b34801561084657600080fd5b5061084f6114ab565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561088f578082015181840152602081019050610874565b50505050905090810190601f1680156108bc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108d657600080fd5b50610915600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114e4565b604051808215151515815260200191505060405180910390f35b34801561093b57600080fd5b50610944611703565b6040518082815260200191505060405180910390f35b34801561096657600080fd5b5061096f611709565b6040518082815260200191505060405180910390f35b34801561099157600080fd5b5061099a611716565b6040518082815260200191505060405180910390f35b3480156109bc57600080fd5b506109fb600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611726565b604051808215151515815260200191505060405180910390f35b348015610a2157600080fd5b50610a76600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611922565b6040518082815260200191505060405180910390f35b348015610a9857600080fd5b50610acd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119a9565b005b600080831415610ae25760009050610b01565b8183029050818382811515610af357fe5b04141515610afd57fe5b8090505b92915050565b60008183811515610b1457fe5b04905092915050565b60008183019050828110151515610b3057fe5b80905092915050565b6000828211151515610b4757fe5b818303905092915050565b6040805190810160405280600981526020017f416c6578546f6b656e000000000000000000000000000000000000000000000081525081565b600081600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600154905090565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614151515610cc457600080fd5b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610d1157600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548211151515610d9c57600080fd5b610ded826000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e80826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f5182600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b601281565b6b033b2e3c9fd0803ce800000081565b60035481565b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508083111561116d576000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611201565b6111808382610b3990919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561139157600080fd5b60028081111561139d57fe5b600560149054906101000a900460ff1660028111156113b857fe5b141515156113c557600080fd5b6001600560146101000a81548160ff021916908360028111156113e457fe5b0217905550565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561146d57600080fd5b60028081111561147957fe5b600560149054906101000a900460ff16600281111561149457fe5b141515156114a157600080fd5b6114a9611b01565b565b6040805190810160405280600381526020017f414c54000000000000000000000000000000000000000000000000000000000081525081565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415151561152157600080fd5b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054821115151561156e57600080fd5b6115bf826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b3990919063ffffffff16565b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611652826000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60045481565b68056bc75e2d6310000081565b6b019d971e4fe8401e7400000081565b60006117b782600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a0557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611a4157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6002600560146101000a81548160ff02191690836002811115611b2057fe5b021790555060006004541115611c0a57611ba5600454600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b1d90919063ffffffff16565b600080600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f19350505050158015611c89573d6000803e3d6000fd5b505600a165627a7a723058205bbef016cc7699572f944871cb6f05e69915ada3a92a1d9f03a3fb434aac0c2b0029

Више детаља о паметним уговорима можете пронаћи у чланку: Шта су паметни уговори у Етхереуму.

Закључак

Навели смо технологије на којима су изграђени модерни блок ланци и како су међусобно повезани. Хајде сада да формулишемо који проблеми се могу решити коришћењем блоцкцхаина, а која решења ће бити, у најбољем случају, неефикасна. Дакле, коришћење блоцкцхаина није неопходно ако:

  • Трансакције се обављају у поузданом окружењу;
  • Присуство комисије посредника не погоршава живот учесника;
  • Учесници немају имовину која се може представити као дигитална имовина;
  • Не постоји дистрибуција у дигиталним средствима, тј. вредност поседује или испоручује само један учесник.

Шта чека будућност за блоцкцхаин? Сада можемо само да спекулишемо о могућим начинима за развој блоцкцхаин технологија:

  • Блоцкцхаин ће постати иста уобичајена технологија базе података као, на пример, СКЛ или НоСКЛ за решавање свог специфичног спектра проблема;
  • Блоцкцхаин ће постати широко распрострањен протокол, као што је ХТТП за Интернет;
  • Блоцкцхаин ће постати основа за нови финансијски и политички систем на планети!

У наредном делу ћемо погледати шта блокчејн тренутно постоје и зашто се користе у различитим индустријама.

Ово је тек почетак!

Извор: ввв.хабр.цом

Додај коментар