diff --git a/web/cashtab/src/components/Airdrop/Airdrop.js b/web/cashtab/src/components/Airdrop/Airdrop.js --- a/web/cashtab/src/components/Airdrop/Airdrop.js +++ b/web/cashtab/src/components/Airdrop/Airdrop.js @@ -122,6 +122,7 @@ totalAirdrop: '', }); + const [equalDistributionRatio, setEqualDistributionRatio] = useState(false); const [tokenIdIsValid, setTokenIdIsValid] = useState(null); const [totalAirdropIsValid, setTotalAirdropIsValid] = useState(null); const [airdropRecipients, setAirdropRecipients] = useState(''); @@ -311,7 +312,6 @@ if (ignoreRecipientsBelowDust) { // minimum airdrop threshold const minEligibleAirdrop = fromSatoshisToXec(currency.dustSats); - // first calculation on expected pro rata airdrops let initialTotalTokenAmongstRecipients = new BigNumber(0); let initialTotalHolders = new BigNumber(airdropList.size); // amount of addresses that hold this eToken setEtokenHolders(initialTotalHolders); @@ -366,22 +366,37 @@ )), ); - let circToAirdropRatio = new BigNumber(formData.totalAirdrop).div( - totalTokenAmongstRecipients, - ); - + let circToAirdropRatio = new BigNumber(0); let resultString = ''; - airdropList.forEach( - (element, index) => - (resultString += - convertEtokenToEcashAddr(index) + - ',' + - new BigNumber(element) - .multipliedBy(circToAirdropRatio) - .decimalPlaces(currency.cashDecimals) + - '\n'), - ); + // generate the resulting recipients list based on distribution ratio + if (equalDistributionRatio) { + const equalDividend = new BigNumber( + formData.totalAirdrop, + ).dividedBy(new BigNumber(totalHolders)); + airdropList.forEach( + (element, index) => + (resultString += + convertEtokenToEcashAddr(index) + + ',' + + equalDividend.decimalPlaces(currency.cashDecimals) + + '\n'), + ); + } else { + circToAirdropRatio = new BigNumber(formData.totalAirdrop).div( + totalTokenAmongstRecipients, + ); + airdropList.forEach( + (element, index) => + (resultString += + convertEtokenToEcashAddr(index) + + ',' + + new BigNumber(element) + .multipliedBy(circToAirdropRatio) + .decimalPlaces(currency.cashDecimals) + + '\n'), + ); + } resultString = resultString.substring(0, resultString.length - 1); // remove the final newline @@ -595,6 +610,21 @@ } /> + + + { + setEqualDistributionRatio( + prev => !prev, + ); + }} + /> + +