Skip to content

Commit e51c22a

Browse files
committed
Merge branch 'main' into fine_william___fine
2 parents 3c335be + 42da90e commit e51c22a

29 files changed

+389
-300
lines changed

chia/_tests/cmds/cmd_test_utils.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ async def get_transaction(self, transaction_id: bytes32) -> TransactionRecord:
121121
confirmed_at_height=uint32(1),
122122
created_at_time=uint64(1234),
123123
to_puzzle_hash=bytes32([1] * 32),
124+
to_address=encode_puzzle_hash(bytes32([1] * 32), "xch"),
124125
amount=uint64(12345678),
125126
fee_amount=uint64(1234567),
126127
confirmed=False,
@@ -271,6 +272,7 @@ async def send_transaction_multi(
271272
confirmed_at_height=uint32(1),
272273
created_at_time=uint64(1234),
273274
to_puzzle_hash=bytes32([1] * 32),
275+
to_address=encode_puzzle_hash(bytes32([1] * 32), "xch"),
274276
amount=uint64(12345678),
275277
fee_amount=uint64(1234567),
276278
confirmed=False,

chia/_tests/cmds/wallet/test_consts.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from chia_rs.sized_bytes import bytes32
55
from chia_rs.sized_ints import uint32, uint64
66

7+
from chia.util.bech32m import encode_puzzle_hash
78
from chia.wallet.conditions import ConditionValidTimes
89
from chia.wallet.signer_protocol import KeyHints, SigningInstructions, TransactionInfo, UnsignedTransaction
910
from chia.wallet.transaction_record import TransactionRecord
@@ -27,6 +28,7 @@ def get_bytes32(bytes_index: int) -> bytes32:
2728
confirmed_at_height=uint32(1),
2829
created_at_time=uint64(1234),
2930
to_puzzle_hash=get_bytes32(1),
31+
to_address=encode_puzzle_hash(get_bytes32(1), "xch"),
3032
amount=uint64(12345678),
3133
fee_amount=uint64(1234567),
3234
confirmed=False,

chia/_tests/cmds/wallet/test_did.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
from chia.types.blockchain_format.program import NIL, Program
1414
from chia.types.signing_mode import SigningMode
1515
from chia.util.bech32m import encode_puzzle_hash
16-
from chia.util.config import load_config
1716
from chia.wallet.conditions import Condition, ConditionValidTimes, CreateCoinAnnouncement, CreatePuzzleAnnouncement
1817
from chia.wallet.did_wallet.did_info import did_recovery_is_nil
1918
from chia.wallet.util.curry_and_treehash import NIL_TREEHASH
@@ -421,14 +420,10 @@ async def did_transfer_did(
421420
"150",
422421
]
423422
# these are various things that should be in the output
424-
config = load_config(
425-
root_dir,
426-
"config.yaml",
427-
)
428423
assert_list = [
429424
f"Successfully transferred DID to {t_address}",
430425
f"Transaction ID: {get_bytes32(2).hex()}",
431-
f"Transaction: {STD_TX.to_json_dict_convenience(config)}",
426+
f"Transaction: {STD_TX.to_json_dict()}",
432427
]
433428
run_cli_command_and_assert(capsys, root_dir, command_args, assert_list)
434429
expected_calls: logType = {

chia/_tests/cmds/wallet/test_wallet.py

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import pytest
1010
from chia_rs import Coin, G2Element
1111
from chia_rs.sized_bytes import bytes32
12-
from chia_rs.sized_ints import uint8, uint16, uint32, uint64
12+
from chia_rs.sized_ints import uint8, uint16, uint32, uint64, uint128
1313
from click.testing import CliRunner
1414

1515
from chia._tests.cmds.cmd_test_utils import TestRpcClients, TestWalletRpcClient, logType, run_cli_command_and_assert
@@ -41,11 +41,14 @@
4141
from chia.wallet.util.wallet_types import WalletType
4242
from chia.wallet.wallet_coin_store import GetCoinRecords
4343
from chia.wallet.wallet_request_types import (
44+
BalanceResponse,
4445
CancelOfferResponse,
4546
CATSpendResponse,
4647
CreateOfferForIDsResponse,
4748
FungibleAsset,
4849
GetHeightInfoResponse,
50+
GetWalletBalance,
51+
GetWalletBalanceResponse,
4952
GetWallets,
5053
GetWalletsResponse,
5154
NFTCalculateRoyalties,
@@ -131,6 +134,7 @@ async def get_transactions(
131134
confirmed_at_height=uint32(1 + i),
132135
created_at_time=uint64(1234 + i),
133136
to_puzzle_hash=bytes32([1 + i] * 32),
137+
to_address=encode_puzzle_hash(bytes32([1 + i] * 32), "xch"),
134138
amount=uint64(12345678 + i),
135139
fee_amount=uint64(1234567 + i),
136140
confirmed=False,
@@ -242,19 +246,23 @@ async def get_height_info(self) -> GetHeightInfoResponse:
242246
self.add_to_log("get_height_info", ())
243247
return GetHeightInfoResponse(uint32(10))
244248

245-
async def get_wallet_balance(self, wallet_id: int) -> dict[str, uint64]:
246-
self.add_to_log("get_wallet_balance", (wallet_id,))
247-
if wallet_id == 1:
248-
amount = uint64(1000000000)
249-
elif wallet_id == 2:
250-
amount = uint64(2000000000)
249+
async def get_wallet_balance(self, request: GetWalletBalance) -> GetWalletBalanceResponse:
250+
self.add_to_log("get_wallet_balance", (request,))
251+
if request.wallet_id == 1:
252+
amount = uint128(1000000000)
253+
elif request.wallet_id == 2:
254+
amount = uint128(2000000000)
251255
else:
252-
amount = uint64(1)
253-
return {
254-
"confirmed_wallet_balance": amount,
255-
"spendable_balance": amount,
256-
"unconfirmed_wallet_balance": uint64(0),
257-
}
256+
amount = uint128(1)
257+
return GetWalletBalanceResponse(
258+
BalanceResponse(
259+
wallet_id=request.wallet_id,
260+
wallet_type=uint8(0), # Doesn't matter
261+
confirmed_wallet_balance=amount,
262+
spendable_balance=amount,
263+
unconfirmed_wallet_balance=uint128(0),
264+
)
265+
)
258266

259267
async def get_nft_wallet_did(self, request: NFTGetWalletDID) -> NFTGetWalletDIDResponse:
260268
self.add_to_log("get_nft_wallet_did", (request.wallet_id,))
@@ -307,7 +315,12 @@ async def get_connections(
307315
],
308316
"get_sync_status": [(), ()],
309317
"get_height_info": [(), ()],
310-
"get_wallet_balance": [(1,), (2,), (3,), (2,)],
318+
"get_wallet_balance": [
319+
(GetWalletBalance(wallet_id=uint32(1)),),
320+
(GetWalletBalance(wallet_id=uint32(2)),),
321+
(GetWalletBalance(wallet_id=uint32(3)),),
322+
(GetWalletBalance(wallet_id=uint32(2)),),
323+
],
311324
"get_nft_wallet_did": [(3,)],
312325
"get_connections": [(None,), (None,)],
313326
}
@@ -340,6 +353,7 @@ async def send_transaction(
340353
confirmed_at_height=uint32(1),
341354
created_at_time=uint64(1234),
342355
to_puzzle_hash=get_bytes32(1),
356+
to_address=encode_puzzle_hash(get_bytes32(1), "xch"),
343357
amount=uint64(12345678),
344358
fee_amount=uint64(1234567),
345359
confirmed=False,
@@ -529,14 +543,7 @@ async def spend_clawback_coins(
529543
tx_hex_list = [get_bytes32(6).hex(), get_bytes32(7).hex(), get_bytes32(8).hex()]
530544
return {
531545
"transaction_ids": tx_hex_list,
532-
"transactions": [
533-
STD_TX.to_json_dict_convenience(
534-
{
535-
"selected_network": "mainnet",
536-
"network_overrides": {"config": {"mainnet": {"address_prefix": "xch"}}},
537-
}
538-
)
539-
],
546+
"transactions": [STD_TX.to_json_dict()],
540547
}
541548

542549
inst_rpc_client = ClawbackWalletRpcClient()

chia/_tests/core/data_layer/test_data_rpc.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ async def is_transaction_confirmed(api: WalletRpcApi, tx_id: bytes32) -> bool:
190190
except ValueError: # pragma: no cover
191191
return False
192192

193-
return True if TransactionRecord.from_json_dict_convenience(val["transaction"]).confirmed else False # mypy
193+
return True if TransactionRecord.from_json_dict(val["transaction"]).confirmed else False # mypy
194194

195195

196196
async def farm_block_with_spend(

chia/_tests/environments/wallet.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
from chia.wallet.wallet import Wallet
2626
from chia.wallet.wallet_node import Balance, WalletNode
2727
from chia.wallet.wallet_node_api import WalletNodeAPI
28+
from chia.wallet.wallet_request_types import GetWalletBalance
2829
from chia.wallet.wallet_rpc_api import WalletRpcApi
2930
from chia.wallet.wallet_rpc_client import WalletRpcClient
3031
from chia.wallet.wallet_state_manager import WalletStateManager
@@ -169,7 +170,9 @@ async def check_balances(self, additional_balance_info: dict[Union[int, str], di
169170
else {}
170171
),
171172
}
172-
balance_response: dict[str, int] = await self.rpc_client.get_wallet_balance(wallet_id)
173+
balance_response: dict[str, int] = (
174+
await self.rpc_client.get_wallet_balance(GetWalletBalance(wallet_id))
175+
).wallet_balance.to_json_dict()
173176

174177
if not expected_result.items() <= balance_response.items():
175178
for key, value in expected_result.items():

chia/_tests/pools/test_pool_rpc.py

Lines changed: 36 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,14 @@
4141
from chia.wallet.util.tx_config import DEFAULT_TX_CONFIG
4242
from chia.wallet.util.wallet_types import WalletType
4343
from chia.wallet.wallet_node import WalletNode
44-
from chia.wallet.wallet_request_types import GetWallets, PWAbsorbRewards, PWJoinPool, PWSelfPool, PWStatus
44+
from chia.wallet.wallet_request_types import (
45+
GetWalletBalance,
46+
GetWallets,
47+
PWAbsorbRewards,
48+
PWJoinPool,
49+
PWSelfPool,
50+
PWStatus,
51+
)
4552
from chia.wallet.wallet_rpc_client import WalletRpcClient
4653
from chia.wallet.wallet_state_manager import WalletStateManager
4754

@@ -468,8 +475,8 @@ def mempool_empty() -> bool:
468475
assert len(asset_id) > 0
469476
await full_node_api.process_all_wallet_transactions(wallet=wallet)
470477
await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
471-
bal_0 = await client.get_wallet_balance(cat_0_id)
472-
assert bal_0["confirmed_wallet_balance"] == 20
478+
bal_0 = (await client.get_wallet_balance(GetWalletBalance(cat_0_id))).wallet_balance
479+
assert bal_0.confirmed_wallet_balance == 20
473480

474481
# Test creation of many pool wallets. Use untrusted since that is the more complicated protocol, but don't
475482
# run this code more than once, since it's slow.
@@ -535,8 +542,8 @@ async def test_absorb_self(
535542
await add_blocks_in_batches(blocks[-3:], full_node_api.full_node)
536543
await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
537544

538-
bal = await client.get_wallet_balance(2)
539-
assert bal["confirmed_wallet_balance"] == 2 * 1_750_000_000_000
545+
bal = (await client.get_wallet_balance(GetWalletBalance(uint32(2)))).wallet_balance
546+
assert bal.confirmed_wallet_balance == 2 * 1_750_000_000_000
540547

541548
# Claim 2 * 1.75, and farm a new 1.75
542549
absorb_txs = (
@@ -561,8 +568,8 @@ async def test_absorb_self(
561568
new_status: PoolWalletInfo = (await client.pw_status(PWStatus(uint32(2)))).state
562569
assert status.current == new_status.current
563570
assert status.tip_singleton_coin_id != new_status.tip_singleton_coin_id
564-
bal = await client.get_wallet_balance(2)
565-
assert bal["confirmed_wallet_balance"] == 1 * 1_750_000_000_000
571+
bal = (await client.get_wallet_balance(GetWalletBalance(uint32(2)))).wallet_balance
572+
assert bal.confirmed_wallet_balance == 1 * 1_750_000_000_000
566573

567574
# Claim another 1.75
568575
absorb_txs1 = (
@@ -575,8 +582,8 @@ async def test_absorb_self(
575582

576583
await full_node_api.farm_blocks_to_puzzlehash(count=2, farm_to=our_ph, guarantee_transaction_blocks=True)
577584
await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
578-
bal = await client.get_wallet_balance(2)
579-
assert bal["confirmed_wallet_balance"] == 0
585+
bal = (await client.get_wallet_balance(GetWalletBalance(uint32(2)))).wallet_balance
586+
assert bal.confirmed_wallet_balance == 0
580587

581588
assert len(await wallet_node.wallet_state_manager.tx_store.get_unconfirmed_for_wallet(2)) == 0
582589

@@ -590,8 +597,8 @@ async def test_absorb_self(
590597
await full_node_api.farm_blocks_to_puzzlehash(count=2, farm_to=our_ph, guarantee_transaction_blocks=True)
591598

592599
# Balance ignores non coinbase TX
593-
bal = await client.get_wallet_balance(2)
594-
assert bal["confirmed_wallet_balance"] == 0
600+
bal = (await client.get_wallet_balance(GetWalletBalance(uint32(2)))).wallet_balance
601+
assert bal.confirmed_wallet_balance == 0
595602

596603
with pytest.raises(ValueError):
597604
await client.pw_absorb_rewards(
@@ -626,8 +633,8 @@ async def test_absorb_self_multiple_coins(
626633
pool_expected_confirmed_balance = 0
627634

628635
await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
629-
main_bal = await client.get_wallet_balance(1)
630-
assert main_bal["confirmed_wallet_balance"] == main_expected_confirmed_balance
636+
main_bal = (await client.get_wallet_balance(GetWalletBalance(uint32(1)))).wallet_balance
637+
assert main_bal.confirmed_wallet_balance == main_expected_confirmed_balance
631638

632639
status: PoolWalletInfo = (await client.pw_status(PWStatus(uint32(2)))).state
633640
assert status.current.state == PoolSingletonState.SELF_POOLING.value
@@ -650,10 +657,10 @@ async def test_absorb_self_multiple_coins(
650657
pool_expected_confirmed_balance += block_count * 1_750_000_000_000
651658
main_expected_confirmed_balance += block_count * 250_000_000_000
652659

653-
main_bal = await client.get_wallet_balance(1)
654-
assert main_bal["confirmed_wallet_balance"] == main_expected_confirmed_balance
655-
bal = await client.get_wallet_balance(2)
656-
assert bal["confirmed_wallet_balance"] == pool_expected_confirmed_balance
660+
main_bal = (await client.get_wallet_balance(GetWalletBalance(uint32(1)))).wallet_balance
661+
assert main_bal.confirmed_wallet_balance == main_expected_confirmed_balance
662+
bal = (await client.get_wallet_balance(GetWalletBalance(uint32(2)))).wallet_balance
663+
assert bal.confirmed_wallet_balance == pool_expected_confirmed_balance
657664

658665
# Claim
659666
absorb_txs = (
@@ -671,10 +678,10 @@ async def test_absorb_self_multiple_coins(
671678
new_status: PoolWalletInfo = (await client.pw_status(PWStatus(uint32(2)))).state
672679
assert status.current == new_status.current
673680
assert status.tip_singleton_coin_id != new_status.tip_singleton_coin_id
674-
main_bal = await client.get_wallet_balance(1)
675-
pool_bal = await client.get_wallet_balance(2)
676-
assert pool_bal["confirmed_wallet_balance"] == pool_expected_confirmed_balance
677-
assert main_bal["confirmed_wallet_balance"] == main_expected_confirmed_balance # 10499999999999
681+
main_bal = (await client.get_wallet_balance(GetWalletBalance(uint32(1)))).wallet_balance
682+
pool_bal = (await client.get_wallet_balance(GetWalletBalance(uint32(2)))).wallet_balance
683+
assert pool_bal.confirmed_wallet_balance == pool_expected_confirmed_balance
684+
assert main_bal.confirmed_wallet_balance == main_expected_confirmed_balance # 10499999999999
678685

679686
@pytest.mark.anyio
680687
async def test_absorb_pooling(
@@ -726,8 +733,8 @@ async def farming_to_pool() -> bool:
726733
await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
727734
# Pooled plots don't have balance
728735
main_expected_confirmed_balance += block_count * 250_000_000_000
729-
bal = await client.get_wallet_balance(2)
730-
assert bal["confirmed_wallet_balance"] == 0
736+
bal = (await client.get_wallet_balance(GetWalletBalance(uint32(2)))).wallet_balance
737+
assert bal.confirmed_wallet_balance == 0
731738

732739
# Claim block_count * 1.75
733740
ret = await client.pw_absorb_rewards(
@@ -751,12 +758,12 @@ async def status_updated() -> bool:
751758

752759
await time_out_assert(20, status_updated)
753760
new_status = (await client.pw_status(PWStatus(uint32(2)))).state
754-
bal = await client.get_wallet_balance(2)
755-
assert bal["confirmed_wallet_balance"] == 0
761+
bal = (await client.get_wallet_balance(GetWalletBalance(uint32(2)))).wallet_balance
762+
assert bal.confirmed_wallet_balance == 0
756763

757764
await full_node_api.wait_for_wallet_synced(wallet_node=wallet_node, timeout=20)
758-
bal = await client.get_wallet_balance(2)
759-
assert bal["confirmed_wallet_balance"] == 0
765+
bal = (await client.get_wallet_balance(GetWalletBalance(uint32(2)))).wallet_balance
766+
assert bal.confirmed_wallet_balance == 0
760767
assert len(await wallet_node.wallet_state_manager.tx_store.get_unconfirmed_for_wallet(2)) == 0
761768
peak = full_node_api.full_node.blockchain.get_peak()
762769
assert peak is not None
@@ -798,8 +805,8 @@ async def status_updated() -> bool:
798805
status = (await client.pw_status(PWStatus(uint32(2)))).state
799806
assert ret.fee_transaction is None
800807

801-
bal2 = await client.get_wallet_balance(2)
802-
assert bal2["confirmed_wallet_balance"] == 0
808+
bal2 = (await client.get_wallet_balance(GetWalletBalance(uint32(2)))).wallet_balance
809+
assert bal2.confirmed_wallet_balance == 0
803810

804811
@pytest.mark.anyio
805812
async def test_self_pooling_to_pooling(self, setup: Setup, fee: uint64, self_hostname: str) -> None:

0 commit comments

Comments
 (0)