fix: cache
This commit is contained in:
parent
58e99581e7
commit
7d071b2ac5
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
94
cli.js
94
cli.js
|
@ -113,20 +113,41 @@ async function deposit({ currency, amount }) {
|
||||||
* in it and generates merkle proof
|
* in it and generates merkle proof
|
||||||
* @param deposit Deposit object
|
* @param deposit Deposit object
|
||||||
*/
|
*/
|
||||||
async function generateMerkleProof(deposit) {
|
async function generateMerkleProof(deposit, amount) {
|
||||||
let leafIndex = -1
|
let leafIndex = -1
|
||||||
// Get all deposit events from smart contract and assemble merkle tree from them
|
// Get all deposit events from smart contract and assemble merkle tree from them
|
||||||
const events = await mixerContract.getPastEvents('Deposit', { fromBlock: 0, toBlock: 'latest' })
|
const cachedEvents = loadCachedEvents({ type: 'Deposit', amount })
|
||||||
|
|
||||||
|
const startBlock = cachedEvents.lastBlock
|
||||||
|
|
||||||
|
let rpcEvents = await mixerContract.getPastEvents('Deposit', {
|
||||||
|
fromBlock: startBlock,
|
||||||
|
toBlock: 'latest'
|
||||||
|
})
|
||||||
|
|
||||||
|
rpcEvents = rpcEvents.map(({ blockNumber, transactionHash, returnValues }) => {
|
||||||
|
const { commitment, leafIndex, timestamp } = returnValues
|
||||||
|
return {
|
||||||
|
blockNumber,
|
||||||
|
transactionHash,
|
||||||
|
commitment,
|
||||||
|
leafIndex: Number(leafIndex),
|
||||||
|
timestamp
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const events = cachedEvents.events.concat(rpcEvents)
|
||||||
|
console.log('events', events.length)
|
||||||
|
|
||||||
const leaves = events
|
const leaves = events
|
||||||
.sort((a, b) => a.returnValues.leafIndex - b.returnValues.leafIndex) // Sort events in chronological order
|
.sort((a, b) => a.leafIndex - b.leafIndex) // Sort events in chronological order
|
||||||
.map((e) => {
|
.map((e) => {
|
||||||
const index = toBN(e.returnValues.leafIndex).toNumber()
|
const index = toBN(e.leafIndex).toNumber()
|
||||||
|
|
||||||
if (toBN(e.returnValues.commitment).eq(toBN(deposit.commitmentHex))) {
|
if (toBN(e.commitment).eq(toBN(deposit.commitmentHex))) {
|
||||||
leafIndex = index
|
leafIndex = index
|
||||||
}
|
}
|
||||||
return e.returnValues.commitment.toString(10)
|
return toBN(e.commitment).toString(10)
|
||||||
})
|
})
|
||||||
const tree = new merkleTree(MERKLE_TREE_HEIGHT, leaves)
|
const tree = new merkleTree(MERKLE_TREE_HEIGHT, leaves)
|
||||||
|
|
||||||
|
@ -150,9 +171,9 @@ async function generateMerkleProof(deposit) {
|
||||||
* @param fee Relayer fee
|
* @param fee Relayer fee
|
||||||
* @param refund Receive ether for exchanged tokens
|
* @param refund Receive ether for exchanged tokens
|
||||||
*/
|
*/
|
||||||
async function generateProof({ deposit, recipient, relayerAddress = 0, fee = 0, refund = 0 }) {
|
async function generateProof({ deposit, amount, recipient, relayerAddress = 0, fee = 0, refund = 0 }) {
|
||||||
// Compute merkle proof of our commitment
|
// Compute merkle proof of our commitment
|
||||||
const { root, path_elements, path_index } = await generateMerkleProof(deposit)
|
const { root, path_elements, path_index } = await generateMerkleProof(deposit, amount)
|
||||||
|
|
||||||
// Prepare circuit input
|
// Prepare circuit input
|
||||||
const input = {
|
const input = {
|
||||||
|
@ -217,7 +238,7 @@ async function withdraw({ deposit, currency, amount, recipient, relayerURL, refu
|
||||||
throw new Error('Too high refund')
|
throw new Error('Too high refund')
|
||||||
}
|
}
|
||||||
|
|
||||||
const { proof, args } = await generateProof({ deposit, recipient, relayerAddress: rewardAccount, fee, refund })
|
const { proof, args } = await generateProof({ deposit, amount, recipient, relayerAddress: rewardAccount, fee, refund })
|
||||||
|
|
||||||
console.log('Sending withdraw transaction through relay')
|
console.log('Sending withdraw transaction through relay')
|
||||||
try {
|
try {
|
||||||
|
@ -450,6 +471,30 @@ function waitForTxReceipt({ txHash, attempts = 60, delay = 1000 }) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function loadCachedEvents({ type, amount }) {
|
||||||
|
try {
|
||||||
|
if (netId !== 1) {
|
||||||
|
return {
|
||||||
|
events: [],
|
||||||
|
lastBlock: 0,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const module = require(`./cache/${type.toLowerCase()}s_eth_${amount}.json`)
|
||||||
|
|
||||||
|
if (module) {
|
||||||
|
const events = module
|
||||||
|
|
||||||
|
return {
|
||||||
|
events,
|
||||||
|
lastBlock: events[events.length - 1].blockNumber
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
throw new Error(`Method loadCachedEvents has error: ${err.message}`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses Tornado.cash note
|
* Parses Tornado.cash note
|
||||||
* @param noteString the note
|
* @param noteString the note
|
||||||
|
@ -472,7 +517,7 @@ function parseNote(noteString) {
|
||||||
|
|
||||||
async function loadDepositData({ deposit }) {
|
async function loadDepositData({ deposit }) {
|
||||||
try {
|
try {
|
||||||
const eventWhenHappened = await tornado.getPastEvents('Deposit', {
|
const eventWhenHappened = await mixerContract.getPastEvents('Deposit', {
|
||||||
filter: {
|
filter: {
|
||||||
commitment: deposit.commitmentHex
|
commitment: deposit.commitmentHex
|
||||||
},
|
},
|
||||||
|
@ -496,16 +541,33 @@ async function loadDepositData({ deposit }) {
|
||||||
}
|
}
|
||||||
async function loadWithdrawalData({ amount, currency, deposit }) {
|
async function loadWithdrawalData({ amount, currency, deposit }) {
|
||||||
try {
|
try {
|
||||||
const events = await await tornado.getPastEvents('Withdrawal', {
|
const cachedEvents = loadCachedEvents({ type: 'Withdrawal', amount })
|
||||||
fromBlock: 0,
|
|
||||||
|
const startBlock = cachedEvents.lastBlock
|
||||||
|
|
||||||
|
let rpcEvents = await mixerContract.getPastEvents('Withdrawal', {
|
||||||
|
fromBlock: startBlock,
|
||||||
toBlock: 'latest'
|
toBlock: 'latest'
|
||||||
})
|
})
|
||||||
|
|
||||||
|
rpcEvents = rpcEvents.map(({ blockNumber, transactionHash, returnValues }) => {
|
||||||
|
const { nullifierHash, to, fee } = returnValues
|
||||||
|
return {
|
||||||
|
blockNumber,
|
||||||
|
transactionHash,
|
||||||
|
nullifierHash,
|
||||||
|
to,
|
||||||
|
fee
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
const events = cachedEvents.events.concat(rpcEvents)
|
||||||
|
|
||||||
const withdrawEvent = events.filter((event) => {
|
const withdrawEvent = events.filter((event) => {
|
||||||
return event.returnValues.nullifierHash === deposit.nullifierHex
|
return event.nullifierHash === deposit.nullifierHex
|
||||||
})[0]
|
})[0]
|
||||||
|
|
||||||
const fee = withdrawEvent.returnValues.fee
|
const fee = withdrawEvent.fee
|
||||||
const decimals = config.deployments[`netId${netId}`][currency].decimals
|
const decimals = config.deployments[`netId${netId}`][currency].decimals
|
||||||
const withdrawalAmount = toBN(fromDecimals({ amount, decimals })).sub(
|
const withdrawalAmount = toBN(fromDecimals({ amount, decimals })).sub(
|
||||||
toBN(fee)
|
toBN(fee)
|
||||||
|
@ -514,7 +576,7 @@ async function loadWithdrawalData({ amount, currency, deposit }) {
|
||||||
return {
|
return {
|
||||||
amount: toDecimals(withdrawalAmount, decimals, 9),
|
amount: toDecimals(withdrawalAmount, decimals, 9),
|
||||||
txHash: withdrawEvent.transactionHash,
|
txHash: withdrawEvent.transactionHash,
|
||||||
to: withdrawEvent.returnValues.to,
|
to: withdrawEvent.to,
|
||||||
timestamp,
|
timestamp,
|
||||||
nullifier: deposit.nullifierHex,
|
nullifier: deposit.nullifierHex,
|
||||||
fee: toDecimals(fee, decimals, 9)
|
fee: toDecimals(fee, decimals, 9)
|
||||||
|
@ -579,7 +641,7 @@ async function init({ rpc, noteNetId, currency = 'dai', amount = '100' }) {
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
tornadoAddress = config.deployments[`netId${netId}`].proxy
|
tornadoAddress = config.deployments[`netId${netId}`].proxy
|
||||||
tornadoInstance = config.deployments[`netId${netId}`][currency].instanceAddress[amount]
|
tornadoInstance = config.deployments[`netId${netId}`][currency].mixerAddress[amount]
|
||||||
|
|
||||||
if (!tornadoAddress) {
|
if (!tornadoAddress) {
|
||||||
throw new Error()
|
throw new Error()
|
||||||
|
|
288
config.js
288
config.js
|
@ -3,208 +3,162 @@ require('dotenv').config()
|
||||||
module.exports = {
|
module.exports = {
|
||||||
deployments: {
|
deployments: {
|
||||||
netId1: {
|
netId1: {
|
||||||
eth: {
|
'eth': {
|
||||||
instanceAddress: {
|
'mixerAddress': {
|
||||||
'0.1': '0x12D66f87A04A9E220743712cE6d9bB1B5616B8Fc',
|
|
||||||
'1': '0x47CE0C6eD5B0Ce3d3A51fdb1C52DC66a7c3c2936',
|
'1': '0x47CE0C6eD5B0Ce3d3A51fdb1C52DC66a7c3c2936',
|
||||||
'10': '0x910Cbd523D972eb0a6f4cAe4618aD62622b39DbF',
|
'10': '0x910Cbd523D972eb0a6f4cAe4618aD62622b39DbF',
|
||||||
'100': '0xA160cdAB225685dA1d56aa342Ad8841c3b53f291'
|
'100': '0xA160cdAB225685dA1d56aa342Ad8841c3b53f291',
|
||||||
|
'0.1': '0x12D66f87A04A9E220743712cE6d9bB1B5616B8Fc'
|
||||||
},
|
},
|
||||||
symbol: 'ETH',
|
'miningEnabled': true,
|
||||||
decimals: 18
|
'symbol': 'ETH',
|
||||||
|
'decimals': 18
|
||||||
},
|
},
|
||||||
dai: {
|
'dai': {
|
||||||
instanceAddress: {
|
'mixerAddress': {
|
||||||
'100': '0xD4B88Df4D29F5CedD6857912842cff3b20C8Cfa3',
|
'100': '0xD4B88Df4D29F5CedD6857912842cff3b20C8Cfa3',
|
||||||
'1000': '0xFD8610d20aA15b7B2E3Be39B396a1bC3516c7144',
|
'1000': '0xFD8610d20aA15b7B2E3Be39B396a1bC3516c7144',
|
||||||
'10000': '0xF60dD140cFf0706bAE9Cd734Ac3ae76AD9eBC32A',
|
'10000': '0x07687e702b410Fa43f4cB4Af7FA097918ffD2730',
|
||||||
'100000': undefined
|
'100000': '0x23773E65ed146A459791799d01336DB287f25334'
|
||||||
},
|
},
|
||||||
tokenAddress: '0x6B175474E89094C44Da98b954EedeAC495271d0F',
|
'miningEnabled': true,
|
||||||
symbol: 'DAI',
|
'tokenAddress': '0x6B175474E89094C44Da98b954EedeAC495271d0F',
|
||||||
decimals: 18
|
'symbol': 'DAI',
|
||||||
|
'decimals': 18,
|
||||||
|
'gasLimit': '55000'
|
||||||
},
|
},
|
||||||
cdai: {
|
'cdai': {
|
||||||
instanceAddress: {
|
'mixerAddress': {
|
||||||
'5000': '0x22aaA7720ddd5388A3c0A3333430953C68f1849b',
|
'5000': '0x22aaA7720ddd5388A3c0A3333430953C68f1849b',
|
||||||
'50000': '0xBA214C1c1928a32Bffe790263E38B4Af9bFCD659',
|
'50000': '0x03893a7c7463AE47D46bc7f091665f1893656003',
|
||||||
'500000': '0xb1C8094B234DcE6e03f10a5b673c1d8C69739A00',
|
'500000': '0x2717c5e28cf931547B621a5dddb772Ab6A35B701',
|
||||||
'5000000': undefined
|
'5000000': '0xD21be7248e0197Ee08E0c20D4a96DEBdaC3D20Af'
|
||||||
},
|
},
|
||||||
tokenAddress: '0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643',
|
'miningEnabled': true,
|
||||||
symbol: 'cDAI',
|
'tokenAddress': '0x5d3a536E4D6DbD6114cc1Ead35777bAB948E3643',
|
||||||
decimals: 8
|
'symbol': 'cDAI',
|
||||||
|
'decimals': 8,
|
||||||
|
'gasLimit': '425000'
|
||||||
},
|
},
|
||||||
usdc: {
|
'usdc': {
|
||||||
instanceAddress: {
|
'mixerAddress': {
|
||||||
'100': '0xd96f2B1c14Db8458374d9Aca76E26c3D18364307',
|
'100': '0xd96f2B1c14Db8458374d9Aca76E26c3D18364307',
|
||||||
'1000': '0x4736dCf1b7A3d580672CcE6E7c65cd5cc9cFBa9D',
|
'1000': '0x4736dCf1b7A3d580672CcE6E7c65cd5cc9cFBa9D',
|
||||||
'10000': '0xD691F27f38B395864Ea86CfC7253969B409c362d',
|
'10000': '',
|
||||||
'100000': undefined
|
'100000': ''
|
||||||
},
|
},
|
||||||
tokenAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
|
'miningEnabled': false,
|
||||||
symbol: 'USDC',
|
'tokenAddress': '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
|
||||||
decimals: 6
|
'symbol': 'USDC',
|
||||||
|
'decimals': 6,
|
||||||
|
'gasLimit': '80000'
|
||||||
},
|
},
|
||||||
cusdc: {
|
'usdt': {
|
||||||
instanceAddress: {
|
'mixerAddress': {
|
||||||
'5000': '0xaEaaC358560e11f52454D997AAFF2c5731B6f8a6',
|
|
||||||
'50000': '0x1356c899D8C9467C7f71C195612F8A395aBf2f0a',
|
|
||||||
'500000': '0xA60C772958a3eD56c1F15dD055bA37AC8e523a0D',
|
|
||||||
'5000000': undefined
|
|
||||||
},
|
|
||||||
tokenAddress: '0x39AA39c021dfbaE8faC545936693aC917d5E7563',
|
|
||||||
symbol: 'cUSDC',
|
|
||||||
decimals: 8
|
|
||||||
},
|
|
||||||
usdt: {
|
|
||||||
instanceAddress: {
|
|
||||||
'100': '0x169AD27A470D064DEDE56a2D3ff727986b15D52B',
|
'100': '0x169AD27A470D064DEDE56a2D3ff727986b15D52B',
|
||||||
'1000': '0x0836222F2B2B24A3F36f98668Ed8F0B38D1a872f',
|
'1000': '0x0836222F2B2B24A3F36f98668Ed8F0B38D1a872f',
|
||||||
'10000': '0xF67721A2D8F736E75a49FdD7FAd2e31D8676542a',
|
'10000': '',
|
||||||
'100000': '0x9AD122c22B14202B4490eDAf288FDb3C7cb3ff5E'
|
'100000': ''
|
||||||
},
|
},
|
||||||
tokenAddress: '0xdAC17F958D2ee523a2206206994597C13D831ec7',
|
'miningEnabled': false,
|
||||||
symbol: 'USDT',
|
'tokenAddress': '0xdAC17F958D2ee523a2206206994597C13D831ec7',
|
||||||
decimals: 6
|
'symbol': 'USDT',
|
||||||
|
'decimals': 6,
|
||||||
|
'gasLimit': '100000'
|
||||||
},
|
},
|
||||||
proxy: '0x905b63Fff465B9fFBF41DeA908CEb12478ec7601',
|
'wbtc': {
|
||||||
|
'mixerAddress': {
|
||||||
|
'0.1': '0x178169B423a011fff22B9e3F3abeA13414dDD0F1',
|
||||||
|
'1': '0x610B717796ad172B316836AC95a2ffad065CeaB4',
|
||||||
|
'10': '0xbB93e510BbCD0B7beb5A853875f9eC60275CF498',
|
||||||
|
'100': ''
|
||||||
|
},
|
||||||
|
'miningEnabled': true,
|
||||||
|
'tokenAddress': '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599',
|
||||||
|
'symbol': 'WBTC',
|
||||||
|
'decimals': 8,
|
||||||
|
'gasLimit': '85000'
|
||||||
|
},
|
||||||
|
proxy: '0x722122dF12D4e14e13Ac3b6895a86e84145b6967',
|
||||||
},
|
},
|
||||||
netId5: {
|
netId5: {
|
||||||
eth: {
|
'eth': {
|
||||||
instanceAddress: {
|
'mixerAddress': {
|
||||||
'0.1': '0x6Bf694a291DF3FeC1f7e69701E3ab6c592435Ae7',
|
|
||||||
'1': '0x3aac1cC67c2ec5Db4eA850957b967Ba153aD6279',
|
'1': '0x3aac1cC67c2ec5Db4eA850957b967Ba153aD6279',
|
||||||
'10': '0x723B78e67497E85279CB204544566F4dC5d2acA0',
|
'10': '0x723B78e67497E85279CB204544566F4dC5d2acA0',
|
||||||
'100': '0x0E3A09dDA6B20aFbB34aC7cD4A6881493f3E7bf7'
|
'100': '0x0E3A09dDA6B20aFbB34aC7cD4A6881493f3E7bf7',
|
||||||
|
'0.1': '0x6Bf694a291DF3FeC1f7e69701E3ab6c592435Ae7'
|
||||||
},
|
},
|
||||||
symbol: 'ETH',
|
'miningEnabled': true,
|
||||||
decimals: 18
|
'symbol': 'ETH',
|
||||||
|
'decimals': 18
|
||||||
},
|
},
|
||||||
dai: {
|
'dai': {
|
||||||
instanceAddress: {
|
'mixerAddress': {
|
||||||
'100': '0xdf2d3cC5F361CF95b3f62c4bB66deFe3FDE47e3D',
|
'100': '0x76D85B4C0Fc497EeCc38902397aC608000A06607',
|
||||||
'1000': '0xD96291dFa35d180a71964D0894a1Ae54247C4ccD',
|
'1000': '0xCC84179FFD19A1627E79F8648d09e095252Bc418',
|
||||||
'10000': '0xb192794f72EA45e33C3DF6fe212B9c18f6F45AE3',
|
'10000': '0xD5d6f8D9e784d0e26222ad3834500801a68D027D',
|
||||||
'100000': undefined
|
'100000': '0x407CcEeaA7c95d2FE2250Bf9F2c105aA7AAFB512'
|
||||||
},
|
},
|
||||||
tokenAddress: '0x4F96Fe3b7A6Cf9725f59d353F723c1bDb64CA6Aa',
|
'miningEnabled': true,
|
||||||
symbol: 'DAI',
|
'tokenAddress': '0xdc31Ee1784292379Fbb2964b3B9C4124D8F89C60',
|
||||||
decimals: 18
|
'symbol': 'DAI',
|
||||||
|
'decimals': 18,
|
||||||
|
'gasLimit': '55000'
|
||||||
},
|
},
|
||||||
cdai: {
|
'cdai': {
|
||||||
instanceAddress: {
|
'mixerAddress': {
|
||||||
'5000': '0x6Fc9386ABAf83147b3a89C36D422c625F44121C8',
|
'5000': '0x833481186f16Cece3f1Eeea1a694c42034c3a0dB',
|
||||||
'50000': '0x7182EA067e0f050997444FCb065985Fd677C16b6',
|
'50000': '0xd8D7DE3349ccaA0Fde6298fe6D7b7d0d34586193',
|
||||||
'500000': '0xC22ceFd90fbd1FdEeE554AE6Cc671179BC3b10Ae',
|
'500000': '0x8281Aa6795aDE17C8973e1aedcA380258Bc124F9',
|
||||||
'5000000': undefined
|
'5000000': '0x57b2B8c82F065de8Ef5573f9730fC1449B403C9f'
|
||||||
},
|
},
|
||||||
tokenAddress: '0xe7bc397DBd069fC7d0109C0636d06888bb50668c',
|
'miningEnabled': true,
|
||||||
symbol: 'cDAI',
|
'tokenAddress': '0x822397d9a55d0fefd20F5c4bCaB33C5F65bd28Eb',
|
||||||
decimals: 8
|
'symbol': 'cDAI',
|
||||||
|
'decimals': 8,
|
||||||
|
'gasLimit': '425000'
|
||||||
},
|
},
|
||||||
usdc: {
|
'usdc': {
|
||||||
instanceAddress: {
|
'mixerAddress': {
|
||||||
'100': '0x137E2B6d185018e7f09f6cf175a970e7fC73826C',
|
'100': '0x05E0b5B40B7b66098C2161A5EE11C5740A3A7C45',
|
||||||
'1000': '0xcC7f1633A5068E86E3830e692e3e3f8f520525Af',
|
'1000': '0x23173fE8b96A4Ad8d2E17fB83EA5dcccdCa1Ae52',
|
||||||
'10000': '0x28C8f149a0ab8A9bdB006B8F984fFFCCE52ef5EF',
|
'10000': '',
|
||||||
'100000': undefined
|
'100000': ''
|
||||||
},
|
},
|
||||||
tokenAddress: '0x75B0622Cec14130172EaE9Cf166B92E5C112FaFF',
|
'miningEnabled': false,
|
||||||
symbol: 'USDC',
|
'tokenAddress': '0xD87Ba7A50B2E7E660f678A895E4B72E7CB4CCd9C',
|
||||||
decimals: 6
|
'symbol': 'USDC',
|
||||||
|
'decimals': 6,
|
||||||
|
'gasLimit': '80000'
|
||||||
},
|
},
|
||||||
cusdc: {
|
'usdt': {
|
||||||
instanceAddress: {
|
'mixerAddress': {
|
||||||
'5000': '0xc0648F28ABA385c8a1421Bbf1B59e3c474F89cB0',
|
'100': '0x538Ab61E8A9fc1b2f93b3dd9011d662d89bE6FE6',
|
||||||
'50000': '0x0C53853379c6b1A7B74E0A324AcbDD5Eabd4981D',
|
'1000': '0x94Be88213a387E992Dd87DE56950a9aef34b9448',
|
||||||
'500000': '0xf84016A0E03917cBe700D318EB1b7a53e6e3dEe1',
|
'10000': '',
|
||||||
'5000000': undefined
|
'100000': ''
|
||||||
},
|
},
|
||||||
tokenAddress: '0xcfC9bB230F00bFFDB560fCe2428b4E05F3442E35',
|
'miningEnabled': false,
|
||||||
symbol: 'cUSDC',
|
'tokenAddress': '0xb7FC2023D96AEa94Ba0254AA5Aeb93141e4aad66',
|
||||||
decimals: 8
|
'symbol': 'USDT',
|
||||||
|
'decimals': 6,
|
||||||
|
'gasLimit': '100000'
|
||||||
},
|
},
|
||||||
usdt: {
|
'wbtc': {
|
||||||
instanceAddress: {
|
'mixerAddress': {
|
||||||
'100': '0x327853Da7916a6A0935563FB1919A48843036b42',
|
'0.1': '0x242654336ca2205714071898f67E254EB49ACdCe',
|
||||||
'1000': '0x531AA4DF5858EA1d0031Dad16e3274609DE5AcC0',
|
'1': '0x776198CCF446DFa168347089d7338879273172cF',
|
||||||
'10000': '0x0958275F0362cf6f07D21373aEE0cf37dFe415dD',
|
'10': '0xeDC5d01286f99A066559F60a585406f3878a033e',
|
||||||
'100000': '0x14aEd24B67EaF3FF28503eB92aeb217C47514364'
|
'100': ''
|
||||||
},
|
},
|
||||||
tokenAddress: '0x03c5F29e9296006876d8DF210BCFfD7EA5Db1Cf1',
|
'miningEnabled': true,
|
||||||
symbol: 'USDT',
|
'tokenAddress': '0xC04B0d3107736C32e19F1c62b2aF67BE61d63a05',
|
||||||
decimals: 6
|
'symbol': 'WBTC',
|
||||||
|
'decimals': 8,
|
||||||
|
'gasLimit': '85000'
|
||||||
},
|
},
|
||||||
proxy: '0x905b63Fff465B9fFBF41DeA908CEb12478ec7601',
|
proxy: '0x454d870a72e29d5e5697f635128d18077bd04c60',
|
||||||
},
|
},
|
||||||
netId42: {
|
|
||||||
eth: {
|
|
||||||
instanceAddress: {
|
|
||||||
'0.1': '0x8b3f5393bA08c24cc7ff5A66a832562aAB7bC95f',
|
|
||||||
'1': '0xD6a6AC46d02253c938B96D12BE439F570227aE8E',
|
|
||||||
'10': '0xe1BE96331391E519471100c3c1528B66B8F4e5a7',
|
|
||||||
'100': '0xd037E0Ac98Dab2fCb7E296c69C6e52767Ae5414D'
|
|
||||||
},
|
|
||||||
symbol: 'ETH',
|
|
||||||
decimals: 18
|
|
||||||
},
|
|
||||||
dai: {
|
|
||||||
instanceAddress: {
|
|
||||||
'100': '0xdf2d3cC5F361CF95b3f62c4bB66deFe3FDE47e3D',
|
|
||||||
'1000': '0xD96291dFa35d180a71964D0894a1Ae54247C4ccD',
|
|
||||||
'10000': '0xb192794f72EA45e33C3DF6fe212B9c18f6F45AE3',
|
|
||||||
'100000': undefined
|
|
||||||
},
|
|
||||||
tokenAddress: '0x4F96Fe3b7A6Cf9725f59d353F723c1bDb64CA6Aa',
|
|
||||||
symbol: 'DAI',
|
|
||||||
decimals: 18
|
|
||||||
},
|
|
||||||
cdai: {
|
|
||||||
instanceAddress: {
|
|
||||||
'5000': '0x6Fc9386ABAf83147b3a89C36D422c625F44121C8',
|
|
||||||
'50000': '0x7182EA067e0f050997444FCb065985Fd677C16b6',
|
|
||||||
'500000': '0xC22ceFd90fbd1FdEeE554AE6Cc671179BC3b10Ae',
|
|
||||||
'5000000': undefined
|
|
||||||
},
|
|
||||||
tokenAddress: '0xe7bc397DBd069fC7d0109C0636d06888bb50668c',
|
|
||||||
symbol: 'cDAI',
|
|
||||||
decimals: 8
|
|
||||||
},
|
|
||||||
usdc: {
|
|
||||||
instanceAddress: {
|
|
||||||
'100': '0x137E2B6d185018e7f09f6cf175a970e7fC73826C',
|
|
||||||
'1000': '0xcC7f1633A5068E86E3830e692e3e3f8f520525Af',
|
|
||||||
'10000': '0x28C8f149a0ab8A9bdB006B8F984fFFCCE52ef5EF',
|
|
||||||
'100000': undefined
|
|
||||||
},
|
|
||||||
tokenAddress: '0x75B0622Cec14130172EaE9Cf166B92E5C112FaFF',
|
|
||||||
symbol: 'USDC',
|
|
||||||
decimals: 6
|
|
||||||
},
|
|
||||||
cusdc: {
|
|
||||||
instanceAddress: {
|
|
||||||
'5000': '0xc0648F28ABA385c8a1421Bbf1B59e3c474F89cB0',
|
|
||||||
'50000': '0x0C53853379c6b1A7B74E0A324AcbDD5Eabd4981D',
|
|
||||||
'500000': '0xf84016A0E03917cBe700D318EB1b7a53e6e3dEe1',
|
|
||||||
'5000000': undefined
|
|
||||||
},
|
|
||||||
tokenAddress: '0xcfC9bB230F00bFFDB560fCe2428b4E05F3442E35',
|
|
||||||
symbol: 'cUSDC',
|
|
||||||
decimals: 8
|
|
||||||
},
|
|
||||||
usdt: {
|
|
||||||
instanceAddress: {
|
|
||||||
'100': '0x327853Da7916a6A0935563FB1919A48843036b42',
|
|
||||||
'1000': '0x531AA4DF5858EA1d0031Dad16e3274609DE5AcC0',
|
|
||||||
'10000': '0x0958275F0362cf6f07D21373aEE0cf37dFe415dD',
|
|
||||||
'100000': '0x14aEd24B67EaF3FF28503eB92aeb217C47514364'
|
|
||||||
},
|
|
||||||
tokenAddress: '0x03c5F29e9296006876d8DF210BCFfD7EA5Db1Cf1',
|
|
||||||
symbol: 'USDT',
|
|
||||||
decimals: 6
|
|
||||||
},
|
|
||||||
proxy: '0x26Dd6E44a7090a2598e280CBD1F5E6034F2edD04',
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue