Menu

Начальное руководство по разработке приложений без транзакционных комиссий на EtherZero

English: Что такое EtherZero? EtherZero (ETZ) – это платформа смарт-контрактов нового поколения. Это система с открытым исходным кодом, которая может исполнять смарт-контракты на блокчейне. Это платформа с нулевыми транзакционными комиссиями, транзакциями в реальном времени, высоким параллелизмом, арбитражем на уровне мастернод, двухуровневой сетью и так далее.

Разработка DAPP на EtherZero полностью совместима с Ethereum. Но, по сравнению с Ethereum, самое большое преимущество разработки DAPP на EtherZero – это нулевые комиссии!

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

Хотите иметь безкомиссионный блокчейн в качестве мощной поддержки ваших проектов и вашего развития? Теперь это стало возможным! Давайте начнем путешествие в волшебный мир разработки распределенных приложений на безкомиссионной платформе EtherZero!

1. Подготовка для разработки

В каждом узле EtherZero хранятся полные данные этой блокчейн цепи. EtherZero хранит как данные транзакций, так и скомпилированный код контрактов. Узел EtherZero содержит виртуальную машину для выполнения кода смарт-контрактов.

Данные транзакций

Каждая транзакция в EtherZero хранится в блокчейне. Развертывание смарт-контракта в EtherZero – это тоже транзакция. Когда вы голосуете за кандидата, один голос – это отдельная транзакция. Все эти транзакции являются публичными, и каждый может видеть и проверить их, поэтому транзакции никогда не могут быть подделаны.

Код контракта

EtherZero не только хранит данные транзакции в цепочке, но также хранит код контракта в цепочке. На уровне базы роль блокчейна заключается в хранении данных транзакций. DApp-разработчик EtherZero может использовать язык программирования Solidity для написания кода бизнес-логики/приложения (т.е. контракта), затем скомпилировать код контракта в байт-код и развернуть байт-код в блокчейне. Вы также можете использовать другие языки для программирования, но Solidity является самым популярным выбором.

Виртуальная машина

Блокчейн EtherZero содержит виртуальную машину в каждом узле для выполнения кода контракта.

Библиотека Web3.js

Web3.js инкапсулирует протокол API любого узла EtherZero, что позволяет разработчикам легко подключаться к узлам блокчейна без необходимости писать утомительные пакеты RPC протоколов. Таким образом, мы можем непосредственно представить библиотеку в широко используемом JS для создания децентрализованных приложений:

Веб-страница взаимодействует с узлами блокчейна через удаленный вызов процедур (RPC). Библиотека Web3.js уже инкапсулирует все вызовы RPC, определенные EtherZero, поэтому вы можете использовать ее для взаимодействия с блокчейном.

2. Онлайн разработка с использованием Remix

Remix – это среда разработки с открытым исходным кодом смарт-контрактов на зыке Solidity, которая предоставляет основные функции, такие как компиляция, развертывание в локальной или тестовой сети и выполнение контрактов. Solidity – это язык разработки, который официально поддерживается EtherZero и предназначен для написания смарт-контрактов. Http://remix.etherzero.org – это онлайн-среда разработки, которая не требует установки и может запускать Remix непосредственно в любом браузере.

Ниже будет представлен процесс разработки приложений на основе EtherZero и Remix. Сначала мы установим узел частной сети блокчейна EtherZero, а затем развернем в ней смарт-контракт. Далее, мы посмотрим, как развернуть смарт-контракты на основной сети EtherZero.

2.1 Настройка частной цепи EtherZero (Private Chain)

Установка клиента (Install the Geth client):

Пользователи Windows могут загрузить скомпилированный клиент geth с github. Адрес загрузки: https://github.com/EtherZero-org/go-EtherZero/releases/tag/v1.0.0.
Скачайте архив for.windows.geth.exe.zip и извлеките исполняемый файл клиента geth.exe.
Для пользователей операционных систем Linux и Mac установите go (требуется версия 1.7-1.9) и компилятор C. Затем выполните команду git clone https://github.com/EtherZero-org/go-EtherZero, загрузив исходный код проекта EtherZero, выполните make geth в каталоге go-EtherZero, скомпилировав исполняемый клиент geth.

Запуск тестовой сети (Start the test chain):

Перейдите в каталог, где установлен geth клиент и запустите его командой:
geth --rpc --rpcvhosts "*" --rpccorsdomain "*" --testnet --rpcport 9646 console Geth

После загрузки будет выведена информация о запуске, а затем показана командная строка, как на рисунке:

Создайте два эккаунта:

personal.newAccount("******")

Запустите майнинг:

miner.start()

Как показано на следующем рисунке, отображение фразы “Mined potential block” ("Сформирован потенциальный блок") означает успешный майнинг.

Разблокируйте эккаунт:

personal.unlockAccount(eth.accounts[0], "******", 0), 0 обозначает разблокировка без ограничения по времени.

Проверьте баланс счета:

eth.getBalance(eth.accounts[0])

Запрос баланса должен отобразить нулевое значение web3.fromWei(eth.getBalance(eth.accounts[0]), "ether").

2.2. Компиляция контракта в Remix

Откройте Remix (http://remix.etherzero.org) и нажмите в левом верхнем углу “+”, чтобы добавить новый контракт:

Имя может быть произвольным, но расширение будет ".sol".

Возьмем в качестве примера простой контракт на покупку валюты, напишем соответствующий ему код и скомпилируем его. Грамматику Solidity, используемую для контракта, можно найти на официальном сайте обучения http://solidity.readthedocs.io/en/v0.4.24/. Параметры Remix по умолчанию будут автоматически применены при компиляции, если только система не выдаст красное сообщение об ошибке, если всё будет хорошо – будет выдано сообщение об успешной компиляции.

2.3. Развертывание контракта в частной сети EtherZero

После компиляции кода без ошибок выберите вкладку Выполнить в Remix и выберите Web3Provider в Environment.

Нажмите “OK” диалоговом окне:

Измените метод соединения на http://localhost:9646

На этом этапе Remix подключится к частной сети EtherZero, которую мы построили в разделе 2.1. Баланс каждой учетной записи частной сети Ether Zero можно просмотреть в диалоговом окне “Account”. Это удивительно просто, не так ли? Давайте продолжим писать настоящее приложение на EtherZero!

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

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

Просмотрите баланс контракта, только что развернутого в сети, с помощью запроса в окне клиента: eth.getBalance("0x6a3c6d7ed624387abaa638aa36b407041fadee8b ")

2.4. Развертывание контракта в основной цепи EtherZero

Когда смарт-контракт прошел закрытое тестирование в частной сети EtherZero, его можно развернуть в основной сети. Развертывание смарт-контрактов в EtherZero требует использования веб-плагина GoETZ. Используем браузер Chrome в качестве примера: выполните поиск "goetz" в интернет-магазине приложений, найдите плагин GoETZ wallet, нажмите "Добавить в Chrome".

Откройте GoETZ, вы можете видеть баланс ETZ на своем счету.

Выберите Injected Web3 в Remix, это действие автоматически импортируем адрес в GoETZ кошелек.

Нажмите “Развернуть” (Deploy), чтобы отправить транзакцию, и тем самым вы развернете контракт в основной сети EtherZero. Когда контракт развернут в EtherZero, пожалуйста, убедитесь, что у вас есть по крайней мере 0.01 ETZ в вашем счете в GoETZ кошельке. ETZ можно приобрести на биржах CryptopiaDigifinex, Coin918 и других.

3. Полезные источники информации:

• EtherZero White Paper: https://EtherZero.org/ETZ_WhitePaper_cn2.0.pdf
• Solidity Language Manual: http://solidity.readthedocs.io/en/develop/
• Ether Zero official website: https://EtherZero.org/
• Ether zero github: https://github.com/EtherZero-org/go-EtherZero