Different oracles api for Tornado-specific purposes
Go to file
2023-08-20 11:49:12 -07:00
abis Initial commit 2023-08-17 14:39:57 -07:00
src Add getter to TokenPriceOracle for default token prices & bump version to 0.2.3 2023-08-20 11:49:12 -07:00
.gitignore Initial commit 2023-08-17 14:39:57 -07:00
.npmrc Initial commit 2023-08-17 14:39:57 -07:00
.nvmrc Initial commit 2023-08-17 14:39:57 -07:00
.prettierignore Initial commit 2023-08-17 14:39:57 -07:00
.prettierrc Initial commit 2023-08-17 14:39:57 -07:00
LICENSE Initial commit 2023-08-17 14:39:57 -07:00
package.json Add getter to TokenPriceOracle for default token prices & bump version to 0.2.3 2023-08-20 11:49:12 -07:00
README.md Add readme with examples 2023-08-18 23:01:33 -07:00
tsconfig.esm.json Initial commit 2023-08-17 14:39:57 -07:00
tsconfig.json Initial commit 2023-08-17 14:39:57 -07:00
yarn.lock Initial commit 2023-08-17 14:39:57 -07:00

Tornado oracles

This is a library providing convenient and fast access to oracles for Tornado-specific transactions, for example, withdrawal via relayer or getting rate to ETH for tokens that used in Tornado pools

Installation


  • Create .npmrc file in project root with content @tornado:registry=https://git.tornado.ws/api/packages/tornado-packages/npm/
  • Run npm i @tornado/tornado-oracles

Import


const {TornadoFeeOracleV5, TornadoFeeOracleV5, TokenPriceOracle} = require('@tornado/tornado-oracles')
or
import {TornadoFeeOracleV5, TornadoFeeOracleV5, TokenPriceOracle} from '@tornado/tornado-oracles'

Usage


Estimate withdrawal gas costs
import { TornadoFeeOracleV5 } from '@tornado/tornado-oracles'

const tx: TransactionData = {
    to: tornadoProxyLightAddress,
    data: poolInstance.methods.withdraw(...params).encodeABI(),
    value: withdrawalProofArgs[5]
}

const feeOracle = new TornadoFeeOracleV5(1, "https://eth.llamarpc.com"); // First parameter - chain ID
const withdrawalGas = await feeOracle.getGas(tx, "relayer_withdrawal");
Estimate gas price and gas limit to send transaction
import { TornadoFeeOracleV5 } from '@tornado/tornado-oracles'

const incompleteTx: TransactionData = {
    to: tornadoProxyLightAddress,
    data: poolInstance.methods.withdraw(...params).encodeABI(),
    value: withdrawalProofArgs[5]
}

const feeOracle = new TornadoFeeOracleV5(1, "https://eth.llamarpc.com");
const transactionType: TxType = "relayer_withdrawal";
const gasPrice = await feeOracle.getGasPriceInHex(transactionType);
const gasLimit = await feeOracle.getGasLimit(incompleteTx, transactionType);

const tx: TransactionData = Object.assign({ gasPrice, gasLimit }, incompleteTx);
Get token prices (rate to ETH) for tokens that used in Tornado
import { TokenPriceOracle } from '@tornado/tornado-oracles'

const priceOracle = new TokenPriceOracle("https://eth.llamarpc.com");
const tokenPrices = await priceOracle.fetchPrices();

console.log(tokenPrices); // All prices in WEI
/* 
{
  torn: '1653773547906175', 
  dai: '603108348359886',
  cdai: '13487984643748',
  usdc: '601311723569085',
  usdt: '602058974373161',
  wbtc: '15696224089898846959'
}
*/

License

MIT