stop after 200 irrelevant results

This commit is contained in:
tymur999
2024-05-26 15:38:22 -05:00
parent 6471c68687
commit 1bf06c0558

View File

@@ -16,35 +16,48 @@ async function calculatePumpFunProfit(walletAddress: PublicKey, myToken: PublicK
lastTxn = newSigs[newSigs.length - 1]?.signature; lastTxn = newSigs[newSigs.length - 1]?.signature;
} while(true); } while(true);
const parseTasks: Promise<any>[] = []; let irrelevantTxns = 0;
for(const sig of sigs) { for(const sig of sigs) {
if(sig.err) continue; if(irrelevantTxns > 200) return solNetProfit;
parseTasks.push(connection.getParsedTransaction(sig.signature, {maxSupportedTransactionVersion: 0}) if(sig.err) {
.then(txn => { irrelevantTxns++;
if(!txn || !txn.meta) return; continue;
}
const txn = await connection.getParsedTransaction(sig.signature, {maxSupportedTransactionVersion: 0});
if(!txn || !txn.meta) {
irrelevantTxns++;
continue;
}
//check if there was a change in myToken //check if there was a change in myToken
const postTokenBalances = txn.meta.postTokenBalances; const postTokenBalances = txn.meta.postTokenBalances;
const preTokenBalances = txn.meta.preTokenBalances; const preTokenBalances = txn.meta.preTokenBalances;
if(!postTokenBalances?.length && !preTokenBalances?.length) return; if(!postTokenBalances?.length && !preTokenBalances?.length) {
const postMyToken = postTokenBalances?.find(tb => tb.mint == myToken.toString() && irrelevantTxns++;
tb.owner == walletAddress.toString()); continue;
const preMyToken = preTokenBalances?.find(tb => tb.mint == myToken.toString() && }
tb.owner == walletAddress.toString()); const postMyToken = postTokenBalances?.find(tb => tb.mint == myToken.toString() &&
if(!postMyToken && !preMyToken) return; tb.owner == walletAddress.toString());
const preMyToken = preTokenBalances?.find(tb => tb.mint == myToken.toString() &&
tb.owner == walletAddress.toString());
if(!postMyToken && !preMyToken) {
irrelevantTxns++;
continue;
}
//calculate sol change //calculate sol change
if(!txn.meta.preBalances.length || !txn.meta.postBalances.length) return; if(!txn.meta.preBalances.length || !txn.meta.postBalances.length) {
let solChange = txn.meta.postBalances[0] - txn.meta.preBalances[0]; //in lamports irrelevantTxns++;
console.log("new transaction with sol change:", solChange); continue;
solNetProfit += solChange; }
})); let solChange = txn.meta.postBalances[0] - txn.meta.preBalances[0]; //in lamports
console.log("new transaction with sol change:", solChange);
solNetProfit += solChange;
irrelevantTxns = 0;
} }
return solNetProfit
await Promise.all(parseTasks);
console.log(solNetProfit);
} }
calculatePumpFunProfit(new PublicKey("8NqLtG4BnGyQJrfu91bWK215SJ1qadfhSdygeyX6VjsM"), new PublicKey("BXAtPnRuZjPKe9Gsv9Wsgh54yqWTVT6gR7w7tSYYThnW")); calculatePumpFunProfit(new PublicKey("4TstnQxFS89Vfn1xtxN4V4P9mzaFiGQME1fn8EFdXCSm"), new PublicKey("Bh1vHe8suqDnRWJFzgfrXRTFQ6XiXZCip4DQLKLokB5K"))
.then(console.log);