Author

Topic: Снять снэпшот токенов на Ethereum (Read 298 times)

full member
Activity: 331
Merit: 100
Прошу помощи - подскажите, как лучше всего организовать периодическое снятие снэпшотов распределения ERC20 токенов на Ethereum?

Задача простая: нужно по состоянию сети Ethereum на определённый блок получить для выбранного токена ERC20 информацию о том, на каких аккаунтах и в каком количестве находятся эти токены.

Т.е. у кого и сколько токенов строго по состоянию на нужный блок.

Есть ли какие-то готовые инструменты для этого? Если нет - куда смотреть?

1. Можно через web3.js запрашивать метод balanceOf() у контракта, хранящего токены. Но т.к. там структура, которая хранит только хеши адресов - нужно знать адреса контрактов, на которые токены передавались. Это гемор. Поэтому рекомендую второй путь.
2. ERC20-токены генерят событие Transfer(address indexed from, address indexed to, uint tokens)
Можно проиндексировать блокчейн на предмет этих event'ов и записать себе куда-нибудь (в SQL-базу, например), и уже по ней запросы делать - блокчейн не изменится, только новые записи докидывать. Чем конкретно распарсить event'ы сейчас не подскажу, но в api эфира, вроде есть.
А разве event'ы записываются в блокчейн, вроде event'ы пишутся в лог-файлы? Ну это не столь важно, в смарт контрактах не обязательно что будут генерировать event, и поэтому не стоит полагаться на event'ы.
full member
Activity: 364
Merit: 113
Добрый вечер, заинтересовала эта тема, а что такое снепшоты?
Снэпшот, это моментальный "снимок" сети. Информация о кошельках и наличествующих в данных кошельках средствах на такой-то момент времени в какой-либо сети конкретной монеты. Отпечаток информационный одним словом.
А для этого есть какое-то особенное программное обеспечение или как это практически делается?
member
Activity: 574
Merit: 12
Добрый вечер, заинтересовала эта тема, а что такое снепшоты?
Снэпшот, это моментальный "снимок" сети. Информация о кошельках и наличествующих в данных кошельках средствах на такой-то момент времени в какой-либо сети конкретной монеты. Отпечаток информационный одним словом.
newbie
Activity: 7
Merit: 0
Добрый вечер, заинтересовала эта тема, а что такое снепшоты?
newbie
Activity: 84
Merit: 0
В нашем проекте решили эту проблему следующим образом:
Нам необходимо иметь массив всех адресов  с нашими токенами.
Если мы хотим решить эту задачу без привлечения оракулов( или внешней обработки, а лишь инструментами смарт контракта)
Нам необходимо в функцию mint - если ваш токен подразумевает выпуск и функцию transfer добавить  дополнительный массив
Quote
  address[] public invstors_adrees;
И при выпуске токенов или при трансфере проверяем нет ли адреса в масиве и если нету добавляем. Можете делать проверку на исключение итд как пожелаете, но проще без проверки т.к. у вас тогда будет полная база, всех кто использовал ваши токены.
Quote
invstors_adrees.push(_address) -1; 
И функцию начисления может перебрать адреса прям в смарт контракте, поскольку мы  при сканировании не изменяем переменные и сам блокчейн это не сильно газозатратно.
Плюс наше dApps  обращаясь к этому массиву может легче парсить без реализации дополнительного функционала отслеживания перевода  посредством парсенья блоков.
sr. member
Activity: 429
Merit: 252
Можно использовать что-то типа этого, скармливая ему локальные снэпшоты блокчейна.
member
Activity: 126
Merit: 23
Прошу помощи - подскажите, как лучше всего организовать периодическое снятие снэпшотов распределения ERC20 токенов на Ethereum?

Задача простая: нужно по состоянию сети Ethereum на определённый блок получить для выбранного токена ERC20 информацию о том, на каких аккаунтах и в каком количестве находятся эти токены.

Т.е. у кого и сколько токенов строго по состоянию на нужный блок.

Есть ли какие-то готовые инструменты для этого? Если нет - куда смотреть?

1. Можно через web3.js запрашивать метод balanceOf() у контракта, хранящего токены. Но т.к. там структура, которая хранит только хеши адресов - нужно знать адреса контрактов, на которые токены передавались. Это гемор. Поэтому рекомендую второй путь.
2. ERC20-токены генерят событие Transfer(address indexed from, address indexed to, uint tokens)
Можно проиндексировать блокчейн на предмет этих event'ов и записать себе куда-нибудь (в SQL-базу, например), и уже по ней запросы делать - блокчейн не изменится, только новые записи докидывать. Чем конкретно распарсить event'ы сейчас не подскажу, но в api эфира, вроде есть.
sr. member
Activity: 377
Merit: 282
Finis coronat opus
Вариант такой: задавать программно количество блоков через которые будет происходить снапшот.
1. Программа берет блок, на котором должен состояться фикс. И парсит все utxo ДО этого блока. Потом идут какие то уже действия.
На втором снапшоте берем уже промежуток от снапшота 2, и вниз до снапшота 1 (здесь я имею ввиду блоки на которых они зафиксированы) и так далее.
Если нужно проверять лежат ли коины на конкретных адресах, то лучше не делать снапшоты а время от времени парсить эти самые адреса на предмет потраченых выходов.
legendary
Activity: 2450
Merit: 2190
Прошу помощи - подскажите, как лучше всего организовать периодическое снятие снэпшотов распределения ERC20 токенов на Ethereum?

Задача простая: нужно по состоянию сети Ethereum на определённый блок получить для выбранного токена ERC20 информацию о том, на каких аккаунтах и в каком количестве находятся эти токены.

Т.е. у кого и сколько токенов строго по состоянию на нужный блок.

Есть ли какие-то готовые инструменты для этого? Если нет - куда смотреть?

Как вариант, можно мониторить все ETH-кошельки, на которые когда-либо передавались эти ERC20-токены.
member
Activity: 154
Merit: 11
Прошу помощи - подскажите, как лучше всего организовать периодическое снятие снэпшотов распределения ERC20 токенов на Ethereum?

Задача простая: нужно по состоянию сети Ethereum на определённый блок получить для выбранного токена ERC20 информацию о том, на каких аккаунтах и в каком количестве находятся эти токены.

Т.е. у кого и сколько токенов строго по состоянию на нужный блок.

Есть ли какие-то готовые инструменты для этого? Если нет - куда смотреть?


Класс, как раз мне тоже интересно)
hero member
Activity: 808
Merit: 1014
Прошу помощи - подскажите, как лучше всего организовать периодическое снятие снэпшотов распределения ERC20 токенов на Ethereum?

Задача простая: нужно по состоянию сети Ethereum на определённый блок получить для выбранного токена ERC20 информацию о том, на каких аккаунтах и в каком количестве находятся эти токены.

Т.е. у кого и сколько токенов строго по состоянию на нужный блок.

Есть ли какие-то готовые инструменты для этого? Если нет - куда смотреть?
Jump to: