From 05100b3860ad37222946aaec3d8ae10794fd9108 Mon Sep 17 00:00:00 2001 From: maskpp Date: Mon, 11 Mar 2024 15:04:26 +0800 Subject: [PATCH] feat(pkg): move `sender` from `internal` to `pkg` (#626) --- driver/txlist_fetcher/blob.go | 2 +- internal/testutils/interfaces.go | 2 +- pkg/rpc/beaconclient.go | 74 +++++++++++++++++++ pkg/rpc/client.go | 9 +-- pkg/rpc/methods.go | 16 ---- pkg/rpc/tx_blob.go | 17 ++--- {internal => pkg}/sender/common.go | 0 {internal => pkg}/sender/sender.go | 64 +++++++++++----- {internal => pkg}/sender/sender_test.go | 10 +-- proposer/proposer.go | 3 +- proposer/proposer_test.go | 4 +- proposer/transaction_builder/common_test.go | 2 +- prover/init.go | 2 +- prover/proof_submitter/proof_contester.go | 2 +- prover/proof_submitter/proof_submitter.go | 2 +- .../proof_submitter/proof_submitter_test.go | 2 +- prover/proof_submitter/transaction/sender.go | 4 +- .../transaction/sender_test.go | 2 +- prover/prover.go | 2 +- 19 files changed, 149 insertions(+), 70 deletions(-) create mode 100644 pkg/rpc/beaconclient.go rename {internal => pkg}/sender/common.go (100%) rename {internal => pkg}/sender/sender.go (92%) rename {internal => pkg}/sender/sender_test.go (96%) diff --git a/driver/txlist_fetcher/blob.go b/driver/txlist_fetcher/blob.go index e99da5d32..3bbf79bbf 100644 --- a/driver/txlist_fetcher/blob.go +++ b/driver/txlist_fetcher/blob.go @@ -31,7 +31,7 @@ func (d *BlobFetcher) Fetch( return nil, errBlobUnused } - sidecars, err := d.rpc.GetBlobs(ctx, new(big.Int).SetUint64(meta.L1Height+1)) + sidecars, err := d.rpc.L1Beacon.GetBlobs(ctx, new(big.Int).SetUint64(meta.L1Height+1)) if err != nil { return nil, err } diff --git a/internal/testutils/interfaces.go b/internal/testutils/interfaces.go index 487d83bf9..ddc8b5e76 100644 --- a/internal/testutils/interfaces.go +++ b/internal/testutils/interfaces.go @@ -6,7 +6,7 @@ import ( "github.com/ethereum/go-ethereum/core/types" "github.com/taikoxyz/taiko-client/cmd/utils" - "github.com/taikoxyz/taiko-client/internal/sender" + "github.com/taikoxyz/taiko-client/pkg/sender" ) type CalldataSyncer interface { diff --git a/pkg/rpc/beaconclient.go b/pkg/rpc/beaconclient.go new file mode 100644 index 000000000..4195cf90e --- /dev/null +++ b/pkg/rpc/beaconclient.go @@ -0,0 +1,74 @@ +package rpc + +import ( + "context" + "crypto/sha256" + "encoding/json" + "errors" + "fmt" + "math/big" + "time" + + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/crypto/kzg4844" + "github.com/prysmaticlabs/prysm/v4/api/client" + "github.com/prysmaticlabs/prysm/v4/api/client/beacon" + "github.com/prysmaticlabs/prysm/v4/beacon-chain/rpc/eth/blob" +) + +var ( + // Request urls. + sidecarsRequestURL = "eth/v1/beacon/blob_sidecars/%d" +) + +type BeaconClient struct { + *beacon.Client + + timeout time.Duration +} + +// NewBeaconClient returns a new beacon client. +func NewBeaconClient(endpoint string, timeout time.Duration) (*BeaconClient, error) { + cli, err := beacon.NewClient(endpoint, client.WithTimeout(timeout)) + if err != nil { + return nil, err + } + return &BeaconClient{cli, timeout}, nil +} + +// GetBlobs returns the sidecars for a given slot. +func (c *BeaconClient) GetBlobs(ctx context.Context, slot *big.Int) ([]*blob.Sidecar, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + var sidecars *blob.SidecarsResponse + resBytes, err := c.Get(ctxWithTimeout, fmt.Sprintf(sidecarsRequestURL, slot)) + if err != nil { + return nil, err + } + + return sidecars.Data, json.Unmarshal(resBytes, &sidecars) +} + +// GetBlobByHash returns the sidecars for a given slot. +func (c *BeaconClient) GetBlobByHash(ctx context.Context, slot *big.Int, blobHash common.Hash) ([]byte, error) { + ctxWithTimeout, cancel := ctxWithTimeoutOrDefault(ctx, c.timeout) + defer cancel() + + sidecars, err := c.GetBlobs(ctxWithTimeout, slot) + if err != nil { + return nil, err + } + + for _, sidecar := range sidecars { + commitment := kzg4844.Commitment(common.FromHex(sidecar.KzgCommitment)) + if kzg4844.CalcBlobHashV1( + sha256.New(), + &commitment, + ) == blobHash { + return DecodeBlob(common.FromHex(sidecar.Blob)) + } + } + + return nil, errors.New("sidecar not found") +} diff --git a/pkg/rpc/client.go b/pkg/rpc/client.go index 25d48219e..11eff024f 100644 --- a/pkg/rpc/client.go +++ b/pkg/rpc/client.go @@ -7,9 +7,6 @@ import ( "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/common" - "github.com/prysmaticlabs/prysm/v4/api/client" - "github.com/prysmaticlabs/prysm/v4/api/client/beacon" - "github.com/taikoxyz/taiko-client/bindings" ) @@ -26,7 +23,7 @@ type Client struct { // Geth Engine API clients L2Engine *EngineClient // Beacon clients - L1Beacon *beacon.Client + L1Beacon *BeaconClient // Protocol contracts clients TaikoL1 *bindings.TaikoL1Client TaikoL2 *bindings.TaikoL2Client @@ -113,9 +110,9 @@ func NewClient(ctx context.Context, cfg *ClientConfig) (*Client, error) { } } - var l1BeaconClient *beacon.Client + var l1BeaconClient *BeaconClient if cfg.L1BeaconEndpoint != "" { - if l1BeaconClient, err = beacon.NewClient(cfg.L1BeaconEndpoint, client.WithTimeout(defaultTimeout)); err != nil { + if l1BeaconClient, err = NewBeaconClient(cfg.L1BeaconEndpoint, defaultTimeout); err != nil { return nil, err } } diff --git a/pkg/rpc/methods.go b/pkg/rpc/methods.go index bbb175534..b40085328 100644 --- a/pkg/rpc/methods.go +++ b/pkg/rpc/methods.go @@ -2,7 +2,6 @@ package rpc import ( "context" - "encoding/json" "errors" "fmt" "math/big" @@ -16,7 +15,6 @@ import ( "github.com/ethereum/go-ethereum/core/rawdb" "github.com/ethereum/go-ethereum/core/types" "github.com/ethereum/go-ethereum/log" - "github.com/prysmaticlabs/prysm/v4/beacon-chain/rpc/eth/blob" "golang.org/x/sync/errgroup" "github.com/taikoxyz/taiko-client/bindings" @@ -29,9 +27,6 @@ var ( errEmptyTiersList = errors.New("empty proof tiers list in protocol") waitL1OriginPollingInterval = 3 * time.Second defaultWaitL1OriginTimeout = 3 * time.Minute - - // Request urls. - sidecarsRequestURL = "eth/v1/beacon/blob_sidecars/%d" ) // ensureGenesisMatched fetches the L2 genesis block from TaikoL1 contract, @@ -696,14 +691,3 @@ func (c *Client) GetTiers(ctx context.Context) ([]*TierProviderTierWithID, error return tiers, nil } - -// GetBlobs fetches blobs by the given slot from a L1 consensus client. -func (c *Client) GetBlobs(ctx context.Context, slot *big.Int) ([]*blob.Sidecar, error) { - var sidecars *blob.SidecarsResponse - resBytes, err := c.L1Beacon.Get(ctx, fmt.Sprintf(sidecarsRequestURL, slot)) - if err != nil { - return nil, err - } - - return sidecars.Data, json.Unmarshal(resBytes, &sidecars) -} diff --git a/pkg/rpc/tx_blob.go b/pkg/rpc/tx_blob.go index 856801367..99da02046 100644 --- a/pkg/rpc/tx_blob.go +++ b/pkg/rpc/tx_blob.go @@ -27,11 +27,11 @@ func (c *EthClient) TransactBlobTx( return nil, errors.New("no signer to authorize the transaction with") } // Create blob tx - rawTx, err := c.createBlobTx(opts, contract, input, sidecar) + blobTx, err := c.CreateBlobTx(opts, contract, input, sidecar) if err != nil { return nil, err } - signedTx, err := opts.Signer(opts.From, rawTx) + signedTx, err := opts.Signer(opts.From, types.NewTx(blobTx)) if err != nil { return nil, err } @@ -44,13 +44,14 @@ func (c *EthClient) TransactBlobTx( return signedTx, nil } -// createBlobTx creates a blob transaction by given parameters. -func (c *EthClient) createBlobTx( +// CreateBlobTx creates a blob transaction by given parameters. +func (c *EthClient) CreateBlobTx( opts *bind.TransactOpts, contract common.Address, input []byte, sidecar *types.BlobTxSidecar, -) (*types.Transaction, error) { +) (*types.BlobTx, error) { + // Fetch the nonce for the account var ( nonce *hexutil.Uint64 gas *hexutil.Uint64 @@ -88,7 +89,7 @@ func (c *EthClient) createBlobTx( return nil, err } - blobTx := &types.BlobTx{ + return &types.BlobTx{ ChainID: uint256.MustFromBig(rawTx.ChainId()), Nonce: rawTx.Nonce(), GasTipCap: uint256.MustFromBig(rawTx.GasTipCap()), @@ -101,9 +102,7 @@ func (c *EthClient) createBlobTx( BlobFeeCap: uint256.MustFromBig(rawTx.BlobGasFeeCap()), BlobHashes: sidecar.BlobHashes(), Sidecar: sidecar, - } - - return types.NewTx(blobTx), nil + }, nil } // MakeSidecar makes a sidecar which only includes one blob with the given data. diff --git a/internal/sender/common.go b/pkg/sender/common.go similarity index 100% rename from internal/sender/common.go rename to pkg/sender/common.go diff --git a/internal/sender/sender.go b/pkg/sender/sender.go similarity index 92% rename from internal/sender/sender.go rename to pkg/sender/sender.go index c5b97cf31..ffb036bd4 100644 --- a/internal/sender/sender.go +++ b/pkg/sender/sender.go @@ -198,38 +198,62 @@ func (s *Sender) GetUnconfirmedTx(txID string) *types.Transaction { } // SendRawTransaction sends a transaction to the given Ethereum node. -func (s *Sender) SendRawTransaction(nonce uint64, target *common.Address, value *big.Int, data []byte) (string, error) { +func (s *Sender) SendRawTransaction( + nonce uint64, + target *common.Address, + value *big.Int, + data []byte, + sidecar *types.BlobTxSidecar, +) (string, error) { if s.unconfirmedTxs.Count() >= unconfirmedTxsCap { return "", fmt.Errorf("too many pending transactions") } - gasLimit := s.GasLimit - if gasLimit == 0 { - var err error - gasLimit, err = s.client.EstimateGas(s.ctx, ethereum.CallMsg{ - From: s.opts.From, - To: target, - Value: value, - Data: data, - GasTipCap: s.opts.GasTipCap, - GasFeeCap: s.opts.GasFeeCap, - }) + var ( + originalTx types.TxData + opts = s.GetOpts() + ) + if sidecar != nil { + opts.Value = value + if target == nil { + target = &common.Address{} + } + blobTx, err := s.client.CreateBlobTx(opts, *target, data, sidecar) if err != nil { return "", err } - } - - txToConfirm := &TxToConfirm{ - originalTx: &types.DynamicFeeTx{ + blobTx.Nonce = setDefault(nonce, s.nonce) + originalTx = blobTx + } else { + gasLimit := s.GasLimit + if gasLimit == 0 { + var err error + gasLimit, err = s.client.EstimateGas(s.ctx, ethereum.CallMsg{ + From: opts.From, + To: target, + Value: value, + Data: data, + GasTipCap: opts.GasTipCap, + GasFeeCap: opts.GasFeeCap, + }) + if err != nil { + return "", err + } + } + originalTx = &types.DynamicFeeTx{ ChainID: s.client.ChainID, To: target, - Nonce: nonce, - GasFeeCap: s.opts.GasFeeCap, - GasTipCap: s.opts.GasTipCap, + Nonce: setDefault(nonce, s.nonce), + GasFeeCap: opts.GasFeeCap, + GasTipCap: opts.GasTipCap, Gas: gasLimit, Value: value, Data: data, - }, + } + } + + txToConfirm := &TxToConfirm{ + originalTx: originalTx, } if err := s.send(txToConfirm, false); err != nil && !strings.Contains(err.Error(), "replacement transaction") { diff --git a/internal/sender/sender_test.go b/pkg/sender/sender_test.go similarity index 96% rename from internal/sender/sender_test.go rename to pkg/sender/sender_test.go index 0cf15879b..383c8bd46 100644 --- a/internal/sender/sender_test.go +++ b/pkg/sender/sender_test.go @@ -14,8 +14,8 @@ import ( "github.com/stretchr/testify/suite" "golang.org/x/sync/errgroup" - "github.com/taikoxyz/taiko-client/internal/sender" "github.com/taikoxyz/taiko-client/internal/testutils" + "github.com/taikoxyz/taiko-client/pkg/sender" ) type SenderTestSuite struct { @@ -66,7 +66,7 @@ func (s *SenderTestSuite) TestSendRawTransaction() { i := i eg.Go(func() error { addr := common.BigToAddress(big.NewInt(int64(i))) - _, err := s.sender.SendRawTransaction(nonce+uint64(i), &addr, big.NewInt(1), nil) + _, err := s.sender.SendRawTransaction(nonce+uint64(i), &addr, big.NewInt(1), nil, nil) return err }) } @@ -114,12 +114,12 @@ func (s *SenderTestSuite) TestReplacement() { s.Nil(err) // Replace the transaction with a higher nonce. - _, err = send.SendRawTransaction(nonce, &common.Address{}, big.NewInt(1), nil) + _, err = send.SendRawTransaction(nonce, &common.Address{}, big.NewInt(1), nil, nil) s.Nil(err) time.Sleep(time.Second * 6) // Send a transaction with a next nonce and let all the transactions be confirmed. - _, err = send.SendRawTransaction(nonce-1, &common.Address{}, big.NewInt(1), nil) + _, err = send.SendRawTransaction(nonce-1, &common.Address{}, big.NewInt(1), nil, nil) s.Nil(err) for _, confirmCh := range send.TxToConfirmChannels() { @@ -150,7 +150,7 @@ func (s *SenderTestSuite) TestNonceTooLow() { return } - txID, err := send.SendRawTransaction(nonce-3, &common.Address{}, big.NewInt(1), nil) + txID, err := send.SendRawTransaction(nonce-3, &common.Address{}, big.NewInt(1), nil, nil) s.Nil(err) confirm := <-send.TxToConfirmChannel(txID) s.Nil(confirm.Err) diff --git a/proposer/proposer.go b/proposer/proposer.go index 251db6492..7164c16ff 100644 --- a/proposer/proposer.go +++ b/proposer/proposer.go @@ -15,11 +15,12 @@ import ( "github.com/ethereum/go-ethereum/crypto" "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/rlp" + "github.com/taikoxyz/taiko-client/bindings" "github.com/taikoxyz/taiko-client/bindings/encoding" "github.com/taikoxyz/taiko-client/internal/metrics" - "github.com/taikoxyz/taiko-client/internal/sender" "github.com/taikoxyz/taiko-client/pkg/rpc" + "github.com/taikoxyz/taiko-client/pkg/sender" selector "github.com/taikoxyz/taiko-client/proposer/prover_selector" builder "github.com/taikoxyz/taiko-client/proposer/transaction_builder" "github.com/urfave/cli/v2" diff --git a/proposer/proposer_test.go b/proposer/proposer_test.go index d5dcc4d57..ade6673d8 100644 --- a/proposer/proposer_test.go +++ b/proposer/proposer_test.go @@ -159,7 +159,7 @@ func (s *ProposerTestSuite) TestSendProposeBlockTx() { nonce, err := s.RPCClient.L1.PendingNonceAt(context.Background(), s.p.proposerAddress) s.Nil(err) - txID, err := sender.SendRawTransaction(nonce, &common.Address{}, common.Big1, nil) + txID, err := sender.SendRawTransaction(nonce, &common.Address{}, common.Big1, nil, nil) s.Nil(err) tx := sender.GetUnconfirmedTx(txID) @@ -176,7 +176,7 @@ func (s *ProposerTestSuite) TestSendProposeBlockTx() { s.Nil(err) - txID, err = sender.SendRawTransaction(nonce, newTx.To(), newTx.Value(), newTx.Data()) + txID, err = sender.SendRawTransaction(nonce, newTx.To(), newTx.Value(), newTx.Data(), nil) s.Nil(err) newTx = sender.GetUnconfirmedTx(txID) diff --git a/proposer/transaction_builder/common_test.go b/proposer/transaction_builder/common_test.go index 71c487dad..e48eda4e8 100644 --- a/proposer/transaction_builder/common_test.go +++ b/proposer/transaction_builder/common_test.go @@ -12,8 +12,8 @@ import ( "github.com/stretchr/testify/suite" "github.com/taikoxyz/taiko-client/bindings/encoding" - "github.com/taikoxyz/taiko-client/internal/sender" "github.com/taikoxyz/taiko-client/internal/testutils" + "github.com/taikoxyz/taiko-client/pkg/sender" selector "github.com/taikoxyz/taiko-client/proposer/prover_selector" ) diff --git a/prover/init.go b/prover/init.go index bc5bdc40e..13580f2f2 100644 --- a/prover/init.go +++ b/prover/init.go @@ -10,8 +10,8 @@ import ( "github.com/ethereum/go-ethereum/log" "github.com/taikoxyz/taiko-client/bindings/encoding" - "github.com/taikoxyz/taiko-client/internal/sender" "github.com/taikoxyz/taiko-client/pkg/rpc" + "github.com/taikoxyz/taiko-client/pkg/sender" handler "github.com/taikoxyz/taiko-client/prover/event_handler" proofProducer "github.com/taikoxyz/taiko-client/prover/proof_producer" proofSubmitter "github.com/taikoxyz/taiko-client/prover/proof_submitter" diff --git a/prover/proof_submitter/proof_contester.go b/prover/proof_submitter/proof_contester.go index 64510cbd1..db0a41f05 100644 --- a/prover/proof_submitter/proof_contester.go +++ b/prover/proof_submitter/proof_contester.go @@ -11,8 +11,8 @@ import ( "github.com/taikoxyz/taiko-client/bindings" "github.com/taikoxyz/taiko-client/bindings/encoding" - "github.com/taikoxyz/taiko-client/internal/sender" "github.com/taikoxyz/taiko-client/pkg/rpc" + "github.com/taikoxyz/taiko-client/pkg/sender" proofProducer "github.com/taikoxyz/taiko-client/prover/proof_producer" "github.com/taikoxyz/taiko-client/prover/proof_submitter/transaction" ) diff --git a/prover/proof_submitter/proof_submitter.go b/prover/proof_submitter/proof_submitter.go index 6a5e53a1f..fe816de03 100644 --- a/prover/proof_submitter/proof_submitter.go +++ b/prover/proof_submitter/proof_submitter.go @@ -12,8 +12,8 @@ import ( "github.com/taikoxyz/taiko-client/bindings" "github.com/taikoxyz/taiko-client/bindings/encoding" "github.com/taikoxyz/taiko-client/internal/metrics" - "github.com/taikoxyz/taiko-client/internal/sender" "github.com/taikoxyz/taiko-client/pkg/rpc" + "github.com/taikoxyz/taiko-client/pkg/sender" validator "github.com/taikoxyz/taiko-client/prover/anchor_tx_validator" proofProducer "github.com/taikoxyz/taiko-client/prover/proof_producer" "github.com/taikoxyz/taiko-client/prover/proof_submitter/transaction" diff --git a/prover/proof_submitter/proof_submitter_test.go b/prover/proof_submitter/proof_submitter_test.go index da851013c..ed95f1907 100644 --- a/prover/proof_submitter/proof_submitter_test.go +++ b/prover/proof_submitter/proof_submitter_test.go @@ -17,9 +17,9 @@ import ( "github.com/taikoxyz/taiko-client/driver/chain_syncer/beaconsync" "github.com/taikoxyz/taiko-client/driver/chain_syncer/calldata" "github.com/taikoxyz/taiko-client/driver/state" - "github.com/taikoxyz/taiko-client/internal/sender" "github.com/taikoxyz/taiko-client/internal/testutils" "github.com/taikoxyz/taiko-client/pkg/rpc" + "github.com/taikoxyz/taiko-client/pkg/sender" "github.com/taikoxyz/taiko-client/proposer" producer "github.com/taikoxyz/taiko-client/prover/proof_producer" "github.com/taikoxyz/taiko-client/prover/proof_submitter/transaction" diff --git a/prover/proof_submitter/transaction/sender.go b/prover/proof_submitter/transaction/sender.go index 2f7152ead..e6ffc8a4d 100644 --- a/prover/proof_submitter/transaction/sender.go +++ b/prover/proof_submitter/transaction/sender.go @@ -7,10 +7,10 @@ import ( "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/log" - "github.com/taikoxyz/taiko-client/pkg/rpc" "github.com/taikoxyz/taiko-client/internal/metrics" - "github.com/taikoxyz/taiko-client/internal/sender" + "github.com/taikoxyz/taiko-client/pkg/rpc" + "github.com/taikoxyz/taiko-client/pkg/sender" producer "github.com/taikoxyz/taiko-client/prover/proof_producer" ) diff --git a/prover/proof_submitter/transaction/sender_test.go b/prover/proof_submitter/transaction/sender_test.go index c8a3a564b..672b1d166 100644 --- a/prover/proof_submitter/transaction/sender_test.go +++ b/prover/proof_submitter/transaction/sender_test.go @@ -13,8 +13,8 @@ import ( "github.com/stretchr/testify/suite" "github.com/taikoxyz/taiko-client/bindings" - "github.com/taikoxyz/taiko-client/internal/sender" "github.com/taikoxyz/taiko-client/internal/testutils" + "github.com/taikoxyz/taiko-client/pkg/sender" producer "github.com/taikoxyz/taiko-client/prover/proof_producer" ) diff --git a/prover/prover.go b/prover/prover.go index 217bfa269..dd472357f 100644 --- a/prover/prover.go +++ b/prover/prover.go @@ -18,10 +18,10 @@ import ( "github.com/taikoxyz/taiko-client/bindings" "github.com/taikoxyz/taiko-client/bindings/encoding" - "github.com/taikoxyz/taiko-client/internal/sender" "github.com/taikoxyz/taiko-client/internal/version" eventIterator "github.com/taikoxyz/taiko-client/pkg/chain_iterator/event_iterator" "github.com/taikoxyz/taiko-client/pkg/rpc" + "github.com/taikoxyz/taiko-client/pkg/sender" handler "github.com/taikoxyz/taiko-client/prover/event_handler" guardianProverHeartbeater "github.com/taikoxyz/taiko-client/prover/guardian_prover_heartbeater" proofProducer "github.com/taikoxyz/taiko-client/prover/proof_producer"