pancakeswap的IFO脚本抢购(多号)
// testnet // const rpcUrl = "https://data-seed-prebsc-1-s1.binance.org:8545" // mainnet const rpcUrl = "https://bsc-dataseed1.ninicoin.io" const Tx = require(ethereumjs-tx); const Web3 = require(web3) const web3 = new Web3(rpcUrl) // Contract const abi = require(../abi/cakeIFOInitializable.json) const contractAddress = "0xFDFf29dD0b4DD49Bf5E991A30b8593eaA34B4580" const contract = new web3.eth.Contract( abi, contractAddress ) // account const pvt = require(../pvt.json); const count = pvt.length; // ifo info const amount = new web3.utils.toBN(5.42888 * (10 ** 18)); const pid = 0; for (let i = 0; i < count; ++ i) { const pvtLine = pvt[i].split($); const account = pvtLine[0]; const accountPvt = pvtLine[1]; const usePvt = Buffer.from(accountPvt, hex); const data = contract.methods.depositPool(amount, pid).encodeABI(); contract.methods.depositPool(amount, pid).estimateGas({ from: account, }) .then(gasLimit => { web3.eth.getTransactionCount(account, (err, txCount) => { // create transaction object const txObject = { nonce: web3.utils.toHex(txCount), gasLimit: web3.utils.toHex(gasLimit), gasPrice: web3.utils.toHex(web3.utils.toWei(16, gwei)), to: contractAddress, data: data } // sign the transaction const tx = new Tx(txObject); tx.sign(usePvt); const serializedTx = tx.serialize() const raw = 0x + serializedTx.toString(hex) // console.log(gasLimit) // Broodcast the transaction web3.eth.sendSignedTransaction(raw, (err, txHash) => { if (err) { console.log(`[Failured] ${ account}`); } else { console.log(`[ACCOUNT] ${ account}`) console.log(`[OK] SCAN URL: https://bscscan.com/tx/${ txHash}`) } }) }) }) }
用pvt.json文件保存多个地址/私钥,实现多账号同时抢购,其中amount记得按照最终分得的份额比例替换,如果这个值出错会被拒绝。