Untitled
unknown
plain_text
2 years ago
2.9 kB
5
Indexable
const axios = require('axios'); const Web3 = require('web3').default; const {createBet} = require('./betUtils'); //import { getTransactionData } from './sendtransactiontestnet.mjs'; const address = '0xCE54b295D2eEb93036E52acf30f5a597503857B1'; // L'adresse que vous voulez surveiller const apiKey = '972GZRQRJUKRTUMV6XC9C5YXFCKYP5FICJ'; // clé API Etherscan (5 calls sec max) const web3 = new Web3("https://eth-sepolia.g.alchemy.com/v2/B0Z4jBkiPdnt7krD3RfM5VxYZI-bgBgu"); async function getTransactionData(transactionHash) { // Récupérer l'objet de la transaction let transaction = await web3.eth.getTransaction(transactionHash); // Le champ `input` contient les données de la transaction let inputData = transaction.input; // Les données sont sous forme hexadécimale, on peut les convertir en une chaîne en utilisant `web3.utils.hexToUtf8` let decodedData = web3.utils.hexToUtf8(inputData); // Renvoyer les données décodées de la fonction return decodedData; } function isJsonString(str) { try { JSON.parse(str); } catch (e) { return false; } return true; } const getTransactions = async () => { try { // @ts-ignore //const response = await axios.get(`https://api.etherscan.io/api?module=account&action=txlist&address=${address}&startblock=0&endblock=99999999&sort=asc&apikey=${apiKey}`); const response = await axios.get(`https://api-sepolia.etherscan.io/api?module=account&action=txlist&address=${address}&startblock=0&endblock=99999999&sort=asc&apikey=${apiKey}`); const transactions = response.data.result; for (const transaction of transactions) { const transacDatas = await getTransactionData(transaction.hash) if (isJsonString(transacDatas)){ let jsonObject = JSON.parse(transacDatas); const type = jsonObject.type; const epoch = jsonObject.epoch; const direction = jsonObject.direction; const from = transaction.from const value = transaction.value const betHash = transaction.hash let amountInEther = web3.utils.fromWei(value, 'ether'); console.log("Hash : ", betHash) console.log("From : ", from) console.log("amount : ", amountInEther , "ETH") if (type == 'bet' && isJsonString(transacDatas)){ console.log("On tente de bet") createBet(betHash, from, amountInEther, transacDatas) } } } } catch (error) { console.error('Une erreur est survenue lors de la récupération des transactions: ', error); } } setInterval(getTransactions, 5000); // Interroge toutes les 10 secondes
Editor is loading...