Untitled
unknown
plain_text
2 years ago
2.9 kB
10
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...