Шаг 2. Создайте собственный портал для разработчиков смарт-контрактов

    Вторые шаги

    В этом разделе мы собираемся представить несколько мощных инструментов, которые сделают вашу разработку максимально простой. Мы установим среду разработки Truffle, исследуем Solidity, рассмотрим основы смарт-контракта (мы даже создадим свой собственный!) И запустим наш собственный узел на нашей локальной машине. После успешного локального развертывания мы будем использовать Remix для взаимодействия с нашим контрактом и более глубокого погружения в процесс разработки.!

    Знакомство с трюфелем

    Трюфель

    Truffle – отличная среда разработки, которая позволяет как подключаться, так и тестировать с помощью виртуальной машины Ethereum. Truffle был создан, чтобы упростить разработку, а взаимодействие, происходящее локально, помогает снизить нагрузку на развертывание как в тестовой сети (например, Ropsten или Rinkeby), так и в основной сети..

    Дополнительную документацию по Truffle см. здесь:

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

    Чтобы установить Truffle в свой терминал, запустите следующее:

    npm установить трюфель -g

    Примечание: рекомендации для Windows

    Если вы используете Truffle в Windows, вы можете столкнуться с некоторыми конфликтами имен, которые могут помешать правильному выполнению Truffle. Посмотри пожалуйста раздел о разрешении конфликтов имен для решений.

    Ганаш 

    Пока мы занимаемся этим, давайте продолжим и установим интерфейс командной строки для ганаша.

    Краткое изложение ганаша: это личный блокчейн, который можно использовать локально для быстрого запуска и тестирования функциональности проектов. Ganache – это инструмент, который можно использовать на протяжении всего цикла разработки. Вы можете не только разрабатывать, но также развертывать и тестировать свои децентрализованные приложения. Все это происходит локально на вашем компьютере, так что это среда с наименьшим трением / риском для работы над вашими проектами.!

    Используя npm:


    npm install -g ganache-cli

    Хорошо, вернемся к трюфелям!

    Некоторые из предложений Truffle:

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

    Для нашего урока мы собираемся построить что-то с нуля, однако вам настоятельно рекомендуется ознакомиться с некоторыми из уже созданных Truffle проектов котлов под названием Truffle Boxes (найдено здесь).

    Теперь, когда у нас установлены трюфель и ганаш, давайте поговорим о солидности.!

    Твердость 

    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 PM

    Теперь у нас есть контакты, миграции, тестовая папка и файл конфигурации трюфеля. Давайте посмотрим на эти файлы и обсудим на более высоком уровне, что они собой представляют..

    Контракты

    Эта папка будет содержать все ваши смарт-контракты (которые в этом примере мы будем создавать с помощью Solidity). Если вы никогда не слышали об умных контактах, можно подумать о них; фрагменты кода, которые выполняются в цепочке блоков (это может быть локальная, тестовая или основная сеть), которые гарантированно дают одинаковые результаты для всех, кто их запускает. Смарт-контракты используются в децентрализованных приложениях (децентрализованных приложениях) и имеют огромное количество вариантов использования. Голосование, игры, цепочка поставок, валюты, финансовые отчеты и это лишь некоторые из них.!

    Чтобы еще больше разобраться в этом, Ник Сабо приводит пример с торговым автоматом. Если вы положите в автомат правильное количество монет, вы (и все до и после вас) можете ожидать такого же точного результата при обмене. То же самое касается смарт-контактов, построенных на Ethereum, они содержат значение, и пока их условия не будут выполнены (то есть нужное количество монет в нашем примере), он затем разблокирует и предоставит информацию, которую вы пытаетесь получить..

    Мы вернемся к обсуждению Solidity и смарт-контрактов чуть позже, перейдем к миграции.!

    Миграции

    Миграции – это файлы Javascript, которые позволяют развертывать ваши контракты в сети Ethereum. Что действительно интересно в них, так это то, что в основе их лежит предположение, что ваша работа будет развиваться, и ваше развертывание будет меняться с течением времени. Выполняя обновления, вы будете создавать новые сценарии миграции в процессе развития вашего проекта. Можно подумать о файлах миграции: они в основном отвечают за постановку и развертывание ваших задач. Проще всего думать о них: миграции – это набор сценариев управляемого развертывания. Когда вы обновляете свою работу, журнал ваших ранее выполненных миграций записывается в цепочке через встроенный контракт миграции..

    Посмотрите сами, у вас уже есть миграционный договор! Перейдите в каталог своего контракта и откройте его, вы увидите файл Migrations.sol, содержащий контракт, который должен выглядеть примерно так:

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

    Это контракт по умолчанию, который создается для нас, когда мы запускаем truffle init. Truffle по своей природе требует, чтобы у вас был контракт на миграцию, чтобы использовать функцию миграции, поэтому не удаляйте это!

    Примечание. Вы должны развернуть этот контракт во время своей первой миграции, чтобы воспользоваться функцией миграции..

    Теперь, когда у нас была возможность ознакомиться с нашим контрактом на миграцию, мы можем перейти в каталог миграции и увидеть файл с именем 1_inital_migrations.js.

    Примечание: обратите внимание на соглашение об именах этого файла, он имеет префикс с номером и суффикс с описанием. Пронумерованный префикс необходим для записи того, успешно ли прошла миграция. Суффикс предназначен исключительно для удобства чтения.

    Снимок экрана 2020 08 27 at 5 09 25 AM

    Создавая контракты, вы должны убедиться, что у вас есть файл migration.js, связанный с ними. Не углубляясь слишком глубоко в artifacts.require (), deployer.deploy и т. Д. здесь отличная документация от команды трюфелей для дальнейшего объяснения использования этих методов..

    Чтобы скомпилировать проект Truffle, перейдите в корень каталога, в котором находится проект, а затем введите в терминал следующее:

    сборник трюфелей

    Чтобы запустить миграцию в своем терминале, вы в конечном итоге запустите (подожди, нам пока не нужно этого делать!)

    трюфель мигрирует

    Это запустит все миграции, расположенные в каталоге миграции вашего проекта..

    Интересно отметить, что эта команда запускает только недавно созданные миграции. Поэтому, если ваша предыдущая миграция прошла успешно, она не будет перезапущена. Кроме того, если не существует новой миграции, которую можно было бы запустить, она просто не запустится. При необходимости вы можете использовать параметр –reset, чтобы запустить все миграции с самого начала..

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

    Примечание: мы установили ранее, но для локального тестирования убедитесь, что у вас есть тестовый блокчейн, например Ганаш установлен и запущен перед выполнением миграции.

    Тестирование

    Когда дело доходит до написания тестов, у трюфеля есть несколько отличных инструментов, которые делают его интуитивно понятным. Особенно, если вы планируете развертывать свои контракты в основной сети (но это хорошая практика даже в тестовой сети), очень важно запускать тесты и проверять свои контракты в меру своих возможностей. Truffle упростил и упростил проверку / тестирование ваших разработок..

    Трюфель использует Мокко рамки тестирования и Чай для утверждений, чтобы предоставить вам прочную основу для написания тестов JavaScript. 

    Примечание. Если вы не знакомы с написанием модульных тестов в Mocha, см. Документация Mocha прежде чем продолжить.

    Боковое примечание: отличный инструмент для тщательного анализа ваших контрактов – это Миф, лучшая служба анализа безопасности в этой области, предлагающая подробные обзоры смарт-контрактов. Их миссия – не только гарантировать, что вы избежите дорогостоящих ошибок, но и сделать Ethereum более безопасной и надежной платформой в целом..

    Все тестовые файлы должны находиться в каталоге ./test. Truffle будет запускать только тестовые файлы со следующими расширениями: .js, .ts, .es, .es6, .jsx и .sol. Все остальные файлы игнорируются.

    Чтобы запустить все тесты, просто запустите:

    трюфельный тест

    Теперь, когда мы рассмотрели, что создает truffle init, и основы нашего проекта, давайте продолжим и добавим наш смарт-контракт в наш проект.!

    Написание смарт-контракта

    Давайте перейдем в каталог контрактов и напишем наш первый контракт, который мы планируем развернуть в нашей локальной тестовой среде (ганаш).!

    Мы начнем с создания нашего файла .sol, который мы назовем HelloWorld.sol.

    Затем мы можем добавить наш базовый контракт, который будет выглядеть примерно так:

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

    Присмотревшись к нашему контракту поближе, мы можем разбить несколько элементов.

    Помните, контракт – это набор функций и данных (его состояние).

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

    (здесь ссылка на документацию по солидности, чтобы узнать все тонкости нюансов солидности)

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

    Глядя на функциональность нашего контракта, мы видим, что мы устанавливаем наше сообщение как общедоступную строку для просмотра.. 

    Ключевое слово «public» делает переменные доступными извне контракта и создает функцию, которую другие контракты или SDK могут вызывать для доступа к общедоступному сообщению строки значения..

    контракт HelloWorld {строка публичного сообщения;

    Вот функция, которая запускается только во время создания контракта. 

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

    Он принимает строковое значение и сохраняет значение в области хранения данных в памяти, устанавливая сообщение для этого значения message, то есть initMessage.

    Затем мы можем инициализировать сообщение, которое передается в качестве параметра и может быть изменено / обновлено с помощью функции обновления..

    Это общедоступная функция, которая принимает строку в качестве параметра и обновляет сообщение (см. Ниже)..

    обновление функции (строка памяти newMessage) public {message = newMessage; }}

    Вот и все, простой, но удобоваримый контракт HelloWorld!

    Теперь, когда у нас есть контракт, мы можем убедиться, что он может компилировать!

    Перейдите в папку Migration в нашем проекте, и теперь мы создадим файл .js, посвященный нашему контракту HelloWorld..

    Мы создадим новый файл с именем 2_deploy_contracts.js.

    Помните примечание о соглашениях об именах из более раннего!

    const HelloWorld = artifacts.require ("Привет, мир"); module.exports = function (deployer) {deployer.deploy (HelloWorld, "нить"); };

    Хорошая работа! Мы почти готовы к развертыванию нашего контракта, но сначала нам нужно убедиться, что наши файлы конфигурации трюфелей знают, с кем поговорить. Как упоминалось ранее, в этом разделе мы сосредоточимся на нашей локальной среде, но в разделе 3 (spolier) мы не только создаем и развертываем локально, но и переносим его в тестовую сеть.!

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

    раскомментируйте / добавьте следующее 

    сети: {разработка: {хост: "127.0.0.1", порт: 8545, network_id: "*", },

    Теперь ваш файл должен выглядеть примерно так:

     

    Снимок экрана 2020 08 31 at 6 14 45 AM

    Что здесь происходит, так это то, что мы сообщаем нашему файлу конфигурации конкретные указания о том, к чему подключаться. В этом случае, как вы вскоре увидите, мы подключимся к нашему инструменту ganache-cli..

    Запустить ганаш

    Сказав это, давайте продолжим и запустим наш ганаш. 

    в вашем терминале иди и беги 

    ганаш-кли

    Снимок экрана 2020 08 31 в 6 20 12 AM

    Проверьте это! Теперь вы запускаете свой собственный TestRPC прямо в своем терминале! 

    (подробнее об этом здесь)

    Примечание: оставьте эту вкладку в своем терминале открытой, но продолжайте и откройте новую, чтобы работать вне.

    Быстрый обзор 

    Вернемся к нашему проекту и быстро рассмотрим, что мы сделали.. 

    • Мы создали новый проект
    • Инициализированный трюфель
    • Беглый осмотр строительных лесов
    • Создал наш контракт HelloWorld
    • Добавлена ​​логика в нашу папку миграции для нашего контракта
    • Зашел в наш конфигурационный файл и скорректировал нашу сетевую информацию 

    Пришло время запустить наш контракт! 

    В нашем новом окне терминала (поскольку в другом запущен ганаш) 

    давай вперед и бежим 

    сборник трюфелей

    Теперь вы должны увидеть это как результат в своем терминале:

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

    Если вы сейчас перейдете в свой проект, вы увидите, что теперь над папкой контракта у вас есть папка сборки / контрактов, содержащая два файла .json. Тебе следует увидеть: 

    • HelloWorld.json
    • Migrations.json 

    Файл.json на высоком уровне описывает развернутый контракт и его функции. Это позволяет нам контекстуализировать контракт и вызывать его функции..

    Если мы заглянем внутрь, то увидим целую кучу информации:

     

    Снимок экрана 2020 08 31 at 8 01 28 AM

    Мы углубимся в эту информацию на третьем шаге, но важно обратить внимание на ABI..

    Двоичный интерфейс приложения – это схема кодирования данных, используемая в Ethereum для работы со смарт-контрактами..

    Информация относительно интуитивно понятна. ABI также определяет, как пользователь может вызывать функции, то есть расположение функции по отношению к адресу смарт-контракта. Резюме высокого уровня – это ABI – это описание интерфейса контракта. Он не содержит кода и не может работать сам по себе. Затем у вас есть байт-код, который является исполняемым кодом EVM, но сам по себе он не имеет контекста..

    Пора переходить

    Ok! 

    Итак, теперь, когда у нас запущен ganache-cli и мы скомпилировали смарт-контракт, пришло время перенести наши контракты.! 

    в вашем терминале иди и беги 

    трюфель мигрирует

    ДА! Ты сделал это!

    Снимок экрана 2020 08 31 at 8 37 37 AM

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

    Тестовый ETH 

    Прежде чем мы перейдем к Remix, нам нужно получить несколько тестовых ETH, чтобы мы могли оплатить газ за Remix (не волнуйтесь, на самом деле это не будет стоить вам денег). 

    Перейти к этот кран и возьми немного Ринкеби. Мы углубляемся в то, какой тестовый ETH находится на шаге 3, но на этом шаге просто знаем, что мы будем использовать Rinkeby, которая является сетью Proof of Authority, в отличие от, скажем, Ropsten, которая является тестовой сетью Proof of Work (которая больше похожа на общедоступную сеть). сеть). После выполнения шагов 2 и 3 в вашем кошельке MetaMask появятся некоторые из них, с которыми можно поэкспериментировать.!

    Ремикс

    Хорошо, теперь, когда у нас есть несколько тестов EHT, пора перейти к Remix и развернуть наш контракт за пределами нашей локальной среды и даже иметь возможность взаимодействовать с ним.!

    “Что, черт возьми, такое Ремикс?” 

    Рад что ты спросил! 

    Remix – это мощный инструмент с открытым исходным кодом, который помогает писать контракты Solidity прямо из браузера. Одним из действительно удивительных элементов Remix является то, что он поддерживает использование как в браузере, так и локально! Remix поддерживает тестирование, отладку и развертывание по контракту, чтобы назвать несколько ключевых функций. Ремикс следует рассматривать как основной инструмент разработчика в процессе создания. Начало с локального развертывания (как мы делали ранее) с ганашем – отличная основа, переходя от локального развертывания, мы можем экспериментировать и взаимодействовать с нашим контрактом на 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 at 8 44 41 AM

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

    Затем мы настроим нашу среду для развертывания нашего контракта.! 

    Развертывание и запуск транзакций

    Среда 

    При выборе среды вы заметите несколько различных вариантов:

    Виртуальная машина JavaScript: Все транзакции будут выполняться в блокчейне песочницы в браузере. Это означает, что при перезагрузке страницы ничего не сохранится. JsVM – это собственный блокчейн, и при каждой перезагрузке он запускает новый блокчейн, старый не будет сохранен..

    Введенный провайдер: Remix подключится к внедренному провайдеру web3. Метамаск это пример провайдера, который вводит web3.

    Провайдер Web3: Remix подключится к удаленному узлу. Вам нужно будет предоставить URL-адрес выбранного провайдера: geth, parity или любой клиент 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 at 8 58 11 AM

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

    Как только мы получим подтверждение, мы увидим, что наше сообщение обновлено.!

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

    &# 129395; Отличная работа! &# 129395; 

    Мы взяли контракт, с которого изначально начали работать локально, и развернули этот контракт на Remix, чтобы иметь визуальное представление о взаимодействии с контрактом. Это здоровый поток для разработчиков, поскольку они начинают строить в этом пространстве. Ремикс – невероятный инструмент, которым нужно часто пользоваться. На шаге 3 мы собираемся пойти еще дальше и связать всю информацию, которую мы узнали на шаге 1. & 2 и связать Truffle + 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