8
8
package node
9
9
10
10
import (
11
+ "encoding/hex"
11
12
"fmt"
12
13
"math/big"
13
14
"strings"
@@ -68,29 +69,35 @@ func ReplaceIdle(cli *chain.ChainClient, l logger.Logger, p *Pois, m *pb.MinerPo
68
69
delProof , err := p .Prover .ProveDeletion (int64 (num ))
69
70
if err != nil {
70
71
l .Replace ("err" , err .Error ())
72
+ p .Prover .AccRollback (true )
71
73
return
72
74
}
73
75
74
76
if delProof == nil {
75
77
l .Replace ("err" , "delProof is nil" )
78
+ p .Prover .AccRollback (true )
76
79
return
77
80
}
78
81
79
82
if delProof .Roots == nil || delProof .AccPath == nil || delProof .WitChain == nil {
80
83
l .Replace ("err" , "delProof have nil field" )
84
+ p .Prover .AccRollback (true )
81
85
return
82
86
}
83
87
84
88
minerInfo , err := cli .QueryMinerItems (cli .GetSignatureAccPulickey (), - 1 )
85
89
if err != nil {
86
90
l .Replace ("err" , fmt .Sprintf ("[QueryStorageMiner] %v" , err ))
91
+ p .Prover .AccRollback (true )
87
92
return
88
93
}
89
94
if minerInfo .SpaceProofInfo .HasValue () {
90
95
_ , spaceProofInfo := minerInfo .SpaceProofInfo .Unwrap ()
91
96
if spaceProofInfo .Front > types .U64 (p .Prover .GetFront ()) {
92
97
err = p .Prover .SyncChainPoisStatus (int64 (spaceProofInfo .Front ), int64 (spaceProofInfo .Rear ))
93
98
if err != nil {
99
+ l .Replace ("err" , err .Error ())
100
+ p .Prover .AccRollback (true )
94
101
return
95
102
}
96
103
}
@@ -121,13 +128,13 @@ func ReplaceIdle(cli *chain.ChainClient, l logger.Logger, p *Pois, m *pb.MinerPo
121
128
}
122
129
buf , err := proto .Marshal (requestVerifyDeletionProof )
123
130
if err != nil {
124
- p .Prover .CommitRollback ( )
131
+ p .Prover .AccRollback ( true )
125
132
l .Replace ("err" , fmt .Sprintf ("[Marshal-2] %v" , err ))
126
133
return
127
134
}
128
135
signData , err := cli .Sign (buf )
129
136
if err != nil {
130
- p .Prover .CommitRollback ( )
137
+ p .Prover .AccRollback ( true )
131
138
l .Replace ("err" , fmt .Sprintf ("[Sign-2] %v" , err ))
132
139
return
133
140
}
@@ -242,6 +249,8 @@ func ReplaceIdle(cli *chain.ChainClient, l logger.Logger, p *Pois, m *pb.MinerPo
242
249
if err != nil {
243
250
l .Replace ("err" , err .Error ())
244
251
}
252
+ l .Replace ("info" , fmt .Sprintf ("front: %v rear: %v" , p .Prover .GetFront (), p .Prover .GetRear ()))
253
+ l .Replace ("info" , fmt .Sprintf ("new acc value: %s" , hex .EncodeToString (p .Prover .GetAccValue ())))
245
254
246
255
ok , challenge , err := cli .QueryChallengeSnapShot (cli .GetSignatureAccPulickey (), - 1 )
247
256
if err != nil {
@@ -254,6 +263,7 @@ func ReplaceIdle(cli *chain.ChainClient, l logger.Logger, p *Pois, m *pb.MinerPo
254
263
if ok {
255
264
err = p .Prover .SetChallengeState (* p .RsaKey , []byte (string (challenge .MinerSnapshot .SpaceProofInfo .Accumulator [:])), int64 (challenge .MinerSnapshot .SpaceProofInfo .Front ), int64 (challenge .MinerSnapshot .SpaceProofInfo .Rear ))
256
265
if err != nil {
266
+ l .Replace ("err" , err .Error ())
257
267
return
258
268
}
259
269
}
@@ -263,4 +273,5 @@ func ReplaceIdle(cli *chain.ChainClient, l logger.Logger, p *Pois, m *pb.MinerPo
263
273
l .Replace ("err" , err .Error ())
264
274
}
265
275
l .Replace ("info" , fmt .Sprintf ("Successfully replaced %d idle files" , num ))
276
+
266
277
}
0 commit comments