From 5936f920be6759c03b51799f848ee1cedcf474a9 Mon Sep 17 00:00:00 2001 From: 7400 <> Date: Wed, 6 Dec 2023 07:50:33 -0800 Subject: [PATCH 1/2] Proxy support, use IVault instead of Vault --- abi.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/abi.js b/abi.js index 27f4455..f41d0cb 100644 --- a/abi.js +++ b/abi.js @@ -41,7 +41,14 @@ export async function getAbi(className) { let found = abi[className] if (found === undefined) { console.log('warning: loading ABI from filesystem for '+className) - const data = await readFile(ABI_BASE_PATH + `/${className}.sol/${className}.json`) + // const data = await readFile(ABI_BASE_PATH + `/${className}.sol/${className}.json`) + let data + try { + data = await readFile(ABI_BASE_PATH + `/I${className}.sol/I${className}.json`) + } + catch (e) { + data = await readFile(ABI_BASE_PATH + `/${className}.sol/${className}.json`) + } found = JSON.parse(data.toString())['abi'] abi[className] = found } From c260cf5f8dc8120a87f08b963cf14dadee1462d2 Mon Sep 17 00:00:00 2001 From: 7400 <> Date: Wed, 6 Dec 2023 10:48:48 -0800 Subject: [PATCH 2/2] limit getAbi() to only look for IVault.sol. --- abi.js | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/abi.js b/abi.js index f41d0cb..102f915 100644 --- a/abi.js +++ b/abi.js @@ -41,13 +41,15 @@ export async function getAbi(className) { let found = abi[className] if (found === undefined) { console.log('warning: loading ABI from filesystem for '+className) - // const data = await readFile(ABI_BASE_PATH + `/${className}.sol/${className}.json`) - let data - try { - data = await readFile(ABI_BASE_PATH + `/I${className}.sol/I${className}.json`) - } - catch (e) { - data = await readFile(ABI_BASE_PATH + `/${className}.sol/${className}.json`) + let data = await readFile(ABI_BASE_PATH + `/${className}.sol/${className}.json`) + // Tricky code to handle proxy Vault where interface file is needed instead of class file + if (className == 'Vault') { + try { + data = await readFile(ABI_BASE_PATH + `/I${className}.sol/I${className}.json`) + } + catch (e) { + if (e.code !== 'ENOENT') throw e; + } } found = JSON.parse(data.toString())['abi'] abi[className] = found