Optimized gas price

This commit is contained in:
Tornado Contrib 2024-10-10 20:46:47 +00:00
parent da329ad5dc
commit a27c118c7f
Signed by: tornadocontrib
GPG Key ID: 60B4DF1A076C64B1
10 changed files with 124 additions and 52 deletions

@ -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>&nbsp;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
/***/ }),

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
/**

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==