mirror of
https://github.com/Chia-Network/chia-blockchain.git
synced 2024-09-21 08:31:52 +03:00
dont cache bls private key
This commit is contained in:
parent
4132d76d1a
commit
fb9eac5fdb
@ -88,9 +88,7 @@ class Harvester:
|
|||||||
"plot-seed": prover.get_id(),
|
"plot-seed": prover.get_id(),
|
||||||
"pool_public_key": plot_info.pool_public_key,
|
"pool_public_key": plot_info.pool_public_key,
|
||||||
"pool_contract_puzzle_hash": plot_info.pool_contract_puzzle_hash,
|
"pool_contract_puzzle_hash": plot_info.pool_contract_puzzle_hash,
|
||||||
"farmer_public_key": plot_info.farmer_public_key,
|
|
||||||
"plot_public_key": plot_info.plot_public_key,
|
"plot_public_key": plot_info.plot_public_key,
|
||||||
"local_sk": plot_info.local_sk,
|
|
||||||
"file_size": plot_info.file_size,
|
"file_size": plot_info.file_size,
|
||||||
"time_modified": plot_info.time_modified,
|
"time_modified": plot_info.time_modified,
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,8 @@ from src.types.blockchain_format.sized_bytes import bytes32
|
|||||||
from src.util.api_decorators import api_request, peer_required
|
from src.util.api_decorators import api_request, peer_required
|
||||||
from src.util.ints import uint8, uint64, uint32
|
from src.util.ints import uint8, uint64, uint32
|
||||||
|
|
||||||
|
from src.plotting.plot_tools import parse_plot_info
|
||||||
|
from src.wallet.derive_keys import master_sk_to_local_sk
|
||||||
|
|
||||||
class HarvesterAPI:
|
class HarvesterAPI:
|
||||||
harvester: Harvester
|
harvester: Harvester
|
||||||
@ -116,8 +118,15 @@ class HarvesterAPI:
|
|||||||
self.harvester.log.error(f"Exception fetching full proof for {filename}")
|
self.harvester.log.error(f"Exception fetching full proof for {filename}")
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
# Look up local_sk from plot to save locked memory
|
||||||
|
(
|
||||||
|
pool_public_key_or_puzzle_hash,
|
||||||
|
farmer_public_key,
|
||||||
|
local_master_sk,
|
||||||
|
) = parse_plot_info(plot_info.prover.get_memo())
|
||||||
|
local_sk = master_sk_to_local_sk(local_master_sk)
|
||||||
plot_public_key = ProofOfSpace.generate_plot_public_key(
|
plot_public_key = ProofOfSpace.generate_plot_public_key(
|
||||||
plot_info.local_sk.get_g1(), plot_info.farmer_public_key
|
local_sk.get_g1(), farmer_public_key
|
||||||
)
|
)
|
||||||
responses.append(
|
responses.append(
|
||||||
(
|
(
|
||||||
@ -213,8 +222,15 @@ class HarvesterAPI:
|
|||||||
self.harvester.log.warning(f"KeyError plot {plot_filename} does not exist.")
|
self.harvester.log.warning(f"KeyError plot {plot_filename} does not exist.")
|
||||||
return
|
return
|
||||||
|
|
||||||
local_sk = plot_info.local_sk
|
# Look up local_sk from plot to save locked memory
|
||||||
agg_pk = ProofOfSpace.generate_plot_public_key(local_sk.get_g1(), plot_info.farmer_public_key)
|
(
|
||||||
|
pool_public_key_or_puzzle_hash,
|
||||||
|
farmer_public_key,
|
||||||
|
local_master_sk,
|
||||||
|
) = parse_plot_info(plot_info.prover.get_memo())
|
||||||
|
local_sk = master_sk_to_local_sk(local_master_sk)
|
||||||
|
|
||||||
|
agg_pk = ProofOfSpace.generate_plot_public_key(local_sk.get_g1(), farmer_public_key)
|
||||||
|
|
||||||
# This is only a partial signature. When combined with the farmer's half, it will
|
# This is only a partial signature. When combined with the farmer's half, it will
|
||||||
# form a complete PrependSignature.
|
# form a complete PrependSignature.
|
||||||
@ -228,7 +244,7 @@ class HarvesterAPI:
|
|||||||
request.challenge_hash,
|
request.challenge_hash,
|
||||||
request.sp_hash,
|
request.sp_hash,
|
||||||
local_sk.get_g1(),
|
local_sk.get_g1(),
|
||||||
plot_info.farmer_public_key,
|
farmer_public_key,
|
||||||
message_signatures,
|
message_signatures,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -10,6 +10,9 @@ from src.plotting.plot_tools import load_plots, get_plot_filenames, find_duplica
|
|||||||
from src.util.hash import std_hash
|
from src.util.hash import std_hash
|
||||||
from src.wallet.derive_keys import master_sk_to_farmer_sk
|
from src.wallet.derive_keys import master_sk_to_farmer_sk
|
||||||
|
|
||||||
|
from src.plotting.plot_tools import parse_plot_info
|
||||||
|
from src.wallet.derive_keys import master_sk_to_local_sk
|
||||||
|
|
||||||
log = logging.getLogger(__name__)
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
@ -83,8 +86,16 @@ def check_plots(root_path, num, challenge_start, grep_string, list_duplicates, d
|
|||||||
pr = plot_info.prover
|
pr = plot_info.prover
|
||||||
log.info(f"Testing plot {plot_path} k={pr.get_size()}")
|
log.info(f"Testing plot {plot_path} k={pr.get_size()}")
|
||||||
log.info(f"\tPool public key: {plot_info.pool_public_key}")
|
log.info(f"\tPool public key: {plot_info.pool_public_key}")
|
||||||
log.info(f"\tFarmer public key: {plot_info.farmer_public_key}")
|
|
||||||
log.info(f"\tLocal sk: {plot_info.local_sk}")
|
# Look up local_sk from plot to save locked memory
|
||||||
|
(
|
||||||
|
pool_public_key_or_puzzle_hash,
|
||||||
|
farmer_public_key,
|
||||||
|
local_master_sk,
|
||||||
|
) = parse_plot_info(pr.get_memo())
|
||||||
|
local_sk = master_sk_to_local_sk(local_master_sk)
|
||||||
|
log.info(f"\tFarmer public key: {farmer_public_key}")
|
||||||
|
log.info(f"\tLocal sk: {local_sk}")
|
||||||
total_proofs = 0
|
total_proofs = 0
|
||||||
caught_exception: bool = False
|
caught_exception: bool = False
|
||||||
for i in range(num_start, num_end):
|
for i in range(num_start, num_end):
|
||||||
|
@ -22,9 +22,7 @@ class PlotInfo:
|
|||||||
prover: DiskProver
|
prover: DiskProver
|
||||||
pool_public_key: Optional[G1Element]
|
pool_public_key: Optional[G1Element]
|
||||||
pool_contract_puzzle_hash: Optional[bytes32]
|
pool_contract_puzzle_hash: Optional[bytes32]
|
||||||
farmer_public_key: G1Element
|
|
||||||
plot_public_key: G1Element
|
plot_public_key: G1Element
|
||||||
local_sk: PrivateKey
|
|
||||||
file_size: int
|
file_size: int
|
||||||
time_modified: float
|
time_modified: float
|
||||||
|
|
||||||
@ -238,9 +236,7 @@ def load_plots(
|
|||||||
prover,
|
prover,
|
||||||
pool_public_key,
|
pool_public_key,
|
||||||
pool_contract_puzzle_hash,
|
pool_contract_puzzle_hash,
|
||||||
farmer_public_key,
|
|
||||||
plot_public_key,
|
plot_public_key,
|
||||||
local_sk,
|
|
||||||
stat_info.st_size,
|
stat_info.st_size,
|
||||||
stat_info.st_mtime,
|
stat_info.st_mtime,
|
||||||
)
|
)
|
||||||
|
@ -70,6 +70,9 @@ from src.wallet.derive_keys import (
|
|||||||
)
|
)
|
||||||
from src.consensus.default_constants import DEFAULT_CONSTANTS
|
from src.consensus.default_constants import DEFAULT_CONSTANTS
|
||||||
|
|
||||||
|
from src.plotting.plot_tools import parse_plot_info
|
||||||
|
from src.wallet.derive_keys import master_sk_to_local_sk
|
||||||
|
|
||||||
test_constants = DEFAULT_CONSTANTS.replace(
|
test_constants = DEFAULT_CONSTANTS.replace(
|
||||||
**{
|
**{
|
||||||
"DIFFICULTY_STARTING": 2 ** 12,
|
"DIFFICULTY_STARTING": 2 ** 12,
|
||||||
@ -217,9 +220,16 @@ class BlockTools:
|
|||||||
"""
|
"""
|
||||||
farmer_sk = master_sk_to_farmer_sk(self.all_sks[0])
|
farmer_sk = master_sk_to_farmer_sk(self.all_sks[0])
|
||||||
for _, plot_info in self.plots.items():
|
for _, plot_info in self.plots.items():
|
||||||
agg_pk = ProofOfSpace.generate_plot_public_key(plot_info.local_sk.get_g1(), plot_info.farmer_public_key)
|
# Look up local_sk from plot to save locked memory
|
||||||
|
(
|
||||||
|
pool_public_key_or_puzzle_hash,
|
||||||
|
farmer_public_key,
|
||||||
|
local_master_sk,
|
||||||
|
) = parse_plot_info(plot_info.prover.get_memo())
|
||||||
|
local_sk = master_sk_to_local_sk(local_master_sk)
|
||||||
|
agg_pk = ProofOfSpace.generate_plot_public_key(local_sk.get_g1(), farmer_public_key)
|
||||||
if agg_pk == plot_pk:
|
if agg_pk == plot_pk:
|
||||||
harv_share = AugSchemeMPL.sign(plot_info.local_sk, m, agg_pk)
|
harv_share = AugSchemeMPL.sign(local_sk, m, agg_pk)
|
||||||
farm_share = AugSchemeMPL.sign(farmer_sk, m, agg_pk)
|
farm_share = AugSchemeMPL.sign(farmer_sk, m, agg_pk)
|
||||||
return AugSchemeMPL.aggregate([harv_share, farm_share])
|
return AugSchemeMPL.aggregate([harv_share, farm_share])
|
||||||
|
|
||||||
@ -892,9 +902,17 @@ class BlockTools:
|
|||||||
)
|
)
|
||||||
if required_iters < calculate_sp_interval_iters(constants, sub_slot_iters):
|
if required_iters < calculate_sp_interval_iters(constants, sub_slot_iters):
|
||||||
proof_xs: bytes = plot_info.prover.get_full_proof(new_challenge, proof_index)
|
proof_xs: bytes = plot_info.prover.get_full_proof(new_challenge, proof_index)
|
||||||
|
|
||||||
|
# Look up local_sk from plot to save locked memory
|
||||||
|
(
|
||||||
|
pool_public_key_or_puzzle_hash,
|
||||||
|
farmer_public_key,
|
||||||
|
local_master_sk,
|
||||||
|
) = parse_plot_info(plot_info.prover.get_memo())
|
||||||
|
local_sk = master_sk_to_local_sk(local_master_sk)
|
||||||
plot_pk = ProofOfSpace.generate_plot_public_key(
|
plot_pk = ProofOfSpace.generate_plot_public_key(
|
||||||
plot_info.local_sk.get_g1(),
|
local_sk.get_g1(),
|
||||||
plot_info.farmer_public_key,
|
farmer_public_key,
|
||||||
)
|
)
|
||||||
proof_of_space: ProofOfSpace = ProofOfSpace(
|
proof_of_space: ProofOfSpace = ProofOfSpace(
|
||||||
new_challenge,
|
new_challenge,
|
||||||
|
Loading…
Reference in New Issue
Block a user