@@ -3,8 +3,10 @@ package cdk
3
3
import (
4
4
_ "embed"
5
5
"math/big"
6
+ "reflect"
6
7
"time"
7
8
9
+ "github.com/ethereum/go-ethereum"
8
10
"github.com/ethereum/go-ethereum/common"
9
11
"github.com/spf13/cobra"
10
12
)
@@ -52,13 +54,22 @@ var bridgeMonitorCmd = &cobra.Command{
52
54
}
53
55
54
56
type BridgeData struct {
55
- NetworkID uint32 `json:"networkID "`
57
+ WETHToken common. Address `json:"wethToken "`
56
58
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"`
57
64
IsEmergencyState bool `json:"isEmergencyState"`
58
65
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
62
73
}
63
74
64
75
type BridgeDumpData struct {
@@ -80,7 +91,7 @@ func bridgeInspect(cmd *cobra.Command) error {
80
91
return err
81
92
}
82
93
83
- rollupManager , err := getRollupManager (cdkArgs , rpcClient , rollupManagerArgs .rollupManagerAddress )
94
+ rollupManager , _ , err := getRollupManager (cdkArgs , rpcClient , rollupManagerArgs .rollupManagerAddress )
84
95
if err != nil {
85
96
return err
86
97
}
@@ -90,7 +101,7 @@ func bridgeInspect(cmd *cobra.Command) error {
90
101
return err
91
102
}
92
103
93
- bridge , err := getBridge (cdkArgs , rpcClient , rollupManagerData .BridgeAddress )
104
+ bridge , _ , err := getBridge (cdkArgs , rpcClient , rollupManagerData .BridgeAddress )
94
105
if err != nil {
95
106
return err
96
107
}
@@ -119,7 +130,7 @@ func bridgeDump(cmd *cobra.Command) error {
119
130
return err
120
131
}
121
132
122
- rollupManager , err := getRollupManager (cdkArgs , rpcClient , rollupManagerArgs .rollupManagerAddress )
133
+ rollupManager , _ , err := getRollupManager (cdkArgs , rpcClient , rollupManagerArgs .rollupManagerAddress )
123
134
if err != nil {
124
135
return err
125
136
}
@@ -129,7 +140,7 @@ func bridgeDump(cmd *cobra.Command) error {
129
140
return err
130
141
}
131
142
132
- bridge , err := getBridge (cdkArgs , rpcClient , rollupManagerData .BridgeAddress )
143
+ bridge , _ , err := getBridge (cdkArgs , rpcClient , rollupManagerData .BridgeAddress )
133
144
if err != nil {
134
145
return err
135
146
}
@@ -146,14 +157,52 @@ func bridgeDump(cmd *cobra.Command) error {
146
157
}
147
158
148
159
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
150
199
}
151
200
152
201
func getBridgeData (bridge bridgeContractInterface ) (* BridgeData , error ) {
153
202
data := & BridgeData {}
154
203
var err error
155
204
156
- data .NetworkID , err = bridge .NetworkID (nil )
205
+ data .WETHToken , err = bridge .WETHToken (nil )
157
206
if err != nil {
158
207
return nil , err
159
208
}
@@ -165,6 +214,37 @@ func getBridgeData(bridge bridgeContractInterface) (*BridgeData, error) {
165
214
}
166
215
time .Sleep (contractRequestInterval )
167
216
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
+
168
248
data .IsEmergencyState , err = bridge .IsEmergencyState (nil )
169
249
if err != nil {
170
250
return nil , err
@@ -177,23 +257,17 @@ func getBridgeData(bridge bridgeContractInterface) (*BridgeData, error) {
177
257
}
178
258
time .Sleep (contractRequestInterval )
179
259
180
- data .GlobalExitRootManager , err = bridge .GlobalExitRootManager (nil )
260
+ data .NetworkID , err = bridge .NetworkID (nil )
181
261
if err != nil {
182
262
return nil , err
183
263
}
184
264
time .Sleep (contractRequestInterval )
185
265
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 )
197
271
198
272
return data , nil
199
273
}
0 commit comments