Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
upaut
6 лет назад

IExec. Выполнение программ. #2

Сегодня я покажу вам как выполнять приложения в сети IExec. В первом посте я говорил, что приложение можно использовать из Dapp Store, но так же есть возможность запуска контейнеризированных в Docker-е приложений из публичного репозитория. Сейчас мы запустим майнинговую программу на платформе IExec взятую из Docker Hub, причем сделаем это совершенно бесплатно. Так как большинство майнеров работают с NiceHash я не буду настраивать майнинг определенной монеты, это вы сможете проделать и сами, а запущу майнинг алгоритма Equihash на удаленных узлах IExec настроеных на NiceHash.

Итак, приступим)

Первое что нам нужно это среда откуда мы будем производить все манипуляции. Можно конечно установить все руками npm, node.js и т.д, можно просто использовать готовый Docker контейнер где все уже установлено, но придется установить программу Docker, а можно зайти на вот этот сайт https://www.katacoda.com/sulliwane/scenarios/sdk-v2-tutorial где команда IExec выкладывает туториалы по работе с их платформой, там уже все настроено и работает из Docker контейнеров, им то мы и воспользуемся для своих целей.

Заходим на сайт, первое что мы увидим будет окно с просьбой ввода вашего мыло и пароля, вы можете вбить абсолютно любое мыло даже не существующие (например: blabla@mail.ru) и абсолютно любой пароль (например: qawsed), дальше вводите капчу и жмете "Sing in".

Жмем "START SCENARIO"

После этого вы увидите готовую среду разработки))

Все команды мы вводим справа в черном окошке (терминал).

Для начала инсталируем IEXEC:

npm -g install iexec

После инсталяции нам доступен SDK IExec. Введем одну из команд SDK для проверки успешной установки:

iexec --version

Если все правильно, то в терминале вы увидите текущую версию SDK

Теперь нам нужно инициализировать наш проект. Давайте объясню в чем смысл всего происходящего. Наша цель это создания смарт-контракта, в котором будет находится ссылка на Docker контейнер с майнинговой программой. Когда кто-нибудь использует этот контракт планировщик пула прогрузит данный образ на ПК работника (воркера) и начнется выполнение.

Инициализируем проект:

iexec init

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

wallet.json - В этом файле описывается ваш кошелек ETH (приватный и публичный ключ, приватный ключ пока в открытом виде, но вскоре команда IExec сделает так, что он будет шифроваться). Короче говоря это ваш кошелек где хранится ETH и RLC. Сразу предупреждаю что при перезапуске страницы браузера генерируется всегда новый адрес (в данном случае мы работаем с тестовой сетью эфира KOVAN), тоесть каждый перезапуск страницы браузера ведет к генерации нового кошелька. Вам нужно будет запросить тестовый эфир на свой адрес, а его могут прислать от 10 минут до 24 часов, потому мы сохраняем данные этого файла к себе на комп и каждый раз при перезапуске страницы браузера мы будем вставлять свой адрес эфира вместо сгенерированного.

account.json - это как раз наш аккаунт, с этим файлом делать ничего не надо, он зависит от адреса кошелька (точнее от wallet.json). Вы можете спросить для чего нужен аккаунт если есть адрес кошелька, объясняю. Все что вы зарабатываете, планировщик кладет к вам в аккаунт. Все что вы оплачиваете, приложение или воркеров провайдера, планировщик берет nRLC из аккаунта. Из аккаунта вы можете в любой момент nRLC перевести на свой кошелек и так же из кошелька в аккаунт. Если бы планировщик работал сразу напрямую с кошельком, то вы бы просто разорились оплачивать ETH в качестве газа за перегонку RLC непосредственно в блокчейне.

iexec.json - это наш основной конфигурационный файл, как раз в нем мы и указываем какой докер контейнер использует наш контракт и в этом же файле будет указываться стоимость за использования нашего приложения. Каждый раз когда кто-то использует наше приложение мы получаем на наш аккаунт nRLC указанное в этом файле.

chain.json - этот файл описывает сети Ethereum (тестовые и майннет), мы работаем с тестовой сетью KOVAN наш код 42

Двигаемся дальше, я в файл wallet.json вставлю данные своего тестового кошелька у меня на нем еще осталось немного эфира))

Следующая команда проверяет баланс нашего кошелька

iexec wallet show

Чтобы двигаться дальше вам нужно получить тестовый эфир. Его вы можете запросить вот здесь https://gitter.im/kovan-testnet/faucet

Дальше нам нужно получить немного nRLC, здесь все просто вводите следующую команду и вам начисляют 200 nRLC.

iexec wallet getRLC

Если вы внимательно читали, то должны были догадаться для чего нам нужно nRLC. Мы должны будем немного перевести в аккаунт, переводим 50 nRLC нам этого хватит

iexec account deposit 50

едем дальше

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

iexec app count

как видно у меня таких приложений развернуто 6 шт

далее будем редактировать файл iexec.json. В нем нам нужно будет указать Docker контейнер из публичного репозитория Docker Hub и задать цену за использования смарт-контракта (раз контракт будете использовать только вы, можете оставить цену 1 nRLC. Так же в поле "name" вы можете указать имя вашего приложения, я оставлю его без изменений, так как я просто показываю вам как это работает, короче мое имя будет "my-dapp". Делаем все как на скриншоте, все изменения сохраняются автоматически

осталось развернуть наш смарт-контракт в блокчейне Ethereum тестовая сеть Kovan, вводим команду

iexec app deploy

как видно добавился еще 1 файл "deployed.json", в нем написано

{
"app": {
"42": "0x5f83bb4d45b20e295bef2e06de1c985d0d40dbe7"
}
}

расшифрую:

42 - это то что данный контракт был развернут в тестовой сети Kovan

0x5f83bb4d45b20e295bef2e06de1c985d0d40dbe7 - это адрес нашего смарт-контракта

Сохраните эти данные у себя в блокноте, когда вы будете брать в аренду мощности в сети IExec вам надо будет указать адрес смарт-контракта планировщику пула, чтобы он знал чем озадачить выбранного работника)

Следующая команда покажет информацию по вашему контракту

iexec app show

Сейчас мы будем запускать наш майнинг на платформе IExec. Для того чтобы в дальнейшем не возникло трудностей проделаем запуск "с нуля". Впринципе если вы не хотите то можете все вышеперечисленные действия не производить (вам только нужно получить тестовый эфир на свой адрес, RLC и пополнить баланс аккаунта), а использовать контракт который я только что развернул))

Перезапустите страничку KataCoda в браузере и заного нажмите "START SCENARIO"

Я буду майнить на адрес биткоина 1JrknowyWouVaPGjPtmZJ8zLxgavHifFzG я не знаю чей это адрес)) наверное один из адресов Сатоши Накамото, надо заработать ему пару сатошиков)

поехали...

Инсталируем IExec

npm -g install iexec

инициализируем проект

iexec init

заменяем содержимое файла Wallet.json на свое и проверяем баланс кошелька

iexec wallet show

ETH есть, RLC есть, баланс аккаунта в норме, пожно приступать к заказам)

вводим команду которая переинициализирует файл iexec.json для запуска приложения

iexec order init --buy

открываем файл iexec.json он будет следующего вида

{
"description": "My iExec ressource description",
"license": "MIT",
"author": "?",
"social": {
"website": "?",
"github": "?"
},
"logo": "logo.png",
"app": {
"name": "my-dapp",
"price": 1,
"params": {
"type": "DOCKER",
"envvars": "XWDOCKERIMAGE=hello-world"
}
},
"order": {
"buy": {
"app": "0x0000000000000000000000000000000000000000",
"dataset": "0x0000000000000000000000000000000000000000",
"params": {
"cmdline": "--help"
}
}
}
}

Нас конкретно интересует только этот блок:

"order": {
"buy": {
"app": "0x0000000000000000000000000000000000000000",
"dataset": "0x0000000000000000000000000000000000000000",
"params": {
"cmdline": "--help"
}
}
}

в значении "app" мы должны указать адрес смарт-контракта (а там у нас программа майнер) и в значении "cmdline" мы передаем наши параметры для майнера (в них показываем куда майним, какой алгоритм, на какой адрес и покажем rig который будет отражаться на NiceHash

редактируем блок до такого вида, вы подставляйте свой биткоин адрес:
"order": {
"buy": {
"app": "0x5f83bb4d45b20e295bef2e06de1c985d0d40dbe7",
"dataset": "0x0000000000000000000000000000000000000000",
"params": {
"cmdline": "-l equihash.eu.nicehash.com:3357 -u 1JrknowyWouVaPGjPtmZJ8zLxgavHifFzG.Upaut1 -p x"
}
}
}

тоесть будем майнить алгоритм equihash на nicehash, на адрес 1JrknowyWouVaPGjPtmZJ8zLxgavHifFzG, имя нашего работника на nicehash будет Upaut1

Итак, файл iexec.json отредактирован, осталось найти понравивщийся нам ордер и оплатить его и начнутся вычисления))

Можно просматривать имеющиеся ордера через команду

iexec orderbook show --category <номер категории>

но оно нам надо? нам проще открыть маркетплейс и быстренько найти его глазками. Открываем https://market.iex.ec/ и видим что в категории номер 3 есть 10 ордеров, выбираем понравившийся

посматрите какие копейки стоят вычисления (цены в nRLC), будет оплачивать ордер с ID 555 он стоит всего 9 nRLC + 1 nRLC потребует планировщик чтобы отдать его владельцу смарт-контракта (помните я цену 1 nRLC поставил). Короче оплачиваем ордер командой

iexec order fill orderID

в нашем случае ордер 555

iexec order fill 555

идет запрос на то, что планировщик снимет с вас 1 nRLC для владельца контракта и 9 nRLC для провайдера (сам планировщик не взымает никаких плат), соглашаемся.

жмем 'Y' и Enter

как видите ордер оплачен и работа началась

смотрим на NiceHash

О, ДААА все работает))

Если в маркетплейс кликнуть по нашему ордеру то откроется iexec explorer с информацией о исполнении нашего приложения

если нужны еще воркеры просто меняйте в этой строке имя воркера, чтобы на Nacehash воркеры отличались.

"cmdline": "-l equihash.eu.nicehash.com:3357 -u 1JrknowyWouVaPGjPtmZJ8zLxgavHifFzG.Upaut1 -p x"

и выполняйте команду

iexec order fill orderID

с новым ID ордером. Возьму еще 4 воркера на работу

Ну вот и все. Несколько ньюансов:

Команда IExec пока сильно ограничивает время использования воркеров, но уже скоро все сделают как надо. Docker не должен превышать 1 GB, это тоже пока временное ограничение.

Еще немного о Docker:

Docker это типо Виртуальной машины, только в отличии от нее Docker не изолирует целую операционную систему, а изолирует конкретно отдельные процессы. Конечно это не говорит о том что вы не можете запихнуть в Docker полноценную ОС, это просто ни к чему))

Удачи с эксперементами))

Подключайтесь к обсуждению на bitcointalk
Подключайтесь к чату RLCrussia в Telegram

21
0.021 GOLOS
На Golos с August 2018
Комментарии (2)
Сортировать по:
Сначала старые