mirror of
https://github.com/Chia-Network/chia-blockchain.git
synced 2024-09-21 16:41:14 +03:00
89f15f591c
* wallet changes from pac * cat changes * pool tests * pooling tests passing * offers * lint * mempool_mode * black * linting * workflow files * flake8 * more cleanup * renamed * remove obsolete test, don't cast announcement * memos are not only bytes32 * trade renames * fix rpcs, block_record * wallet rpc, recompile settlement clvm * key derivation * clvm tests * lgtm issues and wallet peers * stash * rename * mypy linting * flake8 * bad initializer * flaky tests * Make CAT wallets only create on verified hints (#9651) * fix clvm tests * return to log lvl warn * check puzzle unhardened * public key, not bytes. api caching change * precommit changes * remove unused import * mypy ci file, tests * ensure balance before creating a tx * Remove CAT logic from full node test (#9741) * Add confirmations and sleeps for wallet (#9742) * use pool executor * rever merge mistakes/cleanup * Fix trade test flakiness (#9751) * remove precommit * older version of black * lint only in super linter * Make announcements in RPC be objects instead of bytes (#9752) * Make announcements in RPC be objects instead of bytes * Lint * misc hint'ish cleanup (#9753) * misc hint'ish cleanup * unremove some ci bits * Use main cached_bls.py * Fix bad merge in main_pac (#9774) * Fix bad merge at71da0487b9
* Remove unused ignores * more unused ignores * Fix bad merge at3b143e7050
* One more byte32.from_hexstr * Remove obsolete test * remove commented out * remove duplicate payment object * remove long sync * remove unused test, noise * memos type * bytes32 * make it clear it's a single state at a time * copy over asset ids from pacr * file endl linter * Update chia/server/ws_connection.py Co-authored-by: dustinface <35775977+xdustinface@users.noreply.github.com> Co-authored-by: Matt Hauff <quexington@gmail.com> Co-authored-by: Kyle Altendorf <sda@fstab.net> Co-authored-by: dustinface <35775977+xdustinface@users.noreply.github.com>
53 lines
1.8 KiB
Python
53 lines
1.8 KiB
Python
from dataclasses import dataclass
|
|
from typing import List, Optional, Tuple, Dict, Any
|
|
|
|
from chia.types.blockchain_format.coin import Coin
|
|
from chia.types.blockchain_format.sized_bytes import bytes32
|
|
from chia.util.ints import uint8, uint32, uint64
|
|
from chia.util.streamable import Streamable, streamable
|
|
from chia.wallet.trading.offer import Offer
|
|
from chia.wallet.trading.trade_status import TradeStatus
|
|
|
|
|
|
@dataclass(frozen=True)
|
|
@streamable
|
|
class TradeRecord(Streamable):
|
|
"""
|
|
Used for storing transaction data and status in wallets.
|
|
"""
|
|
|
|
confirmed_at_index: uint32
|
|
accepted_at_time: Optional[uint64]
|
|
created_at_time: uint64
|
|
is_my_offer: bool
|
|
sent: uint32
|
|
offer: bytes
|
|
taken_offer: Optional[bytes]
|
|
coins_of_interest: List[Coin]
|
|
trade_id: bytes32
|
|
status: uint32 # TradeStatus, enum not streamable
|
|
sent_to: List[Tuple[str, uint8, Optional[str]]]
|
|
|
|
def to_json_dict_convenience(self) -> Dict[str, Any]:
|
|
formatted = self.to_json_dict()
|
|
formatted["status"] = TradeStatus(self.status).name
|
|
offer_to_summarize: bytes = self.offer if self.taken_offer is None else self.taken_offer
|
|
offer = Offer.from_bytes(offer_to_summarize)
|
|
offered, requested = offer.summary()
|
|
formatted["summary"] = {
|
|
"offered": offered,
|
|
"requested": requested,
|
|
}
|
|
formatted["pending"] = offer.get_pending_amounts()
|
|
del formatted["offer"]
|
|
return formatted
|
|
|
|
@classmethod
|
|
def from_json_dict_convenience(cls, record: Dict[str, Any], offer: str = "") -> "TradeRecord":
|
|
new_record = record.copy()
|
|
new_record["status"] = TradeStatus[record["status"]].value
|
|
del new_record["summary"]
|
|
del new_record["pending"]
|
|
new_record["offer"] = offer
|
|
return cls.from_json_dict(new_record)
|