62 lines
1.5 KiB
Python
62 lines
1.5 KiB
Python
from dataclasses import dataclass
|
|
from typing import List, Tuple
|
|
|
|
from blspy import G1Element, G2Element
|
|
|
|
from chia.types.blockchain_format.proof_of_space import ProofOfSpace
|
|
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
from chia.util.ints import uint8, uint64
|
|
from chia.util.streamable import Streamable, streamable
|
|
|
|
"""
|
|
Protocol between harvester and farmer.
|
|
Note: When changing this file, also change protocol_message_types.py, and the protocol version in shared_protocol.py
|
|
"""
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
@streamable
|
|
class HarvesterHandshake(Streamable):
|
|
farmer_public_keys: List[G1Element]
|
|
pool_public_keys: List[G1Element]
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
@streamable
|
|
class NewSignagePointHarvester(Streamable):
|
|
challenge_hash: bytes32
|
|
difficulty: uint64
|
|
sub_slot_iters: uint64
|
|
signage_point_index: uint8
|
|
sp_hash: bytes32
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
@streamable
|
|
class NewProofOfSpace(Streamable):
|
|
challenge_hash: bytes32
|
|
sp_hash: bytes32
|
|
plot_identifier: str
|
|
proof: ProofOfSpace
|
|
signage_point_index: uint8
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
@streamable
|
|
class RequestSignatures(Streamable):
|
|
plot_identifier: str
|
|
challenge_hash: bytes32
|
|
sp_hash: bytes32
|
|
messages: List[bytes32]
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
@streamable
|
|
class RespondSignatures(Streamable):
|
|
plot_identifier: str
|
|
challenge_hash: bytes32
|
|
sp_hash: bytes32
|
|
local_pk: G1Element
|
|
farmer_pk: G1Element
|
|
message_signatures: List[Tuple[bytes32, G2Element]]
|