VIZ.cx
denis-skripnik posted text :

Viz Market prices protocol


Или MPP

Суть

Есть приложение, которое собирает данные о курсах криптовалют из coinmarketcap и coingecko по определённому списку.

Оно формирует специальный JSON из нескольких массивов. Каждый массив состоит из двух значений: источник, данные.
В данных ключом является название криптовалюты или токена, а значением - курс.
Последним элементом основного массива является массив с первым значением "result" и вторым, где отображаются данные в формате "название: курс". Причём курс считается по медиане или берётся среднее арифметическое от курсов двух источников.
timestamp берётся из timestamp блока.
id такого json - MPP.

1. После публикации приложение награждает себя, указывая в memo viz://@login/block с блоком, где размещена цена.
2. Другие приложения, которые также добавляют данные, смотрят, отличаются ли они у них. Если нет, награждают первое приложение с указанием viz://@login/block. Если нет, создаёт свой custom.
3. Третье приложение смотрит предыдущие два и сравнивает. Если одно из них верно, награждает. Если неверно, создаёт своё
4. Если приложение публикует совпадающие данные вместо награждения, последующие проверяющие не награждают его, а награждают первое опубликовавшее такие данные.

5. Берутся опубликованные наиболее близко к текущему времени, после чего сортируются по сумме наград.

Проблемы

1. Сложность с подсчётом наград: всё это должно быть в одном блоке, а это нереально. Разделять же на несколько означает то, что данные уже неактуальны.
Делать же протокол в качестве инструмента ведения истории изменения курсов криптовалют - не дело.
2. Но приложения сами себя могут награждать в том-же блоке. Соответственно, получается будет побеждать тот, у кого больше соц. капитал, если получающему данные нужны текущие курсы криптовалют. Это уничтожает все плюсы от влияния награждения других на показатель вероятной точности курса.

Для чего?

1. При обращении к централизованным источникам локально можно столкнуться с подменой данных, если это необходимо злоумышленнику. Подделать же собранные разными участниками данные труднее.
2. Пользователи смогут смотреть усреднённые данные из разных источников.
3. Хранение истории курсов криптовалют в блокчейне (надёжнее, чем в базах данных).

Может что ещё...

Вариант 2

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

Всё

Предлагаю обсудить.

Comments


Как понимаю, это попытка переосмыслить оракулов и их «честность» в плане подачи информации. Я не уверен, что оно так будет работать. Нужны алгоритмы для сбора множества данных и их просеивания/получения среднего значения. Если даже будет десяток оракулов заточенные на одного поставщика данных — можно получить ошибку при сбое в api.
    Да. Источники одни, ну а выбор за счёт наград. Вероятно ты и прав: решил просто поднять эту тему - может у кого идеи ещё появятся... Надо развиваться в разных сферах.

Я похоже не уловил суть, а зачем награждать и сравнивать?
    Для того, чтоб определить, кто честно публикует информацию. Кто не врёт, не размещает фигню...
      Не вижу практической ценности такой информации. Кто подтвердит её подлинность на тех ресурсах, с которых она берется?
        Ценность есть: 1. Сохранение в БЧ - надёжнее, чем в базе данных; 2. Возможность агрегации множества источников. Второй пункт как раз таки и решает проблему возможной фальсификации данных владельцами сервисов. Например, если провайдеры данных будут брать информацию не от двух сервисов, а из десяти бирж... Вероятность обмана меньше, хоть она и есть. Но в этом случае весь рынок обманывается, а не только поставщик данных...
          Как-то все сложно. Но дело твоё.
            Ну а просто и не может быть в этом деле... Нужна же какая-то верификация честности. Хотя мой вариант возможно и не лучший: поэтому и запустил обсуждение.
          Все равно сложно брать и анализировать полученные награды. А может не сложно. Нужны оракулы для этого.
            Да. Для этого нужно приложение, которое их анализирует - это само собой... Через парсинг блоков. Но этим занимается целевое приложение, которому нужны данные.