@@ -499,35 +499,34 @@ async def v2_qualities(self, quality_data: V2Qualities, peer: WSChiaConnection)
499
499
self .farmer .cache_add_time [quality_data .sp_hash ] = uint64 (int (time .time ()))
500
500
501
501
self .farmer .log .info (
502
- f"Received V2 quality collection with { len (quality_data .qualities )} qualities "
502
+ f"Received V2 quality collection with { len (quality_data .quality_chains )} quality chains "
503
503
f"for plot { quality_data .plot_identifier [:10 ]} ... from { peer .peer_node_id } "
504
504
)
505
505
506
- # Process each quality through solver service to get full proofs
507
- for quality in quality_data .qualities :
506
+ # Process each quality chain through solver service to get full proofs
507
+ for quality_chain in quality_data .quality_chains :
508
508
solver_info = SolverInfo (
509
- plot_size = quality_data .plot_size ,
510
509
plot_difficulty = quality_data .difficulty ,
511
- quality_string = quality ,
510
+ quality_chain = quality_chain ,
512
511
)
513
512
514
513
try :
515
514
# store pending request data for matching with response
516
- self .farmer .pending_solver_requests [quality ] = {
515
+ self .farmer .pending_solver_requests [quality_chain ] = {
517
516
"quality_data" : quality_data ,
518
517
"peer" : peer ,
519
518
}
520
519
521
520
# send solve request to all solver connections
522
521
msg = make_msg (ProtocolMessageTypes .solve , solver_info )
523
522
await self .farmer .server .send_to_all ([msg ], NodeType .SOLVER )
524
- self .farmer .log .debug (f"Sent solve request for quality { quality .hex ()[:10 ]} ..." )
523
+ self .farmer .log .debug (f"Sent solve request for quality { quality_chain .hex ()[:10 ]} ..." )
525
524
526
525
except Exception as e :
527
- self .farmer .log .error (f"Failed to call solver service for quality { quality .hex ()[:10 ]} ...: { e } " )
526
+ self .farmer .log .error (f"Failed to call solver service for quality { quality_chain .hex ()[:10 ]} ...: { e } " )
528
527
# clean up pending request
529
- if quality in self .farmer .pending_solver_requests :
530
- del self .farmer .pending_solver_requests [quality ]
528
+ if quality_chain in self .farmer .pending_solver_requests :
529
+ del self .farmer .pending_solver_requests [quality_chain ]
531
530
532
531
@metadata .request ()
533
532
async def solution_response (self , response : SolverResponse , peer : WSChiaConnection ) -> None :
@@ -539,20 +538,20 @@ async def solution_response(self, response: SolverResponse, peer: WSChiaConnecti
539
538
540
539
# find the matching pending request using quality_string
541
540
542
- if response .quality_string not in self .farmer .pending_solver_requests :
543
- self .farmer .log .warning (f"Received solver response for unknown quality { response .quality_string } " )
541
+ if response .quality_chain not in self .farmer .pending_solver_requests :
542
+ self .farmer .log .warning (f"Received solver response for unknown quality { response .quality_chain . hex () } " )
544
543
return
545
544
546
545
# get the original request data
547
- request_data = self .farmer .pending_solver_requests .pop (response .quality_string )
546
+ request_data = self .farmer .pending_solver_requests .pop (response .quality_chain )
548
547
quality_data = request_data ["quality_data" ]
549
548
original_peer = request_data ["peer" ]
550
- quality = response .quality_string
549
+ quality = response .quality_chain
551
550
552
551
# create the proof of space with the solver's proof
553
552
proof_bytes = response .proof
554
553
if proof_bytes is None or len (proof_bytes ) == 0 :
555
- self .farmer .log .warning (f"Received empty proof from solver for quality { quality .hex ()[: 10 ] } ..." )
554
+ self .farmer .log .warning (f"Received empty proof from solver for quality { quality .hex ()} ..." )
556
555
return
557
556
558
557
sp_challenge_hash = quality_data .challenge_hash
@@ -577,6 +576,14 @@ async def solution_response(self, response: SolverResponse, peer: WSChiaConnecti
577
576
# process the proof of space
578
577
await self .new_proof_of_space (new_proof_of_space , original_peer )
579
578
579
+ def _derive_quality_string_from_chain (self , quality_chain : bytes ) -> bytes32 :
580
+ """Derive 32-byte quality string from quality chain (16 * k bits blob)."""
581
+ # TODO: todo_v2_plots implement actual quality string derivation algorithm
582
+ # For now, hash the quality chain to get a 32-byte result
583
+ from chia .util .hash import std_hash
584
+
585
+ return std_hash (quality_chain )
586
+
580
587
@metadata .request ()
581
588
async def respond_signatures (self , response : harvester_protocol .RespondSignatures ) -> None :
582
589
request = self ._process_respond_signatures (response )
0 commit comments