mirror of
https://github.com/Chia-Network/chia-blockchain.git
synced 2026-08-24 10:05:29 -05:00
* use chia_rs directly for sized ints * Update data_layer_rpc_api.py
94 lines
2.8 KiB
Python
94 lines
2.8 KiB
Python
from __future__ import annotations
|
|
|
|
from dataclasses import dataclass
|
|
from datetime import datetime
|
|
|
|
from chia_rs.sized_ints import uint32, uint64
|
|
|
|
from chia.types.clvm_cost import CLVMCost
|
|
from chia.types.fee_rate import FeeRate
|
|
from chia.types.mojos import Mojos
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class MempoolItemInfo:
|
|
"""
|
|
The information the fee estimator is passed for each mempool item that's
|
|
added, removed from the mempool and included in blocks
|
|
"""
|
|
|
|
cost: int
|
|
fee: int
|
|
height_added_to_mempool: uint32
|
|
|
|
@property
|
|
def fee_per_cost(self) -> float:
|
|
return self.fee / self.cost
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class MempoolInfo:
|
|
"""
|
|
Information from the Mempool needed to estimate fees.
|
|
This information is constant during the lifetime of the FullNode process
|
|
Attributes:
|
|
max_size_in_cost (uint64): This is the maximum capacity of the mempool, measured in XCH per CLVM Cost
|
|
minimum_fee_per_cost_to_replace (uint64): Smallest FPC that might be accepted to replace another SpendBundle
|
|
max_block_clvm_cost (uint64): Max allowed cost of a farmed block
|
|
"""
|
|
|
|
max_size_in_cost: CLVMCost # Mempool max allowed CLVM cost total
|
|
minimum_fee_per_cost_to_replace: FeeRate
|
|
max_block_clvm_cost: CLVMCost # Max CLVMCost allowed in the Mempool
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class FeeMempoolInfo:
|
|
"""
|
|
Information from Mempool and MempoolItems needed to estimate fees.
|
|
Updated when `MemPoolItem`s are added or removed from the Mempool.
|
|
This information is more dynamic in nature than the info in `MempoolInfo`
|
|
|
|
Attributes:
|
|
mempool_info (MempoolInfo): A `MempoolInfo`, defined above. Parameters of our mempool.
|
|
current_mempool_cost (uint64):This is the current capacity of the mempool, measured in XCH per CLVM Cost
|
|
current_mempool_fees (int): Sum of fees for all spends waiting in the Mempool
|
|
time (datetime): Local time this sample was taken
|
|
|
|
Note that we use the node's local time, not "Blockchain time" for the timestamp above
|
|
"""
|
|
|
|
mempool_info: MempoolInfo
|
|
current_mempool_cost: CLVMCost # Current sum of CLVM cost of all SpendBundles in mempool (mempool "size")
|
|
current_mempool_fees: int # Sum of fees for all spends waiting in the Mempool
|
|
time: datetime # Local time this sample was taken
|
|
|
|
|
|
EmptyMempoolInfo = MempoolInfo(
|
|
CLVMCost(uint64(0)), FeeRate.create(Mojos(uint64(0)), CLVMCost(uint64(1))), CLVMCost(uint64(0))
|
|
)
|
|
|
|
|
|
EmptyFeeMempoolInfo = FeeMempoolInfo(
|
|
EmptyMempoolInfo,
|
|
CLVMCost(uint64(0)),
|
|
0,
|
|
datetime.min,
|
|
)
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class FeeMempoolItem:
|
|
height_added: uint32
|
|
fee_per_cost: FeeRate
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
class FeeBlockInfo: # See BlockRecord
|
|
"""
|
|
Information from Blockchain needed to estimate fees.
|
|
"""
|
|
|
|
block_height: uint32
|
|
included_items: list[MempoolItemInfo]
|