automatic vault creation working
This commit is contained in:
11
vault.js
11
vault.js
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user