Чтение событий в mainnet
Нашел интересный пример для чтения событий (event) в контрактах, которые уже были загружены в сеть. Для этого используются такие сервисы как Alchemy или Infura. Если я правильно понял, то для этого случая, все бесплатно.
Чтобы подключить прослушивание событий в сети, вам нужно зарегистрировать в одном из этих сервисов, создать API и получить ссылку WebSocket. Все это будет в вашем личном кабинете.
Также нам потребуется адрес контракта и его ABI, которые можно найти на etherscan. В нижеследующем примере был взят адрес контракта USDT.
Далее в js файле потребуется написать такой код:
const ethers = require("ethers");
const usdtAbi = require("pathToAbiFile");
async function main() {
const usdtAddress = "tokenAdress";
const provider = new ethers.providers.WebSocketProvider("linkToSocket");
const contract = new ethers.Contract (usdtAddress, usdtAbi, provider);
contract.on("Transfer", (from, to, value, event) => {
let info = {
from: from,
to: to,
value: ethers.utils.formatUnits(value, 6),
data: event
};
console.log(JSON.stringify(info, null, 4));
});
}
main();
Теперь, как только будет происходить события transfer, мы будем получать сообщение об этом.
Также рекомендую использовать dotenv для сокрытия важной информации в файлах, типа API используемого сервиса.
#ethers #ethersjs #alchemy #event
Post #490
206
- 👍 1