Сегодня, 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, следите за обновлениями.