69 lines
1.8 KiB
Python
69 lines
1.8 KiB
Python
from dataclasses import dataclass
|
|
from typing import Optional
|
|
|
|
from blspy import G2Element
|
|
|
|
from chia.types.blockchain_format.pool_target import PoolTarget
|
|
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, uint32, uint64
|
|
from chia.util.streamable import Streamable, streamable
|
|
|
|
"""
|
|
Protocol between farmer and full node.
|
|
Note: When changing this file, also change protocol_message_types.py, and the protocol version in shared_protocol.py
|
|
"""
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
@streamable
|
|
class NewSignagePoint(Streamable):
|
|
challenge_hash: bytes32
|
|
challenge_chain_sp: bytes32
|
|
reward_chain_sp: bytes32
|
|
difficulty: uint64
|
|
sub_slot_iters: uint64
|
|
signage_point_index: uint8
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
@streamable
|
|
class DeclareProofOfSpace(Streamable):
|
|
challenge_hash: bytes32
|
|
challenge_chain_sp: bytes32
|
|
signage_point_index: uint8
|
|
reward_chain_sp: bytes32
|
|
proof_of_space: ProofOfSpace
|
|
challenge_chain_sp_signature: G2Element
|
|
reward_chain_sp_signature: G2Element
|
|
farmer_puzzle_hash: bytes32
|
|
pool_target: Optional[PoolTarget]
|
|
pool_signature: Optional[G2Element]
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
@streamable
|
|
class RequestSignedValues(Streamable):
|
|
quality_string: bytes32
|
|
foliage_block_data_hash: bytes32
|
|
foliage_transaction_block_hash: bytes32
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
@streamable
|
|
class FarmingInfo(Streamable):
|
|
challenge_hash: bytes32
|
|
sp_hash: bytes32
|
|
timestamp: uint64
|
|
passed: uint32
|
|
proofs: uint32
|
|
total_plots: uint32
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
@streamable
|
|
class SignedValues(Streamable):
|
|
quality_string: bytes32
|
|
foliage_block_data_signature: G2Element
|
|
foliage_transaction_block_signature: G2Element
|