Как можно проверить баланс своих кошельков?

У меня возникла задача по получению баланса кошельков в сетях ETH и TRX. Для сети TRX я использую gRPC по адресу <a>io:50051</a>, а для сети ETH — <a href="https://1rpc.io/eth" rel="nofollow">https://1rpc.io/eth</a>. Однако, у обоих сервисов есть ограничения по количеству запросов, а мне необходимо проверять баланс более 100 сгенерированных кошельков каждые 15 минут. Чтобы обойти эти лимиты, я думаю о том, чтобы поднять свои ноды на сервере. В связи с этим, у меня два вопроса: будут ли у меня в этом случае ограничения по количеству запросов, или я смогу отправлять столько запросов, сколько позволит мой сервер? И нужна ли информация о бэкенде Go, который подключается к клиенту и отправляет запросы?
  • 28 декабря 2024 г. 18:33
Ответы на вопрос 3
Разберем ваши вопросы по порядку.

### 1. Запуск собственных узлов

Если вы поднимете свои ноды для Ethereum и TRON, то вы сможете избежать внешних ограничений, связанных с количеством запросов. Собственные ноды позволят вам совершать запросы к сети с теми ограничениями, которые накладывает ваш сервер или оборудование. Однако, стоит отметить, что:

- **Ресурсы сервера**: Убедитесь, что ваш сервер имеет достаточные ресурсы (ЦП, память, пропускная способность), чтобы обрабатывать запросы от 100 и более адресов каждые 15 минут.
- **Настройки ноды**: В зависимости от реализации ноды, могут быть внутренние настройки и параметры, которые могут также ограничивать производительность. Убедитесь, что они настроены оптимально для ваших нужд.

### 2. Информация о бэкенде Go

Хотя информация о бэкенде на Go может быть полезна для вашего проекта, она не обязательна для работы с нодами. Однако вот несколько аспектов, которые стоит учесть:

- **Библиотеки**: Убедитесь, что вы используете библиотеки, совместимые с вашим языком программирования (например, go-ethereum для Ethereum и tron's go-sdk для TRON), которые обеспечивают взаимодействие с вашими нодами.
- **Код**: Вам, возможно, потребуется написать код для отправки запросов к вашим нодам и обработки ответов. Например, код на Go для получения баланса может выглядеть следующим образом:

  ```go
  package main

  import (
      "context"
      "fmt"
      "github.com/ethereum/go-ethereum/accounts/abi"
      "github.com/ethereum/go-ethereum/common"
      "github.com/ethereum/go-ethereum/rpc"
      "math/big"
  )

  func main() {
      client, err := rpc.Dial("http://localhost:8545") // URL вашего Ethereum узла
      if err != nil {
          fmt.Println(err)
          return
      }

      addr := common.HexToAddress("Ваш адрес кошелька")
      balance := new(big.Int)
      err = client.CallContext(context.Background(), balance, "eth_getBalance", addr, "latest")
      if err != nil {
          fmt.Println(err)
          return
      }

      fmt.Printf("Balance: %s\n", balance.String())
  }
  ```

### Заключение

С поднятыми собственными нодами вы сможете более гибко управлять запросами и избежать ограничений внешних API. Однако, чтобы все это работало, потребуется соответствующий бэкенд на Go или на другом языке для интеграции с вашими нодами. Убедитесь, что вы проверили производительность вашего сервера и принятые параметры конфигурации, чтобы оптимизировать работу вашей системы.
Если ты поднимешь свою ноду, то очевидно, что лимитов никаких не будет - сможешь слать столько запросов, сколько позволяет железо. 

(Хотя вроде я слышал, что существуют разработчики, которые выпускают специализированные ноды и продают их - там вполне может быть лимит. Читай внимательно, если хочешь таким воспользоваться)
Правильно, поднять свою ноду geth (етсь и другие) в режиме light node (не хранит блокчейн, только анализирует новые блоки) и работать с официальным api (примеры простых запросов) или же поискать библиотеки 'все включено' 

Недостаток - нода должна работать постоянно и потреблять процессор и немного оперативной памяти (я давно не изучал, возможно light node позволяет пропускать выполнение/проверку всех контрактов в блоке)

p.s. недостаток light node в пониженной надежности, если соседние ноды будут злонамеренными, они могут задержать информацию о транзакции, а при наличии ресурсов, даже совершать атаку на протокол (нужно много денег и мотивации на это, но не 50%+1), и даже в этом случае есть способы это отследить
Похожие вопросы