Untitled

mail@pastecode.io avatar
unknown
javascript
a year ago
2.9 kB
3
Indexable
Never
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