Delgus
@Delgus

Как из лога отлавливать событие «на аккаунт пришел ethereum»?

Помогите пожалуйста кто понимает.
Вообще не понимаю как система подписок работает для ethereum.
Вот как я пытаюсь сейчас.
package main

import (
	"context"
	"github.com/ethereum/go-ethereum"
	"github.com/ethereum/go-ethereum/common"
	"github.com/ethereum/go-ethereum/core/types"
	"github.com/ethereum/go-ethereum/ethclient"
	"log"
)

func main() {
	client, err := ethclient.Dial("wss://mainnet.infura.io/ws/v3/XXXXXXXXXXXXXXXX")
	if err != nil {
		log.Fatal(err)
	}

	accs := map[string]string{
"0x92321477416e93Ea452f16015e2F2a13B3BDe8B7":"12e2cc06fb999fa29306f10db6b366e61a4946b9527286a0c56640c94cebd950",
	}

	keys := make([]common.Address, 0, len(accs))
	for k := range accs {
		keys = append(keys, common.HexToAddress(k))
	}

	var ch = make(chan types.Log)
	sub, err := client.SubscribeFilterLogs(context.Background(), ethereum.FilterQuery{
		BlockHash: nil,
		FromBlock: nil,
		ToBlock:   nil,
		Addresses: keys,
		Topics:    nil,
	}, ch)
	if err != nil {
		log.Fatal(err)
	}
	defer sub.Unsubscribe()

	for l := range ch {
		// ???
	}
}

Как мне из логов понять пришла ли транзакция, ушла.
Я хочу просто узнать о том что на кошелек пришел эфир. получить сообщение об этом событии. как? не могу найти примеров
  • Вопрос задан
  • 114 просмотров
Пригласить эксперта
Ответы на вопрос 1
yehors
@yehors
Разработчик ПО
У вас в коде есть переменная ch ( var ch = make(chan types.Log) ) и далее цикл где показываются эти события лога - переменная l. У переменной тип types.Log, по ней можно будет понять пришла ли транзакция на указанный адрес.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы