Skip to content

Commit 2e52f4b

Browse files
improve cdk rollup commands to detect and print validium information (#563)
* improve cdk rollup command to detect and print validium information * linter fixes --------- Co-authored-by: John Hilliard <[email protected]>
1 parent 13b49b5 commit 2e52f4b

File tree

4 files changed

+278
-45
lines changed

4 files changed

+278
-45
lines changed

cmd/cdk/cdk.go

+97-4
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,24 @@ import (
2121
"github.com/rs/zerolog/log"
2222
"github.com/spf13/cobra"
2323

24+
banana_committee "github.com/0xPolygon/cdk-contracts-tooling/contracts/banana/polygondatacommittee"
2425
banana_rollup "github.com/0xPolygon/cdk-contracts-tooling/contracts/banana/polygonrollupbaseetrog"
2526
banana_rollup_manager "github.com/0xPolygon/cdk-contracts-tooling/contracts/banana/polygonrollupmanager"
27+
banana_validium "github.com/0xPolygon/cdk-contracts-tooling/contracts/banana/polygonvalidiumetrog"
2628
banana_bridge "github.com/0xPolygon/cdk-contracts-tooling/contracts/banana/polygonzkevmbridgev2"
2729
banana_ger "github.com/0xPolygon/cdk-contracts-tooling/contracts/banana/polygonzkevmglobalexitrootv2"
2830

31+
elderberry_committee "github.com/0xPolygon/cdk-contracts-tooling/contracts/elderberry/polygondatacommittee"
2932
elderberry_rollup "github.com/0xPolygon/cdk-contracts-tooling/contracts/elderberry/polygonrollupbaseetrog"
3033
elderberry_rollup_manager "github.com/0xPolygon/cdk-contracts-tooling/contracts/elderberry/polygonrollupmanager"
34+
elderberry_validium "github.com/0xPolygon/cdk-contracts-tooling/contracts/elderberry/polygonvalidiumetrog"
3135
elderberry_bridge "github.com/0xPolygon/cdk-contracts-tooling/contracts/elderberry/polygonzkevmbridgev2"
3236
elderberry_ger "github.com/0xPolygon/cdk-contracts-tooling/contracts/elderberry/polygonzkevmglobalexitrootv2"
3337

38+
etrog_committee "github.com/0xPolygon/cdk-contracts-tooling/contracts/etrog/polygondatacommittee"
3439
etrog_rollup "github.com/0xPolygon/cdk-contracts-tooling/contracts/etrog/polygonrollupbaseetrog"
3540
etrog_rollup_manager "github.com/0xPolygon/cdk-contracts-tooling/contracts/etrog/polygonrollupmanager"
41+
etrog_validium "github.com/0xPolygon/cdk-contracts-tooling/contracts/etrog/polygonvalidiumetrog"
3642
etrog_bridge "github.com/0xPolygon/cdk-contracts-tooling/contracts/etrog/polygonzkevmbridgev2"
3743
etrog_ger "github.com/0xPolygon/cdk-contracts-tooling/contracts/etrog/polygonzkevmglobalexitrootv2"
3844
)
@@ -65,7 +71,10 @@ const (
6571
contractRequestInterval = 200 * time.Millisecond
6672
)
6773

68-
var ErrRollupNotFound = errors.New("rollup not found")
74+
var (
75+
ErrRollupNotFound = errors.New("rollup not found")
76+
ErrMethodNotSupported = errors.New("method not supported")
77+
)
6978

7079
var (
7180
knownRollupManagerAddresses = map[string]string{
@@ -285,13 +294,28 @@ func getRollup(cdkArgs parsedCDKArgs, rpcClient *ethclient.Client, addr common.A
285294
var contract *rollup
286295
var contractABI *abi.ABI
287296
log.Info().Stringer("addr", addr).Msg("Getting rollup")
297+
288298
switch cdkArgs.forkID {
289299
case etrog:
290300
contractInstance, err := etrog_rollup.NewPolygonrollupbaseetrog(addr, rpcClient)
291301
if err != nil {
292302
return nil, nil, err
293303
}
294-
contract = &rollup{contractInstance, reflect.ValueOf(contractInstance)}
304+
305+
validiumContractInstance, err := etrog_validium.NewPolygonvalidiumetrog(addr, rpcClient)
306+
if err != nil {
307+
return nil, nil, err
308+
}
309+
_, err = validiumContractInstance.DataAvailabilityProtocol(nil)
310+
if err != nil {
311+
if err.Error() == "execution reverted" {
312+
validiumContractInstance = nil
313+
} else {
314+
return nil, nil, err
315+
}
316+
}
317+
318+
contract = &rollup{contractInstance, validiumContractInstance, reflect.ValueOf(contractInstance)}
295319
contractABI, err = etrog_rollup.PolygonrollupbaseetrogMetaData.GetAbi()
296320
if err != nil {
297321
return nil, nil, err
@@ -301,7 +325,21 @@ func getRollup(cdkArgs parsedCDKArgs, rpcClient *ethclient.Client, addr common.A
301325
if err != nil {
302326
return nil, nil, err
303327
}
304-
contract = &rollup{contractInstance, reflect.ValueOf(contractInstance)}
328+
329+
validiumContractInstance, err := elderberry_validium.NewPolygonvalidiumetrog(addr, rpcClient)
330+
if err != nil {
331+
return nil, nil, err
332+
}
333+
_, err = validiumContractInstance.DataAvailabilityProtocol(nil)
334+
if err != nil {
335+
if err.Error() == "execution reverted" {
336+
validiumContractInstance = nil
337+
} else {
338+
return nil, nil, err
339+
}
340+
}
341+
342+
contract = &rollup{contractInstance, validiumContractInstance, reflect.ValueOf(contractInstance)}
305343
contractABI, err = elderberry_rollup.PolygonrollupbaseetrogMetaData.GetAbi()
306344
if err != nil {
307345
return nil, nil, err
@@ -311,7 +349,21 @@ func getRollup(cdkArgs parsedCDKArgs, rpcClient *ethclient.Client, addr common.A
311349
if err != nil {
312350
return nil, nil, err
313351
}
314-
contract = &rollup{contractInstance, reflect.ValueOf(contractInstance)}
352+
353+
validiumContractInstance, err := banana_validium.NewPolygonvalidiumetrog(addr, rpcClient)
354+
if err != nil {
355+
return nil, nil, err
356+
}
357+
_, err = validiumContractInstance.DataAvailabilityProtocol(nil)
358+
if err != nil {
359+
if err.Error() == "execution reverted" {
360+
validiumContractInstance = nil
361+
} else {
362+
return nil, nil, err
363+
}
364+
}
365+
366+
contract = &rollup{contractInstance, validiumContractInstance, reflect.ValueOf(contractInstance)}
315367
contractABI, err = banana_rollup.PolygonrollupbaseetrogMetaData.GetAbi()
316368
if err != nil {
317369
return nil, nil, err
@@ -322,6 +374,47 @@ func getRollup(cdkArgs parsedCDKArgs, rpcClient *ethclient.Client, addr common.A
322374
return contract, contractABI, nil
323375
}
324376

377+
func getCommittee(cdkArgs parsedCDKArgs, rpcClient *ethclient.Client, addr common.Address) (*committee, *abi.ABI, error) {
378+
var contract *committee
379+
var contractABI *abi.ABI
380+
log.Info().Stringer("addr", addr).Msg("Getting committee")
381+
switch cdkArgs.forkID {
382+
case etrog:
383+
contractInstance, err := etrog_committee.NewPolygondatacommittee(addr, rpcClient)
384+
if err != nil {
385+
return nil, nil, err
386+
}
387+
contract = &committee{contractInstance, reflect.ValueOf(contractInstance)}
388+
contractABI, err = etrog_committee.PolygondatacommitteeMetaData.GetAbi()
389+
if err != nil {
390+
return nil, nil, err
391+
}
392+
case elderberry:
393+
contractInstance, err := elderberry_committee.NewPolygondatacommittee(addr, rpcClient)
394+
if err != nil {
395+
return nil, nil, err
396+
}
397+
contract = &committee{contractInstance, reflect.ValueOf(contractInstance)}
398+
contractABI, err = elderberry_committee.PolygondatacommitteeMetaData.GetAbi()
399+
if err != nil {
400+
return nil, nil, err
401+
}
402+
case banana:
403+
contractInstance, err := banana_committee.NewPolygondatacommittee(addr, rpcClient)
404+
if err != nil {
405+
return nil, nil, err
406+
}
407+
contract = &committee{contractInstance, reflect.ValueOf(contractInstance)}
408+
contractABI, err = banana_committee.PolygondatacommitteeMetaData.GetAbi()
409+
if err != nil {
410+
return nil, nil, err
411+
}
412+
default:
413+
return nil, nil, invalidForkIDErr()
414+
}
415+
return contract, contractABI, nil
416+
}
417+
325418
func getBridge(cdkArgs parsedCDKArgs, rpcClient *ethclient.Client, addr common.Address) (*bridge, *abi.ABI, error) {
326419
var contract *bridge
327420
var contractABI *abi.ABI

cmd/cdk/interfaces.go

+17-12
Original file line numberDiff line numberDiff line change
@@ -63,18 +63,6 @@ type rollupManagerContractInterface interface {
6363
}
6464

6565
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)
7866
Admin(opts *bind.CallOpts) (common.Address, error)
7967
BridgeAddress(opts *bind.CallOpts) (common.Address, error)
8068
CalculatePolPerForceBatch(opts *bind.CallOpts) (*big.Int, error)
@@ -96,6 +84,23 @@ type rollupContractInterface interface {
9684
TrustedSequencerURL(opts *bind.CallOpts) (string, error)
9785
}
9886

87+
type validiumContractInterface interface {
88+
DataAvailabilityProtocol(opts *bind.CallOpts) (common.Address, error)
89+
IsSequenceWithDataAvailabilityAllowed(opts *bind.CallOpts) (bool, error)
90+
}
91+
92+
type committeeContractInterface interface {
93+
CommitteeHash(opts *bind.CallOpts) ([32]byte, error)
94+
GetAmountOfMembers(opts *bind.CallOpts) (*big.Int, error)
95+
GetProcotolName(opts *bind.CallOpts) (string, error)
96+
Members(opts *bind.CallOpts, arg0 *big.Int) (struct {
97+
Url string
98+
Addr common.Address
99+
}, error)
100+
Owner(opts *bind.CallOpts) (common.Address, error)
101+
RequiredAmountOfSignatures(opts *bind.CallOpts) (*big.Int, error)
102+
}
103+
99104
type bridgeContractInterface interface {
100105
WETHToken(opts *bind.CallOpts) (common.Address, error)
101106
DepositCount(opts *bind.CallOpts) (*big.Int, error)

0 commit comments

Comments
 (0)