Опубликован: 28.01.2018 | Доступ: свободный | Студентов: 924 / 143 | Длительность: 06:54:00
Лекция 3:

Знакомство с Remix - web-среда Solidity IDE. Понимание основ среды Ethereum

Введение в настройку и работу с клиентом Go Ethereum

Geth - это интерфейс командной строки Go Ethereum, применяется для управления узлами в сети Ethereum. Он реализован на языке Go. С помощью Geth можно добывать, или майнить, эфир, пересылать криптовалюту между адресами, создавать контракты и отправлять. По своей сути Geth представляет собой интерфейс командной строки для всех транзакций, которые можно совершать в кошельке Mist. Чтобы установить Geth, достаточно его просто загрузить на свой компьютер, например, со страницы http://github.com/Ethereum/go-ethereum. Для запуска Gethнеобходимо открыть командную строку и просто написать geth. Однако в таком виде Geth не позволит вам как-либо взаимодействовать с работающими в блокчейне транзакциями. Для взаимодействия с консолью JavaScript, нужно либо набрать команду geth console, которая запустит процесс geth и подключится к нему, либо команду geth attach, которая осуществляет подключение к уже запущенному процессу geth.


Во втором окне с командной строкой выполним команду geth attach для подключения к запущенному процессу Geth.


Geth работает с интерфейсом JavaScript. По JavaScript существует очень объемная и масштабная статья: начиная с получения доступа к консоли JavaScript и заканчивая изменениями уровня наполнения логов.


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


Эфир добывается путем резервирования части вычислительной мощности вашего компьютера под обсчет транзакций других пользователей сети. В консоли JavaScript обсчет данных запускается с помощью команды miner.start, в которой можно задать число потоков, например, 2.


После этого Geth автоматически начинает обрабатывать транзакции, а вырученный эфир зачисляет на ваш счет. Обычно зачисление производится на тот счет, который был создан первым. Адрес счета, куда производится зачисление эфира за майнинг, отображается с помощью команды eth.coinbase.


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


Для остановки процесса добычи эфира нужно ввести команду miner.stop().


Теперь разберемся, как создать новый счет. В wiki можно найти раздел Personal, где перечислены команды для работы со своим кошельком.


Команда personal.listAccounts отображает все ваши счета, а команда personal.newAccount() создает новый счет. Для создания нового счета зададим команду personal.newAccount(),Geth попросит ввести и повторить пароль. После этого новый счет создастся и будет виден в списке счетов при вводе команды personal.listAccounts.


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


Необходимо проверить, сколько на каждом счете из списка эфира. Для этого используем отдельную команду eth.getBalance. Параметром для функции eth.getBalance является адрес счета в формате eth.account[номер счета] . Посмотрим состояние первого счета. Видно, что на этом счете ничего нет.


Величины балансов и размеры средств для перевода выражаются в веях. Чтобы выполнить конверсию веев в другую валюту, или эфир в веи, можно использовать команду web3.toWei, задав в ней количество валюты и ее название, например, web3.toWei(1, "ether");. Теперь посмотрим на второй счет с помощью команды eth.getBalance(eth.accounts[1]);. На нем достаточно средств для перевода эфира на только что созданный счет. Для осуществления перевода счет надо сначала разблокировать. Для этого используется команда personal.unlockAccount(eth.accounts[1]); . Geth запросит пароль. После обработки и подтверждения введенный пароль, счет разблокирован. Теперь проверим баланс последнего счета в системе с помощью команды eth.getBalance(eth.accounts[eth.accounts.length -1]);. Видно, что последний счет имеет на своем балансе ноль. Для перевода валюты используем функцию SendTransaction с соответствующей командой eth.sendTransaction. Эта функция требует использования объекта JavaScript в качестве аргумента, который состоит из трех параметров: From - источник переводимых средств, To - то, куда средства будут переведены, и Value - объем переводимых средств, выраженный в веях. Полностью команда выглядит как eth.sendTransaction({from:eth.accounts[1], to: eth.accounts[eth.accounts.length-1], value: web3.toWei(1, "ether")});. Закроем все нужные скобки и посмотрим, что получится. Функция SendTransaction вернула нам идентификатор транзакции.


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

Для просмотра списка транзакций, ожидающих выполнения, используется команда eth.pendingTransactions. Транзакция по переводу эфира между счетами все еще находится в этом списке.


Чтобы посмотреть, как идет выполнение транзакции, можно скопировать идентификатор транзакции и найти его в веб-приложениях http://EtherScan.io или http://EtherChain.org. Транзакция пока еще не найдена, так как еще никто не согласился ее обсчитать, или замайнить.


Откроем пока кошелек Mist. Он автоматически подключится к уже работающему процессу GoEthereum. Mist показывает, что транзакция уже была обсчитана: со счета номер два один эфир был переведен на счет номер шесть.


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


Затем щелкнем по кнопке Send и выберем счет номер шесть, на который только что переводили эфир. Теперь вставим предварительно скопированный номер счета, и укажем объем в один эфир.


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


Видно, что данная транзакция не прошла по причине недостатка средств для оплаты комиссии майнеров. Отменим эту операцию.


Теперь вместо выбора конкретного объема валюты для перевода выберем опцию перевода всех средств. Все необходимые расчеты Mist сделает сам. Снова вводим пароль и ждем.


Тем временем давайте посмотрим на данную транзакцию на сайте EtherChain.org. Здесь видно, в какой блок попала наша транзакция, с какого счета на какой и в каком размере был осуществлен перевод.


Видно, что счет номер шесть снова пуст, а счет номер два пополнился переведенными средствами, и, кроме того, не осталось незавершенных транзакций.


Алексей Миронов
Алексей Миронов

Здравствуйте, сколько стоит курс Работа с Ethereum?