Робономика 2018. Инженерный интенсив. День 2

Сегодня, 21 августа, в первой части обучающей программы разработчики команды Airalab познакомили участников интенсива с сетью Робономики.

Вчера мы развернули mesh-сеть с IPv6-адресацией. Чтобы начать знакомство с Робономикой, качаем и синхронизируем локальную сеть Ethereum. Локальная сеть в нашем случае состоит из двух ноутбуков и mesh-сети.

Качаем файл geth через ipfs по хэшу, устанавливаем.

Далее, также через ipfs хэш качаем некий файл:

Данный файл является генезис блоком и выглядит следующим образов:

Переименовываем файл в robonomics2018_genesis.json, создаем папку “robonomics2018”, где и будет храниться блокчейн.

Инициализируем сеть:

Перед синхронизацией с сетью Ethereum пингуем пир:

Создаем аккаунт:

Затем добавляем пир для синхронизации с Ethereum:

!Если ничего не работает в течение длительного времени, можно попробовать подключиться только к cjdns и запустить geth c заданным пиром (bootnode).

После синхронизации, запускаем майнера:

Майним.

Останавливаем майнера:

Проверяем баланс:

Запускаем в режиме rpc c майнером, чтобы начать использовать контракты одновременно и майнить:

Для работы с контрактами разблокируем аккаунт:

Клонируем пакет:

Подкачиваем зависимости:

В сети Робономики разворачиваем контракт по инструкции:

!Мы используем truffle для умных контрактов, который поможет с управлением миграциями, компиляцией, управлением зависимостями, а также тестированием.

Для работы с контрактами мы создаем объект xrt:

xrt = XRT.at(XRT.address)

Переводим на заданный счет 10000 Wn:

xrt.transfer(web3.eth.accounts[0], 10000)

Проверяем баланс:

xrt.balanceOf(web3.eth.accounts[0])

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

factory = LiabilityFactory.at(LiabilityFactory.address)
!Разворачивание контракта – дорогостоящий процесс, так как код полностью сохраняется в блокчейн. Поэтому мы обращаемся к фабрике и просим создать маяк.

Теперь можем создать маяк “test” с минимальным замораживаемым числом 1000 Wn и сохраняем всю информацию о транзакции в переменную tx.

tx = factory.createLighthouse(1000, 10, "test")

Теперь на нужно получть адресс нового маяка.

tx.then(x => x.logs)

По указанному на картинке адресу можем создать объект.

l = LighthouseLib.at('0xa20db0eb4275436c10e88e31f140dc0da9563ba4')

Теперь разрешаем новому маяку списывать со счета 1000 Wn и становимся работниками:

xrt.approve(l.address, 1000)
l.refill(1000)

И проверяем все ли прошло успешно:

l.quotaOf(web3.eth.accounts[0])

Что дальше?

Завтра будет разбираться с ROS, следите за обновлениями.

Чат Робономики