Web3 + Infura" не получается слушать события смарт-контракта.
Создавать ордеры получается, а попытки подписаться на события "CreateOrder" - нет (при создании ордера как будто бы не эмиттится событие).
🧐
там примеры же есть у каждой сети в гитах. даже у обоссаного еоса ито есть. а уж на кефир и бсч вообще дохрена примеров.
не работает ничё.
скорее всего web3js забыл подтянуть
import Web3 from 'web3'; import ContractABI from '../../ContractABI.json'; import { PrismaService } from 'nestjs-prisma'; const privateKey = process.env.ETH_GENERRED_PRIVATE_KEY || ''; const CONTRACT_ADDRESS = process.env.CONTRACT_ADDRESS; const INFURA_WSS = process.env.GOERLI_INFURA_WSS; @Injectable() export class BlockchainService { private web3: Web3; private readonly contract: any; constructor(private prisma: PrismaService) { this.web3 = new Web3(INFURA_WSS); this.contract = new this.web3.eth.Contract(ContractABI, CONTRACT_ADDRESS); } async init() { await this.setAccount(privateKey); console.log('account set'); // Обработка событий this.subscribe(); } subscribe() { this.web3.provider.on('connect', () => { console.log('connect'); }); this.web3.provider.on('disconnect', () => { console.log('disconnect'); }); this.web3.provider.on('accountsChanged', () => { console.log('accountsChanged'); }); this.web3.provider.on('chainChanged', () => { console.log('chainChanged'); }); this.contract.events.OrderCreated({}, (error, event) => { if (error) { console.error("An error occurred when handling the OrderCreated event"); console.error(error); } else { console.log("OrderCreated event received, event data: ", event); } });
Обсуждают сегодня