From 6d9e848345d34b8ed749c667ceaa616c0d9b8208 Mon Sep 17 00:00:00 2001 From: Ardis Lu Date: Thu, 12 Dec 2024 23:28:06 -0800 Subject: [PATCH] Add block number input --- index.html | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/index.html b/index.html index c57852d..24a2ad1 100644 --- a/index.html +++ b/index.html @@ -164,6 +164,9 @@ + + + @@ -179,7 +182,10 @@ const circularSVG = 'Circular reference'; const repeatSVG = 'Repeated owner'; - async function getOwners(safe, rpc) { + async function getOwners(safe, rpc, block) { + if (block !== 'latest') { + block = `0x${block.toString(16)}`; + } const requests = { ownerResult: '0x8da5cb5b', // owner() ownersResult: '0xa0e67e2b', // getOwners() @@ -192,7 +198,7 @@ jsonrpc: '2.0', id, method: 'eth_call', - params: [{ to: safe, data }, 'latest'] + params: [{ to: safe, data }, block] }); } const response = await fetch(rpc, { @@ -222,8 +228,8 @@ return { owners, threshold, type } } - async function insertTreeNode(root, safe, rpc) { - const { owners, threshold, type } = await getOwners(safe, rpc); + async function insertTreeNode(root, safe, rpc, block) { + const { owners, threshold, type } = await getOwners(safe, rpc, block); const li = document.createElement('li'); root.insertAdjacentElement('beforeend', li); @@ -242,7 +248,7 @@ const newRoot = document.createElement('ul'); root.lastChild.insertAdjacentElement('beforeend', newRoot); for (const owner of owners) { - await insertTreeNode(newRoot, owner, rpc); + await insertTreeNode(newRoot, owner, rpc, block); } } @@ -269,10 +275,10 @@ } e.target.setAttribute('data-loading', ''); - const { safe, rpc } = Object.fromEntries(new FormData(e.target)); + const { safe, rpc, block } = Object.fromEntries(new FormData(e.target)); tree.innerHTML = ''; allAddresses.length = 0; - await insertTreeNode(tree, safe.replace(/^.+:/, '').trim().toLowerCase(), rpc); + await insertTreeNode(tree, safe.replace(/^.+:/, '').trim().toLowerCase(), rpc, block === '' ? 'latest' : Number(block)); document.querySelectorAll('svg').forEach(svg => { svg.addEventListener('mouseover', e => highlightAddress(tree, svg.closest('li').textContent.substring(0, 42))); svg.addEventListener('mouseout', e => CSS.highlights.clear()); -- 2.47.3