Skip to content

Commit 7940313

Browse files
committed
update challenge, CheckPois, checkRegistrationInfo
1 parent a5e221a commit 7940313

File tree

5 files changed

+299
-149
lines changed

5 files changed

+299
-149
lines changed

configs/system.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ const (
2222
// Name is the name of the program
2323
Name = "miner"
2424
// version
25-
Version = "v0.8.2 2502141020-1739499628632"
25+
Version = "v0.8.2 2502171422-1739773355316"
2626
// Description is the description of the program
2727
Description = "Storage miner implementation in CESS networks"
2828
// NameSpace is the cached namespace

node/chlgidle.go

Lines changed: 55 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -51,18 +51,21 @@ func (n *Node) idleChallenge(
5151
if idleProofRecord.Start != challStart {
5252
os.Remove(n.GetIdleProve())
5353
n.Del("info", n.GetIdleProve())
54+
n.Delete([]byte(fmt.Sprintf("idle_chall_proof:%d", idleProofRecord.Start)))
55+
n.Delete([]byte(fmt.Sprintf("idle_chall_result:%d", idleProofRecord.Start)))
5456
} else {
55-
5657
_, err = n.Cache.Get([]byte(fmt.Sprintf("idle_chall_proof:%d", challStart)))
5758
if err != nil {
58-
err = n.submitIdleProof(idleProofRecord.IdleProof, slip)
59+
blockhash, err := n.submitIdleProof(idleProofRecord.IdleProof, slip)
5960
if err != nil {
6061
n.Ichal("err", err.Error())
6162
}
62-
n.Cache.Put([]byte(fmt.Sprintf("idle_chall_proof:%d", challStart)), []byte("true"))
63+
if blockhash != "" {
64+
n.Cache.Put([]byte(fmt.Sprintf("idle_chall_proof:%d", challStart)), []byte("true"))
65+
idleProofRecord.CanSubmintResult = false
66+
n.SaveIdleProve(idleProofRecord)
67+
}
6368
}
64-
idleProofRecord.CanSubmintResult = false
65-
n.SaveIdleProve(idleProofRecord)
6669

6770
_, err = n.Cache.Get([]byte(fmt.Sprintf("idle_chall_result:%d", challStart)))
6871
if err != nil {
@@ -79,7 +82,7 @@ func (n *Node) idleChallenge(
7982
minerAccumulator[i] = types.U8(idleProofRecord.Acc[i])
8083
}
8184

82-
_ = n.submitIdleResult(
85+
blockhash, _ := n.submitIdleResult(
8386
idleProve,
8487
types.U64(idleProofRecord.ChainFront),
8588
types.U64(idleProofRecord.ChainRear),
@@ -89,10 +92,11 @@ func (n *Node) idleChallenge(
8992
idleProofRecord.AllocatedTeeWorkpuk,
9093
verifySlip,
9194
)
92-
n.Cache.Put([]byte(fmt.Sprintf("idle_chall_result:%d", challStart)), []byte("true"))
93-
94-
idleProofRecord.CanSubmintResult = false
95-
n.SaveIdleProve(idleProofRecord)
95+
if blockhash != "" {
96+
n.Cache.Put([]byte(fmt.Sprintf("idle_chall_result:%d", challStart)), []byte("true"))
97+
idleProofRecord.CanSubmintResult = false
98+
n.SaveIdleProve(idleProofRecord)
99+
}
96100
}
97101
return
98102
}
@@ -147,15 +151,18 @@ func (n *Node) idleChallenge(
147151
teeID := make([]byte, 32)
148152
challengeHandle := n.Prover.NewChallengeHandle(teeID, challRandom)
149153
var previousHash []byte
154+
blockhash := ""
150155
if minerChallFront == minerChallRear {
151156
idleProofRecord.IdleProof = []types.U8{}
152-
err = n.submitIdleProof([]types.U8{}, slip)
157+
blockhash, err = n.submitIdleProof([]types.U8{}, slip)
153158
if err != nil {
154159
n.Ichal("err", fmt.Sprintf("[SubmitIdleProof] %v", err))
155160
}
156-
idleProofRecord.CanSubmintProof = false
157-
idleProofRecord.CanSubmintResult = false
158-
n.SaveIdleProve(idleProofRecord)
161+
if blockhash != "" {
162+
idleProofRecord.CanSubmintProof = false
163+
idleProofRecord.CanSubmintResult = false
164+
n.SaveIdleProve(idleProofRecord)
165+
}
159166
return
160167
}
161168
n.Ichal("info", fmt.Sprintf("[start] %v", time.Now()))
@@ -271,21 +278,21 @@ func (n *Node) idleChallenge(
271278
n.SaveIdleProve(idleProofRecord)
272279
_, err = n.Cache.Get([]byte(fmt.Sprintf("idle_chall_proof:%d", challStart)))
273280
if err != nil {
274-
err = n.submitIdleProof(idleProofChain, slip)
275-
n.Cache.Put([]byte(fmt.Sprintf("idle_chall_proof:%d", challStart)), []byte("true"))
276-
if err != nil {
277-
n.Ichal("err", err.Error())
281+
blockhash, err = n.submitIdleProof(idleProofChain, slip)
282+
if blockhash != "" {
283+
n.Cache.Put([]byte(fmt.Sprintf("idle_chall_proof:%d", challStart)), []byte("true"))
278284
idleProofRecord.CanSubmintProof = false
279285
n.SaveIdleProve(idleProofRecord)
280-
return
286+
}
287+
if err != nil {
288+
n.Ichal("err", err.Error())
281289
}
282290
}
283291

284-
idleProofRecord.CanSubmintProof = false
285-
n.SaveIdleProve(idleProofRecord)
286-
_, err = n.Cache.Get([]byte(fmt.Sprintf("idle_chall_result:%d", challStart)))
287-
if err != nil {
288-
err = n.submitIdleResult(
292+
blockhash = ""
293+
_, err = n.Cache.Get([]byte(fmt.Sprintf("idle_chall_proof:%d", challStart)))
294+
if err == nil {
295+
blockhash, err = n.submitIdleResult(
289296
idleProofChain,
290297
types.U64(idleProofRecord.ChainFront),
291298
types.U64(idleProofRecord.ChainRear),
@@ -295,17 +302,18 @@ func (n *Node) idleChallenge(
295302
pkchain,
296303
verifySlip,
297304
)
298-
n.Cache.Put([]byte(fmt.Sprintf("idle_chall_result:%d", challStart)), []byte("true"))
299305
if err != nil {
300306
n.Ichal("err", err.Error())
301307
}
308+
if blockhash != "" {
309+
n.Cache.Put([]byte(fmt.Sprintf("idle_chall_result:%d", challStart)), []byte("true"))
310+
idleProofRecord.CanSubmintResult = false
311+
n.SaveIdleProve(idleProofRecord)
312+
}
302313
}
303-
304-
idleProofRecord.CanSubmintResult = false
305-
n.SaveIdleProve(idleProofRecord)
306314
}
307315

308-
func (n *Node) submitIdleProof(idleProof []types.U8, slip uint32) error {
316+
func (n *Node) submitIdleProof(idleProof []types.U8, slip uint32) (string, error) {
309317
var (
310318
err error
311319
blockHash string
@@ -314,40 +322,45 @@ func (n *Node) submitIdleProof(idleProof []types.U8, slip uint32) error {
314322
latestBlock, err := n.GetSubstrateAPI().RPC.Chain.GetBlockLatest()
315323
if err == nil {
316324
if slip < uint32(latestBlock.Block.Header.Number) {
317-
return fmt.Errorf("challenge expired")
325+
return "", fmt.Errorf("challenge expired")
318326
}
319327
}
320328
for i := 0; i < 3; i++ {
321329
n.Ichal("info", fmt.Sprintf("[start sub] %v", time.Now()))
322330
blockHash, err = n.SubmitIdleProof(idleProof)
323331
n.Ichal("info", fmt.Sprintf("[end sub] hash: %s err: %v", blockHash, err))
324332

333+
if blockHash != "" {
334+
return blockHash, err
335+
}
336+
325337
time.Sleep(chain.BlockInterval)
326338

327339
_, challInfo, err = n.QueryChallengeSnapShot(n.GetSignatureAccPulickey(), -1)
328340
if err != nil {
329341
if err.Error() != chain.ERR_Empty {
330342
n.Ichal("err", fmt.Sprintf("[QueryChallengeInfo] %v", err))
331343
}
332-
return err
344+
return "", err
333345
}
334346

335347
if challInfo.ProveInfo.IdleProve.HasValue() {
336-
return nil
348+
return blockHash, nil
337349
}
338350
}
339-
return fmt.Errorf("submitIdleProof failed: %v", err)
351+
return blockHash, fmt.Errorf("submitIdleProof failed: %v", err)
340352
}
341353

342-
func (n *Node) submitIdleResult(totalProofHash []types.U8, front types.U64, rear types.U64, accumulator chain.Accumulator, result types.Bool, sig types.Bytes, teePuk chain.WorkerPublicKey, verifySlip uint32) error {
354+
func (n *Node) submitIdleResult(totalProofHash []types.U8, front types.U64, rear types.U64, accumulator chain.Accumulator, result types.Bool, sig types.Bytes, teePuk chain.WorkerPublicKey, verifySlip uint32) (string, error) {
355+
blockhsh := ""
343356
latestBlock, err := n.GetSubstrateAPI().RPC.Chain.GetBlockLatest()
344357
if err == nil {
345358
if verifySlip < uint32(latestBlock.Block.Header.Number) {
346-
return nil
359+
return "", nil
347360
}
348361
}
349362
for i := 0; i < 3; i++ {
350-
txHash, err := n.SubmitVerifyIdleResult(
363+
blockhsh, err = n.SubmitVerifyIdleResult(
351364
totalProofHash,
352365
types.U64(front),
353366
types.U64(rear),
@@ -357,13 +370,14 @@ func (n *Node) submitIdleResult(totalProofHash []types.U8, front types.U64, rear
357370
teePuk,
358371
)
359372
if err != nil {
360-
n.Ichal("err", fmt.Sprintf("[SubmitIdleProofResult] hash: %s, err: %v", txHash, err))
361-
time.Sleep(time.Minute)
362-
continue
373+
n.Ichal("err", fmt.Sprintf("[SubmitIdleProofResult] hash: %s, err: %v", blockhsh, err))
374+
}
375+
if blockhsh != "" {
376+
return blockhsh, err
363377
}
364-
n.Ichal("info", fmt.Sprintf("submit idle proof result suc: %s", txHash))
378+
time.Sleep(time.Second * 6)
365379
}
366-
return fmt.Errorf("submitIdleProof failed: %v", err)
380+
return "", fmt.Errorf("submitIdleProof failed: %v", err)
367381
}
368382

369383
func (n *Node) verifyIdleProof(

0 commit comments

Comments
 (0)