vault balance tracking

This commit is contained in:
Tim Olson
2023-10-30 18:46:20 -04:00
parent 6631542434
commit 06b7a1d2b6
3 changed files with 40 additions and 29 deletions

View File

@@ -1,7 +1,7 @@
import {ethers} from "ethers";
import {getAbi} from "./abi.js";
import {getProvider, getSigner} from "./blockchain.js";
import {vaults} from './cache.js';
import {vaultBalances, vaults} from './cache.js';
import {chainInfo, VAULT_INIT_CODE_HASH} from "./chain.js";
// Vault
@@ -27,6 +27,13 @@ export function vaultAddress(chainId, owner, num=0) {
}
async function emitBalances(socket, chainId, vault) {
const balances = await vaultBalances.get(chainId, vault);
socket.emit('vb', vault, balances !== null ? balances : '{}')
return balances;
}
export async function loginAddress(socket, chainId, address) {
if( socket.user_room !== undefined)
socket.leave(socket.user_room)
@@ -36,11 +43,15 @@ export async function loginAddress(socket, chainId, address) {
else {
socket.user_room = `${chainId}|${address}`
socket.join(socket.user_room)
console.log('joined room', socket.user_room)
const found = []
for( let num = 0; ; num++ ) {
const vault = vaultAddress(chainId, address, num)
if(vault !== null && await vaults.contains(chainId, vault))
if(vault !== null && await vaults.contains(chainId, vault)) {
found.push(vault)
const balances = await emitBalances(socket, chainId, vault);
console.log('found vault', vault, balances)
}
else
break
}
@@ -58,8 +69,10 @@ export async function ensureVault(socket, chainId, owner, num) {
try {
const vault = await createVault(chainId, owner, num)
console.log(vault)
if (vault !== null)
if (vault !== null) {
socket.emit('vaults', [vault])
await emitBalances(socket, chainId, vault)
}
else
console.error('got null vault for chainId', chainId)
} catch {
@@ -93,24 +106,3 @@ async function createVault(chainId, owner, num) {
}
return addr
}
export async function watchErc20Transfer(provider, db, event) {
console.log('Transfer', event)
const [from, to, amount] = event.args
let vault = vaults[from]
let delta = 0
if (vault !== undefined)
delta = -amount
else {
vault = vaults[to]
if (vault !== undefined)
delta = amount
}
if (vault) {
let oldBalance = vault.balances[event.address]
if (oldBalance === undefined) {
}
}
}