order placement works, including automatic vault creation
This commit is contained in:
@@ -1,20 +1,48 @@
|
||||
import {ethers} from "ethers";
|
||||
import {factoryAbi, queryHelperAbi} from "@/blockchain/abi.js";
|
||||
import {factoryAbi, queryHelperAbi, vaultAbi} from "@/blockchain/abi.js";
|
||||
import {useStore} from "@/store/store.js";
|
||||
import {provider} from "@/blockchain/wallet.js";
|
||||
|
||||
|
||||
export function vaultAddress( owner, num ) {
|
||||
const s = useStore()
|
||||
if( s.vaultInitCodeHash === null || s.factory === null )
|
||||
return null
|
||||
const abiCoder = ethers.AbiCoder.defaultAbiCoder();
|
||||
console.log('vaultAddress owner', owner)
|
||||
const salt = ethers.keccak256(abiCoder.encode(['address','uint8'],[owner,num]))
|
||||
const result = ethers.getCreate2Address(s.factory, salt, s.vaultInitCodeHash)
|
||||
console.log('vaultAddress', result, s.factory, salt, s.vaultInitCodeHash)
|
||||
return result
|
||||
}
|
||||
|
||||
|
||||
function contractOrNull(addr,abi,provider) {
|
||||
try {
|
||||
return new ethers.Contract(addr,abi,provider)
|
||||
}
|
||||
catch (e) {
|
||||
return null
|
||||
}
|
||||
}
|
||||
|
||||
export async function factoryContract() {
|
||||
const s = useStore()
|
||||
return new ethers.Contract(s.helper, factoryAbi, provider)
|
||||
return contractOrNull(s.factory, factoryAbi, provider)
|
||||
}
|
||||
|
||||
export async function queryHelperContract() {
|
||||
const s = useStore()
|
||||
return new ethers.Contract(s.helper, queryHelperAbi, provider)
|
||||
return contractOrNull(s.helper, queryHelperAbi, provider)
|
||||
}
|
||||
|
||||
export async function poolContract(addr) {
|
||||
const s = useStore()
|
||||
return new ethers.Contract(addr, poolAbi, provider)
|
||||
return contractOrNull(addr, poolAbi, provider)
|
||||
}
|
||||
|
||||
export async function vaultContract(num, signer) {
|
||||
const s = useStore()
|
||||
if( num >= s.vaults.length )
|
||||
return null
|
||||
return contractOrNull(s.vaults[num], vaultAbi, signer)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user