Skip to content

Commit 84da072

Browse files
committed
Port check_offer_validity
1 parent 3588a1d commit 84da072

File tree

5 files changed

+40
-17
lines changed

5 files changed

+40
-17
lines changed

chia/_tests/core/data_layer/test_data_rpc.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@
7373
from chia.wallet.util.tx_config import DEFAULT_TX_CONFIG
7474
from chia.wallet.wallet import Wallet
7575
from chia.wallet.wallet_node import WalletNode
76-
from chia.wallet.wallet_request_types import DLLatestSingleton
76+
from chia.wallet.wallet_request_types import CheckOfferValidity, DLLatestSingleton
7777
from chia.wallet.wallet_rpc_api import WalletRpcApi
7878
from chia.wallet.wallet_service import WalletService
7979

@@ -222,7 +222,9 @@ async def check_singleton_confirmed(dl: DataLayer, store_id: bytes32) -> bool:
222222

223223
async def process_block_and_check_offer_validity(offer: TradingOffer, offer_setup: OfferSetup) -> bool:
224224
await offer_setup.full_node_api.farm_blocks_to_puzzlehash(count=1, guarantee_transaction_blocks=True)
225-
return (await offer_setup.maker.data_layer.wallet_rpc.check_offer_validity(offer=offer))[1]
225+
return (
226+
await offer_setup.maker.data_layer.wallet_rpc.check_offer_validity(CheckOfferValidity(offer=offer.to_bech32()))
227+
).valid
226228

227229

228230
async def run_cli_cmd(*args: str, root_path: Path) -> asyncio.subprocess.Process:
@@ -1825,9 +1827,11 @@ async def test_make_and_cancel_offer(offer_setup: OfferSetup, reference: MakeAnd
18251827
for _ in range(10):
18261828
if not (
18271829
await offer_setup.maker.data_layer.wallet_rpc.check_offer_validity(
1828-
offer=TradingOffer.from_bytes(hexstr_to_bytes(maker_response["offer"]["offer"])),
1830+
CheckOfferValidity(
1831+
offer=TradingOffer.from_bytes(hexstr_to_bytes(maker_response["offer"]["offer"])).to_bech32()
1832+
),
18291833
)
1830-
)[1]:
1834+
).valid:
18311835
break
18321836
await offer_setup.full_node_api.farm_blocks_to_puzzlehash(count=1, guarantee_transaction_blocks=True)
18331837
await asyncio.sleep(0.5)

chia/_tests/wallet/rpc/test_wallet_rpc.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@
109109
CATGetName,
110110
CATSetName,
111111
CheckDeleteKey,
112+
CheckOfferValidity,
112113
ClawbackPuzzleDecoratorOverride,
113114
CombineCoins,
114115
DefaultCAT,
@@ -1566,8 +1567,9 @@ async def test_offer_endpoints(wallet_environments: WalletTestFramework, wallet_
15661567
}
15671568
assert advanced_summary == summary
15681569

1569-
id, _valid = await env_1.rpc_client.check_offer_validity(offer)
1570-
assert id == offer.name()
1570+
offer_validity_response = await env_1.rpc_client.check_offer_validity(CheckOfferValidity(offer.to_bech32()))
1571+
assert offer_validity_response.id == offer.name()
1572+
assert offer_validity_response.valid
15711573

15721574
all_offers = await env_1.rpc_client.get_all_offers(file_contents=True)
15731575
assert len(all_offers) == 1

chia/wallet/wallet_request_types.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -661,6 +661,19 @@ class CATAssetIDToNameResponse(Streamable):
661661
name: Optional[str]
662662

663663

664+
@streamable
665+
@dataclass(frozen=True)
666+
class CheckOfferValidity(Streamable):
667+
offer: str
668+
669+
670+
@streamable
671+
@dataclass(frozen=True)
672+
class CheckOfferValidityResponse(Streamable):
673+
valid: bool
674+
id: bytes32
675+
676+
664677
@streamable
665678
@dataclass(frozen=True)
666679
class DIDSetWalletName(Streamable):

chia/wallet/wallet_rpc_api.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,8 @@
122122
CATSetNameResponse,
123123
CheckDeleteKey,
124124
CheckDeleteKeyResponse,
125+
CheckOfferValidity,
126+
CheckOfferValidityResponse,
125127
CombineCoins,
126128
CombineCoinsResponse,
127129
CreateNewDL,
@@ -2358,15 +2360,14 @@ async def get_offer_summary(self, request: dict[str, Any]) -> EndpointResult:
23582360
},
23592361
}
23602362

2361-
async def check_offer_validity(self, request: dict[str, Any]) -> EndpointResult:
2362-
offer_hex: str = request["offer"]
2363-
2364-
offer = Offer.from_bech32(offer_hex)
2363+
@marshal
2364+
async def check_offer_validity(self, request: CheckOfferValidity) -> CheckOfferValidityResponse:
2365+
offer = Offer.from_bech32(request.offer)
23652366
peer = self.service.get_full_node_peer()
2366-
return {
2367-
"valid": (await self.service.wallet_state_manager.trade_manager.check_offer_validity(offer, peer)),
2368-
"id": offer.name(),
2369-
}
2367+
return CheckOfferValidityResponse(
2368+
valid=(await self.service.wallet_state_manager.trade_manager.check_offer_validity(offer, peer)),
2369+
id=offer.name(),
2370+
)
23702371

23712372
@tx_endpoint(push=True)
23722373
async def take_offer(

chia/wallet/wallet_rpc_client.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@
3535
CATSpendResponse,
3636
CheckDeleteKey,
3737
CheckDeleteKeyResponse,
38+
CheckOfferValidity,
39+
CheckOfferValidityResponse,
3840
CombineCoins,
3941
CombineCoinsResponse,
4042
CreateNewDL,
@@ -728,9 +730,10 @@ async def get_offer_summary(
728730
res = await self.fetch("get_offer_summary", {"offer": offer.to_bech32(), "advanced": advanced})
729731
return bytes32.from_hexstr(res["id"]), res["summary"]
730732

731-
async def check_offer_validity(self, offer: Offer) -> tuple[bytes32, bool]:
732-
res = await self.fetch("check_offer_validity", {"offer": offer.to_bech32()})
733-
return bytes32.from_hexstr(res["id"]), res["valid"]
733+
async def check_offer_validity(self, request: CheckOfferValidity) -> CheckOfferValidityResponse:
734+
return CheckOfferValidityResponse.from_json_dict(
735+
await self.fetch("check_offer_validity", request.to_json_dict())
736+
)
734737

735738
async def take_offer(
736739
self,

0 commit comments

Comments
 (0)