Skip to content

Commit

Permalink
Fix panic and incorrect state generation for PoIS replacement proof (#…
Browse files Browse the repository at this point in the history
…296)

* fix:PoIS replacement proof panic and generate wrong state

* chore:add logs for PoIS debug

* fix:panic and incorrect state generation for PoIS replacement proof #294
  • Loading branch information
jiuquxzy committed Sep 20, 2024
1 parent 716302b commit 24631f8
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 3 deletions.
4 changes: 3 additions & 1 deletion node/attestation_idle.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
package node

import (
"encoding/hex"
"fmt"
"strings"
"time"
Expand Down Expand Up @@ -396,7 +397,8 @@ func attestation_idle(cli *chain.ChainClient, peernode *core.PeerNode, p *Pois,
if err != nil {
return errors.Wrapf(err, "[UpdateStatus]")
}
l.Space("info", "update pois status")
l.Space("info", fmt.Sprintf("update status success, new acc value: %s", hex.EncodeToString(p.Prover.GetAccValue())))

m.Front = verifyCommitOrDeletionProof.PoisStatus.Front
m.Rear = verifyCommitOrDeletionProof.PoisStatus.Rear
m.Acc = verifyCommitOrDeletionProof.PoisStatus.Acc
Expand Down
15 changes: 13 additions & 2 deletions node/replace_idle.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
package node

import (
"encoding/hex"
"fmt"
"math/big"
"strings"
Expand Down Expand Up @@ -68,29 +69,35 @@ func ReplaceIdle(cli *chain.ChainClient, l logger.Logger, p *Pois, m *pb.MinerPo
delProof, err := p.Prover.ProveDeletion(int64(num))
if err != nil {
l.Replace("err", err.Error())
p.Prover.AccRollback(true)
return
}

if delProof == nil {
l.Replace("err", "delProof is nil")
p.Prover.AccRollback(true)
return
}

if delProof.Roots == nil || delProof.AccPath == nil || delProof.WitChain == nil {
l.Replace("err", "delProof have nil field")
p.Prover.AccRollback(true)
return
}

minerInfo, err := cli.QueryMinerItems(cli.GetSignatureAccPulickey(), -1)
if err != nil {
l.Replace("err", fmt.Sprintf("[QueryStorageMiner] %v", err))
p.Prover.AccRollback(true)
return
}
if minerInfo.SpaceProofInfo.HasValue() {
_, spaceProofInfo := minerInfo.SpaceProofInfo.Unwrap()
if spaceProofInfo.Front > types.U64(p.Prover.GetFront()) {
err = p.Prover.SyncChainPoisStatus(int64(spaceProofInfo.Front), int64(spaceProofInfo.Rear))
if err != nil {
l.Replace("err", err.Error())
p.Prover.AccRollback(true)
return
}
}
Expand Down Expand Up @@ -121,13 +128,13 @@ func ReplaceIdle(cli *chain.ChainClient, l logger.Logger, p *Pois, m *pb.MinerPo
}
buf, err := proto.Marshal(requestVerifyDeletionProof)
if err != nil {
p.Prover.CommitRollback()
p.Prover.AccRollback(true)
l.Replace("err", fmt.Sprintf("[Marshal-2] %v", err))
return
}
signData, err := cli.Sign(buf)
if err != nil {
p.Prover.CommitRollback()
p.Prover.AccRollback(true)
l.Replace("err", fmt.Sprintf("[Sign-2] %v", err))
return
}
Expand Down Expand Up @@ -242,6 +249,8 @@ func ReplaceIdle(cli *chain.ChainClient, l logger.Logger, p *Pois, m *pb.MinerPo
if err != nil {
l.Replace("err", err.Error())
}
l.Replace("info", fmt.Sprintf("front: %v rear: %v", p.Prover.GetFront(), p.Prover.GetRear()))
l.Replace("info", fmt.Sprintf("new acc value: %s", hex.EncodeToString(p.Prover.GetAccValue())))

ok, challenge, err := cli.QueryChallengeSnapShot(cli.GetSignatureAccPulickey(), -1)
if err != nil {
Expand All @@ -254,6 +263,7 @@ func ReplaceIdle(cli *chain.ChainClient, l logger.Logger, p *Pois, m *pb.MinerPo
if ok {
err = p.Prover.SetChallengeState(*p.RsaKey, []byte(string(challenge.MinerSnapshot.SpaceProofInfo.Accumulator[:])), int64(challenge.MinerSnapshot.SpaceProofInfo.Front), int64(challenge.MinerSnapshot.SpaceProofInfo.Rear))
if err != nil {
l.Replace("err", err.Error())
return
}
}
Expand All @@ -263,4 +273,5 @@ func ReplaceIdle(cli *chain.ChainClient, l logger.Logger, p *Pois, m *pb.MinerPo
l.Replace("err", err.Error())
}
l.Replace("info", fmt.Sprintf("Successfully replaced %d idle files", num))

}

0 comments on commit 24631f8

Please sign in to comment.