From 659dce5fd5f9e714d1074719303b29ea870fb000 Mon Sep 17 00:00:00 2001 From: gavin Date: Tue, 5 Nov 2024 09:40:37 +0800 Subject: [PATCH 1/5] test --- .github/workflows/taiko-client--docker.yml | 2 +- .../taiko-client/bindings/gen_taiko_l1.go | 25 +++++++++++++++++++ packages/taiko-client/pkg/rpc/utils.go | 9 ++++++- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/.github/workflows/taiko-client--docker.yml b/.github/workflows/taiko-client--docker.yml index aaeb9efe684..2722ced0071 100644 --- a/.github/workflows/taiko-client--docker.yml +++ b/.github/workflows/taiko-client--docker.yml @@ -2,7 +2,7 @@ name: "Build and Push Multi-Arch Docker Image" on: push: - branches: [main] + branches: [test1] tags: - "taiko-client-v*" paths: diff --git a/packages/taiko-client/bindings/gen_taiko_l1.go b/packages/taiko-client/bindings/gen_taiko_l1.go index 1bf4df704ef..8b975b5cd2d 100644 --- a/packages/taiko-client/bindings/gen_taiko_l1.go +++ b/packages/taiko-client/bindings/gen_taiko_l1.go @@ -143,6 +143,16 @@ type TaikoDataSlotB struct { LastUnpausedAt uint64 } +type TaikoDataSlotBV1 struct { + NumBlocks uint64 + LastVerifiedBlockId uint64 + ProvingPaused bool + ReservedB1 uint8 + ReservedB2 uint16 + ReservedB3 uint32 + LastUnpausedAt uint64 +} + // TaikoDataTransition is an auto generated low-level Go binding around an user-defined struct. type TaikoDataTransition struct { ParentHash [32]byte @@ -599,6 +609,21 @@ func (_TaikoL1Client *TaikoL1ClientCaller) GetStateVariables(opts *bind.CallOpts } +func (_TaikoL1Client *TaikoL1ClientCaller) GetStateVariablesV1(opts *bind.CallOpts) (TaikoDataSlotA, TaikoDataSlotBV1, error) { + var out []interface{} + err := _TaikoL1Client.contract.Call(opts, &out, "getStateVariables") + + if err != nil { + return *new(TaikoDataSlotA), *new(TaikoDataSlotBV1), err + } + + out0 := *abi.ConvertType(out[0], new(TaikoDataSlotA)).(*TaikoDataSlotA) + out1 := *abi.ConvertType(out[1], new(TaikoDataSlotB)).(*TaikoDataSlotBV1) + + return out0, out1, err + +} + // GetStateVariables is a free data retrieval call binding the contract method 0xdde89cf5. // // Solidity: function getStateVariables() view returns((uint64,uint64,uint64,uint64), (uint64,uint64,bool,uint56,uint64)) diff --git a/packages/taiko-client/pkg/rpc/utils.go b/packages/taiko-client/pkg/rpc/utils.go index 78f35b62022..7d8cd99fdc6 100644 --- a/packages/taiko-client/pkg/rpc/utils.go +++ b/packages/taiko-client/pkg/rpc/utils.go @@ -2,6 +2,7 @@ package rpc import ( "context" + "errors" "math/big" "os" "os/signal" @@ -31,6 +32,7 @@ var ( syscall.SIGTERM, syscall.SIGQUIT, } + ErrSlotBMarshal = errors.New("abi: cannot marshal in to go type: length insufficient 160 require 192") ) // GetProtocolConfigs gets the protocol configs from TaikoL1 contract. @@ -65,7 +67,12 @@ func GetProtocolStateVariables( slotA, slotB, err := taikoL1Client.GetStateVariables(opts) if err != nil { - return nil, err + if errors.Is(err, ErrSlotBMarshal) { + slotA, slotB, err = taikoL1Client.GetStateVariables(opts) + } + if err != nil { + return nil, err + } } return &struct { A bindings.TaikoDataSlotA From ef49fd9f3b1ceb545d049131a44361f214c448d2 Mon Sep 17 00:00:00 2001 From: gavin Date: Tue, 5 Nov 2024 10:41:49 +0800 Subject: [PATCH 2/5] feat(taiko-client): compatible changes for `lastProposedIn` --- .github/workflows/taiko-client--docker.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/taiko-client--docker.yml b/.github/workflows/taiko-client--docker.yml index 2722ced0071..aaeb9efe684 100644 --- a/.github/workflows/taiko-client--docker.yml +++ b/.github/workflows/taiko-client--docker.yml @@ -2,7 +2,7 @@ name: "Build and Push Multi-Arch Docker Image" on: push: - branches: [test1] + branches: [main] tags: - "taiko-client-v*" paths: From 4f59e52b01afb2e448b46d2e1a1970a0ccb16f79 Mon Sep 17 00:00:00 2001 From: gavin Date: Tue, 5 Nov 2024 11:05:12 +0800 Subject: [PATCH 3/5] fix --- packages/taiko-client/pkg/rpc/utils.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/taiko-client/pkg/rpc/utils.go b/packages/taiko-client/pkg/rpc/utils.go index 7d8cd99fdc6..10cef021592 100644 --- a/packages/taiko-client/pkg/rpc/utils.go +++ b/packages/taiko-client/pkg/rpc/utils.go @@ -65,10 +65,18 @@ func GetProtocolStateVariables( opts.Context, cancel = CtxWithTimeoutOrDefault(opts.Context, defaultTimeout) defer cancel() + var slotBV1 bindings.TaikoDataSlotBV1 slotA, slotB, err := taikoL1Client.GetStateVariables(opts) if err != nil { if errors.Is(err, ErrSlotBMarshal) { - slotA, slotB, err = taikoL1Client.GetStateVariables(opts) + slotA, slotBV1, err = taikoL1Client.GetStateVariablesV1(opts) + slotB = bindings.TaikoDataSlotB{ + NumBlocks: slotBV1.NumBlocks, + LastVerifiedBlockId: slotBV1.LastVerifiedBlockId, + ProvingPaused: slotBV1.ProvingPaused, + LastProposedIn: nil, + LastUnpausedAt: slotBV1.LastUnpausedAt, + } } if err != nil { return nil, err From 120bcf44be0b1cd79e754d019e79d1d5e31aff48 Mon Sep 17 00:00:00 2001 From: gavin Date: Tue, 5 Nov 2024 16:08:00 +0800 Subject: [PATCH 4/5] fix --- packages/taiko-client/pkg/rpc/methods.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/taiko-client/pkg/rpc/methods.go b/packages/taiko-client/pkg/rpc/methods.go index 35a96b6f2ba..e89a79385ad 100644 --- a/packages/taiko-client/pkg/rpc/methods.go +++ b/packages/taiko-client/pkg/rpc/methods.go @@ -594,14 +594,14 @@ func (c *Client) CheckL1Reorg(ctx context.Context, blockID *big.Int) (*ReorgChec // If we rollback to the genesis block, then there is no L1Origin information recorded in the L2 execution // engine for that block, so we will query the protocol to use `GenesisHeight` value to reset the L1 cursor. if blockID.Cmp(common.Big0) == 0 { - slotA, _, err := c.TaikoL1.GetStateVariables(&bind.CallOpts{Context: ctxWithTimeout}) + state, err := GetProtocolStateVariables(c.TaikoL1, &bind.CallOpts{Context: ctxWithTimeout}) if err != nil { return result, err } if result.L1CurrentToReset, err = c.L1.HeaderByNumber( ctxWithTimeout, - new(big.Int).SetUint64(slotA.GenesisHeight), + new(big.Int).SetUint64(state.A.GenesisHeight), ); err != nil { return nil, err } From 7e7b6cd743ee3ee2068dc7b2cbd0abe937d0e281 Mon Sep 17 00:00:00 2001 From: gavin Date: Tue, 5 Nov 2024 16:18:23 +0800 Subject: [PATCH 5/5] fix --- packages/taiko-client/pkg/rpc/utils.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/taiko-client/pkg/rpc/utils.go b/packages/taiko-client/pkg/rpc/utils.go index 10cef021592..a701e63302a 100644 --- a/packages/taiko-client/pkg/rpc/utils.go +++ b/packages/taiko-client/pkg/rpc/utils.go @@ -70,6 +70,9 @@ func GetProtocolStateVariables( if err != nil { if errors.Is(err, ErrSlotBMarshal) { slotA, slotBV1, err = taikoL1Client.GetStateVariablesV1(opts) + if err != nil { + return nil, err + } slotB = bindings.TaikoDataSlotB{ NumBlocks: slotBV1.NumBlocks, LastVerifiedBlockId: slotBV1.LastVerifiedBlockId, @@ -77,8 +80,7 @@ func GetProtocolStateVariables( LastProposedIn: nil, LastUnpausedAt: slotBV1.LastUnpausedAt, } - } - if err != nil { + } else { return nil, err } }