order placement doesnt crash

This commit is contained in:
Tim Olson
2023-10-14 22:06:43 -04:00
parent 7b1ed173d7
commit a0f7b26b5f
3 changed files with 27 additions and 14 deletions

View File

@@ -30,6 +30,10 @@ export class CacheDict {
async get(chain, key) { async get(chain, key) {
return await redis.hGet(`${chain}|${this.series}`, 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() 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 vaultTokens = new CacheDict('vt')
export const prices = new CacheDict('p') export const prices = new CacheDict('p')

View File

@@ -4,8 +4,9 @@ import {keccak256} from "ethers";
export const readFile = (fileName) => util.promisify(fs.readFile)(fileName, 'utf8'); 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) export const VAULT_INIT_CODE_HASH = keccak256(vaultCode.bytecode.object)
console.log('VAULT_INIT_CODE_HASH', VAULT_INIT_CODE_HASH)
export const chainInfo = {} export const chainInfo = {}
@@ -20,7 +21,7 @@ function _setChainInfo(c, k, v) {
} }
for (const chain of _chains) { 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 let deployment
try { try {
deployment = JSON.parse(fs.readFileSync(path, 'utf8')) //null synchronous is ok we only do this once on init 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}`) throw Error(`No Factory deployment found for chainId ${chain.id} ${path}`)
if (chain.helper === undefined) if (chain.helper === undefined)
throw Error(`No QueryHelper deployment found for chainId ${chain.id} ${path}`) throw Error(`No QueryHelper deployment found for chainId ${chain.id} ${path}`)
console.log('Factory', chain.factory)
chainInfo[chain.id] = chain chainInfo[chain.id] = chain
} }

View File

@@ -24,6 +24,10 @@ export function vaultAddress(chainId, owner, num=0) {
export async function loginAddress(socket, chainId, address) { export async function loginAddress(socket, chainId, address) {
if( socket.user_room !== undefined) if( socket.user_room !== undefined)
socket.leave(socket.user_room) socket.leave(socket.user_room)
if( address === undefined ) {
socket.emit('vaults', [])
}
else {
socket.user_room = `${chainId}|${address}` socket.user_room = `${chainId}|${address}`
socket.join(socket.user_room) socket.join(socket.user_room)
const found = [] const found = []
@@ -35,11 +39,13 @@ export async function loginAddress(socket, chainId, address) {
break break
} }
socket.emit('vaults', found) socket.emit('vaults', found)
}
} }
export async function ensureVault(socket, chainId, owner, num) { export async function ensureVault(socket, chainId, owner, num) {
const address = vaultAddress(chainId, owner, num) const address = vaultAddress(chainId, owner, num)
console.log('ensureVault', chainId, owner, num, address)
if (!await vaults.contains(chainId,address)) { if (!await vaults.contains(chainId,address)) {
try { try {
await createVault(chainId, owner, num) await createVault(chainId, owner, num)
@@ -53,6 +59,7 @@ export async function ensureVault(socket, chainId, owner, num) {
async function createVault(chainId, owner, num) { async function createVault(chainId, owner, num) {
console.log('createVault', chainId, owner, )
const signer = getSigner(chainId); const signer = getSigner(chainId);
const deployer = new ethers.Contract(chainInfo[chainId].factory, factoryAbi, signer) const deployer = new ethers.Contract(chainInfo[chainId].factory, factoryAbi, signer)
try { try {
@@ -64,7 +71,7 @@ async function createVault(chainId, owner, num) {
const vault = new ethers.Contract(addr, vaultAbi, getProvider(chainId)) const vault = new ethers.Contract(addr, vaultAbi, getProvider(chainId))
try { try {
const ver = await vault.version() 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) { catch (e2) {
console.error('could not deploy vault:',e) console.error('could not deploy vault:',e)