Skip to content

Commit d808888

Browse files
authored
feat: added tasks to list bridge txs (#755)
Signed-off-by: Tomás Migone <[email protected]>
1 parent 3fe26fa commit d808888

File tree

4 files changed

+126
-0
lines changed

4 files changed

+126
-0
lines changed

package.json

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
"addresses.json"
1313
],
1414
"dependencies": {
15+
"console-table-printer": "^2.11.1",
1516
"ethers": "^5.6.0"
1617
},
1718
"devDependencies": {

tasks/bridge/deposits.ts

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import { task } from 'hardhat/config'
2+
import { cliOpts } from '../../cli/defaults'
3+
import { ethers } from 'ethers'
4+
import { Table } from 'console-table-printer'
5+
6+
export const TASK_BRIDGE_DEPOSITS = 'bridge:deposits'
7+
8+
task(TASK_BRIDGE_DEPOSITS, 'List deposits initiated on L1GraphTokenGateway')
9+
.addOptionalParam('addressBook', cliOpts.addressBook.description)
10+
.addOptionalParam(
11+
'arbitrumAddressBook',
12+
cliOpts.arbitrumAddressBook.description,
13+
cliOpts.arbitrumAddressBook.default,
14+
)
15+
.addOptionalParam('l1GraphConfig', cliOpts.graphConfig.description)
16+
.addOptionalParam('l2GraphConfig', cliOpts.graphConfig.description)
17+
.addOptionalParam('startBlock', 'Start block for the search')
18+
.addOptionalParam('endBlock', 'End block for the search')
19+
.setAction(async (taskArgs, hre) => {
20+
console.log('> L1GraphTokenGateway deposits')
21+
22+
const graph = hre.graph(taskArgs)
23+
const gateway = graph.l1.contracts.L1GraphTokenGateway
24+
console.log(`Tracking 'DepositInitiated' events on ${gateway.address}`)
25+
26+
const startBlock = taskArgs.startBlock ? parseInt(taskArgs.startBlock) : 0
27+
const endBlock = taskArgs.endBlock ? parseInt(taskArgs.endBlock) : 'latest'
28+
console.log(`Searching blocks from ${startBlock} to ${endBlock}`)
29+
30+
const events = (
31+
await gateway.queryFilter(gateway.filters.DepositInitiated(), startBlock, endBlock)
32+
).map((e) => ({
33+
blockNumber: e.blockNumber,
34+
transactionHash: e.transactionHash,
35+
from: e.args.from,
36+
to: e.args.to,
37+
amount: ethers.utils.formatEther(e.args.amount),
38+
}))
39+
40+
printEvents(events)
41+
})
42+
43+
function printEvents(events: any[]) {
44+
const tablePrinter = new Table({
45+
columns: [
46+
{ name: 'blockNumber', color: 'green' },
47+
{
48+
name: 'transactionHash',
49+
color: 'green',
50+
},
51+
{ name: 'from', color: 'green' },
52+
{ name: 'to', color: 'green' },
53+
{ name: 'amount', color: 'green' },
54+
],
55+
})
56+
57+
events.map((e) => tablePrinter.addRow(e))
58+
tablePrinter.printTable()
59+
}

tasks/bridge/withdrawals.ts

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import { task } from 'hardhat/config'
2+
import { cliOpts } from '../../cli/defaults'
3+
import { ethers } from 'ethers'
4+
import { Table } from 'console-table-printer'
5+
6+
export const TASK_BRIDGE_WITHDRAWALS = 'bridge:withdrawals'
7+
8+
task(TASK_BRIDGE_WITHDRAWALS, 'List withdrawals initiated on L2GraphTokenGateway')
9+
.addOptionalParam('addressBook', cliOpts.addressBook.description)
10+
.addOptionalParam(
11+
'arbitrumAddressBook',
12+
cliOpts.arbitrumAddressBook.description,
13+
cliOpts.arbitrumAddressBook.default,
14+
)
15+
.addOptionalParam('l1GraphConfig', cliOpts.graphConfig.description)
16+
.addOptionalParam('l2GraphConfig', cliOpts.graphConfig.description)
17+
.addOptionalParam('startBlock', 'Start block for the search')
18+
.addOptionalParam('endBlock', 'End block for the search')
19+
.setAction(async (taskArgs, hre) => {
20+
console.log('> L2GraphTokenGateway withdrawals')
21+
22+
const graph = hre.graph(taskArgs)
23+
const gateway = graph.l2.contracts.L2GraphTokenGateway
24+
console.log(`Tracking 'WithdrawalInitiated' events on ${gateway.address}`)
25+
26+
const startBlock = taskArgs.startBlock ? parseInt(taskArgs.startBlock) : 0
27+
const endBlock = taskArgs.endBlock ? parseInt(taskArgs.endBlock) : 'latest'
28+
console.log(`Searching blocks from ${startBlock} to ${endBlock}`)
29+
30+
const events = (
31+
await gateway.queryFilter(gateway.filters.WithdrawalInitiated(), startBlock, endBlock)
32+
).map((e) => ({
33+
blockNumber: e.blockNumber,
34+
transactionHash: e.transactionHash,
35+
from: e.args.from,
36+
to: e.args.to,
37+
amount: ethers.utils.formatEther(e.args.amount),
38+
}))
39+
40+
printEvents(events)
41+
})
42+
43+
function printEvents(events: any[]) {
44+
const tablePrinter = new Table({
45+
columns: [
46+
{ name: 'blockNumber', color: 'green' },
47+
{
48+
name: 'transactionHash',
49+
color: 'green',
50+
},
51+
{ name: 'from', color: 'green' },
52+
{ name: 'to', color: 'green' },
53+
{ name: 'amount', color: 'green' },
54+
],
55+
})
56+
57+
events.map((e) => tablePrinter.addRow(e))
58+
tablePrinter.printTable()
59+
}

yarn.lock

+7
Original file line numberDiff line numberDiff line change
@@ -3544,6 +3544,13 @@ concat-stream@^1.5.1, concat-stream@^1.6.0, concat-stream@^1.6.2:
35443544
readable-stream "^2.2.2"
35453545
typedarray "^0.0.6"
35463546

3547+
console-table-printer@^2.11.1:
3548+
version "2.11.1"
3549+
resolved "https://registry.yarnpkg.com/console-table-printer/-/console-table-printer-2.11.1.tgz#c2dfe56e6343ea5bcfa3701a4be29fe912dbd9c7"
3550+
integrity sha512-8LfFpbF/BczoxPwo2oltto5bph8bJkGOATXsg3E9ddMJOGnWJciKHldx2zDj5XIBflaKzPfVCjOTl6tMh7lErg==
3551+
dependencies:
3552+
simple-wcswidth "^1.0.1"
3553+
35473554
console-table-printer@^2.9.0:
35483555
version "2.11.0"
35493556
resolved "https://registry.yarnpkg.com/console-table-printer/-/console-table-printer-2.11.0.tgz#704a74cb56d66267a2527f500fedcaa78ca76259"

0 commit comments

Comments
 (0)