get erc1155 kinda working...needs rework

enumerate
lza_menace 2 years ago
parent 58bb735142
commit 0804381599

@ -46,6 +46,7 @@
const performCheck = async () => {
let tokenIds = [];
let recipients = [];
let isERC1155 = false;
checksPending = true;
errorMessage = '';
@ -54,6 +55,7 @@
evm.attachContract('nft', contractAddress, IERC721.abi);
} else {
evm.attachContract('nft', contractAddress, IERC1155.abi);
isERC1155 = true;
}
// Check the contract is valid
@ -99,7 +101,7 @@
try {
let balance = await $contracts.nft.methods.balanceOf($selectedAccount, tokenId).call();
if (Number(balance) < 1) { throw new Error(`You must own the token in order to send it (token ${tokenId}, balance ${balance})`); }
if (tokenIds.length < Number(balance)) { throw new Error(`Provided more tokens than balance(token ${tokenId}, balance ${balance})`); }
if (Number(tokenIds.length) > Number(balance)) { throw new Error(`Provided more tokens than balance (token ${tokenId}, balance ${balance})`); }
tokenIds.push(tokenId);
} catch(e) {
errorMessage = e;
@ -127,34 +129,42 @@
}
// Show gas consumption forecasts
await estimateGas(recipients, tokenIds);
await estimateGas(recipients, tokenIds, isERC1155);
checked = true;
}
async function estimateCBT(recipients, tokens) {
async function estimateCBT(recipients, tokens, isERC1155) {
si_gasLimit = 0;
let fee = await $contracts.sendit.methods.usageFee().call();
await $contracts.sendit.methods.contractBulkTransfer(contractAddress, tokens, recipients, false).estimateGas({from: $selectedAccount, value: fee * recipients.length}, function(err, gas){
console.log(recipients)
console.log(tokens)
await $contracts.sendit.methods.contractBulkTransfer(contractAddress, tokens, recipients, isERC1155).estimateGas({from: $selectedAccount, value: fee * recipients.length}, function(err, gas){
si_gasLimit += gas;
});
}
async function estimateSTF(recipients, tokens) {
async function estimateSTF(recipients, tokens, isERC1155) {
gasLimit = 0;
for (let i = 0; i < recipients.length; i++) {
await $contracts.nft.methods.safeTransferFrom($selectedAccount, recipients[i], tokens[i]).estimateGas({from: $selectedAccount}, function(err, gas){
gasLimit += gas;
});
if (isERC1155) {
await $contracts.nft.methods.safeTransferFrom($selectedAccount, recipients[i], tokens[i], 1, "").estimateGas({from: $selectedAccount}, function(err, gas){
gasLimit += gas;
});
} else {
await $contracts.nft.methods.safeTransferFrom($selectedAccount, recipients[i], tokens[i]).estimateGas({from: $selectedAccount}, function(err, gas){
gasLimit += gas;
});
}
}
}
async function estimateGas(recipients, tokens) {
async function estimateGas(recipients, tokens, isERC1155) {
if (recipients.length != tokens.length) { errorMessage = 'Invalid recipient/token IDs provided; please review'; return; }
await estimateCBT(recipients, tokens);
await estimateSTF(recipients, tokens);
await estimateCBT(recipients, tokens, isERC1155);
await estimateSTF(recipients, tokens, isERC1155);
let gasPrice = await $web3.eth.getGasPrice();
// let gasPrice = 50000000000;
// let gasPrice = 50000000000; // override for testing
let gasPriceGwei = await $web3.utils.fromWei(gasPrice.toString(), 'gwei');
let gasCostWei = gasPrice * gasLimit;
let gasCostEth = await $web3.utils.fromWei(gasCostWei.toString());
@ -174,7 +184,6 @@
} else {
gasCalculation.push(`That is a savings of ${diffEth} Ξ (saved ~${Math.round(diffPerc)}%)`);
}
gasCalculation = gasCalculation; // trigger recheck
}

Loading…
Cancel
Save