mirror of
https://github.com/QuilibriumNetwork/ceremonyclient.git
synced 2026-02-21 10:27:26 +08:00
make idempotent
This commit is contained in:
parent
ee8b344dde
commit
5b26cff487
@ -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{
|
||||
|
||||
@ -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{
|
||||
|
||||
@ -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{
|
||||
|
||||
@ -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{
|
||||
|
||||
@ -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 {
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user