This commit is contained in:
Tim Olson
2024-01-08 21:42:40 -04:00
parent 52a41c6f81
commit a65a1fffae
7 changed files with 122 additions and 144 deletions

View File

@@ -1,14 +1,12 @@
import {ethers} from "ethers";
import {factoryAbi, queryHelperAbi, vaultAbi} from "@/blockchain/abi.js";
import {useStore} from "@/store/store.js";
import {queryHelperAbi} from "@/blockchain/abi.js";
export function vaultAddress( owner, num=0) {
const s = useStore()
if( !owner || !s.factory || !s.vaultInitCodeHash )
export function vaultAddress( factory, vaultInitCodeHash, owner, num=0) {
if( !owner || !factory || !vaultInitCodeHash )
return null
const salt = ethers.solidityPackedKeccak256(['address','uint8'],[owner,num])
return ethers.getCreate2Address(s.factory, salt, s.vaultInitCodeHash)
return ethers.getCreate2Address(factory, salt, vaultInitCodeHash)
}
@@ -21,22 +19,7 @@ export function contractOrNull(addr,abi,provider) {
}
}
export async function factoryContract() {
const s = useStore()
return contractOrNull(s.factory, factoryAbi, s.provider)
export async function queryHelperContract(helper, provider) {
return contractOrNull(helper, queryHelperAbi, provider)
}
export async function queryHelperContract() {
const s = useStore()
return contractOrNull(s.helper, queryHelperAbi, s.provider)
}
export async function poolContract(addr) {
const s = useStore()
return contractOrNull(addr, uniswapV3PoolAbi, s.provider)
}
export async function vaultContract(owner, num, provider) {
const addr = vaultAddress(owner, num)
return new ethers.Contract(addr, vaultAbi, provider)
}

View File

@@ -1,12 +1,7 @@
import {queryHelperContract} from "@/blockchain/contract.js";
import {Exchange} from "@/blockchain/orderlib.js";
export async function findRoute(chainId, tokenA, tokenB) {
console.log('getting query helper')
const helper = await queryHelperContract()
if (!helper)
throw Error('no helper')
export async function findRoute(helper, chainId, tokenA, tokenB) {
console.log('getting raw routes', helper, tokenA.address, tokenB.address)
const rawRoutes = await helper.getRoutes(tokenA.address, tokenB.address)
// todo expose all available pools

View File

@@ -87,9 +87,7 @@ const errorHandlingProxy = {
export async function connectWallet() {
// eth_getaccounts
const s = useStore()
await s.provider.getSigner()
await new ethers.BrowserProvider(window.ethereum).getSigner();
}
let pendingOrders = []
@@ -115,7 +113,7 @@ async function _discoverVaults(owner) {
// todo multi-vault scan
// console.log('_discoverVaults',owner)
const num = 0
const addr = vaultAddress(owner, num)
const addr = vaultAddress(s.factory, s.vaultInitCodeHash, owner, num)
// console.log(`vault ${num} at`, addr)
if( addr === null ) {
s.vaults = []
@@ -133,7 +131,7 @@ async function _discoverVaults(owner) {
console.error(`bad vault version ${version}`)
}
catch (e) {
console.log(`no vault ${num}`)
console.log(`no vault ${num} at ${addr}`, e)
}
if( s.account == owner ) { // double-check the account since it could have changed during our await
s.vaults = result