From 71b13c5490417b22ef8acc598cb8d1a97015b018 Mon Sep 17 00:00:00 2001 From: Cassandra Heart Date: Tue, 12 Nov 2024 03:33:20 -0600 Subject: [PATCH] v2.0.3-p3 --- node/consensus/data/main_data_loop.go | 12 +++++++----- .../token/application/token_handle_mint.go | 2 +- node/tries/proof_leaf.go | 6 ++++++ node/tries/rolling_frecency_critbit_trie.go | 6 ++++++ 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/node/consensus/data/main_data_loop.go b/node/consensus/data/main_data_loop.go index 8cb71de..c981770 100644 --- a/node/consensus/data/main_data_loop.go +++ b/node/consensus/data/main_data_loop.go @@ -139,7 +139,7 @@ func (e *DataClockConsensusEngine) processFrame( return nextFrame } else { - if latestFrame.Timestamp > time.Now().UnixMilli()-30000 { + if latestFrame.Timestamp > time.Now().UnixMilli()-120000 { if !e.IsInProverTrie(e.pubSub.GetPeerID()) { e.logger.Info("announcing prover join") for _, eng := range e.executionEngines { @@ -156,10 +156,12 @@ func (e *DataClockConsensusEngine) processFrame( peerProvingKeyAddress := h.FillBytes(make([]byte, 32)) ring := -1 - for i, tries := range e.GetFrameProverTries()[1:] { - i := i - if tries.Contains(peerProvingKeyAddress) { - ring = i + if len(e.GetFrameProverTries()) > 1 { + for i, tries := range e.GetFrameProverTries()[1:] { + i := i + if tries.Contains(peerProvingKeyAddress) { + ring = i + } } } diff --git a/node/execution/intrinsics/token/application/token_handle_mint.go b/node/execution/intrinsics/token/application/token_handle_mint.go index 69a56ae..76d0376 100644 --- a/node/execution/intrinsics/token/application/token_handle_mint.go +++ b/node/execution/intrinsics/token/application/token_handle_mint.go @@ -19,7 +19,7 @@ import ( ) const PROOF_FRAME_CUTOFF = 46500 -const PROOF_FRAME_RING_RESET = 53000 +const PROOF_FRAME_RING_RESET = 52000 func (a *TokenApplication) handleMint( currentFrameNumber uint64, diff --git a/node/tries/proof_leaf.go b/node/tries/proof_leaf.go index aba68b5..998bdc6 100644 --- a/node/tries/proof_leaf.go +++ b/node/tries/proof_leaf.go @@ -67,6 +67,12 @@ func PackOutputIntoPayloadAndProof( if previousTree != nil { hash := sha3.Sum256(frame.Output) pick := BytesToUnbiasedMod(hash, uint64(modulo)) + if uint64(modulo) < pick { + return nil, nil, nil, errors.Wrap( + errors.New("proof size mismatch"), + "pack output into payload and proof", + ) + } for _, sib := range previousTree.Proofs[int(pick)].Siblings { payload = append(payload, sib...) output = append(output, sib) diff --git a/node/tries/rolling_frecency_critbit_trie.go b/node/tries/rolling_frecency_critbit_trie.go index 7049b26..0ce94de 100644 --- a/node/tries/rolling_frecency_critbit_trie.go +++ b/node/tries/rolling_frecency_critbit_trie.go @@ -38,6 +38,9 @@ type RollingFrecencyCritbitTrie struct { func (t *RollingFrecencyCritbitTrie) Serialize() ([]byte, error) { t.mu.RLock() defer t.mu.RUnlock() + if t.Root == nil { + return []byte{}, nil + } var b bytes.Buffer enc := gob.NewEncoder(&b) @@ -52,6 +55,9 @@ func (t *RollingFrecencyCritbitTrie) Serialize() ([]byte, error) { func (t *RollingFrecencyCritbitTrie) Deserialize(buf []byte) error { t.mu.Lock() defer t.mu.Unlock() + if len(buf) == 0 { + return nil + } var b bytes.Buffer b.Write(buf)