Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
4abeec2
feat: implement batch size validation and automatic splitting for DA …
randygrok Jul 31, 2025
e383efb
feat: add blob size validation and end-to-end test for DA layer restart
randygrok Jul 31, 2025
e14a743
feat: implement recursive batch splitting for DA submissions
randygrok Jul 31, 2025
063c858
refactor to simplify code for retry
randygrok Jul 31, 2025
398e911
Merge branch 'main' into feat/fix-node-restart
randygrok Aug 1, 2025
cd18407
add changes from pr
randygrok Aug 1, 2025
e0806f5
add exponential backoff fully into retryStrategy
randygrok Aug 1, 2025
2d18d0e
clean exponential backoff flow
randygrok Aug 1, 2025
3aaed4d
clean a little more
randygrok Aug 1, 2025
e64dba7
move methods for better readability
randygrok Aug 1, 2025
cce5308
refactor submission handling to improve context management and error …
randygrok Aug 1, 2025
21a2880
refactor recursive to really use recursive
randygrok Aug 1, 2025
adff059
cleanup the recursive func
randygrok Aug 1, 2025
3cc3334
remove logging into client
randygrok Aug 1, 2025
7703555
add maxAttempts as a da config
randygrok Aug 1, 2025
d12b0e5
check all txs
randygrok Aug 4, 2025
1ce35f2
Merge branch 'main' into feat/fix-node-restart
randygrok Aug 4, 2025
ac17de1
fix integrations tests
randygrok Aug 4, 2025
dc29c63
increase timeout
randygrok Aug 4, 2025
672a8a7
Merge branch 'main' into feat/fix-node-restart
randygrok Aug 4, 2025
e6299cd
Merge remote-tracking branch 'origin/main' into feat/fix-node-restart
randygrok Aug 5, 2025
b1f5457
use tastora v0.1.0
randygrok Aug 5, 2025
6806e00
use version 0.2.0 of tastora
randygrok Aug 5, 2025
b379974
make SubmissionOutcome, SubmissionBatch, BatchResult private
randygrok Aug 6, 2025
6012782
refactor: reorder parameters in handleSubmissionResult function
randygrok Aug 6, 2025
8f43c2e
fix: handle errors in batch submission and recursive splitting
randygrok Aug 6, 2025
d02ff04
add unit tests for the submit half batch
randygrok Aug 6, 2025
12cbedf
refactor: rename BatchAction to batchAction
randygrok Aug 6, 2025
b8a0bcd
Merge remote-tracking branch 'origin/main' into feat/fix-node-restart
randygrok Aug 6, 2025
20bc4af
docs: update block manager documentation with MaxSubmitAttempts and M…
randygrok Aug 6, 2025
10ac5a2
fix: update README.md formatting for deploy badge
randygrok Aug 6, 2025
c1b860f
fix mod tidy
randygrok Aug 7, 2025
b9fc88d
Merge branch 'main' into feat/fix-node-restart
randygrok Aug 7, 2025
24fe0f0
Merge remote-tracking branch 'origin/main' into feat/fix-node-restart
randygrok Aug 7, 2025
fb369a7
Merge branch 'feat/fix-node-restart' of github.com-randy:evstack/ev-n…
randygrok Aug 7, 2025
0f87ffc
fix md links
randygrok Aug 7, 2025
2457ed7
Update tastora.
randygrok Aug 7, 2025
ef24e94
tidy all
randygrok Aug 7, 2025
bee0f2b
fix: update test-e2e command to use relative paths for binaries
randygrok Aug 7, 2025
d155f4e
try to fix ports issues
randygrok Aug 7, 2025
b12cdc5
Merge branch 'main' into feat/fix-node-restart
randygrok Aug 7, 2025
864385d
Merge remote-tracking branch 'origin/main' into feat/fix-node-restart
jgimeno Aug 8, 2025
992a9d6
fix: add namespace parameter to submission functions
randygrok Aug 8, 2025
9b950cc
fix: correct formatting of namespace fields in config and defaults
randygrok Aug 8, 2025
190df5b
Merge branch 'main' into feat/fix-node-restart
randygrok Aug 8, 2025
ce2b81e
Merge branch 'main' into feat/fix-node-restart
randygrok Aug 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ build
coverage.out
execution/evm/jwttoken
target
/.claude/settings.local.json


docs/.vitepress/dist
node_modules
Expand Down
3 changes: 3 additions & 0 deletions apps/evm/single/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ func main() {

config.AddGlobalFlags(rootCmd, "evm-single")

// Add configuration flags to NetInfoCmd so it can read RPC address
config.AddFlags(rollcmd.NetInfoCmd)

rootCmd.AddCommand(
cmd.InitCmd(),
cmd.RunCmd,
Expand Down
18 changes: 0 additions & 18 deletions block/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,6 @@ const (
// defaultMempoolTTL is the number of blocks until transaction is dropped from mempool
defaultMempoolTTL = 25

// maxSubmitAttempts defines how many times evolve will re-try to publish block to DA layer.
// This is temporary solution. It will be removed in future versions.
maxSubmitAttempts = 30

// Key for storing namespace migration state in the store
namespaceMigrationKey = "namespace_migration_completed"

Expand All @@ -57,9 +53,6 @@ const (
var (
// dataHashForEmptyTxs to be used while only syncing headers from DA and no p2p to get the Data for no txs scenarios, the syncing can proceed without getting stuck forever.
dataHashForEmptyTxs = []byte{110, 52, 11, 156, 255, 179, 122, 152, 156, 165, 68, 230, 187, 120, 10, 44, 120, 144, 29, 63, 179, 55, 56, 118, 133, 17, 163, 6, 23, 175, 160, 29}

// initialBackoff defines initial value for block submission backoff
initialBackoff = 100 * time.Millisecond
)

// publishBlockFunc defines the function signature for publishing a block.
Expand Down Expand Up @@ -782,17 +775,6 @@ func (m *Manager) recordMetrics(data *types.Data) {
m.metrics.CommittedHeight.Set(float64(data.Metadata.Height))
}

func (m *Manager) exponentialBackoff(backoff time.Duration) time.Duration {
backoff *= 2
if backoff == 0 {
backoff = initialBackoff
}
if backoff > m.config.DA.BlockTime.Duration {
backoff = m.config.DA.BlockTime.Duration
}
return backoff
}

func (m *Manager) getLastBlockTime() time.Time {
m.lastStateMtx.RLock()
defer m.lastStateMtx.RUnlock()
Expand Down
52 changes: 0 additions & 52 deletions block/manager_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -703,24 +703,6 @@ func TestUtilityFunctions(t *testing.T) {
require.Equal(input, reconstructed)
})

t.Run("ExponentialBackoff", func(t *testing.T) {
require := require.New(t)
m, _ := getManager(t, mocks.NewMockDA(t), -1, -1)
m.config.DA.BlockTime.Duration = 10 * time.Second

// Test initial backoff
result := m.exponentialBackoff(0)
require.Equal(initialBackoff, result)

// Test doubling
result = m.exponentialBackoff(100 * time.Millisecond)
require.Equal(200*time.Millisecond, result)

// Test max cap
result = m.exponentialBackoff(20 * time.Second)
require.Equal(m.config.DA.BlockTime.Duration, result)
})

t.Run("GetHeaderSignature_NilSigner", func(t *testing.T) {
require := require.New(t)
m, _ := getManager(t, mocks.NewMockDA(t), -1, -1)
Expand Down Expand Up @@ -993,44 +975,10 @@ func TestValidationMethods(t *testing.T) {
require.False(result)
})

t.Run("ExponentialBackoff_WithConfig", func(t *testing.T) {
require := require.New(t)
m, _ := getManager(t, mocks.NewMockDA(t), -1, -1)

// Set up a config with a specific block time
m.config.DA.BlockTime.Duration = 5 * time.Second

// Test that backoff is capped at config value
result := m.exponentialBackoff(10 * time.Second)
require.Equal(5*time.Second, result)

// Test normal doubling
result = m.exponentialBackoff(100 * time.Millisecond)
require.Equal(200*time.Millisecond, result)
})
}

// TestConfigurationDefaults tests default value handling and edge cases
func TestConfigurationDefaults(t *testing.T) {
t.Run("ExponentialBackoff_EdgeCases", func(t *testing.T) {
require := require.New(t)
m, _ := getManager(t, mocks.NewMockDA(t), -1, -1)

// Test with zero block time - should still double the backoff since there's no cap
m.config.DA.BlockTime.Duration = 0
result := m.exponentialBackoff(100 * time.Millisecond)
require.Equal(0*time.Millisecond, result) // Capped at 0

// Test with very small block time
m.config.DA.BlockTime.Duration = 1 * time.Millisecond
result = m.exponentialBackoff(100 * time.Millisecond)
require.Equal(1*time.Millisecond, result) // Should cap at block time

// Test normal doubling with larger block time
m.config.DA.BlockTime.Duration = 1 * time.Second
result = m.exponentialBackoff(100 * time.Millisecond)
require.Equal(200*time.Millisecond, result) // Should double
})

t.Run("IsProposer_NilSigner", func(t *testing.T) {
require := require.New(t)
Expand Down
Loading
Loading