chia-blockchain 2.4.4rc1__py3-none-any.whl → 2.4.4rc3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -67,6 +67,7 @@ def test_coins_combine(capsys: object, get_test_cli_clients: Tuple[TestRpcClient
67
67
 
68
68
  inst_rpc_client = CoinsCombineRpcClient() # pylint: disable=no-value-for-parameter
69
69
  test_rpc_clients.wallet_rpc_client = inst_rpc_client
70
+ assert sum(coin.amount for coin in STD_TX.removals) < 500_000_000_000
70
71
  command_args = [
71
72
  "wallet",
72
73
  "coins",
@@ -74,7 +75,7 @@ def test_coins_combine(capsys: object, get_test_cli_clients: Tuple[TestRpcClient
74
75
  FINGERPRINT_ARG,
75
76
  "-i1",
76
77
  "--largest-first",
77
- "-m0.001",
78
+ "-m0.5",
78
79
  "--min-amount",
79
80
  "0.1",
80
81
  "--max-amount",
@@ -91,11 +92,13 @@ def test_coins_combine(capsys: object, get_test_cli_clients: Tuple[TestRpcClient
91
92
  "150",
92
93
  ]
93
94
  # these are various things that should be in the output
95
+ assert_list = ["Fee is >= the amount of coins selected. To continue, please use --override flag."]
96
+ run_cli_command_and_assert(capsys, root_dir, command_args, assert_list)
94
97
  assert_list = [
95
98
  "Transactions would combine up to 500 coins",
96
99
  f"To get status, use command: chia wallet get_transaction -f {FINGERPRINT} -tx 0x{STD_TX.name.hex()}",
97
100
  ]
98
- run_cli_command_and_assert(capsys, root_dir, command_args, assert_list)
101
+ run_cli_command_and_assert(capsys, root_dir, command_args + ["--override"], assert_list)
99
102
  expected_tx_config = TXConfig(
100
103
  min_coin_amount=uint64(100_000_000_000),
101
104
  max_coin_amount=uint64(200_000_000_000),
@@ -109,13 +112,18 @@ def test_coins_combine(capsys: object, get_test_cli_clients: Tuple[TestRpcClient
109
112
  largest_first=True,
110
113
  target_coin_ids=[bytes32([0] * 32)],
111
114
  target_coin_amount=uint64(1_000_000_000_000),
112
- fee=uint64(1_000_000_000),
115
+ fee=uint64(500_000_000_000),
113
116
  push=False,
114
117
  )
115
118
  expected_calls: logType = {
116
- "get_wallets": [(None,)],
117
- "get_synced": [()],
119
+ "get_wallets": [(None,)] * 2,
120
+ "get_synced": [()] * 2,
118
121
  "combine_coins": [
122
+ (
123
+ expected_request,
124
+ expected_tx_config,
125
+ test_condition_valid_times,
126
+ ),
119
127
  (
120
128
  expected_request,
121
129
  expected_tx_config,
@@ -159,6 +159,13 @@ def test_internal_hash(seeded_random: Random) -> None:
159
159
  assert definition(left_hash=left_hash, right_hash=right_hash) == reference
160
160
 
161
161
 
162
+ def get_random_bytes(length: int, r: Random) -> bytes:
163
+ if length == 0:
164
+ return b""
165
+
166
+ return r.getrandbits(length * 8).to_bytes(length, "big")
167
+
168
+
162
169
  def test_leaf_hash(seeded_random: Random) -> None:
163
170
  def definition(key: bytes, value: bytes) -> bytes32:
164
171
  return SerializedProgram.to((key, value)).get_tree_hash()
@@ -169,12 +176,14 @@ def test_leaf_hash(seeded_random: Random) -> None:
169
176
  length = 0
170
177
  else:
171
178
  length = seeded_random.randrange(100)
172
- key = seeded_random.getrandbits(length * 8).to_bytes(length, "big")
179
+
180
+ key = get_random_bytes(length=length, r=seeded_random)
181
+
173
182
  if cycle in (1, 2):
174
183
  length = 0
175
184
  else:
176
185
  length = seeded_random.randrange(100)
177
- value = seeded_random.getrandbits(length * 8).to_bytes(length, "big")
186
+ value = get_random_bytes(length=length, r=seeded_random)
178
187
  reference = definition(key=key, value=value)
179
188
  data.append((key, value, reference))
180
189
 
@@ -197,7 +206,7 @@ def test_key_hash(seeded_random: Random) -> None:
197
206
  length = 0
198
207
  else:
199
208
  length = seeded_random.randrange(100)
200
- key = seeded_random.getrandbits(length * 8).to_bytes(length, "big")
209
+ key = get_random_bytes(length=length, r=seeded_random)
201
210
  reference = definition(key=key)
202
211
  data.append((key, reference))
203
212
 
@@ -3022,3 +3022,85 @@ async def test_combine_coins(wallet_environments: WalletTestFramework) -> None:
3022
3022
  )
3023
3023
  ]
3024
3024
  )
3025
+
3026
+
3027
+ @pytest.mark.parametrize(
3028
+ "wallet_environments",
3029
+ [
3030
+ {
3031
+ "num_environments": 1,
3032
+ "blocks_needed": [2],
3033
+ "trusted": True, # irrelevant
3034
+ "reuse_puzhash": True, # irrelevant
3035
+ }
3036
+ ],
3037
+ indirect=True,
3038
+ )
3039
+ @pytest.mark.limit_consensus_modes(reason="irrelevant")
3040
+ @pytest.mark.anyio
3041
+ async def test_fee_bigger_than_selection_coin_combining(wallet_environments: WalletTestFramework) -> None:
3042
+ """
3043
+ This tests the case where the coins we would otherwise select are not enough to pay the fee.
3044
+ """
3045
+
3046
+ env = wallet_environments.environments[0]
3047
+ env.wallet_aliases = {
3048
+ "xch": 1,
3049
+ "cat": 2,
3050
+ }
3051
+
3052
+ # Should have 4 coins, two 1.75 XCH, two 0.25 XCH
3053
+
3054
+ # Grab one of the 0.25 ones to specify
3055
+ async with env.wallet_state_manager.new_action_scope(wallet_environments.tx_config) as action_scope:
3056
+ target_coin = list(await env.xch_wallet.select_coins(uint64(250_000_000_000), action_scope))[0]
3057
+ assert target_coin.amount == 250_000_000_000
3058
+
3059
+ fee = uint64(1_750_000_000_000)
3060
+ # Under standard circumstances we would select the small coins, but this is not enough to pay the fee
3061
+ # Instead, we will grab the big coin first and combine it with one of the smaller coins
3062
+ xch_combine_request = CombineCoins(
3063
+ wallet_id=uint32(1),
3064
+ number_of_coins=uint16(2),
3065
+ fee=fee,
3066
+ largest_first=False,
3067
+ push=True,
3068
+ )
3069
+
3070
+ # First test an error where fee selection causes too many coins to be selected
3071
+ with pytest.raises(ResponseFailureError, match="without selecting more coins than specified: 3"):
3072
+ await env.rpc_client.combine_coins(
3073
+ dataclasses.replace(xch_combine_request, fee=uint64(2_250_000_000_000)),
3074
+ wallet_environments.tx_config,
3075
+ )
3076
+
3077
+ await env.rpc_client.combine_coins(
3078
+ xch_combine_request,
3079
+ wallet_environments.tx_config,
3080
+ )
3081
+
3082
+ await wallet_environments.process_pending_states(
3083
+ [
3084
+ WalletStateTransition(
3085
+ pre_block_balance_updates={
3086
+ "xch": {
3087
+ "unconfirmed_wallet_balance": -fee,
3088
+ "spendable_balance": -2_000_000_000_000,
3089
+ "pending_change": 250_000_000_000,
3090
+ "max_send_amount": -2_000_000_000_000,
3091
+ "pending_coin_removal_count": 2,
3092
+ }
3093
+ },
3094
+ post_block_balance_updates={
3095
+ "xch": {
3096
+ "confirmed_wallet_balance": -fee,
3097
+ "spendable_balance": 250_000_000_000,
3098
+ "pending_change": -250_000_000_000,
3099
+ "max_send_amount": 250_000_000_000,
3100
+ "pending_coin_removal_count": -2,
3101
+ "unspent_coin_count": -1, # combine 2 into 1
3102
+ }
3103
+ },
3104
+ )
3105
+ ]
3106
+ )
chia/cmds/coin_funcs.py CHANGED
@@ -128,6 +128,7 @@ async def async_combine(
128
128
  largest_first: bool,
129
129
  push: bool,
130
130
  condition_valid_times: ConditionValidTimes,
131
+ override: bool,
131
132
  ) -> List[TransactionRecord]:
132
133
  async with get_wallet_client(wallet_rpc_port, fingerprint) as (wallet_client, fingerprint, config):
133
134
  try:
@@ -167,6 +168,14 @@ async def async_combine(
167
168
  timelock_info=condition_valid_times,
168
169
  )
169
170
 
171
+ if (
172
+ not override
173
+ and wallet_id == 1
174
+ and fee >= sum(coin.amount for tx in resp.transactions for coin in tx.removals)
175
+ ):
176
+ print("Fee is >= the amount of coins selected. To continue, please use --override flag.")
177
+ return []
178
+
170
179
  print(f"Transactions would combine up to {number_of_coins} coins.")
171
180
  if push:
172
181
  cli_confirm("Would you like to Continue? (y/n): ")
chia/cmds/coins.py CHANGED
@@ -108,6 +108,7 @@ def list_cmd(
108
108
  default=False,
109
109
  help="Sort coins from largest to smallest or smallest to largest.",
110
110
  )
111
+ @click.option("--override", help="Submits transaction without checking for unusual values", is_flag=True, default=False)
111
112
  @tx_out_cmd()
112
113
  def combine_cmd(
113
114
  wallet_rpc_port: Optional[int],
@@ -125,6 +126,7 @@ def combine_cmd(
125
126
  reuse: bool,
126
127
  push: bool,
127
128
  condition_valid_times: ConditionValidTimes,
129
+ override: bool,
128
130
  ) -> List[TransactionRecord]:
129
131
  from .coin_funcs import async_combine
130
132
 
@@ -145,6 +147,7 @@ def combine_cmd(
145
147
  largest_first=largest_first,
146
148
  push=push,
147
149
  condition_valid_times=condition_valid_times,
150
+ override=override,
148
151
  )
149
152
  )
150
153
 
@@ -1204,18 +1204,22 @@ class WalletRpcApi:
1204
1204
  async with action_scope.use() as interface:
1205
1205
  interface.side_effects.selected_coins.extend(coins)
1206
1206
 
1207
- # Next let's select enough coins to meet the target if there is one
1208
- if request.target_coin_amount is not None:
1209
- fungible_amount_needed = request.target_coin_amount
1210
- if isinstance(wallet, Wallet):
1211
- fungible_amount_needed = uint64(request.target_coin_amount + request.fee)
1212
- amount_selected = sum(c.amount for c in coins)
1213
- if amount_selected < fungible_amount_needed:
1214
- coins.extend(
1215
- await wallet.select_coins(
1216
- amount=uint64(fungible_amount_needed - amount_selected), action_scope=action_scope
1217
- )
1207
+ # Next let's select enough coins to meet the target + fee if there is one
1208
+ fungible_amount_needed = uint64(0) if request.target_coin_amount is None else request.target_coin_amount
1209
+ if isinstance(wallet, Wallet):
1210
+ fungible_amount_needed = uint64(fungible_amount_needed + request.fee)
1211
+ amount_selected = sum(c.amount for c in coins)
1212
+ if amount_selected < fungible_amount_needed: # implicit fungible_amount_needed > 0 here
1213
+ coins.extend(
1214
+ await wallet.select_coins(
1215
+ amount=uint64(fungible_amount_needed - amount_selected), action_scope=action_scope
1218
1216
  )
1217
+ )
1218
+
1219
+ if len(coins) > request.number_of_coins:
1220
+ raise ValueError(
1221
+ f"Options specified cannot be met without selecting more coins than specified: {len(coins)}"
1222
+ )
1219
1223
 
1220
1224
  # Now let's select enough coins to get to the target number to combine
1221
1225
  if len(coins) < request.number_of_coins:
@@ -1243,6 +1247,7 @@ class WalletRpcApi:
1243
1247
  uint64(sum(c.amount for c in coins)) if request.target_coin_amount is None else request.target_coin_amount
1244
1248
  )
1245
1249
  if isinstance(wallet, Wallet):
1250
+ primary_output_amount = uint64(primary_output_amount - request.fee)
1246
1251
  await wallet.generate_signed_transaction(
1247
1252
  primary_output_amount,
1248
1253
  await wallet.get_puzzle_hash(new=action_scope.config.tx_config.reuse_puzhash),
@@ -8,7 +8,7 @@ import traceback
8
8
  from dataclasses import dataclass, field
9
9
  from typing import Any, Awaitable, Callable, Dict, List, Optional, Set, Tuple, Union
10
10
 
11
- from aiohttp import ClientSession, WSCloseCode, WSMessage, WSMsgType
11
+ from aiohttp import ClientSession, WebSocketError, WSCloseCode, WSMessage, WSMsgType
12
12
  from aiohttp.client import ClientWebSocketResponse
13
13
  from aiohttp.web import WebSocketResponse
14
14
  from packaging.version import Version
@@ -708,7 +708,7 @@ class WSChiaConnection:
708
708
  return full_message_loaded
709
709
  elif message.type == WSMsgType.ERROR:
710
710
  self.log.error(f"WebSocket Error: {message}")
711
- if message.data.code == WSCloseCode.MESSAGE_TOO_BIG:
711
+ if isinstance(message.data, WebSocketError) and message.data.code == WSCloseCode.MESSAGE_TOO_BIG:
712
712
  asyncio.create_task(self.close(300))
713
713
  else:
714
714
  asyncio.create_task(self.close())
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: chia-blockchain
3
- Version: 2.4.4rc1
3
+ Version: 2.4.4rc3
4
4
  Summary: Chia blockchain full node, farmer, timelord, and wallet.
5
5
  Home-page: https://chia.net/
6
6
  License: Apache License
@@ -18,7 +18,7 @@ Provides-Extra: dev
18
18
  Provides-Extra: legacy-keyring
19
19
  Provides-Extra: upnp
20
20
  Requires-Dist: aiofiles (==24.1.0)
21
- Requires-Dist: aiohttp (==3.10.2)
21
+ Requires-Dist: aiohttp (==3.10.4)
22
22
  Requires-Dist: aiohttp_cors (==0.7.0) ; extra == "dev"
23
23
  Requires-Dist: aiosqlite (==0.20.0)
24
24
  Requires-Dist: anyio (==4.3.0)
@@ -44,7 +44,7 @@ chia/_tests/cmds/test_timelock_args.py,sha256=n0pI6YtOV7G17Ub0Q0lJJnARSbjEAJOHXQ
44
44
  chia/_tests/cmds/test_tx_config_args.py,sha256=hGEnXC52E14U_JcVusiqCmP1j0xLxmlfmvm6SRkiF48,4730
45
45
  chia/_tests/cmds/testing_classes.py,sha256=IkHerldmsrGQJCSvnLEyV0IOdr2a9XjvQKY6YrfYGjw,1810
46
46
  chia/_tests/cmds/wallet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
- chia/_tests/cmds/wallet/test_coins.py,sha256=6KToxVw_mN_QT_rU5onO-wZLp_tAHdEdcGKCfCcKgl0,6595
47
+ chia/_tests/cmds/wallet/test_coins.py,sha256=p1HF734KqBdFkaTVKPh1S3Ku4F-MdxRfWU-ce9QTxTg,7016
48
48
  chia/_tests/cmds/wallet/test_consts.py,sha256=suv54GTIHGwCjIeq-zkwWu8NqGO8AIMmxxhN1GNHfLo,1662
49
49
  chia/_tests/cmds/wallet/test_dao.py,sha256=egWxijpvOImXopxmo7Q8cFbHPsH7_9ThKpzjHJ1_alM,21017
50
50
  chia/_tests/cmds/wallet/test_did.py,sha256=S0iB3dEMxlVAxiH75qDgmWeoAsHCCt1csJVJv6L1KyY,16490
@@ -80,7 +80,7 @@ chia/_tests/core/data_layer/config.py,sha256=K2Odbop3xRSlWVsfaAZG53IRXXD3pdOpiYe
80
80
  chia/_tests/core/data_layer/conftest.py,sha256=9NPs0xVEyGD75Q5g0yQc8cE7qPnvwObmh3KHtlBTITE,3891
81
81
  chia/_tests/core/data_layer/test_data_cli.py,sha256=K2vGX0p6KdCemw7-9as85O-zffm02VGetxrSD9iSvYw,2347
82
82
  chia/_tests/core/data_layer/test_data_layer.py,sha256=NCqRfZpYCp3lLq_q8HFvycL318lOmPXPEUMvzTzfe9U,2519
83
- chia/_tests/core/data_layer/test_data_layer_util.py,sha256=OFkLlaLFfA5ykKqetQhWWneMr8P9LWYa00ngrzoXvd0,7439
83
+ chia/_tests/core/data_layer/test_data_layer_util.py,sha256=rU5rOM_eE-zPsS27ZdpYZC7ET0YXB99qPDFGAf93xJs,7560
84
84
  chia/_tests/core/data_layer/test_data_rpc.py,sha256=hbDQ7Bs-JWEAehGCnm5IHrXkWttCjxwAIRVqaihMdEg,333417
85
85
  chia/_tests/core/data_layer/test_data_store.py,sha256=8YnS_fOjpOLqdB4uzJThzeDeL_bFgV7TS4a38-n6S88,93895
86
86
  chia/_tests/core/data_layer/test_data_store_schema.py,sha256=pSYRxAYsn73HeCV_OuU65RmPHWKbNws0vY4iMvQuVYU,15006
@@ -343,7 +343,7 @@ chia/_tests/wallet/nft_wallet/test_ownership_outer_puzzle.py,sha256=Dwxiw0mxO9E6
343
343
  chia/_tests/wallet/rpc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
344
344
  chia/_tests/wallet/rpc/config.py,sha256=zk46Xu_ueEcDUY3PcNCD0xqHppG_bvKmwBKH5-yuJtw,86
345
345
  chia/_tests/wallet/rpc/test_dl_wallet_rpc.py,sha256=mANfG9wIzaYJ5izNArkqHZjQzRqJf-ypLqhcs3ucGbw,12880
346
- chia/_tests/wallet/rpc/test_wallet_rpc.py,sha256=ZvKByXW-i1YVvXnbAJRQcQ6nS_EUzMKjiT6DRrlAhdI,146361
346
+ chia/_tests/wallet/rpc/test_wallet_rpc.py,sha256=ounbkLval_yz_gas-oSRimIu-pHWV1gEJd_8KAMEO7c,149327
347
347
  chia/_tests/wallet/simple_sync/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
348
348
  chia/_tests/wallet/simple_sync/config.py,sha256=fTDhByaME5cEDbtyTKCWUf69F4kajs75aTQewZMjxak,69
349
349
  chia/_tests/wallet/simple_sync/test_simple_sync_protocol.py,sha256=6t9_lo6Me5PshMZxZbCrxWLGrvOO01bw1pExJSnB6n4,32861
@@ -400,8 +400,8 @@ chia/cmds/check_wallet_db.py,sha256=9Fl2xgFYwwF99TCwxWk-8VeKQg_BzhqbV57FvwsqXmM,
400
400
  chia/cmds/chia.py,sha256=de76G_CbsKaN8jDKqA250dRRHD3hLzRKi_CVsX08tCs,4654
401
401
  chia/cmds/cmd_classes.py,sha256=kePzeJZ4i8njXVFQflzZNi-PJ3ieR4tHkHj_oS8Zcmw,11518
402
402
  chia/cmds/cmds_util.py,sha256=ksEBRBpPp9LW0fmRZHZ_dJBaa9sW_HLfXKYWt2OFSj0,19576
403
- chia/cmds/coin_funcs.py,sha256=v-W-lbfnej9Xs05M07pPUB3zkqZayD0V1vh-mcrvCgk,10334
404
- chia/cmds/coins.py,sha256=I1eUBbvCl4aHqo03jCjKaULnZ8xVGoS94YY9Xp53_7c,6555
403
+ chia/cmds/coin_funcs.py,sha256=y2JYVauYnK799_rWoxD6Irv-XkmkV5Sf5trP6ESlarg,10651
404
+ chia/cmds/coins.py,sha256=f68Vlxz7IkJjuhMTs-nAx8bWjaCnTuJo3ffL3vr0lgs,6727
405
405
  chia/cmds/completion.py,sha256=Ph1WSKtqCNO84Kw0-Ws2vVtIAg0lk5at0nnW8jKe94w,1387
406
406
  chia/cmds/configure.py,sha256=gEtnA377ADTM4yubG5eHTfbB2GIFMkM1LirmgmNYsW8,14772
407
407
  chia/cmds/dao.py,sha256=hQk8S4Y0CAgdy0oHCJegBkBjAebfMwdlKVAXa0zfyCM,30522
@@ -603,7 +603,7 @@ chia/rpc/rpc_server.py,sha256=dtV2Axb3qo4bz4jK3DSJkAZWz3E3PAf54ajNo7clV6I,17489
603
603
  chia/rpc/timelord_rpc_api.py,sha256=zGnywbUjwNGuw_z9187BOu9vQirYdpJ5HHFOHbJ7VY8,863
604
604
  chia/rpc/util.py,sha256=Risg5n2ecHKiLJBvfP47NxHiWfadflvaRxg_92DVuzo,13533
605
605
  chia/rpc/wallet_request_types.py,sha256=ZVDKxnkLn_7pDlR8TtLalKKgBcZfs7xc4uBr6RCKDQQ,16318
606
- chia/rpc/wallet_rpc_api.py,sha256=TT18Pg-VxQAXbDp5N4DiHz6-cShoTIA1Qnwc79QORiQ,224142
606
+ chia/rpc/wallet_rpc_api.py,sha256=RYhe0y3yGSjmZ_4truBf34-A8EO_W184DikuAwtNUv8,224433
607
607
  chia/rpc/wallet_rpc_client.py,sha256=D9B9gGXzvnjZfLXlMRwYuw_32lgFbjDhanx7dHug_aQ,75590
608
608
  chia/seeder/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
609
609
  chia/seeder/crawl_store.py,sha256=HgUTTGP9X1P3WNWmfoV0f6Oy8xauerQzpgBYdJOxzsE,16851
@@ -635,7 +635,7 @@ chia/server/start_service.py,sha256=QPQuxnoLEnHVNvbMRz8j7eHdG8KixCb2nnKjVwWEyBU,
635
635
  chia/server/start_timelord.py,sha256=mRap7vj0Sa9ASvtuFOZ3PwMzkqm86_OVmiQXNODp660,2802
636
636
  chia/server/start_wallet.py,sha256=wKbitcLow9XRhWCxnI0erwSqj4Yp4-7CYWxnt7_rARY,3776
637
637
  chia/server/upnp.py,sha256=h3cNKhzlLO2loAE1cVfcFbckMThXkl3owekkhfMO7Yc,3743
638
- chia/server/ws_connection.py,sha256=lfZ4TD6DxIfb00UwOyRMXfy63Odh6HaEhWRx_GI9qEY,32780
638
+ chia/server/ws_connection.py,sha256=OHriGg27zpEWWH1I_fAxxz-CNYMcaIV8QNQY84HaglA,32841
639
639
  chia/simulator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
640
640
  chia/simulator/block_tools.py,sha256=wQQTtGpYraJ9rkshc2mXQFVnkiSLexFpIXgEySYqwGg,90940
641
641
  chia/simulator/full_node_simulator.py,sha256=fs_t7vRH78M984AEvZ7zHxPPR-r0ljb0kjsY88hlEwM,34947
@@ -1021,8 +1021,8 @@ chia/wallet/wallet_transaction_store.py,sha256=Irw8k8ZqufsIDRR_uSWRV0nEOkr7m-Iz1
1021
1021
  chia/wallet/wallet_user_store.py,sha256=Ce6Gg9A7LX9f7aKdVhLe6st0o-KFPI1hl9FLro6PuCk,4090
1022
1022
  chia/wallet/wallet_weight_proof_handler.py,sha256=XlzDsTULQPljbAN7BVLo133aEc--aq0U_k4owSj3Os8,4932
1023
1023
  mozilla-ca/cacert.pem,sha256=GJ089tEDGF-6BtdsGvkVJjxtQiJUgaF1noU7M6yFdUA,234847
1024
- chia_blockchain-2.4.4rc1.dist-info/LICENSE,sha256=QsHs53_We_JTOMH_GprgI5-zMC9KC7D-Vws6Zi4efPM,11347
1025
- chia_blockchain-2.4.4rc1.dist-info/METADATA,sha256=86PZPDJbb7hSelctGv753TPx4yxQreaFwxf--84DMUM,10942
1026
- chia_blockchain-2.4.4rc1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
1027
- chia_blockchain-2.4.4rc1.dist-info/entry_points.txt,sha256=GL2-UvicPVdKz72IP4shnmV3XImfoD5pMzoURfoAYk4,742
1028
- chia_blockchain-2.4.4rc1.dist-info/RECORD,,
1024
+ chia_blockchain-2.4.4rc3.dist-info/LICENSE,sha256=QsHs53_We_JTOMH_GprgI5-zMC9KC7D-Vws6Zi4efPM,11347
1025
+ chia_blockchain-2.4.4rc3.dist-info/METADATA,sha256=9HNL1P0C9WY999IeVpD8kA35a55vhV8zY10lK6jJeN8,10942
1026
+ chia_blockchain-2.4.4rc3.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
1027
+ chia_blockchain-2.4.4rc3.dist-info/entry_points.txt,sha256=GL2-UvicPVdKz72IP4shnmV3XImfoD5pMzoURfoAYk4,742
1028
+ chia_blockchain-2.4.4rc3.dist-info/RECORD,,