From cdb300b6575fa44831dab363a9959cb519dad906 Mon Sep 17 00:00:00 2001 From: David Date: Tue, 14 May 2024 18:37:06 +0800 Subject: [PATCH] feat(taiko-client): remove an unused file --- .../driver/chain_syncer/blob/syncer.go | 7 +- packages/taiko-client/pkg/rpc/blob_tx.go | 137 ------------------ packages/taiko-client/pkg/rpc/blob_tx_test.go | 74 ---------- .../proposer/transaction_builder/blob.go | 10 +- 4 files changed, 6 insertions(+), 222 deletions(-) delete mode 100644 packages/taiko-client/pkg/rpc/blob_tx.go delete mode 100644 packages/taiko-client/pkg/rpc/blob_tx_test.go diff --git a/packages/taiko-client/driver/chain_syncer/blob/syncer.go b/packages/taiko-client/driver/chain_syncer/blob/syncer.go index fdaed3bd41..b9590e2e7f 100644 --- a/packages/taiko-client/driver/chain_syncer/blob/syncer.go +++ b/packages/taiko-client/driver/chain_syncer/blob/syncer.go @@ -255,12 +255,7 @@ func (s *Syncer) onBlockProposed( } txListBytes, err := txListFetcher.Fetch(ctx, tx, &event.Meta) if err != nil { - if errors.Is(err, rpc.ErrBlobInvalid) { - log.Info("Invalid blob detected", "blockID", event.BlockId) - txListBytes = []byte{} - } else { - return fmt.Errorf("failed to fetch tx list: %w", err) - } + return fmt.Errorf("failed to fetch tx list: %w", err) } // Decompress the transactions list and try to insert a new head block to L2 EE. diff --git a/packages/taiko-client/pkg/rpc/blob_tx.go b/packages/taiko-client/pkg/rpc/blob_tx.go deleted file mode 100644 index 97c7f0119b..0000000000 --- a/packages/taiko-client/pkg/rpc/blob_tx.go +++ /dev/null @@ -1,137 +0,0 @@ -package rpc - -import ( - "errors" - "math/big" - - "github.com/ethereum-optimism/optimism/op-service/eth" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/hexutil" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/crypto/kzg4844" - "github.com/ethereum/go-ethereum/params" - "github.com/holiman/uint256" -) - -var ( - ErrBlobInvalid = errors.New("invalid blob encoding") -) - -// TransactBlobTx creates, signs and then sends blob transactions. -func (c *EthClient) TransactBlobTx( - opts *bind.TransactOpts, - contract common.Address, - input []byte, - sidecar *types.BlobTxSidecar, -) (*types.Transaction, error) { - // Sign the transaction and schedule it for execution - if opts.Signer == nil { - return nil, errors.New("no signer to authorize the transaction with") - } - // Create blob tx - blobTx, err := c.CreateBlobTx(opts, contract, input, sidecar) - if err != nil { - return nil, err - } - signedTx, err := opts.Signer(opts.From, types.NewTx(blobTx)) - if err != nil { - return nil, err - } - if opts.NoSend { - return signedTx, nil - } - if err := c.SendTransaction(opts.Context, signedTx); err != nil { - return nil, err - } - return signedTx, nil -} - -// CreateBlobTx creates a blob transaction by given parameters. -func (c *EthClient) CreateBlobTx( - opts *bind.TransactOpts, - contract common.Address, - input []byte, - sidecar *types.BlobTxSidecar, -) (*types.BlobTx, error) { - // Fetch the nonce for the account - var ( - nonce *hexutil.Uint64 - gas *hexutil.Uint64 - ) - if opts.Nonce != nil { - curNonce := hexutil.Uint64(opts.Nonce.Uint64()) - nonce = &curNonce - } - - if input == nil { - input = []byte{} - } - - if opts.GasLimit != 0 { - gasVal := hexutil.Uint64(opts.GasLimit) - gas = &gasVal - } - - rawTx, err := c.FillTransaction(opts.Context, &TransactionArgs{ - From: &opts.From, - To: &contract, - Gas: gas, - GasPrice: (*hexutil.Big)(opts.GasPrice), - MaxFeePerGas: (*hexutil.Big)(opts.GasFeeCap), - MaxPriorityFeePerGas: (*hexutil.Big)(opts.GasTipCap), - Value: (*hexutil.Big)(opts.Value), - Nonce: nonce, - Data: (*hexutil.Bytes)(&input), - AccessList: nil, - ChainID: nil, - BlobFeeCap: nil, - BlobHashes: sidecar.BlobHashes(), - }) - if err != nil { - return nil, err - } - - blobFeeCap := rawTx.BlobGasFeeCap() - if blobFeeCap == nil || blobFeeCap.Uint64() < params.BlobTxMinBlobGasprice { - blobFeeCap = new(big.Int).SetUint64(uint64(params.BlobTxMinBlobGasprice)) - } - - return &types.BlobTx{ - ChainID: uint256.MustFromBig(rawTx.ChainId()), - Nonce: rawTx.Nonce(), - GasTipCap: uint256.MustFromBig(rawTx.GasTipCap()), - GasFeeCap: uint256.MustFromBig(rawTx.GasFeeCap()), - Gas: rawTx.Gas(), - To: *rawTx.To(), - Value: uint256.MustFromBig(rawTx.Value()), - Data: rawTx.Data(), - AccessList: rawTx.AccessList(), - BlobFeeCap: uint256.MustFromBig(blobFeeCap), - BlobHashes: sidecar.BlobHashes(), - Sidecar: sidecar, - }, nil -} - -// MakeSidecar makes a sidecar which only includes one blob with the given data. -func MakeSidecar(data []byte) (*types.BlobTxSidecar, error) { - var blob eth.Blob - if err := blob.FromData(data); err != nil { - return nil, err - } - - sideCar := &types.BlobTxSidecar{Blobs: []kzg4844.Blob{*blob.KZGBlob()}} - for _, blob := range sideCar.Blobs { - commitment, err := kzg4844.BlobToCommitment(blob) - if err != nil { - return nil, err - } - proof, err := kzg4844.ComputeBlobProof(blob, commitment) - if err != nil { - return nil, err - } - sideCar.Commitments = append(sideCar.Commitments, commitment) - sideCar.Proofs = append(sideCar.Proofs, proof) - } - return sideCar, nil -} diff --git a/packages/taiko-client/pkg/rpc/blob_tx_test.go b/packages/taiko-client/pkg/rpc/blob_tx_test.go deleted file mode 100644 index 9cbebe95d0..0000000000 --- a/packages/taiko-client/pkg/rpc/blob_tx_test.go +++ /dev/null @@ -1,74 +0,0 @@ -package rpc - -import ( - "context" - "os" - "testing" - "time" - - "github.com/ethereum-optimism/optimism/op-service/eth" - "github.com/ethereum/go-ethereum/accounts/abi/bind" - "github.com/ethereum/go-ethereum/common" - "github.com/ethereum/go-ethereum/common/hexutil" - "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/crypto" - "github.com/stretchr/testify/assert" - - "github.com/taikoxyz/taiko-mono/packages/taiko-client/internal/utils" -) - -func TestSendingBlobTx(t *testing.T) { - t.SkipNow() - // Load environment variables. - utils.LoadEnv() - - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() - - url := os.Getenv("L1_NODE_WS_ENDPOINT") - l1Client, err := NewEthClient(ctx, url, time.Second*20) - assert.NoError(t, err) - - priv := os.Getenv("L1_PROPOSER_PRIVATE_KEY") - sk, err := crypto.ToECDSA(common.FromHex(priv)) - assert.NoError(t, err) - - opts, err := bind.NewKeyedTransactorWithChainID(sk, l1Client.ChainID) - assert.NoError(t, err) - opts.Context = ctx - //opts.NoSend = true - - balance, err := l1Client.BalanceAt(ctx, opts.From, nil) - assert.NoError(t, err) - t.Logf("address: %s, balance: %s", opts.From.String(), balance.String()) - - data, dErr := os.ReadFile("./tx_blob.go") - assert.NoError(t, dErr) - //data := []byte{'s'} - sideCar, sErr := MakeSidecar(data) - assert.NoError(t, sErr) - - tx, err := l1Client.TransactBlobTx(opts, common.Address{}, nil, sideCar) - assert.NoError(t, err) - - receipt, err := bind.WaitMined(ctx, l1Client, tx) - assert.NoError(t, err) - assert.Equal(t, true, receipt.Status == types.ReceiptStatusSuccessful) - - t.Log("blob hash: ", tx.BlobHashes()[0].String()) - t.Log("block number: ", receipt.BlockNumber.Uint64()) - t.Log("tx hash: ", receipt.TxHash.String()) -} - -func TestMakeSideCar(t *testing.T) { - origin, err := os.ReadFile("./blob_tx.go") - assert.NoError(t, err) - - sideCar, mErr := MakeSidecar(origin) - assert.NoError(t, mErr) - - blob := eth.Blob(sideCar.Blobs[0]) - origin1, dErr := blob.ToData() - assert.NoError(t, dErr) - assert.Equal(t, hexutil.Bytes(origin), origin1) -} diff --git a/packages/taiko-client/proposer/transaction_builder/blob.go b/packages/taiko-client/proposer/transaction_builder/blob.go index cd6a4230f6..278d6e810e 100644 --- a/packages/taiko-client/proposer/transaction_builder/blob.go +++ b/packages/taiko-client/proposer/transaction_builder/blob.go @@ -63,14 +63,14 @@ func (b *BlobTransactionBuilder) Build( includeParentMetaHash bool, txListBytes []byte, ) (*txmgr.TxCandidate, error) { - // Make a sidecar then calculate the blob hash. - sideCar, err := rpc.MakeSidecar(txListBytes) - if err != nil { + var blob = ð.Blob{} + if err := blob.FromData(txListBytes); err != nil { return nil, err } - var blob = ð.Blob{} - if err := blob.FromData(txListBytes); err != nil { + // Make a sidecar then calculate the blob hash. + sideCar, _, err := txmgr.MakeSidecar([]*eth.Blob{blob}) + if err != nil { return nil, err }