March 26, 2023

Ethereum+ARB google sheets на API

UPD 28.03 добавил возможность проверять кол-во NFT по адресу контракта. Функции getNFTCount и arb_getNFTCount

UPD 27.03 добавил формулы для сети Arbitrum. Формулы для Arbitrum имеют приставку "arb_", для работы нужно получить API KEY на arbiscan.io, принцип получения такой же, как и для ethscan.io

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

У гугла стоит стоит ограничение на ~20 запросов в минуту и ~200 запросов в час. Это очень сильно бесило, когда у тебя, к примеру, 100 аккаунтов, а гугл не может загрузить и посчитать балансы всех.

Но я нашел выход, я написал свои формулы при помощи Etherscan API, в чем преимущество:

  • Количество запросов ~15/сек, 300 000/день
  • Больше данных для импорта
  • Бесплатное API

На текущий момент написал только для блокчейна Ethereum, надеюсь мне будет не лень написать для большинства других блокчейнов и я сделаю это в ближайшее время, следите за анонсами в TG: Thor Lab

Начнем..

Ключи API

Для начала нам нужно получить ключи API (опять же они бесплатные). Для этого нужно зарегистрироваться на etherscan.

После регистрации и авторизации идем сюда

Нажимаем на +Add, придумываем названия и генерируем себе 3 ключа

Таблица

Теперь переходим в таблицу

Думаю что к чему понятно:

Wallets - столбец кошельков, вставляем с A2

BAL $ETH - баланс эфира

to USD - баланс эфира в $ (курс автоматически подтягивается в ячейку L7)

Count txns - количество транзакций в сети эфира

Last txn - когда последний раз была транзакция на кошельке

BAL $USDT - баланс USDT

BAL $USDC - баланс USDC

$CUSTOM - вы можете вставить любой адрес контракта в R9 (Custom $contract) и получить столбец с балансами этого токена.

Столбец L суммирует все балансы.

Custom $contract - сюда можно поместить любой токен-контракт, чтобы посмотреть балансы токенов

Etherscan API - сюда суем 3 API ключа

Для того чтобы скопировать к себе таблицу нужно нажать на Файл -> Создать копию

Можем поменять название, файлы Apps Script нужно оставить прикрепленными, для того чтобы кастомные формулы работали!

После копирования, таблица сохранится у вас на диске и доступ к ней будете иметь только вы!

После копирования вставьте список API ключей и список кошельков, загрузка всех данных займет до несколько минут. Я так же добавил параметр нулевого значения, функция не будет обращается к API, если кошелька в B-столбце нету, если же он есть функция будет обновлять данные примерно каждые ~3 секунды.

Кому интересны формулы подробнее о них:

=getEthBalance(ячейка; apiKey) - получает баланс эфира, округляет до 4 знаков после запятой

=getEthTxCount(ячейка; apiKey) - считает количество транзакций на кошельке

=getLastTransactionTime(ячейка; apiKey) - проверяет время последней транзакций, считает от текущего (выводит минуты/часы/дни в зависимости от того сколько прошло времени)

=getTokenBalance(токенКонтракт;ячейка; apiKey) - получает балансы токенов, единицы измерения подходящей для стейблов (10^6)

=getCustomTokenBalance(токенКонтракт;ячейка; apiKey) - получает балансы токенов, единицы измерения подходящей для большинства токенов ERC-20 (10^18)

=customSum(первая_ячейка:последняя_ячейка) - суммирует большинство ячеек, это кастомная формула, т.к. родная SUM не умеет нормально интерпретировать вывод цифр.

=EthBalance(колво_eth;цена_eth) - считает оценочную стоимость эфира по актуальному прайсу в google.

=getNFTcount(контракт_NFT;кошелек; apiKey)- считает оценочную стоимость эфира по актуальному прайсу в google.

Заключение

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

Любые вопросы можно задавать в чате Thor Chat (торчат)

Подписывайтесь на Thor Lab (основной канал), может будет полезно, часто пытаюсь придумать какую-нибудь хуйню.