Стъпка 2: Създайте свой собствен портал за разработчици на интелигентни договори

    Втори стъпки

    В този раздел ще ви представим няколко мощни инструмента, за да улесним максимално вашия опит в разработката. Ще инсталираме среда за разработка, наречена Truffle, ще изследваме Solidity, ще покрием основите на интелигентен договор (дори ще направим свой собствен!) И ще стартираме своя собствен възел на нашата локална машина. След като успешно разгърнем локално, ще използваме Remix, за да взаимодействаме с нашия договор и да се потопим по-дълбоко в процеса на разработка!

    Запознаване с трюфел

    Трюфел

    Truffle е отлична среда за разработка, която ви позволява както да се свързвате, така и да тествате с помощта на виртуалната машина Ethereum. Трюфелът е създаден, за да улесни разработването и с локални взаимодействия това помага за намаляване на стреса от внедряването както на тестова мрежа (като Ropsten или Rinkeby), така и на mainnet.

    За повече документация за трюфел погледнете тук:

    Снимка на екрана 2020 08 26 в 5 49 43 PM

    За да инсталирате Truffle във вашия терминал, продължете и изпълнете следното:

    npm инсталирайте трюфел -g

    Забележка: Препоръки за Windows

    Ако използвате Truffle в Windows, може да срещнете някои конфликти за именуване, които могат да попречат на Truffle да се изпълнява правилно. Моля виж раздела за разрешаване на конфликти при именуване за решения.

    Ганаш 

    Докато сме готови, нека да инсталираме CLI за ganache

    Бърз преглед на ganache е, че това е личен блокчейн, който можете да използвате локално, за да се въртите бързо и да тествате функционалността на проектите. Ganache е инструмент, който можете да използвате през целия цикъл на разработка. Не само можете да разработите, но и да внедрите и тествате вашите dApps. Всичко това се случва локално на вашата машина, така че това е средата с най-ниско триене / риск за работа по вашите проекти!

    Използване на npm:


    npm инсталирайте -g ganache-cli

    Добре, обратно към трюфела!

    Някои от предложенията, които Трюфел предлага:

    • Вградена интелигентна компилация, свързване, внедряване и двоично управление.
    • Автоматизирано тестване на договори за бързо развитие.
    • Разширяемо разполагане с възможност за писане & миграционна рамка.
    • Мрежово управление за внедряване на произволен брой обществени & частни мрежи.
    • Управление на пакети с EthPM & NPM, използвайки стандарта ERC190.
    • Интерактивна конзола за директна комуникация по договор.
    • Конфигурируем конвейер за изграждане с поддръжка за тясна интеграция.
    • Външно изпълнение на скриптове, което изпълнява скриптове в среда на трюфел.

    За нашия урок ще изградим нещо от нулата, но ви препоръчваме да проверите някои от проектите на котела, които Трюфел вече е създал, наречени Трюфелни кутии (намерено тук).

    Сега, когато имаме инсталирани трюфели и ганаш, нека обсъдим солидността!

    Солидност 

    Solidity е невероятен популярен обектно-ориентиран език на високо ниво за внедряване на интелигентни договори, които се изпълняват на виртуалната машина Ethereum (EVM). Интелигентните договори са програми, които управляват поведението на акаунти в държавата Ethereum. Ако никога преди не сте разглеждали линия на Solidity, но сте запознати със C ++ и или JavaScript, ще забележите повече от няколко прилики. 

    Solidity е статично типизиран език, който поддържа наследяване, библиотеки и сложни дефинирани от потребителя типове наред с други функции. С Solidity можете да създавате договори за употреби като гласуване, краудфандинг, дори слепи търгове, за да назовете само няколко случая на употреба. 

    Solidity се компилира в байт код, който може да се изпълни на EVM. С Solidity разработчиците могат да пишат приложения, които прилагат самоуправляваща се бизнес логика, въплътена в интелигентни договори, оставяйки за запис без отказ от транзакции. Интелигентните договори позволяват на потребителите да се доверят на кода, което помага за създаването на ненадеждна среда, където потенциалната човешка корупция е значително премахната. 

    Имайте предвид, когато разгръщате договори, винаги трябва да обръщате внимание на версията, която използвате. Нарушаващи промени, нови функции и корекции на грешки се въвеждат редовно (не забравяйте това, ако се окажете, че следвате уроци онлайн, може да възникнат грешки, така че запазете документация, близка до вас). 

    Стартиране на проект за трюфел 

    С това казано, нека започнем нашия проект и го наречем „eth-hello-world“

    Влезте в терминала си и нека създадем нова празна папка 

    mkdir eth-hello-world

    След като имаме празната директория, продължете напред и скочете в папката и изпълнете командата

    иниции за трюфели

    След като процесът приключи, трябва да можем да видим някои файлове, които са създадени за нас:

    Снимка на екрана 2020 08 26 в 7 21 53 ч

    Сега имаме контакти, миграции, тестова папка и файл за конфигуриране на трюфели. Нека да разгледаме тези файлове и да обсъдим на по-високо ниво какви са те.

    Договори

    Тази папка ще съдържа всички ваши интелигентни договори (които в този пример ще създаваме с помощта на Solidity). Ако никога не сте чували за интелигентни контакти, начинът да мислите за тях е; парчета код, които се изпълняват на блокчейна (това може да бъде локално, тестово или основно), които гарантирано дават еднакви резултати за всички, които ги изпълняват. Интелигентните договори се използват в dApps (децентрализирани приложения) и имат огромно количество случаи на употреба. Гласуване, игри, верига за доставки, валути, финансови записи и това е само да назовем само няколко!

    За да разбие това още повече, Ник Сабо дава пример с автомати. Ако поставите правилното количество монети в машината, вие (и всички преди / след вас) можете да очаквате същия точен резултат в замяна. Същото важи и за интелигентни контакти, изградени на Ethereum, те съдържат стойност и докато не бъдат изпълнени условията им (т.е. правилното количество монети в нашия пример), той ще отключи и освободи информацията, която се опитвате да извлечете.

    Ще се върнем към обсъждането на Solidity и интелигентните договори малко по-късно, нека преминем към миграциите!

    Миграции

    Миграциите са Javascript файлове, които ви позволяват да разположите договорите си в мрежата Ethereum. Това, което е наистина интересно за тях е, че има основно предположение, че работата ви ще се развива и вашето внедряване ще се промени с течение на времето. Докато правите актуализации, ще правите нови скриптове за миграция по време на развитието на вашия проект. Начинът да мислите за миграционните файлове е, че те са главно отговорни за организирането и разполагането на вашите задачи. Един лесен начин да се мисли за тях е миграцията е набор от управлявани скриптове за разполагане. Докато актуализирате работата си, дневникът на предишните ви миграции се записва по веригата чрез вграден договор за миграции.

    Погледнете сами, вече имате договор за миграция! Насочете се към директорията на договорите си и я отворете, ще видите файл Migrations.sol, който съдържа договор, който трябва да изглежда по следния начин:

    Снимка на екрана 2020 08 27 в 4 49 03 AM

    Това е договор по подразбиране, който се създава за нас, когато стартираме init за трюфели. Трюфелът по природа изисква да имате договор за миграция, за да използвате функцията за мигриране, така че не изтривайте това!

    Забележка: Трябва да внедрите този договор в първата си миграция, за да се възползвате от функцията Миграции.

    След като имахме възможност да разгледаме нашия договор за миграция, можем да преминем към директорията за миграция и ще видим файл с име 1_inital_migrations.js

    Забележка: Погледнете конвенцията за именуване на този файл, той има префикс с номер и е суфикс от описание. Номерираният префикс е необходим, за да се запише дали миграцията е изпълнена успешно. Суфиксът е чисто за човешка четливост

    Снимка на екрана 2020 08 27 в 5 09 25 AM

    Докато създавате договори, ще трябва да се уверите, че имате файл migration.js във връзка с тях. Без да се гмуркате твърде дълбоко в артефакти.require (), deployer.deploy и т.н. тук е отлична документация от екипа за трюфели, за да обясни допълнително използването на тези методи.

    За да компилирате проект на трюфел, преминете към корена на директорията, където се намира проектът и след това въведете следното в терминал:

    трюфел компилация

    За да стартирате миграциите си във вашия терминал, в крайна сметка ще стартирате (задръжте все пак, все още не е нужно да правим това!)

    трюфел мигрират

    Това ще стартира всички миграции, намиращи се в директорията за миграции на вашия проект.

    Интересното е да се отбележи, че тази команда ще изпълнява само новосъздадени миграции. Така че, ако предишната ви миграция е работила успешно, тя няма да я повтори. Освен това, ако не съществуват нови миграции за изпълнение, то просто няма да се изпълни. Ако е необходимо, можете да използвате опцията –reset, за да стартирате всичките си миграции от самото начало.

    Други опции за команди са документирани тук.

    Забележка: Инсталирахме по-рано, но за локално тестване не забравяйте да имате тестова блокчейн като Ганаш инсталиран и стартиран преди изпълнение на мигриране.

    Тестване

    Що се отнася до писането на тестове, трюфелът е снабден с някои отлични инструменти, за да направи това интуитивно. Особено, ако планирате да внедрите вашите договори в mainnet (но това е добра практика, дори и в testnet), е много важно да провеждате тестове и да проверявате договорите си, доколкото е възможно. Truffle улесни и управлява прегледа / тестването на вашето развитие.

    Трюфелът използва Мока рамка за тестване и Чай за твърдения, които да ви предоставят солидна рамка, от която да пишете вашите JavaScript тестове. 

    Забележка: Ако не сте запознати с писането на модулни тестове в Mocha, моля, вижте Документацията на Mocha преди да продължите.

    Допълнителна бележка: Отличен инструмент, който да използвате за цялостен преглед на вашите договори Mythx, водещата услуга за анализ на сигурността в областта, предлагаща задълбочени прегледи за интелигентни договори. Тяхната мисия е не само да гарантират, че избягвате скъпи грешки, но да направят Ethereum по-сигурна и надеждна платформа като цяло.

    Всички тестови файлове трябва да се намират в директорията ./test. Трюфелът ще изпълнява само тестови файлове със следните файлови разширения: .js, .ts, .es, .es6, .jsx и.sol. Всички останали файлове се игнорират.

    За да стартирате всички тестове, просто изпълнете:

    тест за трюфел

    Сега, след като разгледахме какво създава трюфел init и скелето на нашия проект, нека сега да добавим нашия интелигентен договор към нашия проект!

    Писане на интелигентен договор

    Нека да влезем в директорията на договорите и да напишем първия си договор, който планираме да внедрим в нашата локална тестова среда (ganache)!

    Ще започнем, като създадем файла our.sol, който ще наречем HelloWorld.sol

    След това можем да добавим нашия основен договор, който ще изглежда така

    солидност прагма >= 0,5,8 <0.7.0; договор HelloWorld {низ публично съобщение; конструктор (низ памет initMessage) public {message = initMessage; } актуализация на функцията (низ памет newMessage) public {message = newMessage; }}

    Разглеждайки нашия договор малко по-близо, можем да разделим няколко елемента

    Не забравяйте, че договорът е колекция от функции и данни (неговото състояние).

    Ключовата дума pragma може да се използва за активиране на определени функции или проверки на компилатора. Директивата на pragma винаги е локална за изходен файл, така че трябва да добавите pragma към всичките си файлове, ако искате да бъде активирана във вашия проект. Без декларация за прагма в началото на нашия (или който и да е) файл за стабилност, нашият договор няма да знае как да се компилира.

    (тук е връзка към документите за солидност, за да научите тънкостите на нюансите на солидността)

    В крайна сметка, договорът е колекция от функции и данни (неговото състояние), която се намира на определен адрес в блокчейна Ethereum.

    Разглеждайки функционалността на нашия договор, можем да видим, че настройваме нашето съобщение да бъде видим публичен низ. 

    Ключовата дума „public“ прави променливите достъпни извън договор и създава функция, която други договори или SDK могат да извикат за достъп до публичното съобщение на низа на стойност.

    договор HelloWorld {низ публично съобщение;

    Ето функция, която работи само по време на създаването на договора 

    конструктор (низ памет initMessage) public {message = initMessage; }

    Той взема стойност на низ и съхранява стойността в областта за съхранение на данни в паметта, като задава съобщение на това съобщение за стойност, т.е.initMessage.

    След това можем да инициализираме съобщение, което се предава като параметър и може да бъде променено / актуализирано с функцията за актуализиране.

    Това е публично достъпна функция, която приема низ като параметър и актуализира `съобщение` (вижте по-долу).

    актуализация на функцията (низ памет newMessage) public {message = newMessage; }}

    Ето го, основен, но смилаем договор HelloWorld!

    След като добавихме договора си, вече можем да се уверим, че има способността да се компилира!

    Преминете към папката Migration в нашия проект и сега ще направим a.js файл, посветен на нашия договор HelloWorld.

    Ще създадем нов файл и името му е 2_deploy_contracts.js

    Запомнете бележката за конвенциите за именуване от по-рано!

    const HelloWorld = artefacts.require ("Здравей свят"); module.exports = функция (разполагане) {deployer.deploy (HelloWorld, "низ"); };

    Добра работа! Почти сме готови да разгърнем нашия договор, но първо трябва да се уверим, че нашите файлове за конфигуриране на трюфели знаят с кого да говорим. Както споменахме по-рано, ние ще се съсредоточим върху нашата локална среда в този раздел, но в раздел 3 (спойлер) ние не само създаваме и разполагаме локално, но го включваме в тестова мрежа!

    Превъртете надолу във вашия файл truffle-config.js, докато видите раздела, свързан с мрежите

    разкоментирайте / добавете следното 

    мрежи: {развитие: {хост: "127.0.0.1", порт: 8545, network_id: "*", },

    Сега вашият файл трябва да изглежда по следния начин:

     

    Снимка на екрана 2020 08 31 в 6 14 45 AM

    Какво се случва тук, ние казваме на нашия конфигурационен файл конкретни указания за това с какво да се свържем. В този случай, както ще видите скоро, ще се свържем с нашия инструмент ganache-cli.

    Стартирайте Ganache

    С това казано, нека да продължим и да стартираме своя ganache 

    във вашия терминал, продължете напред и стартирайте 

    ganache-cli

    Снимка на екрана 2020 08 31 в 6 20 00 AM

    Виж това! Вече изпълнявате свой собствен TestRPC точно там, във вашия терминал! 

    (повече за това тук)

    Забележка: Дръжте този раздел в терминала отворен, но продължете и отворете нов, за да работите.

    Бърз преглед 

    Да се ​​върнем към нашия проект и да направим бърз преглед на това, което сме направили. 

    • Създадохме нов проект
    • Инициализиран трюфел
    • Направих бърза обиколка на скелето
    • Създадохме нашия договор HelloWorld
    • Добавена логика към нашата папка за миграции за нашия договор
    • Влязохме в нашия конфигурационен файл и коригирахме нашата мрежова информация 

    Време е да подготвим договора си! 

    В новия ни терминален прозорец (тъй като имаме ganache, работещ в другия) 

    да продължим и да бягаме 

    трюфел компилация

    Сега трябва да видите това като резултат във вашия терминал:

    Снимка на екрана 2020 08 31 в 7 07 17 AM

    Ако сега отидете на вашия проект, ще видите, че вече имате папка за изграждане / договори над вашата папка с договори, съдържаща файлове two.json. Трябва да видиш: 

    • HelloWorld.json
    • Migrations.json 

    Файлът .json на високо ниво описва разгърнатия договор и неговите функции. Позволява ни да контекстуализираме договора и да извикаме неговите функции.

    Ако погледнем вътре, можем да видим цял куп информация:

     

    Снимка на екрана 2020 08 31 в 8 01 28 AM

    Ние се впускаме в тази информация по-задълбочено в стъпка трета, но нещо важно, което трябва да разгледаме, е ABI.

    Приложният двоичен интерфейс е схема за кодиране на данни, използвана в Ethereum за работа със смарт договори.

    Погледнете информацията, която е сравнително интуитивна за разбиране. ABI също така дефинира как потребителят може да извика функциите – т.е. местоположението на функцията спрямо адреса на интелигентния договор. Обобщение на високо ниво е ABI е описанието на интерфейса на договора. Той не съдържа код и няма възможност да се стартира сам. След това имате байт код, който е изпълнимият EVM код, но сам по себе си е без контекст.

    Време е за мигриране

    Добре! 

    Така че сега, когато работим с ganache-cli и сме съставили нашия интелигентен договор, така че сега е време да мигрираме нашите договори! 

    във вашия терминал, продължете напред и стартирайте 

    трюфел мигрират

    ДА! Направи го!

    Снимка на екрана 2020 08 31 в 8 37 37 AM

    Виждаме, че успешно внедрихме нашия интелигентен договор. Можете да видите, че е генерирана наистина полезна информация и ако се насочите към другия си раздел с работещ ganachi-cli, трябва да видите TransactionReceipt (погледнете сами).

    Тествайте ETH 

    Преди да се отправим към Remix, трябва да вземем тест ETH, за да можем да платим таксите за бензин на Remix (не се притеснявайте, че това всъщност няма да ви струва пари). 

    Насочете се към този кран и вземете малко Ринкеби. Ние се впускаме в това, което е тест ETH в стъпка 3, но в тази стъпка просто знайте, че ще използваме Rinkeby, която е мрежа за доказателство за правомощия, а не да кажем Ropsten, която е Test of Proof of Work (която е по-подобна на публичната main нето). След като изпълните стъпки 2 и 3, ще имате и двете в портфейла на MetaMask, с които да експериментирате!

    Ремикс

    Добре, сега, когато имаме тестов EHT, е време да преминем към Remix и да разгърнем договора си извън нашата локална среда и дори да имаме възможност да взаимодействаме с него!

    “Какво, по дяволите, е Remix?” 

    Радвам се, че попита! 

    Remix е мощен инструмент с отворен код, който ви помага да пишете договори за Solidity направо от браузъра. Един наистина невероятен елемент по-специално за Remix е, че поддържа както използване в браузъра, така и локално! Remix поддържа тестване, отстраняване на грешки и разполагане на договори, за да назове няколко ключови функции. Remix трябва да се счита за основен инструмент за разработчик в техния процес на изграждане. Започването с локално внедряване (както направихме по-рано) с ganache е отлична основа, преминавайки от локално внедряване можем да експериментираме и да взаимодействаме с нашия договор за Remix.

    Приемането на правилни убеждения и тестване (отново и отново) на вашето развитие преди потенциално стартиране към основната мрежа на ethereum може да ви спести може би повече от главоболие!

    Сега да вземем същия договор и да го разположим извън нашата локална среда, използвайки Remix 

    Връзка тук 

    Нашият договор 

    Кликнете върху нов файл и нека го кръстим HelloWorld.sol

    (ето договора, който ще използваме отново) 

    солидност прагма >= 0,5,8 <0.7.0; договор HelloWorld {низ публично съобщение; конструктор (низ памет initMessage) public {message = initMessage; } актуализация на функцията (низ памет newMessage) public {message = newMessage; }}

    Вече можем да добавим договора си на място. (Вижте по-долу) 

    Снимка на екрана 2020 08 31 в 9 47 48 AM

    Сега нека разгледаме лявото меню, което пита за избраната от вас версия на компилатора.

    Съставител

    Имайте предвид, че в рамките на нашия договор ние декларирахме нашата гама компилатори.

    Не забравяйте, че ключовата дума pragma се използва за активиране на определени функции или проверки на компилатора. 

    Така че можем да зададем нашия компилатор на 0.6.0, който попада между предоставения ни диапазон (виж удар) 

    Снимка на екран 2020 09 08 в 8 44 41 AM

    Нашият договор трябва автоматично да се компилира, ако не продължите и кликнете върху Compile HelloWorld.sol

    След това ще настроим нашата среда за разгръщане на нашия договор! 

    Внедрявайте и изпълнявайте транзакции

    Заобикаляща среда 

    Ще забележите няколко различни опции при избора на вашата среда:

    JavaScript VM: Всички транзакции ще бъдат изпълнени в блокчейн в пясъчник в браузъра. Това означава, че нищо няма да продължи, когато презаредите страницата. JsVM е собствена блокчейн и при всяко презареждане ще стартира нова блокчейн, старата няма да бъде запазена.

    Инжектиран доставчик: Remix ще се свърже с инжектиран доставчик на web3. Метамаска е пример за доставчик, който инжектира web3.

    Доставчик на Web3: Remix ще се свърже с отдалечен възел. Ще трябва да предоставите URL адреса на избрания доставчик: geth, паритет или който и да е клиент на Ethereum.

    В този пример ще използваме: Injected Web3

    Ще използваме нашия портфейл MetaMask и ще се уверим, че сме свързани с нашата тестова мрежа Rinkeby 

    Можем да видим от лявата страна, че сме свързани с Rinkeby и също така да видим адреса на нашия свързан акаунт! 

    Снимка на екрана 2020 09 08 в 8 30 29 AM

    След като сме готови с всичко, нека продължим да разгръщаме нашия договор!

    Снимка на екрана 2020 09 08 в 8 57 35 AM

    &# 127881; Направихме го! &# 127881; 

    Вижте предоставения терминал и можете да видите потвърждението

    Снимка на екрана 2020 09 08 в 8 58 11 AM

    Сега имаме възможност да видим нашия разгърнат договор, можем да актуализираме нашето съобщение (трябва да подпишем и да платим таксата за газ за това, тъй като актуализираме държавата)

    След като получим потвърждение, можем да видим, че нашето съобщение е актуализирано!

    Снимка на екрана 2020 09 08 в 9 18 54 AM

    &# 129395; Много добре! &# 129395; 

    Взехме договора, с който първоначално стартирахме локално, и го разгърнахме на Remix, за да има визуално представяне на взаимодействието по договора. Това е здравословен поток за разработчиците, тъй като те започват да се изграждат в това пространство. Remix е невероятен инструмент, който трябва да се използва често. В стъпка 3 ще отидем още една стъпка напред и ще обвържем цялата информация, която сме научили в стъпки 1 & 2 и завържете Трюфел + Infura + React заедно! 

      Включване на програмиста: Стъпка 1Включване на разработчика Стъпка 1

      Включване на програмиста: Стъпка 1

      Включване на програмиста: Стъпка 3Стъпка 3 за включване на разработчика

      Включване на програмиста: Стъпка 3

      10-минутна ориентация на Ethereum10-минутна ориентация на Ethereum

      10-минутна ориентация на Ethereum
    Mike Owergreen Administrator
    Sorry! The Author has not filled his profile.
    follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map