
Повече от година работих върху книгата „Създаване на смарт договори Solidity за блокчейн Ethereum. Практическо ръководство“, и сега тази работа е завършена, а книгата .
Надявам се, моята книга да помогне бързо да започнете да създавате смарт договори Solidity и разпределени приложения DApp за блокчейн Ethereum. Тя съдържа 12 урока с практически задания. След като ги изпълните, читателят ще може да създава собствените си локални възли на Ethereum, да публикува смарт договори и да извиква техните методи, да обменя данни между реалния свят и смарт договори с помощта на оракули, да работи с тестовата отладъчна мрежа Rinkeby.
Книгата е предназначена за всички, които се интересуват от авангардни технологии в областта на блокчейновете и искат бързо да получат знания, които ще им позволят да се занимават с интересна и перспективна работа.
По-долу ще намерите съдържанието и първа глава на книгата (също на са налични откъси от книгата). Надявам се да получа обратна връзка, забележки и предложения. Всичко това ще се опитам да взема предвид при подготовката на следващото издание на книгата.
СъдържаниеВъведениеНашата книга е предназначена за тези, които искат не само да разберат принципите на работа на блокчейн Ethereum, но и да получат практически умения за създаване на разпределени приложения DApp на езика за програмиране Solidity за тази мрежа.
Тази книга е най-добре да не се чете просто, а да се работи с нея, изпълнявайки практически задания, описани в уроците. За работа ще ви е необходим локален компютър, виртуален или облачен сървър с инсталирана ОС Debian или Ubuntu. Също така, за изпълнение на много задания може да се използва Raspberry Pi.
В първия урок ще разгледаме принципите на работа на блокчейн Ethereum и основната терминология, както и ще разкажем за това, къде може да се използва този блокчейн.
Цел втория урок — да създадем възел на приватния блокчейн Ethereum за бъдеща работа в рамките на този курс на сървър с Ubuntu и Debian. Ще разгледаме особеностите на инсталирането на основни утилити, като geth, осигуряващ работата на възела на нашия блокчейн, както и демона на децентрализираното хранилище на данни swarm.
Третият урок ще ви научи как да провеждате експерименти с Ethereum на евтиния микрокомпютър Raspberry Pi. Ще инсталирате операционната система (ОС) Rasberian на Raspberry Pi, утилитата Geth, която поддържа работата на блокчейн възел, както и демон на децентрализирано хранилище на данни Swarm.
Четвърти урок е посветен на акаунтите и криптовалутните единици в мрежата Ethereum, както и на начините за прехвърляне на средства от един акаунт на друг от конзолата Geth. Ще научите как да създавате акаунти, да инициирате транзакции за прехвърляне на средства, да получавате състоянието на транзакцията и нейния разписка.
На петия урок ще се запознаете със смарт-контрактите в мрежата Ethereum и ще научите за тяхното изпълнение от виртуалната машина Ethereum.
Ще създадете и публикувате в частната мрежа Ethereum своя първи смарт-контракт и ще научите как да извиквате неговите функции. За това ще използвате средата за разработка Remix Solidity IDE. Освен това, ще научите как да инсталирате и използвате пакетния компилатор solc.
Също така ще говорим за така наречения бинарен интерфейс на приложение (ABI) и ще ви научим как да го използвате.
Шести урок е посветен на създаването на JavaScript скриптове, работещи под управлението на Node.js и извършващи операции със смарт-контрактите Solidity.
Ще инсталирате Node.js в ОС Ubuntu, Debian и Rasberian, ще напишете скриптове за публикуване на смарт-контракт в локалната мрежа Ethereum и за извикване на неговите функции.
Освен това, ще научите как да преведете средства между обикновени акаунти с помощта на скриптове, а също и как да добавяте средства към акаунти на смарт-контракти.
На седмия урок ще научите как да инсталирате и използвате популярната среда Truffle, разпространена сред разработчиците на смарт-контракти Solidity. Ще научите как да създавате JavaScript скриптове, които извикват функции на договори с помощта на модула truffle-contract, както и да тествате своя смарт-контракт с инструментите на Truffle.
Осми урок е посветен на типовете данни в Solidity. Ще напишете смарт-контракти, които работят с типове данни като знакови и беззнакови цели числа, числа със знак, строки, адреси, променливи от сложни типове, масиви, изброения, структури и речници.
На деветия урок Вие ще направите още една крачка към създаването на смарт контракти за основната мрежа на Ethereum. Ще научите как да публикувате контракти с Truffle в приватната мрежа Geth, а също и в тестовата мрежа Rinkeby. Отстраняването на грешки в смарт контракт в мрежата Rinkeby е изключително полезно преди публикуването му в основната мрежа — там всичко почти е истинско, но безплатно.
В рамките на урока ще създадете възел на тестовата мрежа Rinkeby, ще го попълните със средства и ще публикувате смарт контракт.
Урок 10 е посветен на разпределените хранилища на данни Ethereum Swarm. Използвайки разпределени хранилища, спестявате от съхранението на Dane с голям обем в блокчейна Ethereum.
В рамките на този урок ще създадете локално хранилище Swarm, ще извършите операции за записване и четене на файлове, а също и на каталози с файлове. След това ще научите как да работите с публичен шлюз Swarm, ще напишете скриптове за взаимодействие с Swarm от Node.js, както и с помощта на модула Perl Net::Ethereum::Swarm.
Целта на урок 11 е да овладеете работата със смарт контракти Solidity, използвайки популярния език за програмиране Python и фреймуърка Web3.py. Ще инсталирате този фреймуърк, ще напишете скриптове за компилиране и публикуване на смарт контракт, а също и за извикване на неговите функции. При това Web3.py ще бъде използван както самостоятелно, така и съвместно с интегрираната среда за разработка Truffle.
На 12 урока вие ще научите как да предавате данни между смарт контракти и реалния свят с помощта на оракули. Това ще ви бъде полезно да получавате данни от уебсайтове, устройства на интернет на нещата IoT, различни измервателни уреди и сензори, и да изпращате данни от смарт контракти към тези устройства. В практическата част на урока ще създадете оракул и смарт контракт, който получава актуалния курс на обмена между USD и рубли от сайта на ЦБ РФ.
Урок 1. Кратко за блокчейн и мрежата EthereumЦелта на урока: да се запознаете с принципите на работа на блокчейна Ethereum, областите на приложение и основната терминология.
Практически задания: в този урок не са предвидени.
Дали днес съществува разработчик на софтуер, който да не е чул за технологията блокчейн (Blockchain), криптовалутите (Cryptocurrency или Crypto Currency), биткойните (Bitcoin), принципното разположение на монети (ICO, Initial coin offering), смарт контрактите (Smart Contract) и други понятия и термини, свързани с блокчейна.
Технология на блокчейнa отваря нови пазари и създава работни места за програмисти. Ако овладеете всички нюанси на криптовалутните технологии и технологии за смарт-договори, няма да имате проблеми с прилагането на тези знания на практика.
Трябва да се каже, че около криптовалутите и блокчейните възникват много спекулации. Ще оставим настрана разсъжденията за промените в курсa на криптовалутите, за създаването на пирамиди, за нюансите на криптовалутното законодателство и т.н. В нашия учебен курс ще се фокусираме главно върху техническите аспекти на приложението на смарт-договорите в блокчейна Ethereum (ефириум, эфир) и разработката на така наречените децентрализирани приложения (Distributed Application, DApp).
Какво е блокчейн
Блокчейн (Blockchain, Block Chain) представлява верига от блокове данни, свързани помежду си по определен начин. В началото на веригата се намира първият блок, наречен основен блок (genesis block) или блок на генезиса. След него следва втори, после трети и така нататък.
Всички тези блокове данни автоматично се дублират на множество възли в мрежата на блокчейна. Така се осигурява децентрализирано съхранение на данните на блокчейна.
Можете да си представите системата на блокчейнa като голям брой възли (физически или виртуални сървъри), свързани в мрежа и репликиращи всички промени в веригата от блокове данни. Това е като огромен мултисървърен компютър, като възлите на този компютър (сървъри) може да са разпръснати по целия свят. И вие също можете да добавите своя компютър към мрежата на блокчейна.
Разпределена база данни
Блокчейн може да се представи като разпределена база данни, репликирана на всички възли в мрежата на блокчейна. В теория блокчейнът ще работи, докато работи поне един възел, който съхранява всички блокове на блокчейна.
Разпределен регистър на данни
Блокчейн може да се представи като разпределен регистър на данни и операции (транзакции). Друго наименование на такъв регистър е гросбух.
В разпределен регистър могат да се добавят данни, но не е възможно те да бъдат променяни или изтривани. Тази невъзможност се постига, наред с другото, чрез прилагането на криптографски алгоритми, специални алгоритми за добавяне на блокове в веригата и децентрализирано съхранение на данни.
При добавяне на блокове и извършване на операции (транзакции) се използват частни и публични ключове. Те ограничават потребителите на блокчейна, предоставяйки им достъп само до техните блокове данни.
Транзакции
Блокчейн съхранява информация за операции (транзакции) в блокове. В същото време старите, вече завършени транзакции не могат да бъдат отменяни или променяни. Новите транзакции се съхраняват в нови, добавени блокове.
По този начин в блокчейна може да бъде записана в неизменен вид цялата история на транзакциите. Затова блокчейн може да бъде използван, например, за надеждно съхранение на банкови операции, сведения за авторски права, история на промените в собствениците на недвижими имоти и т.н.
Блокчейн Етериум съдържа така наречените състояния на системата. С течение на транзакциите състоянието се променя от началното до текущото. Транзакциите се записват в блокове.
Публични и частни блокчейни
Тук трябва да се отбележи, че всичко казано е вярно само за така наречените публични мрежи на блокчейн, които не могат да бъдат контролирани от никакви отделни физически или юридически лица, държавни органи или правителства.
Така наречените частни мрежи на блокчейн са под пълен контрол на техните създатели, и там е възможно всичко, например, пълна замяна на всички блокове в веригата.
Практически приложения на блокчейна
За какво може да бъде полезен блокчейн?
Накратко, блокчейн позволява безопасно извършване на операции (сделки) между недоверяващи се помежду си лица или компании. Записаните в блокчейн данни (транзакции, лични данни, документи, свидетелства, договори, товарителници и т.н.) не могат да бъдат подправяни или заменяни след записването. Затова с база на блокчейн може да се създават, например, доверени разпределени регистри на различни видове документи.
Разбира се, знаете, че на основата на блокчейн технологии се създават криптовалутни системи, предназначени да заменят обикновените хартиени пари. Хартиените пари се наричат още фиатни (от Fiat Money).
Блокчейнът осигурява съхранение и неизменност на транзакции, записани в блокове, затова той може да бъде използван за създаване на криптовалутни системи. Той съдържа цялата история на прехвърляне на крипто-средства между различни потребители (акаунти), като всяка операция може да бъде проследена.
Въпреки че операциите в криптовалутните системи могат да бъдат анонимни, изтеглянето на криптовалута и обменът на фиатни пари обикновено води до разкриване на самоличността на притежателя на криптовалутния актив.
Така наречените смарт-контракти, които представляват софтуер, работещ в мрежата на Ethereum, позволяват автоматизиране на процеса на сключване на сделки и контрол на тяхното изпълнение. Особено е ефективно, когато плащането по сделката се извършва с криптовалутата Ether (ефир).
Блокчейнът на Ethereum и смарт-контрактите на Ethereum, написани на програмния език Solidity, могат да бъдат използвани, например, в следните области:
- алтернатива на нотариалното удостоверяване на документи;
- съхранение на регистри на имоти и информация за операции с имоти;
- съхранение на информация за авторските права върху обекти на интелектуалната собственост (книги, изображения, музикални произведения и т.н.);
- създаване на системи за независимо гласуване;
- финансова и банковата сфера;
- логистика в международен мащаб, проследяване на движението на товари;
- съхранение на лични данни като аналог на система за удостоверяване на личността;
- сигурни сделки в търговската област;
- съхранение на резултати от медицински прегледи, а също и история на назначените процедури.
Проблеми с блокчейна
Но, разбира се, не всичко е толкова просто, колкото може да изглежда!
Има проблеми с верификацията на данните преди добавянето им в блокчейна (например, не са ли фалшиви?), проблеми със сигурността на системния и приложния софтуер, използван за работа с блокчейн, проблеми с възможността за използване на методи на социална инженерия за кражба на достъп до портфейли с криптовалута и т.н.
Отново, ако става въпрос не за публичен блокчейн, чийто възли са разположени по целия свят, а за частен блокчейн, принадлежащ на лице или организация, тогава нивото на доверие тук няма да бъде по-високо от нивото на доверие към това лице или организация.
Също така трябва да се вземе предвид, че данните, записани в блокчейна, стават достъпни за всички. В това отношение блокчейнът (особено публичният) не е подходящ за съхранение на конфиденциална информация. Въпреки това, фактът, че информацията в блокчейна не може да бъде променяна, може да помогне за предотвратяване или разследване на различни видове измамни действия.
Децентрализираните приложения на Ethereum ще бъдат удобни, ако се плаща за тяхното използване с криптовалута. Колкото повече хора притежават криптовалута или са готови да я придобият, толкова по-голяма популярност ще получат DApp приложенията и смарт контрактите.
Сред общите проблеми на блокчейна, които затрудняват неговото практическо приложение, могат да се споменат ограничената скорост на добавяне на нови блокове и относително високата цена на транзакциите. Но технологиите в тази област активно се развиват и има надежди, че техническите проблеми с времето ще бъдат решени.
Още един проблем е, че смарт контрактите на блокчейна Ethereum работят в изолирана среда на виртуални машини и нямат достъп до данни от реалния свят. В частност, програмата на смарт контракта не може сама да прочете данни от уебсайтове или от физически устройства (сензори, контакти и т.н.), а също така не може да изведе данни на външни устройства. Тази проблема и методите за нейното решаване ще обсъдим в урока, посветен на така наречените Оракли — информационни посредници на смарт контрактите.
Има и ограничения в областта на законодателството. В някои държави, например, е забранено използването на криптовалута като платежно средство, но е възможно да се притежава като определен цифров актив, подобно на ценни книжа. Такива активи могат да се купуват и продават на борсата. Във всеки случай, при създаването на проект, работещ с криптовалути, е необходимо да се запознаете със законодателството на страната, под юрисдикцията на която попада вашият проект.
Как се формира веригата на блокчейна
Както вече казахме, блокчейн представлява просто верига от блокове данни. Първо се създава първият блок от тази верига, след което към него се добавя втори и така нататък. Предполага се, че данните от транзакциите се съхраняват в блоковете и се добавят в последния блок.
На рис. 1.1 показахме най-простия вариант на последователност от блокове, където първият блок се препраща към следващия.

Рис. 1.1. Простата последователност от блокове
В такъв вариант обаче е много лесно да се фалшифицират съдържанието на който и да е блок от веригата, тъй като блоковете не съдържат никаква информация за защита от промени. Като се има предвид, че блокчейнът е предназначен за използване от хора и компании, между които няма доверие, можем да заключим, че такъв начин на съхранение на данни не е подходящ за блокчейн.
Нека да се занимаем със защитата на блоковете от фалшификация. На първия етап ще опитаме да защитим всеки блок с контролна сума (рис. 1.2).

Рис. 1.2. Добавяме защита на данните на блоковете с контролна сума
Сега злонамерен човек не може просто да промени блока, тъй като в него се намира контролна сума на данните на блока. Проверката на контролата сума ще покаже, че данните са били променени.
За изчисляването на контролна сума може да се използва една от хеш-функциите, като MD-5, SHA-1, SHA-256 и т.н. Хеш-функциите изчисляват определена стойност (например, под формата на текстова стринг с постоянна дължина) в резултат на необратими операции върху блока данни. Операциите зависят от вида на хеш-функцията.
Дори при малка промяна в съдържанието на блока данни, стойността на хеш-функцията също ще се промени. Анализирайки стойността на хеш-функцията, е невъзможно да се възстанови блокът данни, за който тя е изчислена.
Дали такава защита ще е достатъчна? За съжаление, не.
В тази схема контролна сума (хеш-функция) защитава само отделните блокове, но не и цялата верига от блокове. Знаейки алгоритма за изчисляване на хеш-функцията, злонамерен човек може лесно да подмени съдържанието на блока. Нищо не му пречи да изтрие блокове от веригата или да добави нови.
За да защитим цялата верига като цяло, можем да съхраняваме във всеки блок наред с данните и хеш на данните от предходния блок (рис. 1.3).

Рис. 1.3. Добавяме в блока данни хеш на предишния блок
В тази схема, за да се промени някой блок, е необходимо да се преизчислят хеш-функциите на всички последващи блокове. На пръв поглед, какъв е проблемът?
В реалните блокчейни допълнително се създават изкуствени трудности за добавяне на нови блокове — използват се алгоритми, изискващи много изчислителни ресурси. Като се има предвид, че за да внесете промени в блок, трябва да преизчислите не само този блок, а и всички последващи, това ще бъде изключително трудно.
Нека си припомним, че данните на блокчейна се съхраняват (дублират) на множеството възли в мрежата, т.е. използва се децентрализирано съхранение. И това многократно усложнява фалшифицирането на блок, тъй като промените трябва да бъдат направени на всички възли в мрежата.
Тъй като блоковете съхраняват информация за предишния блок, може да се провери съдържанието на всички блокове в веригата.
Блокчейн Ethereum
Блокчейн Ethereum представлява платформа, върху която могат да се създават разпределени приложения DApp. В отличия от други платформи, Ethereum позволява използването на така наречените умни договори (smart contracts), написани на програмния език Solidity.
Тази платформа е създадена през 2013 година от Виталик Бутерин, основател на списание Bitcoin Magazine, и е пусната в експлоатация през 2015 година. Всичко, което ще изучаваме или правим в нашия учебен курс, е свързано именно с блокчейна Ethereum и смарт-договорите Solidity.
Майнинг или как се създават блокове
Майнинг (mining) представлява доста сложен и ресурсноемък процес на добавяне на нови блокове в блокчейна, а не просто „допадане“ на криптовалути. Майнингът осигурява работоспособността на блокчейна, тъй като именно този процес отговаря за добавянето на транзакции към блокчейн Ethereum.
Хората и организациите, занимаващи се с добавяне на блокове, се наричат майнери (miner).
Програмното осигуряване (ПО), работещо на възлите на майнерите, се опитва да подбере за последния блок параметъра за хеширане, наречен Nonce, така че да се получи определена стойност на хеш-функцията, зададена от мрежата. Алгоритъмът за хеширане Ethash, прилаган в Ethereum, позволява получаването на стойността Nonce само чрез последователно пробване.
Ако възел на миньора намери правилната стойност за Nonce, то това е така нареченото доказателство за работа (PoW, Proof-of-work). В този случай, ако блокът бъде добавен в мрежата на Ethereum, миньорът получава определено възнаграждение в валутата на мрежата — Ether. В момента на подготовката на нашата книга възнаграждението е 5 Ether, но с времето то ще бъде намалено.
По този начин, миньорите на Ethereum осигуряват работата на мрежата, добавяйки блокове, и получават за това криптовалута. В интернет можете да намерите много информация за миньорите и майнинга, а ние ще се съсредоточим върху създаването на Solidity контракти и децентрализирани приложения DApp в мрежата на Ethereum.
Резюме на урока
На първия урок се запознахте с блокчейна и научихте, че той представлява специално подредена последователност от блокове. Съдържанието на вече записаните блокове не може да бъде променяно, тъй като за това ще трябва да се преизчислят всички последващи блокове на много възли от мрежата, за което са нужни много ресурси и време.
Блокчейнът може да се използва за запазване на резултатите от изпълнението на транзакции. Неговата основна цел е организирането на безопасно осъществяване на транзакции между страни (лица и организации), между които няма доверие. Вие научихте в кои конкретни области на бизнеса и в кои сфери може да се използва блокчейн Ethereum и Smart contracts на Solidity. Това включва банковия сектор, регистрация на права на собственост, документи и т.н.
Вие също така научихте, че при използването на блокчейн могат да възникнат различни проблеми. Това са проблеми с верификацията на информацията, добавяна в блокчейна, скоростта на работа на блокчейна, цената на транзакциите, проблемът с обмена на данни между смарт-контрактите и реалния свят, както и потенциални атаки от злонамерени лица, насочени към кражба на криптовалути от акаунти на потребители.
Също така кратко обсъдихме майнинга като процес на добавяне на нови блокове в блокчейна. Майнингът е необходим за изпълнението на транзакции. Те, които се занимават с майнинг, осигуряват работоспособността на блокчейна и получават за това възнаграждение в криптовалута.
Урок 2. Подготовка на работната среда в ОС Ubuntu и DebianИзбор на операционна система
Инсталиране на необходимите утилити
Инсталиране на Geth и Swarm в Ubuntu
Инсталиране на Geth и Swarm в Debian
Предварителна подготовка
Изтегляне на дистрибуцията на Go
Настройка на променливи на средата
Проверка на версията на Go
Инсталиране на Geth и Swarm
Създаваме частен блокчейн
Готовим файл genesis.json
Създаваме директория за работа
Създаваме акаунт
Стартираме инициализация на възела
Параметри за стартиране на възела
Свързваме се с нашия възел
Управление на майнинга и проверка на баланса
Завършване на работата на конзолата Geth
Резюме на урока
Урок 3. Подготовка на работната среда на Raspberry Pi 3Подготовка на Raspberry Pi 3 за работа
Инсталиране на Raspbian
Инсталиране на актуализации
Активиране на SSH достъп
Настройка на статичен IP адрес
Инсталиране на необходимите утилити
Инсталиране на Go
Изтегляне на дистрибуцията на Go
Настройка на променливи на средата
Проверка на версията на Go
Инсталиране на Geth и Swarm
Създаваме частен блокчейн
Проверка на акаунта и баланса
Резюме на урока
Урок 4. Акаунти и прехвърляне на средства между акаунтитеПреглед и добавяне на акаунти
Преглед на списъка с акаунти
Добавяне на акаунт
Параметри на командата geth account
Пароли на акаунтите
Криптовалута в Ethereum
Парични единици на Ethereum
Определяне на текущия баланс на нашите акаунти
Прехвърляне на средства от един акаунт на друг
Метод eth.sendTransaction
Преглед на състоянието на транзакцията
Квитанция за транзакция
Резюме на урока
Урок 5. Публикуване на първия контрактСмарт контракти в Ethereum
Изпълнение на смарт контракта
Виртуална машина Ethereum
Интегрирана среда за разработка Remix Solidity IDE
Стартиране на компилацията
Извикване на функциите на контракта
Публикуване на контракта в частна мрежа
Получаване на определението на ABI и бинарния код на контракта
Публикация на контракта
Проверка на състоянието на транзакцията за публикуване на контракта
Извикване на функциите на контракта
Пакетен компилатор solc
Инсталиране на solc в Ubuntu
Инсталиране на solc в Debian
Компилиране на контракта HelloSol
Публикация на контракта
Инсталиране на solc на Raspbian
Резюме на урока
Урок 6. Смарт-контракты и Node.jsУстановка Node.js
Инсталиране в Ubuntu
Инсталиране в Debian
Инсталиране и стартиране на Ganache-cli
Инсталиране на Web3
Инсталиране на solc
Инсталиране на Node.js на Raspbian
Скрипт за получаване на списък с акаунти в конзолата
Скрипт за публикуване на смарт контракт
Стартиране и получаване на параметри
Получаване на параметри за стартиране
Компилиране на контракта
Разблокиране на акаунта
Изтегляне на ABI и бинарния код на контракта
Оценка на необходимото количество газ
Създаване на обект и стартиране на публикацията на контракта
Стартиране на скрипта за публикуване на контракта
Извикване на функциите на смарт контракта
Възможно ли е обновяване на публикувания смарт контракт
Работа с Web3 версия 1.0.x
Получаване на списък с акаунти
Публикация на контракта
Извикване на функциите на контракта
Прехвърляне на средства от един акаунт на друг
Прехвърляне на средства на акаунта на контракта
Обновяване на смарт контракта HelloSol
Създаване на скрипт за преглед на баланса на акаунта
Добавляем вызов функции getBalance в скрипт call_contract_get_promise.js
Попълване на сметката на смарт контракта
Резюме на урока
Урок 7. Въведение в TruffleИнсталиране на Truffle
Създаване на проект HelloSol
Създаване на каталог и файлове на проекта
Каталог contracts
Каталог migrations
Каталог test
Файл truffle-config.js
Компилиране на контракта HelloSol
Стартиране на публикуване на контракт
Извикване на функции на контракта HelloSol в поканата Truffle
Вызов функций контракта HelloSol из скрипта JavaScript под управлением Node.js
Инсталиране на модула truffle-contract
Извикване на функции на контракта getValue и getString
Извикване на функции на контракта setValue и setString
Промяна на контракта и повторно публикуване
Работа с Web3 версия 1.0.x
Правим промени в смарт-контракта HelloSol
Скриптове за извикване на методи на контракта
Тестване в Truffle
Тест на Solidity
Тест на JavaScript
Резюме на урока
Урок 8. Типове данни в SolidityКонтракт за изучаване на типовете данни
Логически типове данни
Беззнакови цели числа и цели числа със знак
Числа с фиксирана запетая
Адрес
Променливи от сложни типове
Масиви с фиксиран размер
Динамични масиви
Перечисления
Структури
Картотеки mapping
Резюме на урока
Урок 9. Миграция на контракти в частна мрежа и мрежата RinkebyПубликуване на контракт от Truffle в частна мрежа Geth
Подготовка на възел на частна мрежа
Подготовка на контракта за работа
Компилиране и мигриране на контракта в мрежата Truffle
Стартиране на миграция в локалната мрежа geth
Извличане на артефакти Truffle
Публикуване на контракт от Truffle в тестовата мрежа Rinkeby
Подготовка на възел Geth за работа с Rinkeby
Синхронизиране на възела
Добавяне на акаунти
Зареждане на акаунта Rinkeby с ефир
Стартиране на миграция на контракта в мрежата Rinkeby
Преглед на информация за контракта в мрежата Rinkeby
Конзолата Truffle за мрежата Rinkeby
По-прост начин за извикване на функции на контракта
Вызов методов контракта при помощи Node.js
Прехвърляне на средства между акаунти в конзолата Truffle за Rinkeby
Резюме на урока
Урок 10. Децентрализирано хранилище на данни Ethereum SwarmКак работи Ethereum Swarm
Инсталиране и стартиране на Swarm
Операции с файлове и каталози
Качване на файл в Ethereum Swarm
Четене на файл от Ethereum Swarm
Преглед на манифеста на качения файл
Качване на каталози с подкаталози
Четене на файл от качения каталог
Използване на публичен шлюз Swarm
Обращение к Swarm из скриптов Node.js
Модул Perl Net::Ethereum::Swarm
Инсталиране на модула Net::Ethereum::Swarm
Записване и четене на данни
Резюме на урока
Урок 11. Фреймворк Web3.py за работа с Ethereum на PythonИнсталиране на Web3.py
Актуализиране и инсталиране на необходимите пакети
Инсталиране на модула easysolc
Публикуване на контракта с помощта на Web3.py
Компилиране на контракта
Свързване с доставчик
Извършване на публикуване на контракта
Запазване на адреса на контракта и abi в файл
Стартиране на скрипта за публикуване на контракта
Извикване на методи на контракта
Четене на адреса и abi на контракта от JSON файл
Свързване с доставчик
Създаване на обект на контракта
Извикване на методи на контракта
Truffle и Web3.py
Резюме на урока
Урок 12. ОракулитеМоже ли смарт договор да се доверява на данни от външния свят
Оракулите като информационни посредници на блокчейна
Източник на данни
Код за представяне на данни от източника
Оракул за записване на обменния курс в блокчейн
Договор USDRateOracle
Актуализиране на обменния курс в смарт договора
Използване на Web Socket доставчик
Очакване на събитие RateUpdate
Обработка на събитие RateUpdate
Иницииране на обновление на данни в смарт договора
Резюме на урока
Източник: habr.com
