get erc1155 kinda working...needs rework

enumerate
lza_menace 2 years ago
parent 58bb735142
commit 0804381599

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

Loading…
Cancel
Save