From 4d097d767b65e335569487ed699b436f4b77cf21 Mon Sep 17 00:00:00 2001 From: David Date: Fri, 3 Jan 2025 13:38:04 +0800 Subject: [PATCH 1/6] fix(taiko-client): fix blob transactions estimation when proposing --- .../proposer/transaction_builder/fallback.go | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/packages/taiko-client/proposer/transaction_builder/fallback.go b/packages/taiko-client/proposer/transaction_builder/fallback.go index 9305e7ec69..120017b206 100644 --- a/packages/taiko-client/proposer/transaction_builder/fallback.go +++ b/packages/taiko-client/proposer/transaction_builder/fallback.go @@ -143,23 +143,33 @@ func (b *TxBuilderWithFallback) estimateCandidateCost( ctx context.Context, candidate *txmgr.TxCandidate, ) (*big.Int, error) { - txmgr, _ := b.txmgrSelector.Select() - gasTipCap, baseFee, blobBaseFee, err := txmgr.SuggestGasPriceCaps(ctx) + txMgr, _ := b.txmgrSelector.Select() + gasTipCap, baseFee, blobBaseFee, err := txMgr.SuggestGasPriceCaps(ctx) if err != nil { return nil, err } log.Debug("Suggested gas price", "gasTipCap", gasTipCap, "baseFee", baseFee, "blobBaseFee", blobBaseFee) gasFeeCap := new(big.Int).Add(baseFee, gasTipCap) - gasUsed, err := b.rpc.L1.EstimateGas(ctx, ethereum.CallMsg{ - From: txmgr.From(), + msg := ethereum.CallMsg{ + From: txMgr.From(), To: candidate.To, Gas: candidate.GasLimit, GasFeeCap: gasFeeCap, GasTipCap: gasTipCap, Value: candidate.Value, Data: candidate.TxData, - }) + } + if len(candidate.Blobs) != 0 { + var blobHashes []common.Hash + if _, blobHashes, err = txmgr.MakeSidecar(candidate.Blobs); err != nil { + return nil, fmt.Errorf("failed to make sidecar: %w", err) + } + msg.BlobHashes = blobHashes + msg.BlobGasFeeCap = blobBaseFee + } + + gasUsed, err := b.rpc.L1.EstimateGas(ctx, msg) if err != nil { return nil, fmt.Errorf("failed to estimate gas used: %w", err) } From 6fc0c3ac428196c7206b4e38fb75816e04f995a7 Mon Sep 17 00:00:00 2001 From: David Date: Fri, 3 Jan 2025 13:39:41 +0800 Subject: [PATCH 2/6] chore: update ci --- .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 08faa9847d..8fcd1e3b9c 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: [main, fix-estimation-2] tags: - "taiko-alethia-client-v*" paths: From 77fa6ab4c852371448f4b9f2b84d8afd189b87c7 Mon Sep 17 00:00:00 2001 From: David Date: Fri, 3 Jan 2025 13:40:23 +0800 Subject: [PATCH 3/6] chore: update ci From acd8551afcfc862c6ab2ba243148f9ee7a979823 Mon Sep 17 00:00:00 2001 From: David Date: Fri, 3 Jan 2025 13:49:18 +0800 Subject: [PATCH 4/6] chore: update ci --- .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 8fcd1e3b9c..17868b06fb 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, fix-estimation-2] + branches: [fix-estimation-2] tags: - "taiko-alethia-client-v*" paths: From 937c50c45b516604f2b9a00d440c1e9bb081b836 Mon Sep 17 00:00:00 2001 From: David Date: Fri, 3 Jan 2025 13:55:46 +0800 Subject: [PATCH 5/6] test: more tests --- .../proposer/transaction_builder/fallback_test.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/taiko-client/proposer/transaction_builder/fallback_test.go b/packages/taiko-client/proposer/transaction_builder/fallback_test.go index 3fcd0eb63c..8107875b6f 100644 --- a/packages/taiko-client/proposer/transaction_builder/fallback_test.go +++ b/packages/taiko-client/proposer/transaction_builder/fallback_test.go @@ -30,6 +30,13 @@ func (s *TransactionBuilderTestSuite) TestBuildCalldataWithBlobAllowed() { s.NotZero(len(candidate.Blobs)) } +func (s *TransactionBuilderTestSuite) TestBlobAllowed() { + builder := s.newTestBuilderWithFallback(false, false) + s.False(builder.BlobAllow()) + builder = s.newTestBuilderWithFallback(true, false) + s.True(builder.BlobAllow()) +} + func (s *TransactionBuilderTestSuite) newTestBuilderWithFallback(blobAllowed, fallback bool) *TxBuilderWithFallback { l1ProposerPrivKey, err := crypto.ToECDSA(common.FromHex(os.Getenv("L1_PROPOSER_PRIVATE_KEY"))) s.Nil(err) From 9f2f1e5eab80510596c68a829d2c55511b5d5de2 Mon Sep 17 00:00:00 2001 From: David Date: Fri, 3 Jan 2025 14:04:53 +0800 Subject: [PATCH 6/6] chore: update ci --- .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 17868b06fb..08faa9847d 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: [fix-estimation-2] + branches: [main] tags: - "taiko-alethia-client-v*" paths: