From 751fc88dcec96219ca1747e5696c1e2dddfdbe25 Mon Sep 17 00:00:00 2001 From: Rez Date: Thu, 30 Jan 2025 16:10:14 -0500 Subject: [PATCH] fxed bug payload builder flags --- cli/flags/flags.go | 19 +++++++++++--- .../injected-consensus/config/addrbook.json | 4 +++ .../write-file-atomic-5234921648011832856 | 4 +++ .../injected-consensus/injected-consensus.go | 25 +++++++++++++++++++ .../injected-consensus/invalid_block_test.go | 23 ++++++++--------- 5 files changed, 58 insertions(+), 17 deletions(-) create mode 100644 testing/injected-consensus/config/addrbook.json create mode 100644 testing/injected-consensus/config/write-file-atomic-5234921648011832856 diff --git a/cli/flags/flags.go b/cli/flags/flags.go index c33919e18..92a8ddbff 100644 --- a/cli/flags/flags.go +++ b/cli/flags/flags.go @@ -31,10 +31,10 @@ const ( BeaconKitAcceptTos = beaconKitRoot + "accept-tos" // Builder Config. - builderRoot = beaconKitRoot + "payload-builder." - SuggestedFeeRecipient = builderRoot + "suggested-fee-recipient" - LocalBuilderEnabled = builderRoot + "local-builder-enabled" - LocalBuildPayloadTimeout = builderRoot + "local-build-payload-timeout" + builderRoot = beaconKitRoot + "payload-builder." + SuggestedFeeRecipient = builderRoot + "suggested-fee-recipient" + BuilderEnabled = builderRoot + "enabled" + BuildPayloadTimeout = builderRoot + "payload-timeout" // Validator Config. validatorRoot = beaconKitRoot + "validator." @@ -105,6 +105,17 @@ func AddBeaconKitFlags(startCmd *cobra.Command) { defaultCfg.Engine.RPCJWTRefreshInterval, "rpc jwt refresh interval", ) + startCmd.Flags().Bool( + BuilderEnabled, + defaultCfg.PayloadBuilder.Enabled, + "payload builder is enabled", + ) + + startCmd.Flags().Duration( + BuildPayloadTimeout, + defaultCfg.PayloadBuilder.PayloadTimeout, + "payload builder timeout", + ) startCmd.Flags().String( SuggestedFeeRecipient, defaultCfg.PayloadBuilder.SuggestedFeeRecipient.Hex(), diff --git a/testing/injected-consensus/config/addrbook.json b/testing/injected-consensus/config/addrbook.json new file mode 100644 index 000000000..e6c8b2053 --- /dev/null +++ b/testing/injected-consensus/config/addrbook.json @@ -0,0 +1,4 @@ +{ + "key": "385d575392b37155f228070d", + "addrs": [] +} \ No newline at end of file diff --git a/testing/injected-consensus/config/write-file-atomic-5234921648011832856 b/testing/injected-consensus/config/write-file-atomic-5234921648011832856 new file mode 100644 index 000000000..e6c8b2053 --- /dev/null +++ b/testing/injected-consensus/config/write-file-atomic-5234921648011832856 @@ -0,0 +1,4 @@ +{ + "key": "385d575392b37155f228070d", + "addrs": [] +} \ No newline at end of file diff --git a/testing/injected-consensus/injected-consensus.go b/testing/injected-consensus/injected-consensus.go index cd953962b..7decdb980 100644 --- a/testing/injected-consensus/injected-consensus.go +++ b/testing/injected-consensus/injected-consensus.go @@ -21,6 +21,7 @@ package injectedconsensus import ( + "context" "crypto/rand" "encoding/hex" "fmt" @@ -40,6 +41,8 @@ import ( nodebuilder "github.com/berachain/beacon-kit/node-core/builder" "github.com/berachain/beacon-kit/node-core/components" nodetypes "github.com/berachain/beacon-kit/node-core/types" + payloadbuilder "github.com/berachain/beacon-kit/payload/builder" + "github.com/berachain/beacon-kit/primitives/common" "github.com/berachain/beacon-kit/storage/db" cmtcfg "github.com/cometbft/cometbft/config" dbm "github.com/cosmos/cosmos-db" @@ -106,6 +109,8 @@ type TestNode struct { BlockchainService *blockchain.Service CometConfig *cmtcfg.Config Homedir string + Context context.Context + CancelFunc context.CancelFunc } func makeTempHomeDir(t *testing.T) string { @@ -152,6 +157,9 @@ func copyFile(t *testing.T, src, dst string) error { // NewTestNode starts a node with a custom consensus driver so we can manually drive the ABCI calls. func NewTestNode(t *testing.T) *TestNode { t.Helper() + + // Create a test node that + ctx, cancelFunc := context.WithCancel(context.Background()) // 1. Build a node builder with your default or custom test components. nb := nodebuilder.New( nodebuilder.WithComponents[ @@ -169,9 +177,13 @@ func NewTestNode(t *testing.T) *TestNode { // Use an in-memory DB // db := dbm.NewMemDB() cmtCfg := cometbft.DefaultConfig() + cmtCfg.RootDir = tempHomeDir + beaconCfg := config.DefaultConfig() executionClientConfig := executionconfig.DefaultConfig() + payloadBuilderCfg := payloadbuilder.DefaultConfig() + appOpts := viper.New() // err := copyFile(t, "./test_priv_validator_key.json", tempHomeDir+"/priv_validator_key.json") @@ -179,18 +191,29 @@ func NewTestNode(t *testing.T) *TestNode { // err = copyFile(t, "./test_priv_validator_state.json", tempHomeDir+"/priv_validator_state.json") // require.NoError(t, err) + // Execution Client Config appOpts.Set(flags.JWTSecretPath, "../files/jwt.hex") appOpts.Set(flags.RPCJWTRefreshInterval, executionClientConfig.RPCJWTRefreshInterval) appOpts.Set(flags.RPCStartupCheckInterval, executionClientConfig.RPCStartupCheckInterval) appOpts.Set(flags.RPCDialURL, executionClientConfig.RPCDialURL) + + // BLS Config appOpts.Set(flags.PrivValidatorKeyFile, "./config/priv_validator_key.json") appOpts.Set(flags.PrivValidatorStateFile, "./data/priv_validator_state.json") + // Beacon Config appOpts.Set(flags.BlockStoreServiceAvailabilityWindow, beaconCfg.BlockStoreService.AvailabilityWindow) appOpts.Set(flags.BlockStoreServiceEnabled, beaconCfg.BlockStoreService.Enabled) appOpts.Set(flags.KZGTrustedSetupPath, "../files/kzg-trusted-setup.json") appOpts.Set(flags.KZGImplementation, kzg.DefaultConfig().Implementation) + // Payload Builder Config + payloadBuilderCfg.SuggestedFeeRecipient = common.NewExecutionAddressFromHex("0x981114102592310C347E61368342DDA67017bf84") + appOpts.Set(flags.BuilderEnabled, payloadBuilderCfg.Enabled) + appOpts.Set(flags.BuildPayloadTimeout, payloadBuilderCfg.PayloadTimeout) + appOpts.Set(flags.SuggestedFeeRecipient, payloadBuilderCfg.SuggestedFeeRecipient) + + // Chain Spec t.Setenv(components.ChainSpecTypeEnvVar, components.DevnetChainSpecType) // TODO: Cleanup this Set @@ -224,6 +247,8 @@ func NewTestNode(t *testing.T) *TestNode { BlockchainService: blockchainService, CometConfig: cmtCfg, Homedir: tempHomeDir, + Context: ctx, + CancelFunc: cancelFunc, } } diff --git a/testing/injected-consensus/invalid_block_test.go b/testing/injected-consensus/invalid_block_test.go index 7280cb534..176451549 100644 --- a/testing/injected-consensus/invalid_block_test.go +++ b/testing/injected-consensus/invalid_block_test.go @@ -21,8 +21,6 @@ package injectedconsensus_test import ( - "context" - "os" "testing" "time" @@ -42,29 +40,28 @@ func (s *InjectedConsensus) SetupTest() { func (s *InjectedConsensus) TearDownTest() { // Ensure teardown runs no matter what - err := os.RemoveAll(s.testNode.Homedir) - s.Require().NoError(err) + s.testNode.CancelFunc() + // err := os.RemoveAll(s.testNode.Homedir) + // s.Require().NoError(err) } func (s *InjectedConsensus) TestInitChainRequestsInvalidChainID() { - // Create a test node that - ctx, cancelFunc := context.WithCancel(context.Background()) - defer cancelFunc() - request := &comettypes.InitChainRequest{ ChainId: "80090", } - _, err := s.testNode.CometService.InitChain(ctx, request) + _, err := s.testNode.CometService.InitChain(s.testNode.Context, request) s.Require().Error(err, "invalid chain-id on InitChain; expected: beacond-2061, got: 80090") } // TestProcessProposalRequestInvalidBlock tests the scenario where a peer sends us a block with an invalid timestamp. func (s *InjectedConsensus) TestProcessProposalRequestInvalidBlock() { - // Create a test node that - _, cancelFunc := context.WithCancel(context.Background()) - defer cancelFunc() + go func() { + if err := s.testNode.Node.Start(s.testNode.Context); err != nil { + s.T().Fatal(err) + } + }() - <-time.After(20 * time.Second) + <-time.After(120 * time.Second) // genesis := genesisFromFile(t, testNode.cometConfig.Genesis)