// 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记得按照最终分得的份额比例替换,如果这个值出错会被拒绝。