automatic vault creation working

This commit is contained in:
Tim Olson
2023-10-06 19:48:55 -04:00
parent 0f7d2b0b5a
commit 7b1ed173d7

View File

@@ -16,13 +16,12 @@ const factoryAbi = await getAbi('Factory')
export function vaultAddress(chainId, owner, num=0) { export function vaultAddress(chainId, owner, num=0) {
const salt = ethers.solidityPackedKeccak256(['address','uint8'],[owner,num]) const salt = ethers.solidityPackedKeccak256(['address','uint8'],[owner,num])
const result = ethers.getCreate2Address(chainInfo[chainId].factory, salt, VAULT_INIT_CODE_HASH) const result = ethers.getCreate2Address(chainInfo[chainId].factory, salt, VAULT_INIT_CODE_HASH)
console.log('vaultAddress', chainId, owner, num, chainInfo[chainId].factory, salt, VAULT_INIT_CODE_HASH, result) // console.log('vaultAddress', chainId, owner, num, chainInfo[chainId].factory, salt, VAULT_INIT_CODE_HASH, result)
return result return result
} }
export async function loginAddress(socket, chainId, address) { export async function loginAddress(socket, chainId, address) {
console.log('loginAddress', chainId, address)
if( socket.user_room !== undefined) if( socket.user_room !== undefined)
socket.leave(socket.user_room) socket.leave(socket.user_room)
socket.user_room = `${chainId}|${address}` socket.user_room = `${chainId}|${address}`
@@ -40,7 +39,6 @@ export async function loginAddress(socket, chainId, address) {
export async function ensureVault(socket, chainId, owner, num) { export async function ensureVault(socket, chainId, owner, num) {
console.log('ensureVault', owner, num)
const address = vaultAddress(chainId, owner, num) const address = vaultAddress(chainId, owner, num)
if (!await vaults.contains(chainId,address)) { if (!await vaults.contains(chainId,address)) {
try { try {
@@ -55,21 +53,18 @@ export async function ensureVault(socket, chainId, owner, num) {
async function createVault(chainId, owner, num) { async function createVault(chainId, owner, num) {
// todo create vault request for backend to pick up
console.log('creating vault', owner, num)
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)
console.log('got deployer')
try { try {
const tx = await deployer.deployVault(owner, num) const tx = await deployer.deployVault(owner, num)
console.log(`deploying vault for ${owner} #${num} with tx ${tx.hash}`) // console.log(`deploying vault for ${owner} #${num} with tx ${tx.hash}`)
} }
catch (e) { catch (e) {
const addr = vaultAddress(chainId, owner, num) const addr = vaultAddress(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)