Skip to content

Commit 4d61ae7

Browse files
authored
feat: add cdk monitor commands (#542)
1 parent 1844d54 commit 4d61ae7

File tree

8 files changed

+532
-96
lines changed

8 files changed

+532
-96
lines changed

cmd/cdk/bridge.go

+96-22
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ package cdk
33
import (
44
_ "embed"
55
"math/big"
6+
"reflect"
67
"time"
78

9+
"github.com/ethereum/go-ethereum"
810
"github.com/ethereum/go-ethereum/common"
911
"github.com/spf13/cobra"
1012
)
@@ -52,13 +54,22 @@ var bridgeMonitorCmd = &cobra.Command{
5254
}
5355

5456
type BridgeData struct {
55-
NetworkID uint32 `json:"networkID"`
57+
WETHToken common.Address `json:"wethToken"`
5658
DepositCount *big.Int `json:"depositCount"`
59+
GasTokenAddress common.Address `json:"gasTokenAddress"`
60+
GasTokenMetadata common.Hash `json:"gasTokenMetadata"`
61+
GasTokenNetwork uint32 `json:"gasTokenNetwork"`
62+
GetRoot common.Hash `json:"getRoot"`
63+
GlobalExitRootManager common.Address `json:"globalExitRootManager"`
5764
IsEmergencyState bool `json:"isEmergencyState"`
5865
LastUpdatedDepositCount uint32 `json:"lastUpdatedDepositCount"`
59-
GlobalExitRootManager common.Address `json:"globalExitRootManager"`
60-
// GetDepositRoot common.Hash `json:"getDepositRoot"`
61-
// PolygonZkEVMaddress common.Address `json:"polygonZkEVMaddress"`
66+
NetworkID uint32 `json:"networkID"`
67+
PolygonRollupManager common.Address `json:"polygonRollupManager"`
68+
}
69+
70+
type bridge struct {
71+
bridgeContractInterface
72+
instance reflect.Value
6273
}
6374

6475
type BridgeDumpData struct {
@@ -80,7 +91,7 @@ func bridgeInspect(cmd *cobra.Command) error {
8091
return err
8192
}
8293

83-
rollupManager, err := getRollupManager(cdkArgs, rpcClient, rollupManagerArgs.rollupManagerAddress)
94+
rollupManager, _, err := getRollupManager(cdkArgs, rpcClient, rollupManagerArgs.rollupManagerAddress)
8495
if err != nil {
8596
return err
8697
}
@@ -90,7 +101,7 @@ func bridgeInspect(cmd *cobra.Command) error {
90101
return err
91102
}
92103

93-
bridge, err := getBridge(cdkArgs, rpcClient, rollupManagerData.BridgeAddress)
104+
bridge, _, err := getBridge(cdkArgs, rpcClient, rollupManagerData.BridgeAddress)
94105
if err != nil {
95106
return err
96107
}
@@ -119,7 +130,7 @@ func bridgeDump(cmd *cobra.Command) error {
119130
return err
120131
}
121132

122-
rollupManager, err := getRollupManager(cdkArgs, rpcClient, rollupManagerArgs.rollupManagerAddress)
133+
rollupManager, _, err := getRollupManager(cdkArgs, rpcClient, rollupManagerArgs.rollupManagerAddress)
123134
if err != nil {
124135
return err
125136
}
@@ -129,7 +140,7 @@ func bridgeDump(cmd *cobra.Command) error {
129140
return err
130141
}
131142

132-
bridge, err := getBridge(cdkArgs, rpcClient, rollupManagerData.BridgeAddress)
143+
bridge, _, err := getBridge(cdkArgs, rpcClient, rollupManagerData.BridgeAddress)
133144
if err != nil {
134145
return err
135146
}
@@ -146,14 +157,52 @@ func bridgeDump(cmd *cobra.Command) error {
146157
}
147158

148159
func bridgeMonitor(cmd *cobra.Command) error {
149-
panic("not implemented")
160+
ctx := cmd.Context()
161+
162+
cdkArgs, err := cdkInputArgs.parseCDKArgs(ctx)
163+
if err != nil {
164+
return err
165+
}
166+
167+
rpcClient := mustGetRPCClient(ctx, cdkArgs.rpcURL)
168+
169+
rollupManagerArgs, err := cdkInputArgs.parseRollupManagerArgs(ctx, cdkArgs)
170+
if err != nil {
171+
return err
172+
}
173+
174+
rollupManager, _, err := getRollupManager(cdkArgs, rpcClient, rollupManagerArgs.rollupManagerAddress)
175+
if err != nil {
176+
return err
177+
}
178+
179+
rollupManagerData, err := getRollupManagerData(rollupManager)
180+
if err != nil {
181+
return err
182+
}
183+
184+
bridge, bridgeABI, err := getBridge(cdkArgs, rpcClient, rollupManagerData.BridgeAddress)
185+
if err != nil {
186+
return err
187+
}
188+
189+
filter := ethereum.FilterQuery{
190+
Addresses: []common.Address{rollupManagerData.BridgeAddress},
191+
}
192+
193+
err = watchNewLogs(ctx, rpcClient, filter, bridge.instance, bridgeABI)
194+
if err != nil {
195+
return err
196+
}
197+
198+
return nil
150199
}
151200

152201
func getBridgeData(bridge bridgeContractInterface) (*BridgeData, error) {
153202
data := &BridgeData{}
154203
var err error
155204

156-
data.NetworkID, err = bridge.NetworkID(nil)
205+
data.WETHToken, err = bridge.WETHToken(nil)
157206
if err != nil {
158207
return nil, err
159208
}
@@ -165,6 +214,37 @@ func getBridgeData(bridge bridgeContractInterface) (*BridgeData, error) {
165214
}
166215
time.Sleep(contractRequestInterval)
167216

217+
data.GasTokenAddress, err = bridge.GasTokenAddress(nil)
218+
if err != nil {
219+
return nil, err
220+
}
221+
time.Sleep(contractRequestInterval)
222+
223+
gasTokenMetadata, err := bridge.GasTokenMetadata(nil)
224+
if err != nil {
225+
return nil, err
226+
}
227+
time.Sleep(contractRequestInterval)
228+
data.GasTokenMetadata = common.BytesToHash(gasTokenMetadata)
229+
230+
data.GasTokenNetwork, err = bridge.GasTokenNetwork(nil)
231+
if err != nil {
232+
return nil, err
233+
}
234+
time.Sleep(contractRequestInterval)
235+
236+
data.GetRoot, err = bridge.GetRoot(nil)
237+
if err != nil {
238+
return nil, err
239+
}
240+
time.Sleep(contractRequestInterval)
241+
242+
data.GlobalExitRootManager, err = bridge.GlobalExitRootManager(nil)
243+
if err != nil {
244+
return nil, err
245+
}
246+
time.Sleep(contractRequestInterval)
247+
168248
data.IsEmergencyState, err = bridge.IsEmergencyState(nil)
169249
if err != nil {
170250
return nil, err
@@ -177,23 +257,17 @@ func getBridgeData(bridge bridgeContractInterface) (*BridgeData, error) {
177257
}
178258
time.Sleep(contractRequestInterval)
179259

180-
data.GlobalExitRootManager, err = bridge.GlobalExitRootManager(nil)
260+
data.NetworkID, err = bridge.NetworkID(nil)
181261
if err != nil {
182262
return nil, err
183263
}
184264
time.Sleep(contractRequestInterval)
185265

186-
// data.GetDepositRoot, err = bridge.GetDepositRoot(nil)
187-
// if err != nil {
188-
// return nil, err
189-
// }
190-
// time.Sleep(contractRequestInterval)
191-
192-
// data.PolygonZkEVMaddress, err = bridge.PolygonZkEVMaddress(nil)
193-
// if err != nil {
194-
// return nil, err
195-
// }
196-
// time.Sleep(contractRequestInterval)
266+
data.PolygonRollupManager, err = bridge.PolygonRollupManager(nil)
267+
if err != nil {
268+
return nil, err
269+
}
270+
time.Sleep(contractRequestInterval)
197271

198272
return data, nil
199273
}

0 commit comments

Comments
 (0)