Loading

Весной 2019 Waves Platform анонсировала механизм для связи блокчейна с внешним миром. Со списком доступных оракулов можно ознакомиться на специальном сайте https://oracles.wavesexplorer.com.

Общие смысл оракула — это периодическая связь с внешним ресурса для получения данных и его сохранением в блокчейне. И эти данные всегда можно использовать из блокчейна, как просто через REST API, но и через другие dApps.

Что нужно для создание своего оракула в Waves?

  • Отдельный аккаунт — в сети Waves все dAppы представляют собой отдельный аккаунт. Нужно создать новый аккаунт и пополнить его баланс, так как для записи данных в блокчейн нужно платить за Data Transcations.
  • Источник данных — можно найти/создать источник данных. Именно эти данные и вы планируете хранить в блокчейне.
  • Сервер — так как данные нужно обновлять с некой периодичностью, нужен ресурс с поддержкой запуска скрипта по расписанию.

Создание аккаунта для оракула

Самый просто способ — это скачать расширение для браузера, авторизация для регистрации оракула доступа через это расширение. Расширение для вашего браузера можно найти по ссылке https://wavesplatform.com/technology/keeper.

После установки расширения нужно создать аккаунт. Процесс создания очень простой:

  • Согласиться с соглашением
  • Придумать пароль для Waves Keeper
  • Выбрать адрес
  • Запомнить seed фразу

И на это все — аккаунт для оракула готов!

ВАЖНО!!! Создание оракула выполняется в main-net, не забывайте переключать сеть, если не хотите тратить реальные $WAVES!!!

Транзакция по переводу $WAVES — тут, все действия делаются в mainnet.

Источник данных

В качестве источник данных я выбрал свой ресурс https://market-data.icu — в нем есть возможность получать данные о курсах валют от ЦБ РФ. Для это есть специальная точка получения последних актуальных курсов:

https://market-data.icu/api/currency.php?code=840

По данной ссылке будет доступен последний актуальный курс американского доллара от ЦБ РФ. Ответ в формате JSON:

{  
   "result":"ok",
   "message":"All right!",
   "currency":"USD",
   "date":"2019-09-11",
   "value":"65.4393"
}

Курсы обновляются в 20:00 ежедневно и после этого данные можно загрузить в блокчейн.

Запись данных в блокчейн

Для записи самое просто это использовать скрипты на языке Python. Для взаимодействия с блокчейном Waves можно использовать дополнительную библиотеку PyWaves.

Код скрипта ниже:

import pywaves as pw
import urllib.request, json
from datetime import datetime
// 1
pw.setNode(node = 'https://nodes.wavesnodes.com', chain = 'mainnet')
myAddress = pw.Address(privateKey='PRIVATE_KEY')
// 2
dd = datetime.utcnow()
d = dd.strftime("%Y-%m-%d %H:%M:%S")
// 3
with urllib.request.urlopen("https://market-data.icu/api/currency.php?code=840") as url:
data = json.loads(url.read().decode())
usd = data['value']
usdDate = data['date']
// 4
with urllib.request.urlopen("https://market-data.icu/api/currency.php?code=978") as url:
data = json.loads(url.read().decode())
eur = data['value']
eurDate = data['date']
// 5
data = [{
'type':'string',
'key': 'USD',
'value': usd
},{
'type':'string',
'key': 'USD_Date',
'value': usdDate
},{
'type':'string',
'key': 'EUR',
'value': eur
},{
'type':'string',
'key': 'EUR_Date',
'value': eurDate
},{
'type':'string',
'key': 'updateOn',
'value': d
}
]
// 6
myAddress.dataTransaction(data)

Краткое описание кода:

В самом начале нужно подключить все необходимые библиотеки.

Часть 1 — С помощью PyWaves подключаем с mainnet и используем приватный ключ созданного ранее аккаунта в блокчейне.

Часть 2 — В данных будет хранить дату обновления, здесь идет подготовка данных. Дата и время будет в UTC.

Часть 3 — Получаем от сервиса Market Data ICU данные по курсам USD.

Часть 4 — Получаем от сервиса Market Data ICU данные по курсам EUR.

Часть 5 — Формируем JSON для Data Transaction.

Часть 6 — Отправляем данные в блокчейн.

Дальше настраиваем расписание для этого скрипта на ежедневной основе и можно создавать карточку оракула на сайте https://oracles.wavesexplorer.com

Создание оракула

После перехода на https://oracles.wavesexplorer.com — делаем Log In и затем Create an oracle.

Далее заполняем все необходимы поля — чем подробнее вы опишите все, тем проще будет пользователям использовать ваш оракул.

Oracle name — указываем имя
Status — статус
Category — категория
About — краткое описание
Specification — описание данных, который можно получить. Скрипт будет добавлять пять параметров и все их нужно описать.

После заполнения всех параметров, вы добавляет эти данные и уже все пользователи могут использовать ваш оракул.

Полезные ссылки

https://oracles.wavesexplorer.com

https://docs.wavesplatform.com/en/waves-oracles/about-waves-oracles.html

Оракул в Waves Explorer

Top