Bitcoin Forum
June 21, 2024, 11:07:14 PM *
News: Voting for pizza day contest
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Снять снэпшот токенов на Ethereum  (Read 299 times)
Ivanech (OP)
Hero Member
*****
Offline Offline

Activity: 808
Merit: 1014


View Profile
December 24, 2017, 11:23:30 AM
 #1

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

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

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

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

Activity: 154
Merit: 11


View Profile WWW
December 30, 2017, 07:34:33 PM
 #2

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

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

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

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


Класс, как раз мне тоже интересно)

Coin-1
Legendary
*
Offline Offline

Activity: 2492
Merit: 2232



View Profile
January 01, 2018, 11:47:22 PM
Last edit: October 02, 2018, 08:17:50 PM by Coin-1
 #3

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

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

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

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

Как вариант, можно мониторить все ETH-кошельки, на которые когда-либо передавались эти ERC20-токены.
TechPriest
Sr. Member
****
Offline Offline

Activity: 377
Merit: 282


Finis coronat opus


View Profile
January 02, 2018, 11:38:47 AM
 #4

Вариант такой: задавать программно количество блоков через которые будет происходить снапшот.
1. Программа берет блок, на котором должен состояться фикс. И парсит все utxo ДО этого блока. Потом идут какие то уже действия.
На втором снапшоте берем уже промежуток от снапшота 2, и вниз до снапшота 1 (здесь я имею ввиду блоки на которых они зафиксированы) и так далее.
Если нужно проверять лежат ли коины на конкретных адресах, то лучше не делать снапшоты а время от времени парсить эти самые адреса на предмет потраченых выходов.

In science we trust!
yokotoka
Member
**
Offline Offline

Activity: 126
Merit: 23


View Profile
January 03, 2018, 05:19:20 AM
 #5

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

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

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

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

1. Можно через web3.js запрашивать метод balanceOf() у контракта, хранящего токены. Но т.к. там структура, которая хранит только хеши адресов - нужно знать адреса контрактов, на которые токены передавались. Это гемор. Поэтому рекомендую второй путь.
2. ERC20-токены генерят событие Transfer(address indexed from, address indexed to, uint tokens)
Можно проиндексировать блокчейн на предмет этих event'ов и записать себе куда-нибудь (в SQL-базу, например), и уже по ней запросы делать - блокчейн не изменится, только новые записи докидывать. Чем конкретно распарсить event'ы сейчас не подскажу, но в api эфира, вроде есть.
densmirnov
Sr. Member
****
Offline Offline

Activity: 429
Merit: 252



View Profile WWW
January 08, 2018, 07:38:21 AM
 #6

Можно использовать что-то типа этого, скармливая ему локальные снэпшоты блокчейна.

▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
ᴅᴇᴠᴇʟᴏᴘ ᴄᴜsᴛᴏᴍ ᴅᴇᴄᴇɴᴛʀᴀʟɪᴢᴇᴅ ʙʟᴏᴄᴋᴄʜᴀɪɴ ᴀᴘᴘʟɪᴄᴀᴛɪᴏɴs in ᴊᴀᴠᴀsᴄʀɪᴘᴛ with ʟɪsᴋ!
ᴡᴇʙsɪᴛᴇ 🇺🇸 ʙʟᴏɢ 🇺🇸 ᴄʜᴀᴛ 🇺🇸 ғᴀᴄᴇʙᴏᴏᴋ 🇷🇺 ᴠᴋ 🇷🇺 ᴛᴡɪᴛᴛᴇʀ 🇷🇺 Be part of the decentralized application movement!


▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
AdeptEthereumStocks
Newbie
*
Offline Offline

Activity: 84
Merit: 0


View Profile WWW
January 10, 2018, 07:43:18 PM
 #7

В нашем проекте решили эту проблему следующим образом:
Нам необходимо иметь массив всех адресов  с нашими токенами.
Если мы хотим решить эту задачу без привлечения оракулов( или внешней обработки, а лишь инструментами смарт контракта)
Нам необходимо в функцию mint - если ваш токен подразумевает выпуск и функцию transfer добавить  дополнительный массив
Quote
  address[] public invstors_adrees;
И при выпуске токенов или при трансфере проверяем нет ли адреса в масиве и если нету добавляем. Можете делать проверку на исключение итд как пожелаете, но проще без проверки т.к. у вас тогда будет полная база, всех кто использовал ваши токены.
Quote
invstors_adrees.push(_address) -1; 
И функцию начисления может перебрать адреса прям в смарт контракте, поскольку мы  при сканировании не изменяем переменные и сам блокчейн это не сильно газозатратно.
Плюс наше dApps  обращаясь к этому массиву может легче парсить без реализации дополнительного функционала отслеживания перевода  посредством парсенья блоков.
Pro100Sany
Newbie
*
Offline Offline

Activity: 7
Merit: 0


View Profile
January 16, 2018, 09:12:16 PM
 #8

Добрый вечер, заинтересовала эта тема, а что такое снепшоты?
AristoteI
Member
**
Offline Offline

Activity: 574
Merit: 12


View Profile
January 20, 2018, 11:59:27 PM
 #9

Добрый вечер, заинтересовала эта тема, а что такое снепшоты?
Снэпшот, это моментальный "снимок" сети. Информация о кошельках и наличествующих в данных кошельках средствах на такой-то момент времени в какой-либо сети конкретной монеты. Отпечаток информационный одним словом.
hotbit
Full Member
***
Offline Offline

Activity: 364
Merit: 113



View Profile
February 09, 2018, 09:49:07 PM
 #10

Добрый вечер, заинтересовала эта тема, а что такое снепшоты?
Снэпшот, это моментальный "снимок" сети. Информация о кошельках и наличествующих в данных кошельках средствах на такой-то момент времени в какой-либо сети конкретной монеты. Отпечаток информационный одним словом.
А для этого есть какое-то особенное программное обеспечение или как это практически делается?
pofigist
Full Member
***
Offline Offline

Activity: 331
Merit: 100


View Profile
February 13, 2018, 01:06:47 PM
 #11

Прошу помощи - подскажите, как лучше всего организовать периодическое снятие снэпшотов распределения 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'ы.
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!