Skip to content

Commit d0de8a9

Browse files
committed
add rollup sc to get rollup extra data
1 parent 7d670ea commit d0de8a9

File tree

6 files changed

+170
-60
lines changed

6 files changed

+170
-60
lines changed

cmd/cdk/bridge.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ func bridgeInspect(cmd *cobra.Command) error {
7575

7676
rpcClient := mustGetRPCClient(ctx, cdkArgs.rpcURL)
7777

78-
rollupManagerArgs, err := cdkInputArgs.parseRollupManagerArgs(ctx, *cdkArgs)
78+
rollupManagerArgs, err := cdkInputArgs.parseRollupManagerArgs(ctx, cdkArgs)
7979
if err != nil {
8080
return err
8181
}
@@ -100,7 +100,7 @@ func bridgeInspect(cmd *cobra.Command) error {
100100
return err
101101
}
102102

103-
mustLogJSONIndent(data)
103+
mustPrintJSONIndent(data)
104104
return nil
105105
}
106106

@@ -114,7 +114,7 @@ func bridgeDump(cmd *cobra.Command) error {
114114

115115
rpcClient := mustGetRPCClient(ctx, cdkArgs.rpcURL)
116116

117-
rollupManagerArgs, err := cdkInputArgs.parseRollupManagerArgs(ctx, *cdkArgs)
117+
rollupManagerArgs, err := cdkInputArgs.parseRollupManagerArgs(ctx, cdkArgs)
118118
if err != nil {
119119
return err
120120
}
@@ -141,7 +141,7 @@ func bridgeDump(cmd *cobra.Command) error {
141141
return err
142142
}
143143

144-
mustLogJSONIndent(data)
144+
mustPrintJSONIndent(data)
145145
return nil
146146
}
147147

cmd/cdk/cdk.go

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,17 @@ import (
1616
"github.com/rs/zerolog/log"
1717
"github.com/spf13/cobra"
1818

19+
banana_rollup "github.com/0xPolygon/cdk-contracts-tooling/contracts/banana/polygonrollupbaseetrog"
1920
banana_rollup_manager "github.com/0xPolygon/cdk-contracts-tooling/contracts/banana/polygonrollupmanager"
2021
banana_bridge "github.com/0xPolygon/cdk-contracts-tooling/contracts/banana/polygonzkevmbridge"
2122
banana_ger "github.com/0xPolygon/cdk-contracts-tooling/contracts/banana/polygonzkevmglobalexitroot"
2223

24+
elderberry_rollup "github.com/0xPolygon/cdk-contracts-tooling/contracts/elderberry/polygonrollupbaseetrog"
2325
elderberry_rollup_manager "github.com/0xPolygon/cdk-contracts-tooling/contracts/elderberry/polygonrollupmanager"
2426
elderberry_bridge "github.com/0xPolygon/cdk-contracts-tooling/contracts/elderberry/polygonzkevmbridge"
2527
elderberry_ger "github.com/0xPolygon/cdk-contracts-tooling/contracts/elderberry/polygonzkevmglobalexitroot"
2628

29+
etrog_rollup "github.com/0xPolygon/cdk-contracts-tooling/contracts/etrog/polygonrollupbaseetrog"
2730
etrog_rollup_manager "github.com/0xPolygon/cdk-contracts-tooling/contracts/etrog/polygonrollupmanager"
2831
etrog_bridge "github.com/0xPolygon/cdk-contracts-tooling/contracts/etrog/polygonzkevmbridge"
2932
etrog_ger "github.com/0xPolygon/cdk-contracts-tooling/contracts/etrog/polygonzkevmglobalexitroot"
@@ -134,15 +137,15 @@ func checkAddressArg(argFlagName, address string) error {
134137
return nil
135138
}
136139

137-
func (inputArgs *inputArgs) parseCDKArgs(ctx context.Context) (*parsedCDKArgs, error) {
138-
args := &parsedCDKArgs{}
140+
func (inputArgs *inputArgs) parseCDKArgs(ctx context.Context) (parsedCDKArgs, error) {
141+
args := parsedCDKArgs{}
139142

140143
args.rpcURL = *inputArgs.rpcURL
141144

142145
if inputArgs.forkID != nil && len(*inputArgs.forkID) > 0 {
143146
_, found := knownForks[*inputArgs.forkID]
144147
if !found {
145-
return nil, invalidForkIDErr()
148+
return parsedCDKArgs{}, invalidForkIDErr()
146149
}
147150
args.forkID = knownForks[*inputArgs.forkID]
148151
}
@@ -225,7 +228,7 @@ func mustGetRPCClient(ctx context.Context, rpcURL string) *ethclient.Client {
225228
return rpcClient
226229
}
227230

228-
func getRollupManager(cdkArgs *parsedCDKArgs, rpcClient *ethclient.Client, addr common.Address) (rollupManagerContractInterface, error) {
231+
func getRollupManager(cdkArgs parsedCDKArgs, rpcClient *ethclient.Client, addr common.Address) (rollupManagerContractInterface, error) {
229232
var rollupManager rollupManagerContractInterface
230233
var err error
231234
switch cdkArgs.forkID {
@@ -250,7 +253,32 @@ func getRollupManager(cdkArgs *parsedCDKArgs, rpcClient *ethclient.Client, addr
250253
return rollupManager, nil
251254
}
252255

253-
func getBridge(cdkArgs *parsedCDKArgs, rpcClient *ethclient.Client, addr common.Address) (bridgeContractInterface, error) {
256+
func getRollup(cdkArgs parsedCDKArgs, rpcClient *ethclient.Client, addr common.Address) (rollupContractInterface, error) {
257+
var rollup rollupContractInterface
258+
var err error
259+
switch cdkArgs.forkID {
260+
case etrog:
261+
rollup, err = etrog_rollup.NewPolygonrollupbaseetrog(addr, rpcClient)
262+
if err != nil {
263+
return nil, err
264+
}
265+
case elderberry:
266+
rollup, err = elderberry_rollup.NewPolygonrollupbaseetrog(addr, rpcClient)
267+
if err != nil {
268+
return nil, err
269+
}
270+
case banana:
271+
rollup, err = banana_rollup.NewPolygonrollupbaseetrog(addr, rpcClient)
272+
if err != nil {
273+
return nil, err
274+
}
275+
default:
276+
return nil, invalidForkIDErr()
277+
}
278+
return rollup, nil
279+
}
280+
281+
func getBridge(cdkArgs parsedCDKArgs, rpcClient *ethclient.Client, addr common.Address) (bridgeContractInterface, error) {
254282
var bridge bridgeContractInterface
255283
var err error
256284
switch cdkArgs.forkID {
@@ -275,7 +303,7 @@ func getBridge(cdkArgs *parsedCDKArgs, rpcClient *ethclient.Client, addr common.
275303
return bridge, nil
276304
}
277305

278-
func getGER(cdkArgs *parsedCDKArgs, rpcClient *ethclient.Client, addr common.Address) (gerContractInterface, error) {
306+
func getGER(cdkArgs parsedCDKArgs, rpcClient *ethclient.Client, addr common.Address) (gerContractInterface, error) {
279307
var ger gerContractInterface
280308
var err error
281309
switch cdkArgs.forkID {
@@ -300,12 +328,12 @@ func getGER(cdkArgs *parsedCDKArgs, rpcClient *ethclient.Client, addr common.Add
300328
return ger, nil
301329
}
302330

303-
func mustLogJSONIndent(v any) {
331+
func mustPrintJSONIndent(v any) {
304332
b, err := json.MarshalIndent(v, "", " ")
305333
if err != nil {
306334
panic(err)
307335
}
308-
log.Info().Msgf("%s", string(b))
336+
fmt.Printf("%s\n", string(b))
309337
}
310338

311339
func invalidForkIDErr() error {

cmd/cdk/ger.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ func gerInspect(cmd *cobra.Command) error {
7272

7373
rpcClient := mustGetRPCClient(ctx, cdkArgs.rpcURL)
7474

75-
rollupManagerArgs, err := cdkInputArgs.parseRollupManagerArgs(ctx, *cdkArgs)
75+
rollupManagerArgs, err := cdkInputArgs.parseRollupManagerArgs(ctx, cdkArgs)
7676
if err != nil {
7777
return err
7878
}
@@ -107,7 +107,7 @@ func gerInspect(cmd *cobra.Command) error {
107107
return err
108108
}
109109

110-
mustLogJSONIndent(data)
110+
mustPrintJSONIndent(data)
111111
return nil
112112
}
113113

@@ -121,7 +121,7 @@ func gerDump(cmd *cobra.Command) error {
121121

122122
rpcClient := mustGetRPCClient(ctx, cdkArgs.rpcURL)
123123

124-
rollupManagerArgs, err := cdkInputArgs.parseRollupManagerArgs(ctx, *cdkArgs)
124+
rollupManagerArgs, err := cdkInputArgs.parseRollupManagerArgs(ctx, cdkArgs)
125125
if err != nil {
126126
return err
127127
}
@@ -158,7 +158,7 @@ func gerDump(cmd *cobra.Command) error {
158158
return err
159159
}
160160

161-
mustLogJSONIndent(data)
161+
mustPrintJSONIndent(data)
162162
return nil
163163
}
164164

cmd/cdk/interfaces.go

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,40 @@ type rollupManagerContractInterface interface {
6262
}, error)
6363
}
6464

65+
type rollupContractInterface interface {
66+
GLOBALEXITROOTMANAGERL2(opts *bind.CallOpts) (common.Address, error)
67+
INITIALIZETXBRIDGELISTLENLEN(opts *bind.CallOpts) (uint8, error)
68+
INITIALIZETXBRIDGEPARAMS(opts *bind.CallOpts) ([]byte, error)
69+
INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESS(opts *bind.CallOpts) ([]byte, error)
70+
INITIALIZETXBRIDGEPARAMSAFTERBRIDGEADDRESSEMPTYMETADATA(opts *bind.CallOpts) ([]byte, error)
71+
INITIALIZETXCONSTANTBYTES(opts *bind.CallOpts) (uint16, error)
72+
INITIALIZETXCONSTANTBYTESEMPTYMETADATA(opts *bind.CallOpts) (uint16, error)
73+
INITIALIZETXDATALENEMPTYMETADATA(opts *bind.CallOpts) (uint8, error)
74+
INITIALIZETXEFFECTIVEPERCENTAGE(opts *bind.CallOpts) ([1]byte, error)
75+
SIGNATUREINITIALIZETXR(opts *bind.CallOpts) ([32]byte, error)
76+
SIGNATUREINITIALIZETXS(opts *bind.CallOpts) ([32]byte, error)
77+
SIGNATUREINITIALIZETXV(opts *bind.CallOpts) (uint8, error)
78+
Admin(opts *bind.CallOpts) (common.Address, error)
79+
BridgeAddress(opts *bind.CallOpts) (common.Address, error)
80+
CalculatePolPerForceBatch(opts *bind.CallOpts) (*big.Int, error)
81+
ForceBatchAddress(opts *bind.CallOpts) (common.Address, error)
82+
ForceBatchTimeout(opts *bind.CallOpts) (uint64, error)
83+
ForcedBatches(opts *bind.CallOpts, arg0 uint64) ([32]byte, error)
84+
GasTokenAddress(opts *bind.CallOpts) (common.Address, error)
85+
GasTokenNetwork(opts *bind.CallOpts) (uint32, error)
86+
GenerateInitializeTransaction(opts *bind.CallOpts, networkID uint32, _gasTokenAddress common.Address, _gasTokenNetwork uint32, _gasTokenMetadata []byte) ([]byte, error)
87+
GlobalExitRootManager(opts *bind.CallOpts) (common.Address, error)
88+
LastAccInputHash(opts *bind.CallOpts) ([32]byte, error)
89+
LastForceBatch(opts *bind.CallOpts) (uint64, error)
90+
LastForceBatchSequenced(opts *bind.CallOpts) (uint64, error)
91+
NetworkName(opts *bind.CallOpts) (string, error)
92+
PendingAdmin(opts *bind.CallOpts) (common.Address, error)
93+
Pol(opts *bind.CallOpts) (common.Address, error)
94+
RollupManager(opts *bind.CallOpts) (common.Address, error)
95+
TrustedSequencer(opts *bind.CallOpts) (common.Address, error)
96+
TrustedSequencerURL(opts *bind.CallOpts) (string, error)
97+
}
98+
6599
type bridgeContractInterface interface {
66100
ClaimedBitMap(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error)
67101
DepositCount(opts *bind.CallOpts) (*big.Int, error)

cmd/cdk/rollup.go

Lines changed: 76 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ package cdk
22

33
import (
44
_ "embed"
5+
"time"
56

67
"github.com/ethereum/go-ethereum/common"
8+
"github.com/ethereum/go-ethereum/ethclient"
79
"github.com/spf13/cobra"
810
)
911

@@ -53,6 +55,7 @@ var rollupMonitorCmd = &cobra.Command{
5355
}
5456

5557
type RollupData struct {
58+
// from rollup manager sc
5659
RollupContract common.Address `json:"rollupContract"`
5760
ChainID uint64 `json:"chainID"`
5861
Verifier common.Address `json:"verifier"`
@@ -65,6 +68,15 @@ type RollupData struct {
6568
LastVerifiedBatchBeforeUpgrade uint64 `json:"lastVerifiedBatchBeforeUpgrade"`
6669
RollupTypeID uint64 `json:"rollupTypeID"`
6770
RollupCompatibilityID uint8 `json:"rollupCompatibilityID"`
71+
72+
// from rollup sc
73+
Admin common.Address `json:"admin"`
74+
GasTokenAddress common.Address `json:"gasTokenAddress"`
75+
GasTokenNetwork uint32 `json:"gasTokenNetwork"`
76+
LastAccInputHash common.Hash `json:"lastAccInputHash"`
77+
NetworkName string `json:"networkName"`
78+
TrustedSequencer common.Address `json:"trustedSequencer"`
79+
TrustedSequencerURL string `json:"trustedSequencerURL"`
6880
}
6981

7082
type RollupTypeData struct {
@@ -91,7 +103,7 @@ func rollupInspect(cmd *cobra.Command) error {
91103

92104
rpcClient := mustGetRPCClient(ctx, cdkArgs.rpcURL)
93105

94-
rollupManagerArgs, err := cdkInputArgs.parseRollupManagerArgs(ctx, *cdkArgs)
106+
rollupManagerArgs, err := cdkInputArgs.parseRollupManagerArgs(ctx, cdkArgs)
95107
if err != nil {
96108
return err
97109
}
@@ -106,12 +118,12 @@ func rollupInspect(cmd *cobra.Command) error {
106118
return err
107119
}
108120

109-
data, err := getRollupData(rollupManager, rollupArgs.rollupID)
121+
data, err := getRollupData(cdkArgs, rpcClient, rollupManager, rollupArgs.rollupID)
110122
if err != nil {
111123
return err
112124
}
113125

114-
mustLogJSONIndent(data)
126+
mustPrintJSONIndent(data)
115127
return nil
116128
}
117129

@@ -125,7 +137,7 @@ func rollupDump(cmd *cobra.Command) error {
125137

126138
rpcClient := mustGetRPCClient(ctx, cdkArgs.rpcURL)
127139

128-
rollupManagerArgs, err := cdkInputArgs.parseRollupManagerArgs(ctx, *cdkArgs)
140+
rollupManagerArgs, err := cdkInputArgs.parseRollupManagerArgs(ctx, cdkArgs)
129141
if err != nil {
130142
return err
131143
}
@@ -142,17 +154,17 @@ func rollupDump(cmd *cobra.Command) error {
142154

143155
data := &RollupDumpData{}
144156

145-
data.Data, err = getRollupData(rollupManager, rollupArgs.rollupID)
157+
data.Data, err = getRollupData(cdkArgs, rpcClient, rollupManager, rollupArgs.rollupID)
146158
if err != nil {
147159
return err
148160
}
149161

150-
data.Type, err = getRollupType(rollupManager, data.Data.RollupTypeID)
162+
data.Type, err = getRollupTypeData(rollupManager, data.Data.RollupTypeID)
151163
if err != nil {
152164
return err
153165
}
154166

155-
mustLogJSONIndent(data)
167+
mustPrintJSONIndent(data)
156168

157169
return nil
158170
}
@@ -161,12 +173,59 @@ func rollupMonitor(cmd *cobra.Command) error {
161173
panic("not implemented")
162174
}
163175

164-
func getRollupData(rollupManager rollupManagerContractInterface, rollupID uint32) (*RollupData, error) {
176+
func getRollupData(cdkArgs parsedCDKArgs, rpcClient *ethclient.Client, rollupManager rollupManagerContractInterface, rollupID uint32) (*RollupData, error) {
165177
rollupData, err := rollupManager.RollupIDToRollupData(nil, rollupID)
166178
if err != nil {
167179
return nil, err
168180
}
169181

182+
rollup, err := getRollup(cdkArgs, rpcClient, rollupData.RollupContract)
183+
if err != nil {
184+
return nil, err
185+
}
186+
187+
admin, err := rollup.Admin(nil)
188+
if err != nil {
189+
return nil, err
190+
}
191+
time.Sleep(contractRequestInterval)
192+
193+
gasTokenAddress, err := rollup.GasTokenAddress(nil)
194+
if err != nil {
195+
return nil, err
196+
}
197+
time.Sleep(contractRequestInterval)
198+
199+
gasTokenNetwork, err := rollup.GasTokenNetwork(nil)
200+
if err != nil {
201+
return nil, err
202+
}
203+
time.Sleep(contractRequestInterval)
204+
205+
lastAccInputHash, err := rollup.LastAccInputHash(nil)
206+
if err != nil {
207+
return nil, err
208+
}
209+
time.Sleep(contractRequestInterval)
210+
211+
networkName, err := rollup.NetworkName(nil)
212+
if err != nil {
213+
return nil, err
214+
}
215+
time.Sleep(contractRequestInterval)
216+
217+
trustedSequencer, err := rollup.TrustedSequencer(nil)
218+
if err != nil {
219+
return nil, err
220+
}
221+
time.Sleep(contractRequestInterval)
222+
223+
trustedSequencerURL, err := rollup.TrustedSequencerURL(nil)
224+
if err != nil {
225+
return nil, err
226+
}
227+
time.Sleep(contractRequestInterval)
228+
170229
return &RollupData{
171230
RollupContract: rollupData.RollupContract,
172231
ChainID: rollupData.ChainID,
@@ -180,10 +239,18 @@ func getRollupData(rollupManager rollupManagerContractInterface, rollupID uint32
180239
LastVerifiedBatchBeforeUpgrade: rollupData.LastVerifiedBatchBeforeUpgrade,
181240
RollupTypeID: rollupData.RollupTypeID,
182241
RollupCompatibilityID: rollupData.RollupCompatibilityID,
242+
243+
Admin: admin,
244+
GasTokenAddress: gasTokenAddress,
245+
GasTokenNetwork: gasTokenNetwork,
246+
LastAccInputHash: lastAccInputHash,
247+
NetworkName: networkName,
248+
TrustedSequencer: trustedSequencer,
249+
TrustedSequencerURL: trustedSequencerURL,
183250
}, nil
184251
}
185252

186-
func getRollupType(rollupManager rollupManagerContractInterface, rollupTypeID uint64) (*RollupTypeData, error) {
253+
func getRollupTypeData(rollupManager rollupManagerContractInterface, rollupTypeID uint64) (*RollupTypeData, error) {
187254
rollupType, err := rollupManager.RollupTypeMap(nil, uint32(rollupTypeID))
188255
if err != nil {
189256
return nil, err

0 commit comments

Comments
 (0)