From a0f7b26b5f62837baee3be5da440deef43c25adf Mon Sep 17 00:00:00 2001 From: Tim Olson <> Date: Sat, 14 Oct 2023 22:06:43 -0400 Subject: [PATCH] order placement doesnt crash --- cache.js | 6 +++++- misc.js | 6 ++++-- vault.js | 29 ++++++++++++++++++----------- 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/cache.js b/cache.js index 0d597a3..06ae25a 100644 --- a/cache.js +++ b/cache.js @@ -30,6 +30,10 @@ export class CacheDict { async get(chain, key) { return await redis.hGet(`${chain}|${this.series}`, key) } + + async contains(chain, key) { + return await redis.hExists(`${chain}|${this.series}`, key) + } } @@ -52,6 +56,6 @@ async function latestBlock(chain) { return await blockCaches[chain].get() } -export const vaults = new CacheSet('v') +export const vaults = new CacheDict('v') export const vaultTokens = new CacheDict('vt') export const prices = new CacheDict('p') diff --git a/misc.js b/misc.js index 10dc582..7986bfd 100644 --- a/misc.js +++ b/misc.js @@ -4,8 +4,9 @@ import {keccak256} from "ethers"; export const readFile = (fileName) => util.promisify(fs.readFile)(fileName, 'utf8'); -const vaultCode = JSON.parse(fs.readFileSync('./contract/out/Vault.sol/Vault.json').toString()) +const vaultCode = JSON.parse(fs.readFileSync('../contract/out/Vault.sol/Vault.json').toString()) export const VAULT_INIT_CODE_HASH = keccak256(vaultCode.bytecode.object) +console.log('VAULT_INIT_CODE_HASH', VAULT_INIT_CODE_HASH) export const chainInfo = {} @@ -20,7 +21,7 @@ function _setChainInfo(c, k, v) { } for (const chain of _chains) { - const path = `contract/broadcast/Deploy.sol/${chain.id}/run-${process.env['DEXORDER_DEPLOYMENT_' + chain.id]}.json`; + const path = `../contract/broadcast/Deploy.sol/${chain.id}/run-${process.env['DEXORDER_DEPLOYMENT_' + chain.id]}.json`; let deployment try { deployment = JSON.parse(fs.readFileSync(path, 'utf8')) //null synchronous is ok we only do this once on init @@ -42,5 +43,6 @@ for (const chain of _chains) { throw Error(`No Factory deployment found for chainId ${chain.id} ${path}`) if (chain.helper === undefined) throw Error(`No QueryHelper deployment found for chainId ${chain.id} ${path}`) + console.log('Factory', chain.factory) chainInfo[chain.id] = chain } diff --git a/vault.js b/vault.js index 5e81503..40af031 100644 --- a/vault.js +++ b/vault.js @@ -24,22 +24,28 @@ export function vaultAddress(chainId, owner, num=0) { export async function loginAddress(socket, chainId, address) { if( socket.user_room !== undefined) socket.leave(socket.user_room) - socket.user_room = `${chainId}|${address}` - socket.join(socket.user_room) - const found = [] - for( let num = 0; ; num++ ) { - const vault = vaultAddress(chainId, address, num) - if(await vaults.contains(chainId, vault)) - found.push(vault) - else - break + if( address === undefined ) { + socket.emit('vaults', []) + } + else { + socket.user_room = `${chainId}|${address}` + socket.join(socket.user_room) + const found = [] + for( let num = 0; ; num++ ) { + const vault = vaultAddress(chainId, address, num) + if(await vaults.contains(chainId, vault)) + found.push(vault) + else + break + } + socket.emit('vaults', found) } - socket.emit('vaults', found) } export async function ensureVault(socket, chainId, owner, num) { const address = vaultAddress(chainId, owner, num) + console.log('ensureVault', chainId, owner, num, address) if (!await vaults.contains(chainId,address)) { try { await createVault(chainId, owner, num) @@ -53,6 +59,7 @@ export async function ensureVault(socket, chainId, owner, num) { async function createVault(chainId, owner, num) { + console.log('createVault', chainId, owner, ) const signer = getSigner(chainId); const deployer = new ethers.Contract(chainInfo[chainId].factory, factoryAbi, signer) try { @@ -64,7 +71,7 @@ async function createVault(chainId, owner, num) { const vault = new ethers.Contract(addr, vaultAbi, getProvider(chainId)) try { const ver = await vault.version() - // console.log(`vault already deployed at ${addr} with version ${ver}`) + console.log(`vault already deployed at ${addr} with version ${ver}`) } catch (e2) { console.error('could not deploy vault:',e)