Improve withdrawal confirmation tables

This commit is contained in:
Tornado Contrib 2024-10-11 22:47:02 +00:00
parent 0a305433ba
commit 4512834388
Signed by: tornadocontrib
GPG Key ID: 60B4DF1A076C64B1
2 changed files with 62 additions and 37 deletions

42
dist/cli.js vendored

@ -188082,18 +188082,39 @@ Connected with Tovarish Relayer ${(_a = tovarishClient.selectedRelayer) == null
({ fee, refund, proof, args } = yield getProof()); ({ fee, refund, proof, args } = yield getProof());
yield TornadoProxy.withdraw.estimateGas(instanceAddress, proof, ...args, withdrawOverrides); yield TornadoProxy.withdraw.estimateGas(instanceAddress, proof, ...args, withdrawOverrides);
} }
const txFee = gasPrice * gasLimit;
const txFeeInToken = !isEth ? tornadoFeeOracle.calculateTokenAmount(txFee, tokenPriceInWei, decimals) : BigInt(0);
const txFeeString = !isEth ? `( ${Number(formatUnits(txFeeInToken, decimals)).toFixed(5)} ${currency.toUpperCase()} worth )( ${(Number(formatUnits(txFeeInToken, decimals)) / Number(amount) * 100).toFixed(5)}% )` : `( ${(Number(formatUnits(txFee, decimals)) / Number(amount) * 100).toFixed(5)}% )`;
const withdrawTable = new (cli_table3_default())(); const withdrawTable = new (cli_table3_default())();
withdrawTable.push([{ colSpan: 2, content: "Withdrawal Info", hAlign: "center" }]); withdrawTable.push(
[{ colSpan: 2, content: "Withdrawal Info", hAlign: "center" }],
[
"Deposit Date",
`${depositDate.toLocaleDateString()} ${depositDate.toLocaleTimeString()} (${moment_default().unix(depositEvent.timestamp).fromNow()})`
],
["From", depositEvent.from],
["Deposit Transaction", depositEvent.transactionHash],
["Commitment", depositEvent.commitment],
["Gas Price", `${formatUnits(gasPrice, "gwei")} gwei`],
["Gas Limit", gasLimit],
[
"Transaction Fee",
`${Number(formatEther(txFee)).toFixed(5)} ${nativeCurrency.toUpperCase()} ${txFeeString}`
]
);
if (!walletWithdrawal) { if (!walletWithdrawal) {
const relayerFeePercent = Number((_c = relayerClient == null ? void 0 : relayerClient.selectedRelayer) == null ? void 0 : _c.tornadoServiceFee) || 0;
const relayerFee = BigInt(denomination) * BigInt(Math.floor(1e4 * relayerFeePercent)) / BigInt(1e4 * 100);
withdrawTable.push( withdrawTable.push(
[{ colSpan: 2, content: "Withdraw", hAlign: "center" }], ["Relayer", `${(_d = relayerClient == null ? void 0 : relayerClient.selectedRelayer) == null ? void 0 : _d.url}`],
["Withdrawal", `${amount} ${currency.toUpperCase()}`],
["Relayer", `${(_c = relayerClient == null ? void 0 : relayerClient.selectedRelayer) == null ? void 0 : _c.url}`],
[ [
"Relayer Fee", "Relayer Fee",
`${formatUnits(fee, decimals)} ${currency.toUpperCase()} (${(Number(fee) / Number(denomination) * 100).toFixed(5)}%)` `${formatUnits(relayerFee, decimals)} ${currency.toUpperCase()} ( ${relayerFeePercent}% )`
],
[
"Total Fee",
`${formatUnits(fee, decimals)} ${currency.toUpperCase()} ( ${(Number(fee) / Number(denomination) * 100).toFixed(5)}% )`
], ],
["Relayer Fee Percent", `${(_d = relayerClient == null ? void 0 : relayerClient.selectedRelayer) == null ? void 0 : _d.tornadoServiceFee}%`],
[ [
"Amount to receive", "Amount to receive",
`${Number(formatUnits(denomination - fee, decimals)).toFixed(5)} ${currency.toUpperCase()}` `${Number(formatUnits(denomination - fee, decimals)).toFixed(5)} ${currency.toUpperCase()}`
@ -188111,17 +188132,8 @@ Connected with Tovarish Relayer ${(_a = tovarishClient.selectedRelayer) == null
args args
}); });
} else { } else {
const txFee = gasPrice * gasLimit;
const txFeeInToken = !isEth ? tornadoFeeOracle.calculateTokenAmount(txFee, tokenPriceInWei, decimals) : BigInt(0);
const txFeeString = !isEth ? `(${Number(formatUnits(txFeeInToken, decimals)).toFixed(5)} ${currency.toUpperCase()} worth) (${(Number(formatUnits(txFeeInToken, decimals)) / Number(amount) * 100).toFixed(5)}%)` : `(${(Number(formatUnits(txFee, decimals)) / Number(amount) * 100).toFixed(5)}%)`;
withdrawTable.push( withdrawTable.push(
[{ colSpan: 2, content: "Withdraw", hAlign: "center" }],
["Withdrawal", `${amount} ${currency.toUpperCase()}`],
["Signer", `${signer == null ? void 0 : signer.address}`], ["Signer", `${signer == null ? void 0 : signer.address}`],
[
"Transaction Fee",
`${Number(formatEther(txFee)).toFixed(5)} ${nativeCurrency.toUpperCase()} ` + txFeeString
],
["Amount to receive", `${amount} ${currency.toUpperCase()}`], ["Amount to receive", `${amount} ${currency.toUpperCase()}`],
["To", recipient], ["To", recipient],
["Nullifier", nullifierHex] ["Nullifier", nullifierHex]

@ -1204,21 +1204,50 @@ export function tornadoProgram() {
await TornadoProxy.withdraw.estimateGas(instanceAddress, proof, ...args, withdrawOverrides); await TornadoProxy.withdraw.estimateGas(instanceAddress, proof, ...args, withdrawOverrides);
} }
const txFee = gasPrice * gasLimit;
const txFeeInToken = !isEth
? tornadoFeeOracle.calculateTokenAmount(txFee, tokenPriceInWei, decimals)
: BigInt(0);
const txFeeString = !isEth
? `( ${Number(formatUnits(txFeeInToken, decimals)).toFixed(5)} ${currency.toUpperCase()} worth )` +
`( ${((Number(formatUnits(txFeeInToken, decimals)) / Number(amount)) * 100).toFixed(5)}% )`
: `( ${((Number(formatUnits(txFee, decimals)) / Number(amount)) * 100).toFixed(5)}% )`;
const withdrawTable = new Table(); const withdrawTable = new Table();
withdrawTable.push([{ colSpan: 2, content: 'Withdrawal Info', hAlign: 'center' }]); withdrawTable.push(
[{ colSpan: 2, content: 'Withdrawal Info', hAlign: 'center' }],
[
'Deposit Date',
`${depositDate.toLocaleDateString()} ${depositDate.toLocaleTimeString()} (${moment.unix(depositEvent.timestamp).fromNow()})`,
],
['From', depositEvent.from],
['Deposit Transaction', depositEvent.transactionHash],
['Commitment', depositEvent.commitment],
['Gas Price', `${formatUnits(gasPrice, 'gwei')} gwei`],
['Gas Limit', gasLimit],
[
'Transaction Fee',
`${Number(formatEther(txFee)).toFixed(5)} ${nativeCurrency.toUpperCase()} ${txFeeString}`,
],
);
// withdraw using relayer // withdraw using relayer
if (!walletWithdrawal) { if (!walletWithdrawal) {
const relayerFeePercent = Number(relayerClient?.selectedRelayer?.tornadoServiceFee) || 0;
const relayerFee =
(BigInt(denomination) * BigInt(Math.floor(10000 * relayerFeePercent))) / BigInt(10000 * 100);
withdrawTable.push( withdrawTable.push(
[{ colSpan: 2, content: 'Withdraw', hAlign: 'center' }],
['Withdrawal', `${amount} ${currency.toUpperCase()}`],
['Relayer', `${relayerClient?.selectedRelayer?.url}`], ['Relayer', `${relayerClient?.selectedRelayer?.url}`],
[ [
'Relayer Fee', 'Relayer Fee',
`${formatUnits(fee, decimals)} ${currency.toUpperCase()} ` + `${formatUnits(relayerFee, decimals)} ${currency.toUpperCase()} ` + `( ${relayerFeePercent}% )`,
`(${((Number(fee) / Number(denomination)) * 100).toFixed(5)}%)`, ],
[
'Total Fee',
`${formatUnits(fee, decimals)} ${currency.toUpperCase()} ` +
`( ${((Number(fee) / Number(denomination)) * 100).toFixed(5)}% )`,
], ],
['Relayer Fee Percent', `${relayerClient?.selectedRelayer?.tornadoServiceFee}%`],
[ [
'Amount to receive', 'Amount to receive',
`${Number(formatUnits(denomination - fee, decimals)).toFixed(5)} ${currency.toUpperCase()}`, `${Number(formatUnits(denomination - fee, decimals)).toFixed(5)} ${currency.toUpperCase()}`,
@ -1241,24 +1270,8 @@ export function tornadoProgram() {
}); });
} else { } else {
// withdraw from wallet // withdraw from wallet
const txFee = gasPrice * gasLimit;
const txFeeInToken = !isEth
? tornadoFeeOracle.calculateTokenAmount(txFee, tokenPriceInWei, decimals)
: BigInt(0);
const txFeeString = !isEth
? `(${Number(formatUnits(txFeeInToken, decimals)).toFixed(5)} ${currency.toUpperCase()} worth) ` +
`(${((Number(formatUnits(txFeeInToken, decimals)) / Number(amount)) * 100).toFixed(5)}%)`
: `(${((Number(formatUnits(txFee, decimals)) / Number(amount)) * 100).toFixed(5)}%)`;
withdrawTable.push( withdrawTable.push(
[{ colSpan: 2, content: 'Withdraw', hAlign: 'center' }],
['Withdrawal', `${amount} ${currency.toUpperCase()}`],
['Signer', `${signer?.address}`], ['Signer', `${signer?.address}`],
[
'Transaction Fee',
`${Number(formatEther(txFee)).toFixed(5)} ${nativeCurrency.toUpperCase()} ` + txFeeString,
],
['Amount to receive', `${amount} ${currency.toUpperCase()}`], ['Amount to receive', `${amount} ${currency.toUpperCase()}`],
['To', recipient], ['To', recipient],
['Nullifier', nullifierHex], ['Nullifier', nullifierHex],