const web3 = new Web3(
new Web3.providers.HttpProvider("https://bsc-dataseed2.ninicoin.io")
);
const CKE_ABI = require("./abis/cke_contract.json");
const IFO_ABI = require("./abis/ifo_contract.json");
const CKE_ADDRESS = "0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82";
const IFO_ADDRESS = "0x63914805A0864e9557eA3A5cC86cc1BA054ec64b";
const ADDRESS_LIST = require("./address/index.json");
const cke_contract = new web3.eth.Contract(CKE_ABI, CKE_ADDRESS);
const ifo_contract = new web3.eth.Contract(IFO_ABI, IFO_ADDRESS);
const VOLUME = '8.143';
const GAS_PRICE = '7';
async function allowance(userAddress, privKey, index) {
try {
const approve_volume = await cke_contract.methods
.allowance(userAddress, IFO_ADDRESS)
.call();
const volume = web3.utils.fromWei(approve_volume);
console.log(index + 1 + "号钱包授权额度为: " + volume);
if (volume < VOLUME * 1) {
try {
approve(userAddress, privKey, index)
} catch (error) {
console.log('Approve Error,Reload...')
approve(userAddress, privKey, index)
}
} else {
console.log(index + 1 + "号钱包授权额度为: " + 'Approved')
try {
depositPool(userAddress, privKey, index)
} catch (error) {
console.log('Deposit Error,Reload...')
depositPool(userAddress, privKey, index)
}
}
} catch (error) {
allowance(userAddress, privKey, index);
}
}
async function approve(userAddress, privKey, index) {
const nonce = await web3.eth.getTransactionCount(userAddress);
const gas = await cke_contract.methods
.approve(IFO_ADDRESS, web3.utils.toWei(VOLUME))
.estimateGas({ from: userAddress });
const data = await cke_contract.methods
.approve(IFO_ADDRESS, web3.utils.toWei(VOLUME))
.encodeABI();
const tx = {
nonce: nonce,
from: userAddress,
to: CKE_ADDRESS,
gasLimit: web3.utils.toHex(parseInt(gas * 6)),
gasPrice: web3.utils.toHex(web3.utils.toWei(GAS_PRICE, "gwei")),
data: data,
};
signed_tx = await web3.eth.accounts.signTransaction(tx, privKey);
const transaction = await web3.eth.sendSignedTransaction(
signed_tx.rawTransaction
);
console.log(index + 1 + "号钱包授权TX为: " + transaction.transactionHash)
}
async function depositPool(userAddress, privKey, index) {
try {
const nonce = await web3.eth.getTransactionCount(userAddress);
const gas = await ifo_contract.methods
.depositPool(web3.utils.toWei(VOLUME), '0')
.estimateGas({ from: userAddress });
const data = await ifo_contract.methods
.depositPool(web3.utils.toWei(VOLUME), '0')
.encodeABI();
const tx = {
nonce: nonce,
from: userAddress,
to: IFO_ADDRESS,
gasLimit: web3.utils.toHex(parseInt(gas * 1.5)),
gasPrice: web3.utils.toHex(web3.utils.toWei(GAS_PRICE, "gwei")),
data: data,
};
signed_tx = await web3.eth.accounts.signTransaction(tx, privKey);
const transaction = await web3.eth.sendSignedTransaction(
signed_tx.rawTransaction
);
console.log(index + 1 + "号钱包质押TX为: " + transaction.transactionHash)
} catch (error) {
console.log(error)
deposit()
}
}
function approve() {
ADDRESS_LIST.forEach(async (item, index) => {
const { address, privKey, } = item;
await allowance(address, privKey, index);
});
}
function deposit() {
ADDRESS_LIST.forEach(async (item, index) => {
const { address, privKey, } = item;
await depositPool(address, privKey, index);
});
}
deposit()