Читать книгу «Разработка смарт-контрактов в Ethereum» онлайн полностью📖 — Тимура Машнина — MyBook.
image

Solidity Remix

Solidity – это высокоуровневый язык для виртуальной машины Ethereum с синтаксисом, похожим на JavaScript.

Программы на языке Solidity транслируются в байткод виртуальной машины Ethereum.


Для разработки смарт контрактов и изучения языка Solidity рекомендуется использовать среду разработки Remix.

Remix – это среда IDE для языка программирования Solidity, которая имеет встроенный отладчик и среду тестирования.

Среда Ремикс позволяет разрабатывать смарт-контракты с помощью редактора Solidity, отлаживать выполнение смарт-контракта, обеспечивает доступ к состоянию и свойствам уже развернутого смарт-контракта, отлаживать уже совершенную транзакцию, анализировать код Solidity, чтобы уменьшить ошибки кодирования и обеспечить соблюдение лучших практик.

Вместе с Mist или любым инструментом, который использует библиотеку web3, Remix можно использовать для тестирования и отладки децентрализованного приложения.

Доступна онлайн версия среды Remix.

Также можно установить локальную версию среды Remix.

Преимущество запуска локальной версии среды Remix заключается в том, что вы можете связаться с клиентом узла Ethereum, запущенным на вашей локальной машине через API-интерфейс Ethereum JSON-RPC, и локально выполнить смарт контракты.



Для установки локальной версии среды Remix можно открыть ветку github gh-pages и скачать архив.



Затем распаковать его и открыть страницу index.html.



Также можно установить Remix как npm модуль.

После установки Remix запускается командой remix-ide и открывается в браузере по адресу localhost.



При такой установке также устанавливается модуль Remixd – модуль npm, который предоставляет веб-приложению Ремикса доступ к папке на локальном компьютере.

По умолчанию это папка user.

Из Remix IDE вам необходимо активировать это соединение с локальным компьютером.

Для этого нажмите на значок подключения к локальному хосту.

В результате общая папка будет доступна в проводнике файлов среды Remix.



При запуске среды Remix из архива с помощью страницы index.html, доступа к папке локального компьютера не будет.

Для доступа нужно установить модуль Remixd глобально.

А затем запустить Remixd и расшарить какую-нибудь папку.

После этого можно перезапустить Remix и нажать кнопку соединения.

В результате общая папка будет доступна в проводнике файлов среды Remix.

Remix File Explorer

В проводнике файлов по умолчанию отображаются все файлы, хранящиеся в вашем браузере.

Вы можете увидеть их в папке браузера.

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

Обратите внимание, что очистка хранилища браузера удалит все файлы, которые вы написали.

Чтобы этого избежать, нужно использовать Remixd, который позволяет хранить и синхронизировать файлы в браузере с папкой локального компьютера.

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

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

Также можно опубликовать файл из хранилища браузера в анонимный публичный gist.

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

Remix Solidity Editor

Редактор Remix позволяет перекомпилировать код при каждом изменении текущего файла или выборе другого файла.

Он также обеспечивает подсветку синтаксиса, сопоставляемую с ключевыми словами языка Solidity.

Редактор Remix отображает открытые файлы в виде вкладок, отображает предупреждения компиляции и ошибки.

Кроме того, Remix непрерывно сохраняет текущий файл (в течение 5 секунд после последних изменений).

Кнопка +/– в верхнем левом углу позволяет увеличить/уменьшить размер шрифта редактора.

Внизу редактора расположен терминал, который отображает журнал при отладке контракта.

Remix Compile

Remix запускает компиляцию каждый раз при изменении текущего файла или выборе другого файла.

Если в контракте много зависимостей и требуется много времени для компиляции, можно отключить автокомпиляцию.

После каждой компиляции обновляется список со всеми скомпилированными контрактами.

В диалоговом окне Details отображается подробная информация о текущем выбранном контракте.

Ниже отображаются ошибки компиляции и предупреждения.

Здесь вы также можете опубликовать свой контракт на Swarm.

Remix Swarm

Swarm – это распределенная платформа хранения и служба распространения контента.

Хранение данных большого объема в самом блокчейне может стоить немалых денег.

Эта проблема решается с помощью децентрализованного хранилища Ethereum Swarm.



Swarm обеспечивает децентрализованное хранение данных в хранилищах узлов, владельцы которых отдают свои ресурсы в общее пользование.

Для работы децентрализованного хранилища Swarm устанавливаются узлы сети Swarm, которая работает поверх сети Ethereum.

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



Если вернуться к среде Remix, то при нажатии кнопки Publish on Swarm, в хранилище браузера будет создано хранилище Swarm, в которое сохранится файл.

При этом опубликованные данные будут содержать исходный код abi и solidity.



Application Binary Interface (ABI) – это механизм кодирования/декодирования данных в и из машинного кода виртуальной машины.

Исходный код ABI – это определение интерфейса контракта для доступа к бинарным данным контракта в блокчейне через интерфейс ABI.

Application Binary Interface (ABI) представляет собой схему кодирования данных, используемую в Ethereum для работы со смарт-контрактами.

Для реальной публикации файла в сеть Swarm требуется установка узла Swarm.

Кнопку Publish on Swarm среды Remix можно использовать для автоматической проверки исходного кода смарт-контракта или для извлечения определения интерфейса ABI.

При реальной публикации файла в сеть Swarm с помощью установленного узла Swarm, доступ к опубликованному файлу можно получить через свой локальный работающий узел Swarm по адресу http://localhost:8500/ и дальше URL адрес файла.



URL адрес файла представляет собой имя протокола bzz и дальше хэш файла.

Таким образом, Swarm определяет протокол bzz, который работает поверх сети ethereum.

И сеть Swarm представляет собой набор узлов в сети Ethereum, каждый из которых запускает протокол bzz.



Установку узла Swarm и его использование можно посмотреть в документации.

Remix Run

Вкладка Run среды Remix позволяет отправлять транзакции в текущую среду выполнения.

Здесь есть настройки, которые позволяют напрямую влиять на выполнение транзакции.

В списке можно выбрать среду выполнения.

Это JavaScript VM, где все транзакции будут выполняться в блокчейне браузера.

Это означает, что ничего не будет сохранено, и перезагрузка страницы браузера перезапустит новую цепочку с нуля, старая не будет сохранена.

Среда выполнения Injected Provider. Remix будет подключаться к инструменту со встроенным web3. Mist и Metamask являются примерами поставщиков, которые интегрированы с web3.

Среда выполнения Web3 Provider. В этом случае Remix будет подключаться к удаленному узлу.

И вам нужно будет указать URL-адрес выбранному поставщику, такому как geth, parity или любому другому клиенту Ethereum.

Что такое Web3?



Web3 – это официальная Javascript библиотека Ethereum, которая позволяет работать с Ethereum из кода пользовательского приложения.

web3.js – это библиотека, которая позволяет взаимодействовать с локальным или удаленным узлом ethereum, используя соединение HTTP или IPC.

Конец ознакомительного фрагмента.