Optimized gas price
This commit is contained in:
parent
da329ad5dc
commit
a27c118c7f
80
index.html
80
index.html
@ -4,14 +4,14 @@
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Tornado Withdraw</title>
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/npm/tornado-cdn@1.0.1/torn2.png">
|
||||
<link rel="icon" type="image/png" href="https://cdn.jsdelivr.net/npm/tornado-cdn@1.0.2/torn2.png">
|
||||
|
||||
<meta name="description" content="Tornado Withdraw - Open Source Withdrawal UI for Tornado Cash">
|
||||
<meta property="og:title" content="Tornado Withdraw">
|
||||
<meta property="og:description" content="Tornado Withdraw - Open Source Withdrawal UI for Tornado Cash">
|
||||
<meta property="og:image" content="https://cdn.jsdelivr.net/npm/tornado-cdn@1.0.1/tw.png">
|
||||
<meta property="og:image" content="https://cdn.jsdelivr.net/npm/tornado-cdn@1.0.2/tw.png">
|
||||
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/tornado-cdn@1.0.1/bootstrap.css" integrity="sha384-fFdbKP4R+XqHQe6s9a3iwvJNSdnss6J7lrJrXGOUQiVdgax4hQruz6q/ay6OVpte" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/tornado-cdn@1.0.2/bootstrap.css" integrity="sha384-fFdbKP4R+XqHQe6s9a3iwvJNSdnss6J7lrJrXGOUQiVdgax4hQruz6q/ay6OVpte" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css" integrity="sha384-XGjxtQfXaH2tnPFa9x+ruJTuLE3Aa6LhHSWRr1XeTyhezb4abCG4ccI5AkVDxqC+" crossorigin="anonymous">
|
||||
|
||||
<script>
|
||||
@ -22,10 +22,10 @@
|
||||
</script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js" integrity="sha384-1H217gwSVyLSIfaLxHbE7dRb3v4mYCKbpQvzx0cegeju1MVsGrX5xXxAvs/HgeFs" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.min.js" integrity="sha384-0pUGZvbkm6XF6gxjEnlmuGrJXVbNuzT9qBBavbLwCsOGabYfZo0T0to5eqruptLy" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/ethers@6.13.2/dist/ethers.umd.min.js" integrity="sha384-gpR0Q6Hx/O+uevlbpbANbS0LWjbejPV1sqD/8w422l/fW8whGY0EPmKw3uG7ACYP" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/ethers@6.13.3/dist/ethers.umd.min.js" integrity="sha384-aGWwrmW61Z5P0j9UYxHo/vwjhTVRQQUxxFuncsB2zlkOkalM1F+xUzyjS+TzSosC" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/moment@2.30.1/moment.min.js" integrity="sha384-aQgnUSsW4D+imRFZ/dILN0wXp3MGO6RE3ccC/gZHr6BQzvhwzD+Bzon5C+kO3NHQ" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/tornado-cdn@1.0.1/tornado.umd.js" integrity="sha384-+3lhzvvDsVKE0kaNPlTbaY7VzjhrETPfBpvSeUEmYpuwZSJPMjk0z9JEU8FTF/tn" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/tornado-cdn@1.0.1/tornadoContracts.umd.js" integrity="sha384-iCyap5fZX6deuZ5dxb52Aa5j3/rJ/lqfIU9LGr8ZF0nKBmEqCkvJMdS79pPM2X1u" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/tornado-cdn@1.0.2/tornado.umd.js" integrity="sha384-k0RmzClHFq/UzbQ2znwl5U2CZFApY++7W95AWKBWhtzuI67E9Y4eY8GGeMxN2vVs" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/tornado-cdn@1.0.2/tornadoContracts.umd.js" integrity="sha384-hwV/M6NnpNd7tAtKFkr5c4tdsB2DXnd9TcoBfa+Yq+nsZ4vlBuEBBZmYUWHGrWTb" crossorigin="anonymous"></script>
|
||||
|
||||
<style>
|
||||
@media (min-width: 1100px) {
|
||||
@ -73,12 +73,12 @@
|
||||
|
||||
<script>
|
||||
/*global $, bootstrap, ethers, Tornado, TornadoContracts, moment*/
|
||||
const VERSION = '1.0.0';
|
||||
const VERSION = '1.0.1';
|
||||
|
||||
const DONATION_ADDRESS = '0x40c3d1656a26C9266f4A10fed0D87EFf79F54E64';
|
||||
const DEFAULT_GAS_LIMIT = 600_000;
|
||||
|
||||
const JSDELIVR = `https://cdn.jsdelivr.net/npm/tornado-cdn@1.0.1`;
|
||||
const JSDELIVR = 'https://cdn.jsdelivr.net/npm/tornado-cdn@1.0.2';
|
||||
|
||||
const hashes = {
|
||||
'static/bootstrap.css': 'sha384-fFdbKP4R+XqHQe6s9a3iwvJNSdnss6J7lrJrXGOUQiVdgax4hQruz6q/ay6OVpte',
|
||||
@ -86,14 +86,13 @@
|
||||
'static/bootstrap.scss': 'sha384-lKTG095qkOEok4Z+wqVgOMJs+nCLs1IEhOSiK1E8zi6aKy9e05b5n4o1KZZG5klW',
|
||||
'static/merkleTreeWorker.umd.js': 'sha384-F5/gcKEEQ841NRn1gbkDgXcrnt4lLnCam8UmmQWtaIaBn2R5XtaQOx2LQM7jWxXN',
|
||||
'static/merkleTreeWorker.umd.min.js': 'sha384-R1iZHWmgD+tXHbxE2kNtnd9EwtKDwo0CUcZHJ5w/7Sy7sCGkRNVAwqIe7fDyAJYw',
|
||||
'static/package.json': 'sha384-wPfgMO8ps3ecW6HCi27ySuYwrDZmsrlnzxO1QRBFMD+mpWCqpXIY3wr5risW5MHH',
|
||||
'static/torn.png': 'sha384-JHO0kpKduyooWMLR9QZ35GSU1/B0cpbQ6wLvVAg91KkVEFLQz9XBwBD9FCFJVL9R',
|
||||
'static/torn2.png': 'sha384-4wuwoWrwrSCoVr3jtQLAFoj09ukL6JJ0/MJ/5qCoN5oEv6CwPe5Xu2VP5wKiHsbS',
|
||||
'static/tornado.json.zip': 'sha384-XmKBnm5OYS4kGyw52NNSOmSQ4uvN7w/ZNQIgqfSSSSJ1MJw9dfCE5OLQHHDvqP0F',
|
||||
'static/tornado.umd.js': 'sha384-+3lhzvvDsVKE0kaNPlTbaY7VzjhrETPfBpvSeUEmYpuwZSJPMjk0z9JEU8FTF/tn',
|
||||
'static/tornado.umd.min.js': 'sha384-L1dK994fW26N0QZ7pVqTqTgVvNfJfIJFt+G9qsQvQQPkVoOOvMv+oqRp1tW+N4FX',
|
||||
'static/tornadoContracts.umd.js': 'sha384-iCyap5fZX6deuZ5dxb52Aa5j3/rJ/lqfIU9LGr8ZF0nKBmEqCkvJMdS79pPM2X1u',
|
||||
'static/tornadoContracts.umd.min.js': 'sha384-OhaFa/s/nR6yUbwP+grwKnX0wBZu+SaBV7eSY7QYM1r5GGLQhL604xCKp4CtKDXv',
|
||||
'static/tornado.umd.js': 'sha384-k0RmzClHFq/UzbQ2znwl5U2CZFApY++7W95AWKBWhtzuI67E9Y4eY8GGeMxN2vVs',
|
||||
'static/tornado.umd.min.js': 'sha384-7oXNmUbmxq8kkacn0yBMx81QSzm1JjtyLsr9m6goJA7VHWxAKNGXlknM10ss6exr',
|
||||
'static/tornadoContracts.umd.js': 'sha384-hwV/M6NnpNd7tAtKFkr5c4tdsB2DXnd9TcoBfa+Yq+nsZ4vlBuEBBZmYUWHGrWTb',
|
||||
'static/tornadoContracts.umd.min.js': 'sha384-qbPFY/XKAHPmiw8XiOw9A0LdTsasl/Fyq4G+utBbeBzry6keZgVbSE5nlmV3a1qb',
|
||||
'static/tornadoProvingKey.bin.zip': 'sha384-O+ICo/CmIvnFmeaSfvRc6CUlde24XWL2Bp2hgKRPZTO1LLlVW0GS8gHIzMtcKRa2',
|
||||
'static/tw.png': 'sha384-DZz1nbDiTbg7RYMRjqvM6sD549Hzr83KzWXIH9x5S+9vEjm67MGbc9pjZoaVOWvT',
|
||||
'static/events/deposits_100_xdai_100.json.zip': 'sha384-saavn+sR0uZd9suSw3HfnhRAsTX5VP5fUH9nI5/KHmIvDRtEBrjyPlmUAxOD/oft',
|
||||
@ -227,7 +226,7 @@
|
||||
<header class="py-2 mt-2 mb-3 border-bottom">
|
||||
<nav class="navbar navbar-expand-md">
|
||||
<a href="#" class="navbar-brand me-md-auto">
|
||||
<img src="https://cdn.jsdelivr.net/npm/tornado-cdn@1.0.1/torn2.png" class="me-1 logo">
|
||||
<img src="https://cdn.jsdelivr.net/npm/tornado-cdn@1.0.2/torn2.png" class="me-1 logo">
|
||||
<span class="fs-4 align-middle">Tornado Withdraw</span>
|
||||
</a>
|
||||
|
||||
@ -237,7 +236,7 @@
|
||||
<a href="#" class="nav-link active">Withdraw</a>
|
||||
</li>
|
||||
<li class="nav-item d-none d-md-block">
|
||||
<a href="#mnemonic" target="_blank" rel="noreferrer nofollow" class="nav-link">FAQ</a>
|
||||
<a href="https://git.tornado.ws/tornadocontrib/tovarish-relayer" target="_blank" rel="noreferrer nofollow" class="nav-link">FAQ</a>
|
||||
</li>
|
||||
<li class="nav-item d-none d-md-block">
|
||||
<a onclick="settings()" class="nav-link"><i class="bi bi-gear-fill"></i></a>
|
||||
@ -259,10 +258,10 @@
|
||||
<ul class="navbar-nav me-auto mt-2 mb-2 mb-lg-0">
|
||||
<li class="nav-item d-md-none border-top mt-2 mb-2"></li>
|
||||
<li class="nav-item d-md-none">
|
||||
<a id="nav-mobile-main" href="#" class="nav-link active">Withdraw</a>
|
||||
<a href="#" class="nav-link active">Withdraw</a>
|
||||
</li>
|
||||
<li class="nav-item d-md-none">
|
||||
<a id="nav-mobile-mnemonic" href="#" target="_blank" rel="noreferrer nofollow" class="nav-link">FAQ</a>
|
||||
<a href="https://git.tornado.ws/tornadocontrib/tovarish-relayer" target="_blank" rel="noreferrer nofollow" class="nav-link">FAQ</a>
|
||||
</li>
|
||||
<li class="nav-item d-md-none">
|
||||
<a onclick="settings()" class="nav-link"><i class="bi bi-gear-fill"></i> Settings</a>
|
||||
@ -392,9 +391,9 @@
|
||||
</div>
|
||||
<div id="status-screen" class="d-none">
|
||||
<div id="send-status" class="mt-1"></div>
|
||||
<img id="send-loading" src="https://cdn.jsdelivr.net/npm/tornado-cdn@1.0.1/torn2.png" class="loader status d-none">
|
||||
<img id="send-error" src="https://cdn.jsdelivr.net/npm/tornado-cdn@1.0.1/failed.png" class="status d-none">
|
||||
<img id="send-success" src="https://cdn.jsdelivr.net/npm/tornado-cdn@1.0.1/success.png" class="status d-none">
|
||||
<img id="send-loading" src="https://cdn.jsdelivr.net/npm/tornado-cdn@1.0.2/torn2.png" class="loader status d-none">
|
||||
<img id="send-error" src="https://cdn.jsdelivr.net/npm/tornado-cdn@1.0.2/failed.png" class="status d-none">
|
||||
<img id="send-success" src="https://cdn.jsdelivr.net/npm/tornado-cdn@1.0.2/success.png" class="status d-none">
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
@ -519,8 +518,9 @@
|
||||
|
||||
function showStatus(title, context, status) {
|
||||
$('#send-title').text(title);
|
||||
|
||||
$('#send-status').text(context);
|
||||
|
||||
$('#send-status').empty();
|
||||
$('#send-status').append(context);
|
||||
|
||||
hide('#confirm-screen');
|
||||
hide('#send-button');
|
||||
@ -862,7 +862,7 @@
|
||||
});
|
||||
|
||||
if (!resp.ok) {
|
||||
const errMsg = `Failed to fetch worker from ${remote_url}: ${await resp.text()}`
|
||||
const errMsg = `Failed to fetch worker from ${remote_url}: ${await resp.text()}`;
|
||||
throw new Error(errMsg);
|
||||
}
|
||||
|
||||
@ -883,6 +883,11 @@
|
||||
* https://stackoverflow.com/questions/21913673/execute-web-worker-from-different-origin
|
||||
*/
|
||||
async function getWorkerUrl() {
|
||||
// Do not use WebWorkers on Firefox and Tor Browser because the speed is terrible
|
||||
if (navigator.userAgent.toLowerCase().includes('firefox')) {
|
||||
return;
|
||||
}
|
||||
|
||||
const { origin } = getStaticRoot();
|
||||
|
||||
const remote_url = await checkWorker();
|
||||
@ -1246,6 +1251,7 @@
|
||||
);
|
||||
|
||||
const tornadoFeeOracle = new Tornado.TornadoFeeOracle(
|
||||
provider,
|
||||
ovmGasPriceOracleContract
|
||||
? TornadoContracts.OvmGasPriceOracle__factory.connect(ovmGasPriceOracleContract, provider)
|
||||
: undefined,
|
||||
@ -1261,17 +1267,15 @@
|
||||
|
||||
showStatus('Fetching Keys', 'Fetching Circuits and Proving Keys');
|
||||
|
||||
const [circuit, provingKey, l1Fee, tokenPriceInWei, feeData] = await Promise.all([
|
||||
const [circuit, provingKey, netGasPrice, l1Fee, tokenPriceInWei] = await Promise.all([
|
||||
getCircuit(),
|
||||
getProvingKey(),
|
||||
tornadoFeeOracle.gasPrice(),
|
||||
tornadoFeeOracle.fetchL1OptimismFee(),
|
||||
!isEth ? tokenPriceOracle.fetchPrices([{ tokenAddress, decimals }]).then(p => p[0]) : BigInt(0),
|
||||
provider.getFeeData(),
|
||||
]);
|
||||
|
||||
let gasPrice = feeData.maxFeePerGas
|
||||
? feeData.maxFeePerGas + (feeData.maxPriorityFeePerGas || BigInt(0))
|
||||
: feeData.gasPrice;
|
||||
let gasPrice = netGasPrice;
|
||||
|
||||
if (!isWallet && !relayerClient?.tovarish && netId === Tornado.NetId.BSC) {
|
||||
gasPrice = ethers.parseUnits('3.3', 'gwei');
|
||||
@ -1357,10 +1361,14 @@
|
||||
|
||||
gasLimit = await TornadoProxy.withdraw.estimateGas(instanceAddress, proof, ...args, withdrawOverrides);
|
||||
|
||||
if (gasLimit > defaultGasLimit) {
|
||||
if (fee) {
|
||||
// Recalculate fees and snarkProof based on gasLimit
|
||||
showStatus('Creating Proof', 'Calculating Optimal Withdrawal Fees and Proof');
|
||||
|
||||
({ fee, refund, proof, args } = await getProof());
|
||||
|
||||
gasLimit = await TornadoProxy.withdraw.estimateGas(instanceAddress, proof, ...args, withdrawOverrides);
|
||||
// Verify if our recalculated proof can be withdrawn
|
||||
await TornadoProxy.withdraw.estimateGas(instanceAddress, proof, ...args, withdrawOverrides);
|
||||
}
|
||||
|
||||
let withdrawTable = '';
|
||||
@ -1458,6 +1466,10 @@
|
||||
<td>Gas Price</td>
|
||||
<td>${ethers.formatUnits(gasPrice, 'gwei')} gwei</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Gas Limit</td>
|
||||
<td>${gasLimit}</td>
|
||||
</tr>
|
||||
${withdrawTable}
|
||||
</tbody>
|
||||
</table>
|
||||
@ -1501,19 +1513,19 @@
|
||||
if (status === 'SENT') {
|
||||
showStatus(
|
||||
'Job sent',
|
||||
`Relayer has sent withdrawal job ${id} ${explorerUrl}/tx/${txHash}`
|
||||
`Relayer has sent withdrawal job ${id} <a href="${explorerUrl}/tx/${txHash}" target="_blank" rel="noreferrer nofollow">${txHash}</a>`
|
||||
);
|
||||
|
||||
} else if (status === 'MINED') {
|
||||
showStatus(
|
||||
'Job mined',
|
||||
`Withdrawal tx ${explorerUrl}/tx/${txHash} has been mined (confirmations: ${confirmations})`
|
||||
`Withdrawal tx <a href="${explorerUrl}/tx/${txHash}" target="_blank" rel="noreferrer nofollow">${txHash}</a> has been mined (confirmations: ${confirmations})`
|
||||
);
|
||||
|
||||
} else if (status === 'CONFIRMED') {
|
||||
showStatus(
|
||||
'Job completed',
|
||||
`Withdrawal tx ${explorerUrl}/tx/${txHash} has been confirmed (confirmations: ${confirmations})`,
|
||||
`Withdrawal tx <a href="${explorerUrl}/tx/${txHash}" target="_blank" rel="noreferrer nofollow">${txHash}</a> has been confirmed (confirmations: ${confirmations})`,
|
||||
'success',
|
||||
);
|
||||
|
||||
@ -1529,7 +1541,7 @@
|
||||
|
||||
showStatus(
|
||||
'TX Sent',
|
||||
`Sent withdrawal tx ${explorerUrl}/tx/${hash}`,
|
||||
`Sent withdrawal tx <a href="${explorerUrl}/tx/${hash}" target="_blank" rel="noreferrer nofollow">${hash}</a>`,
|
||||
'success'
|
||||
);
|
||||
}
|
||||
|
@ -11,7 +11,7 @@
|
||||
"sass:watch": "yarn sass --watch"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tornado/core": "git+https://git.tornado.ws/tornadocontrib/tornado-core.git#0ebd4d175f4a7f8f0f339091cbec4dc4a7e8ad3a",
|
||||
"@tornado/core": "git+https://git.tornado.ws/tornadocontrib/tornado-core.git#4f0aaea790ff26bb8902bbf60f101ec240704685",
|
||||
"@types/node": "^22.7.4",
|
||||
"bootstrap": "^5.3.3",
|
||||
"eslint": "8.57.0",
|
||||
|
@ -42,7 +42,7 @@ async function update() {
|
||||
for (const filePath of staticFiles) {
|
||||
const file = path.join('static', filePath).replaceAll(path.sep, path.posix.sep);
|
||||
|
||||
if ((await fs.stat(file)).isDirectory() || file.includes('hashes.json')) {
|
||||
if ((await fs.stat(file)).isDirectory() || file.includes('hashes.json') || file.includes('package.json')) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -5,15 +5,14 @@
|
||||
"static/failed.png": "sha384-4RgbpGGgorMHTDOhCbsLMD8mkTAxw1UBgtClItza78QPG6vtHXNC2BMq2C25ZUBz",
|
||||
"static/merkleTreeWorker.umd.js": "sha384-F5/gcKEEQ841NRn1gbkDgXcrnt4lLnCam8UmmQWtaIaBn2R5XtaQOx2LQM7jWxXN",
|
||||
"static/merkleTreeWorker.umd.min.js": "sha384-R1iZHWmgD+tXHbxE2kNtnd9EwtKDwo0CUcZHJ5w/7Sy7sCGkRNVAwqIe7fDyAJYw",
|
||||
"static/package.json": "sha384-wPfgMO8ps3ecW6HCi27ySuYwrDZmsrlnzxO1QRBFMD+mpWCqpXIY3wr5risW5MHH",
|
||||
"static/success.png": "sha384-mydX80QpF0gj6AWSPZh9L7ETKOMdQhhOjKylm8LTFLIyhuwTJyMxT41cQKbIpIC3",
|
||||
"static/torn.png": "sha384-JHO0kpKduyooWMLR9QZ35GSU1/B0cpbQ6wLvVAg91KkVEFLQz9XBwBD9FCFJVL9R",
|
||||
"static/torn2.png": "sha384-4wuwoWrwrSCoVr3jtQLAFoj09ukL6JJ0/MJ/5qCoN5oEv6CwPe5Xu2VP5wKiHsbS",
|
||||
"static/tornado.json.zip": "sha384-XmKBnm5OYS4kGyw52NNSOmSQ4uvN7w/ZNQIgqfSSSSJ1MJw9dfCE5OLQHHDvqP0F",
|
||||
"static/tornado.umd.js": "sha384-+3lhzvvDsVKE0kaNPlTbaY7VzjhrETPfBpvSeUEmYpuwZSJPMjk0z9JEU8FTF/tn",
|
||||
"static/tornado.umd.min.js": "sha384-L1dK994fW26N0QZ7pVqTqTgVvNfJfIJFt+G9qsQvQQPkVoOOvMv+oqRp1tW+N4FX",
|
||||
"static/tornadoContracts.umd.js": "sha384-iCyap5fZX6deuZ5dxb52Aa5j3/rJ/lqfIU9LGr8ZF0nKBmEqCkvJMdS79pPM2X1u",
|
||||
"static/tornadoContracts.umd.min.js": "sha384-OhaFa/s/nR6yUbwP+grwKnX0wBZu+SaBV7eSY7QYM1r5GGLQhL604xCKp4CtKDXv",
|
||||
"static/tornado.umd.js": "sha384-k0RmzClHFq/UzbQ2znwl5U2CZFApY++7W95AWKBWhtzuI67E9Y4eY8GGeMxN2vVs",
|
||||
"static/tornado.umd.min.js": "sha384-7oXNmUbmxq8kkacn0yBMx81QSzm1JjtyLsr9m6goJA7VHWxAKNGXlknM10ss6exr",
|
||||
"static/tornadoContracts.umd.js": "sha384-hwV/M6NnpNd7tAtKFkr5c4tdsB2DXnd9TcoBfa+Yq+nsZ4vlBuEBBZmYUWHGrWTb",
|
||||
"static/tornadoContracts.umd.min.js": "sha384-qbPFY/XKAHPmiw8XiOw9A0LdTsasl/Fyq4G+utBbeBzry6keZgVbSE5nlmV3a1qb",
|
||||
"static/tornadoProvingKey.bin.zip": "sha384-O+ICo/CmIvnFmeaSfvRc6CUlde24XWL2Bp2hgKRPZTO1LLlVW0GS8gHIzMtcKRa2",
|
||||
"static/tw.png": "sha384-DZz1nbDiTbg7RYMRjqvM6sD549Hzr83KzWXIH9x5S+9vEjm67MGbc9pjZoaVOWvT",
|
||||
"static/events/deposits_100_xdai_100.json.zip": "sha384-saavn+sR0uZd9suSw3HfnhRAsTX5VP5fUH9nI5/KHmIvDRtEBrjyPlmUAxOD/oft",
|
||||
|
@ -1,4 +1,4 @@
|
||||
{
|
||||
"name": "tornado-cdn",
|
||||
"version": "1.0.1"
|
||||
"version": "1.0.2"
|
||||
}
|
@ -60130,6 +60130,26 @@ __webpack_require__.r(__webpack_exports__);
|
||||
/* harmony import */ var ethers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(99770);
|
||||
/* harmony import */ var ethers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(79453);
|
||||
|
||||
var __async = (__this, __arguments, generator) => {
|
||||
return new Promise((resolve, reject) => {
|
||||
var fulfilled = (value) => {
|
||||
try {
|
||||
step(generator.next(value));
|
||||
} catch (e) {
|
||||
reject(e);
|
||||
}
|
||||
};
|
||||
var rejected = (value) => {
|
||||
try {
|
||||
step(generator.throw(value));
|
||||
} catch (e) {
|
||||
reject(e);
|
||||
}
|
||||
};
|
||||
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
||||
step((generator = generator.apply(__this, __arguments)).next());
|
||||
});
|
||||
};
|
||||
|
||||
const DUMMY_ADDRESS = "0x1111111111111111111111111111111111111111";
|
||||
const DUMMY_NONCE = 1024;
|
||||
@ -60139,11 +60159,41 @@ function convertETHToTokenAmount(amountInWei, tokenPriceInWei, tokenDecimals = 1
|
||||
return BigInt(amountInWei) * tokenDecimalsMultiplier / BigInt(tokenPriceInWei);
|
||||
}
|
||||
class TornadoFeeOracle {
|
||||
constructor(ovmGasPriceOracle) {
|
||||
constructor(provider, ovmGasPriceOracle) {
|
||||
this.provider = provider;
|
||||
if (ovmGasPriceOracle) {
|
||||
this.ovmGasPriceOracle = ovmGasPriceOracle;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Calculates Gas Price
|
||||
* We apply 50% premium of EIP-1559 network fees instead of 100% from ethers.js
|
||||
* (This should cover up to 4 full blocks which is equivalent of minute)
|
||||
* (A single block can bump 12.5% of fees, see the methodology https://hackmd.io/@tvanepps/1559-wallets)
|
||||
* (Still it is recommended to use 100% premium for sending transactions to prevent stucking it)
|
||||
*/
|
||||
gasPrice() {
|
||||
return __async(this, null, function* () {
|
||||
const [block, getGasPrice, getPriorityFee] = yield Promise.all([
|
||||
this.provider.getBlock("latest"),
|
||||
(() => __async(this, null, function* () {
|
||||
try {
|
||||
return BigInt(yield this.provider.send("eth_gasPrice", []));
|
||||
} catch (e) {
|
||||
return (0,ethers__WEBPACK_IMPORTED_MODULE_0__/* .parseUnits */ .XS)("1", "gwei");
|
||||
}
|
||||
}))(),
|
||||
(() => __async(this, null, function* () {
|
||||
try {
|
||||
return BigInt(yield this.provider.send("eth_maxPriorityFeePerGas", []));
|
||||
} catch (e) {
|
||||
return BigInt(0);
|
||||
}
|
||||
}))()
|
||||
]);
|
||||
return (block == null ? void 0 : block.baseFeePerGas) ? block.baseFeePerGas * BigInt(15) / BigInt(10) + getPriorityFee : getGasPrice;
|
||||
});
|
||||
}
|
||||
/**
|
||||
* Calculate L1 fee for op-stack chains
|
||||
*
|
||||
@ -66563,7 +66613,18 @@ class AbstractProvider {
|
||||
}
|
||||
this.emit("debug", { action: "sendCcipReadFetchRequest", request, index: i, urls });
|
||||
let errorMessage = "unknown error";
|
||||
const resp = await request.send();
|
||||
// Fetch the resource...
|
||||
let resp;
|
||||
try {
|
||||
resp = await request.send();
|
||||
}
|
||||
catch (error) {
|
||||
// ...low-level fetch error (missing host, bad SSL, etc.),
|
||||
// so try next URL
|
||||
errorMessages.push(error.message);
|
||||
this.emit("debug", { action: "receiveCcipReadFetchError", request, result: { error } });
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
const result = resp.bodyJson;
|
||||
if (result.data) {
|
||||
@ -161490,7 +161551,7 @@ const poseidonContract=(/* unused pure expression or super */ null && (_poseidon
|
||||
/**
|
||||
* The current version of Ethers.
|
||||
*/
|
||||
const version = "6.13.2";
|
||||
const version = "6.13.3";
|
||||
//# sourceMappingURL=_version.js.map
|
||||
|
||||
/***/ }),
|
||||
|
2
static/tornado.umd.min.js
vendored
2
static/tornado.umd.min.js
vendored
File diff suppressed because one or more lines are too long
@ -641,7 +641,7 @@ const shake256 = /* @__PURE__ */ (/* unused pure expression or super */ null &&
|
||||
/**
|
||||
* The current version of Ethers.
|
||||
*/
|
||||
const version = "6.13.2";
|
||||
const version = "6.13.3";
|
||||
//# sourceMappingURL=_version.js.map
|
||||
;// ./node_modules/ethers/lib.esm/utils/properties.js
|
||||
/**
|
||||
|
2
static/tornadoContracts.umd.min.js
vendored
2
static/tornadoContracts.umd.min.js
vendored
File diff suppressed because one or more lines are too long
@ -611,9 +611,9 @@
|
||||
"@openzeppelin/contracts-v3" "npm:@openzeppelin/contracts@3.2.0-rc.0"
|
||||
ethers "^6.4.0"
|
||||
|
||||
"@tornado/core@git+https://git.tornado.ws/tornadocontrib/tornado-core.git#0ebd4d175f4a7f8f0f339091cbec4dc4a7e8ad3a":
|
||||
"@tornado/core@git+https://git.tornado.ws/tornadocontrib/tornado-core.git#4f0aaea790ff26bb8902bbf60f101ec240704685":
|
||||
version "1.0.19"
|
||||
resolved "git+https://git.tornado.ws/tornadocontrib/tornado-core.git#0ebd4d175f4a7f8f0f339091cbec4dc4a7e8ad3a"
|
||||
resolved "git+https://git.tornado.ws/tornadocontrib/tornado-core.git#4f0aaea790ff26bb8902bbf60f101ec240704685"
|
||||
dependencies:
|
||||
"@metamask/eth-sig-util" "^7.0.3"
|
||||
"@tornado/contracts" "^1.0.1"
|
||||
@ -624,7 +624,7 @@
|
||||
bn.js "^5.2.1"
|
||||
circomlibjs "0.1.7"
|
||||
cross-fetch "^4.0.0"
|
||||
ethers "^6.13.2"
|
||||
ethers "^6.13.3"
|
||||
ffjavascript "0.2.48"
|
||||
fflate "^0.8.2"
|
||||
idb "^8.0.0"
|
||||
@ -1402,7 +1402,7 @@ ethers@^5.5.1:
|
||||
"@ethersproject/web" "5.7.1"
|
||||
"@ethersproject/wordlists" "5.7.0"
|
||||
|
||||
ethers@^6.13.2, ethers@^6.4.0:
|
||||
ethers@^6.13.3, ethers@^6.4.0:
|
||||
version "6.13.3"
|
||||
resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.13.3.tgz#b87afdadb91cc8df5f56b9c59c96e5b206f4a600"
|
||||
integrity sha512-/DzbZOLVtoO4fKvvQwpEucHAQgIwBGWuRvBdwE/lMXgXvvHHTSkn7XqAQ2b+gjJzZDJjWA9OD05bVceVOsBHbg==
|
||||
|
Loading…
Reference in New Issue
Block a user