diff --git a/node/execution/intrinsics/token/application/token_handle_prover_join.go b/node/execution/intrinsics/token/application/token_handle_prover_join.go index eaa6757..1dc3410 100644 --- a/node/execution/intrinsics/token/application/token_handle_prover_join.go +++ b/node/execution/intrinsics/token/application/token_handle_prover_join.go @@ -89,14 +89,14 @@ func (a *TokenApplication) handleDataAnnounceProverJoin( return nil, errors.Wrap(err, "handle join") } + lockMap[string(t.PublicKeySignatureEd448.PublicKey.KeyValue)] = struct{}{} for _, t := range a.Tries { if t.Contains(address) { - a.Logger.Debug("prover already in trie", zap.Binary("address", address)) - return nil, errors.Wrap(ErrInvalidStateTransition, "handle join") + // do nothing: + return []*protobufs.TokenOutput{}, nil } } - lockMap[string(t.PublicKeySignatureEd448.PublicKey.KeyValue)] = struct{}{} return []*protobufs.TokenOutput{ &protobufs.TokenOutput{ Output: &protobufs.TokenOutput_Join{ diff --git a/node/execution/intrinsics/token/application/token_handle_prover_leave.go b/node/execution/intrinsics/token/application/token_handle_prover_leave.go index ccc1d12..9f6786e 100644 --- a/node/execution/intrinsics/token/application/token_handle_prover_leave.go +++ b/node/execution/intrinsics/token/application/token_handle_prover_leave.go @@ -52,11 +52,11 @@ func (a *TokenApplication) handleDataAnnounceProverLeave( inTries = inTries || t.Contains(address) } - if !inTries { - return nil, errors.Wrap(ErrInvalidStateTransition, "handle leave") - } - lockMap[string(t.PublicKeySignatureEd448.PublicKey.KeyValue)] = struct{}{} + if !inTries { + // do nothing: + return []*protobufs.TokenOutput{}, nil + } return []*protobufs.TokenOutput{ &protobufs.TokenOutput{ diff --git a/node/execution/intrinsics/token/application/token_handle_prover_pause.go b/node/execution/intrinsics/token/application/token_handle_prover_pause.go index bfea7fd..75ac5cb 100644 --- a/node/execution/intrinsics/token/application/token_handle_prover_pause.go +++ b/node/execution/intrinsics/token/application/token_handle_prover_pause.go @@ -51,10 +51,11 @@ func (a *TokenApplication) handleDataAnnounceProverPause( inTries = inTries || t.Contains(address) } - if !inTries { - return nil, errors.Wrap(ErrInvalidStateTransition, "handle pause") - } lockMap[string(t.PublicKeySignatureEd448.PublicKey.KeyValue)] = struct{}{} + if !inTries { + // do nothing: + return []*protobufs.TokenOutput{}, nil + } return []*protobufs.TokenOutput{ &protobufs.TokenOutput{ Output: &protobufs.TokenOutput_Pause{ diff --git a/node/execution/intrinsics/token/application/token_handle_prover_resume.go b/node/execution/intrinsics/token/application/token_handle_prover_resume.go index 21ea55d..e1e6772 100644 --- a/node/execution/intrinsics/token/application/token_handle_prover_resume.go +++ b/node/execution/intrinsics/token/application/token_handle_prover_resume.go @@ -52,11 +52,11 @@ func (a *TokenApplication) handleDataAnnounceProverResume( inTries = inTries || t.Contains(address) } - if !inTries { - return nil, errors.Wrap(ErrInvalidStateTransition, "handle resume") - } - lockMap[string(t.PublicKeySignatureEd448.PublicKey.KeyValue)] = struct{}{} + if !inTries { + // do nothing: + return []*protobufs.TokenOutput{}, nil + } return []*protobufs.TokenOutput{ &protobufs.TokenOutput{ diff --git a/node/execution/intrinsics/token/token_execution_engine.go b/node/execution/intrinsics/token/token_execution_engine.go index d0ad925..97d8d8d 100644 --- a/node/execution/intrinsics/token/token_execution_engine.go +++ b/node/execution/intrinsics/token/token_execution_engine.go @@ -648,7 +648,9 @@ func (e *TokenExecutionEngine) ProcessFrame( ) last = app.Tries[rings] } - last.Add([]byte(addr.addr), frame.FrameNumber) + if !last.Contains([]byte(addr.addr)) { + last.Add([]byte(addr.addr), frame.FrameNumber) + } } for _, addr := range leaveReqs { for _, t := range app.Tries { diff --git a/node/tries/rolling_frecency_critbit_trie.go b/node/tries/rolling_frecency_critbit_trie.go index 7ad8756..20354e3 100644 --- a/node/tries/rolling_frecency_critbit_trie.go +++ b/node/tries/rolling_frecency_critbit_trie.go @@ -134,7 +134,7 @@ func (t *RollingFrecencyCritbitTrie) FindNearestAndApproximateNeighbors( var traverse func(p *Node, address []byte) bool traverse = func(p *Node, address []byte) bool { - if len(ret) > 256 { + if len(ret) > 1024 { return true }