Skip to content

Commit a86fa01

Browse files
committed
check filter for both plot versions
1 parent 7d018af commit a86fa01

File tree

2 files changed

+29
-22
lines changed

2 files changed

+29
-22
lines changed

chia/_tests/plotting/test_prover.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
from unittest.mock import MagicMock, patch
66

77
import pytest
8+
from chia_rs.sized_bytes import bytes32
89

910
from chia.plotting.prover import PlotVersion, V1Prover, V2Prover, get_prover_from_bytes, get_prover_from_file
1011

@@ -27,7 +28,7 @@ def test_v2_prover_get_memo_raises_error(self) -> None:
2728

2829
def test_v2_prover_get_compression_level_raises_error(self) -> None:
2930
prover = V2Prover("/nonexistent/path/test.plot2")
30-
with pytest.raises(NotImplementedError, match="V2 plot format is not yet implemented"):
31+
with pytest.raises(NotImplementedError, match="V2 plot format does not support compression level"):
3132
prover.get_compression_level()
3233

3334
def test_v2_prover_get_id_raises_error(self) -> None:
@@ -38,12 +39,12 @@ def test_v2_prover_get_id_raises_error(self) -> None:
3839
def test_v2_prover_get_qualities_for_challenge_raises_error(self) -> None:
3940
prover = V2Prover("/nonexistent/path/test.plot2")
4041
with pytest.raises(NotImplementedError, match="V2 plot format is not yet implemented"):
41-
prover.get_qualities_for_challenge(b"challenge")
42+
prover.get_qualities_for_challenge(bytes32(b"1" * 32))
4243

4344
def test_v2_prover_get_full_proof_raises_error(self) -> None:
4445
prover = V2Prover("/nonexistent/path/test.plot2")
4546
with pytest.raises(NotImplementedError, match="V2 plot format require solver to get full proof"):
46-
prover.get_full_proof(b"challenge", 0)
47+
prover.get_full_proof(bytes32(b"1" * 32), 0)
4748

4849
def test_v2_prover_bytes_raises_error(self) -> None:
4950
prover = V2Prover("/nonexistent/path/test.plot2")

chia/harvester/harvester_api.py

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,19 @@ def __init__(self, harvester: Harvester):
5252
def ready(self) -> bool:
5353
return True
5454

55+
def _plot_passes_filter(self, plot_info: PlotInfo, challenge: harvester_protocol.NewSignagePointHarvester) -> bool:
56+
filter_prefix_bits = calculate_prefix_bits(
57+
self.harvester.constants,
58+
challenge.peak_height,
59+
plot_info.prover.get_size(),
60+
)
61+
return passes_plot_filter(
62+
filter_prefix_bits,
63+
plot_info.prover.get_id(),
64+
challenge.challenge_hash,
65+
challenge.sp_hash,
66+
)
67+
5568
@metadata.request(peer_required=True)
5669
async def harvester_handshake(
5770
self, harvester_handshake: harvester_protocol.HarvesterHandshake, peer: WSChiaConnection
@@ -318,26 +331,19 @@ async def lookup_challenge(
318331
# Passes the plot filter (does not check sp filter yet though, since we have not reached sp)
319332
# This is being executed at the beginning of the slot
320333
total += 1
321-
if try_plot_info.prover.get_version() == PlotVersion.V2:
322-
# TODO: todo_v2_plots need to check v2 filter
323-
v2_awaitables.append(
324-
loop.run_in_executor(
325-
self.harvester.executor, blocking_lookup_v2_partial_proofs, try_plot_filename, try_plot_info
334+
if self._plot_passes_filter(try_plot_info, new_challenge):
335+
if try_plot_info.prover.get_version() == PlotVersion.V2:
336+
# TODO: todo_v2_plots need to check v2 filter
337+
v2_awaitables.append(
338+
loop.run_in_executor(
339+
self.harvester.executor,
340+
blocking_lookup_v2_partial_proofs,
341+
try_plot_filename,
342+
try_plot_info,
343+
)
326344
)
327-
)
328-
passed += 1
329-
else:
330-
filter_prefix_bits = calculate_prefix_bits(
331-
self.harvester.constants,
332-
new_challenge.peak_height,
333-
try_plot_info.prover.get_size(),
334-
)
335-
if passes_plot_filter(
336-
filter_prefix_bits,
337-
try_plot_info.prover.get_id(),
338-
new_challenge.challenge_hash,
339-
new_challenge.sp_hash,
340-
):
345+
passed += 1
346+
else:
341347
passed += 1
342348
awaitables.append(lookup_challenge(try_plot_filename, try_plot_info))
343349
self.harvester.log.debug(f"new_signage_point_harvester {passed} plots passed the plot filter")

0 commit comments

Comments
 (0)