Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CHIA-307] (long-lived) Vault #16610

Draft
wants to merge 414 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
414 commits
Select commit Hold shift + click to select a range
09c2683
catchup: into long_lived/vault from main @ e80ab1c275ce00cc49bd711e4e…
Quexington Jan 5, 2024
402fd66
Merge branch 'long_lived/vault' into gw.vault_create_rpc
geoffwalmsley Jan 5, 2024
52ecbf2
fix test framework imports and use make_spend for CoinSpend
geoffwalmsley Jan 5, 2024
1e1610c
Repin hsms
Quexington Jan 8, 2024
7fc1d2a
Endpoint for vault singleton creation (#17093)
Quexington Jan 8, 2024
39bab6d
Add to sdist only allowed list
Quexington Jan 19, 2024
1fbe09d
Merge remote-tracking branch 'origin/main' into long_lived/vault
Quexington Jan 22, 2024
533935d
Merge branch 'catchup/long_lived_vault_from_main_84f3e3d9f2f1e1a7a3db…
Quexington Jan 23, 2024
1e1d9a7
Signer protocol tweaks
Quexington Jan 23, 2024
e46225c
Merge branch 'quex.signer_protocol' into 'quex.wallet_signer_implemen…
Quexington Jan 23, 2024
1217e77
Merge branch 'quex.wallet_signer_implementation' into quex.remove_sig…
Quexington Jan 24, 2024
6c7699d
Merge branch 'quex.remove_signing_from_wallet' into quex.allow_only_pks
Quexington Jan 24, 2024
3b6ef9b
Merge branch 'quex.allow_only_pks' into quex.private_key_optional
Quexington Jan 24, 2024
2cc1df3
Merge branch 'quex.private_key_optional' into quex.observer_mode
Quexington Jan 24, 2024
297115d
Convert wallet RPC client to deserialized types
Quexington Jan 24, 2024
957b460
Merge branch 'quex.observer_mode' into quex.pubkey_to_observation_root
Quexington Jan 24, 2024
fc48267
Merge branch 'quex.pubkey_to_observation_root' into quex.wallet_obser…
Quexington Jan 24, 2024
8a76ae9
Introduce @tx_out_cmd decorator
Quexington Jan 23, 2024
dff2cba
Merge branch 'quex.wallet_observation_root' into quex.main_wallet_pro…
Quexington Jan 24, 2024
6ebde50
Make execute_signing_instructions RPC
Quexington Jan 23, 2024
55e78e8
Merge branch 'quex.main_wallet_protocol' into quex.prep_for_vault_wallet
Quexington Jan 24, 2024
5e4286a
Add transport layer support
Quexington Jan 23, 2024
6dafcd0
Add signer commands
Quexington Jan 23, 2024
f8d034d
Rework wallet execute_signing_instructions
Quexington Jan 23, 2024
bea085d
Inadvertent merge changes
Quexington Jan 24, 2024
3574f09
Merge branch 'quex.observer_mode' into quex.wallet_rpc_client_types
Quexington Jan 24, 2024
f836f53
Merge branch 'quex.observer_mode' into quex.pubkey_to_observation_root
Quexington Jan 24, 2024
88d9b75
Fix signer command tests
Quexington Jan 24, 2024
c591e9b
Merge branch 'quex.wallet_rpc_client_types' into quex.tx_out_decorator
Quexington Jan 24, 2024
0ccf552
Merge branch 'quex.pubkey_to_observation_root' into quex.wallet_obser…
Quexington Jan 24, 2024
9e2f0c4
Merge branch 'quex.tx_out_decorator' into quex.execute_signing_instru…
Quexington Jan 24, 2024
4529f95
Merge branch 'quex.wallet_observation_root' into quex.main_wallet_pro…
Quexington Jan 24, 2024
e509a9e
Merge branch 'quex.execute_signing_instructions_rpc' into quex.transp…
Quexington Jan 24, 2024
785d6a4
Merge branch 'quex.main_wallet_protocol' into quex.prep_for_vault_wallet
Quexington Jan 24, 2024
90fd7e6
Merge branch 'quex.transport_layer' into quex.signer_commands
Quexington Jan 24, 2024
39dd22b
catchup: into long_lived/vault from main @ 84f3e3d9f2f1e1a7a3db3e3b63…
Quexington Jan 25, 2024
7add91b
Try a different approach: recursive flattening
Quexington Jan 26, 2024
c4ead01
Bump hsms
Quexington Jan 29, 2024
89f5fc7
Merge branch 'quex.signer_protocol' into quex.wallet_signer_implement…
Quexington Jan 29, 2024
6753446
Add comments
Quexington Jan 29, 2024
c8d6add
Merge branch 'quex.wallet_signer_implementation' into quex.remove_sig…
Quexington Jan 29, 2024
7972264
Merge branch 'quex.remove_signing_from_wallet' into quex.allow_only_pks
Quexington Jan 29, 2024
31426bc
Merge branch 'quex.allow_only_pks' into quex.private_key_optional
Quexington Jan 29, 2024
586dc71
Merge branch 'quex.private_key_optional' into quex.observer_mode
Quexington Jan 29, 2024
9281f27
Merge branch 'quex.observer_mode' into quex.wallet_rpc_client_types
Quexington Jan 29, 2024
361e856
Merge branch 'quex.observer_mode' into quex.pubkey_to_observation_root
Quexington Jan 29, 2024
791eada
Merge branch 'quex.wallet_rpc_client_types' into quex.tx_out_decorator
Quexington Jan 29, 2024
ff7408a
Merge branch 'quex.pubkey_to_observation_root' into quex.wallet_obser…
Quexington Jan 29, 2024
3b35f19
Merge branch 'quex.tx_out_decorator' into quex.execute_signing_instru…
Quexington Jan 29, 2024
8b103ae
Merge branch 'quex.wallet_observation_root' into quex.main_wallet_pro…
Quexington Jan 29, 2024
b07d0e9
Merge branch 'quex.execute_signing_instructions_rpc' into quex.transp…
Quexington Jan 29, 2024
e62f945
Merge branch 'quex.main_wallet_protocol' into quex.prep_for_vault_wallet
Quexington Jan 29, 2024
7eb8cce
Merge branch 'quex.transport_layer' into quex.signer_commands
Quexington Jan 29, 2024
8bb2c25
Merge remote-tracking branch 'origin/main' into long_lived/vault
Quexington Jan 30, 2024
400f780
Merge branch 'catchup/long_lived_vault_from_main_aeecaca66384f1df60ab…
Quexington Jan 30, 2024
5350cb1
Merge branch 'quex.signer_protocol' into quex.wallet_signer_implement…
Quexington Jan 30, 2024
461d40e
Merge branch 'quex.wallet_signer_implementation' into quex.remove_sig…
Quexington Jan 30, 2024
242f424
Merge branch 'quex.remove_signing_from_wallet' into quex.allow_only_pks
Quexington Jan 30, 2024
b5d6608
Merge branch 'quex.allow_only_pks' into quex.private_key_optional
Quexington Jan 30, 2024
93e12d2
Test coverage
Quexington Jan 30, 2024
c4e3975
catchup: long_lived/vault from main @ aeecaca66384f1df60ab1f33738f9c5…
Quexington Jan 30, 2024
35ca138
Coverage ignores
Quexington Jan 30, 2024
178e3f9
Merge branch 'quex.private_key_optional' into quex.observer_mode
Quexington Jan 30, 2024
d4d8d05
Remove inadvertent time traveler
Quexington Jan 30, 2024
c4bb86c
Bring in lost time traveler
Quexington Jan 30, 2024
3e287bd
Merge branch 'quex.observer_mode' into quex.wallet_rpc_client_types
Quexington Jan 30, 2024
fd6b6c1
Merge branch 'quex.observer_mode' into quex.pubkey_to_observation_root
Quexington Jan 30, 2024
81d48a1
pylint
Quexington Jan 30, 2024
997d3c8
Merge branch 'quex.pubkey_to_observation_root' into quex.wallet_obser…
Quexington Jan 31, 2024
6c17e90
Attempt to make qr test less flaky
Quexington Jan 31, 2024
14eb69a
Actually test coverage ignore
Quexington Jan 31, 2024
c5fd0d2
Merge branch 'quex.wallet_observation_root' into quex.main_wallet_pro…
Quexington Jan 31, 2024
a73f129
Merge branch 'quex.tx_out_decorator' into quex.execute_signing_instru…
Quexington Jan 31, 2024
5530ee2
Merge branch 'quex.wallet_rpc_client_types' into quex.tx_out_decorator
Quexington Jan 31, 2024
a9c00c2
Merge branch 'quex.main_wallet_protocol' into quex.prep_for_vault_wallet
Quexington Jan 31, 2024
ab20b62
Merge branch 'quex.tx_out_decorator' into quex.execute_signing_instru…
Quexington Jan 31, 2024
47aca8c
Small refactor for test coverage
Quexington Jan 31, 2024
84ea2c7
Merge branch 'quex.execute_signing_instructions_rpc' into quex.transp…
Quexington Jan 31, 2024
edca844
transport -> translation
Quexington Jan 31, 2024
b5eabe2
missed one
Quexington Jan 31, 2024
cd91efe
Merge branch 'quex.transport_layer' into quex.signer_commands
Quexington Jan 31, 2024
b00e793
transport -> translation
Quexington Jan 31, 2024
268a0b5
Fix asdict error
Quexington Jan 31, 2024
10836d8
coverage
Quexington Jan 31, 2024
baa8962
Forgoe rotation testing for now
Quexington Jan 31, 2024
43889e4
Test coverage
Quexington Feb 1, 2024
8572c12
Wallet Signer Protocol (#16883)
Quexington Feb 2, 2024
79e5e02
jsonify_unsigned_txs -> full_jsonify
Quexington Feb 2, 2024
33e1e72
Move a class
Quexington Feb 2, 2024
f53440f
Add better type checking to framework
Quexington Feb 5, 2024
a4b5732
Merge remote-tracking branch 'origin/main' into catchup/long_lived_va…
Quexington Feb 6, 2024
129fc2a
Merge branch 'catchup/long_lived_vault_from_main_c6f1a57c565fb3e66afe…
Quexington Feb 6, 2024
fcf874c
Merge branch 'quex.wallet_signer_implementation' into quex.remove_sig…
Quexington Feb 6, 2024
0f0b92e
Merge branch 'quex.remove_signing_from_wallet' into quex.allow_only_pks
Quexington Feb 6, 2024
af5a1c0
Merge branch 'quex.allow_only_pks' into quex.private_key_optional
Quexington Feb 6, 2024
82268c3
Merge branch 'quex.private_key_optional' into quex.observer_mode
Quexington Feb 6, 2024
32c247b
explicitly state kwargs on _CommandParsingStage
Quexington Feb 7, 2024
9a462ee
Address comments by @altendky
Quexington Feb 7, 2024
306bb4e
Merge branch 'quex.observer_mode' into quex.wallet_rpc_client_types
Quexington Feb 7, 2024
33dd38d
Merge branch 'quex.observer_mode' into quex.pubkey_to_observation_root
Quexington Feb 7, 2024
889bd43
Merge branch 'quex.wallet_rpc_client_types' into quex.tx_out_decorator
Quexington Feb 7, 2024
30633e7
Merge branch 'quex.tx_out_decorator' into quex.execute_signing_instru…
Quexington Feb 7, 2024
e1842fe
Merge branch 'quex.execute_signing_instructions_rpc' into quex.transp…
Quexington Feb 7, 2024
c981bfa
Merge branch 'quex.pubkey_to_observation_root' into quex.wallet_obser…
Quexington Feb 7, 2024
e611d27
Merge branch 'quex.transport_layer' into quex.signer_commands
Quexington Feb 7, 2024
aabfa33
Merge branch 'quex.wallet_observation_root' into quex.main_wallet_pro…
Quexington Feb 7, 2024
4dc4b29
Merge branch 'quex.main_wallet_protocol' into quex.prep_for_vault_wallet
Quexington Feb 7, 2024
640b154
catchup: long_lived/vault from main @ 07fcecd (#17496)
Quexington Feb 8, 2024
a05a00b
Implement Wallet Signer Protocol in Chia Wallet (#16895)
Quexington Feb 12, 2024
a79b6fa
Remove signing from wallet (#16896)
Quexington Feb 20, 2024
d03844c
Merge commit '368fecc17eb902551d21fad4e39b0f26befbbe67' into catchup/…
Quexington Feb 23, 2024
4094c4c
Consolidate add_private_key and add_public_key
Quexington Feb 26, 2024
dd006b9
Consolidate get_key_for_fingerprint and get_public_key_for_fingerprint
Quexington Feb 26, 2024
71d3ba6
Test fix
Quexington Feb 26, 2024
5059347
Merge remote-tracking branch 'origin/main' into catchup/long_lived_va…
Quexington Feb 26, 2024
72d8ec4
Merge branch 'catchup/long_lived_vault_from_main_368fecc17eb902551d21…
Quexington Feb 26, 2024
9aeab6b
Merge branch 'quex.allow_only_pks' into quex.private_key_optional
Quexington Feb 27, 2024
3c172ef
Merge fix
Quexington Feb 27, 2024
c068e1f
Merge branch 'quex.private_key_optional' into quex.observer_mode
Quexington Feb 27, 2024
107302a
Merge branch 'quex.observer_mode' into quex.wallet_rpc_client_types
Quexington Feb 27, 2024
c2e1cf9
catchup: long_lived/vault from main @ 368fecc17eb902551d21fad4e39b0f2…
Quexington Feb 27, 2024
eb7e4df
Merge branch 'quex.observer_mode' into quex.pubkey_to_observation_root
Quexington Feb 27, 2024
6222fd9
Bad merge
Quexington Feb 27, 2024
c8b78cc
Allow public-key-only entries in keyring (#16967)
Quexington Feb 27, 2024
1def47d
Merge branch 'quex.wallet_rpc_client_types' into quex.tx_out_decorator
Quexington Feb 28, 2024
8b882ab
Bad merge
Quexington Feb 28, 2024
be1b6b0
oops
Quexington Feb 28, 2024
ed9a0a9
Merge branch 'quex.tx_out_decorator' into quex.execute_signing_instru…
Quexington Feb 28, 2024
593ec9b
Merge branch 'quex.pubkey_to_observation_root' into quex.wallet_obser…
Quexington Feb 28, 2024
4882d21
Merge branch 'quex.execute_signing_instructions_rpc' into quex.transp…
Quexington Feb 28, 2024
acce832
pylint
Quexington Feb 28, 2024
90a5538
Merge branch 'quex.pubkey_to_observation_root' into quex.wallet_obser…
Quexington Feb 28, 2024
54dc54a
Merge branch 'quex.wallet_observation_root' into quex.main_wallet_pro…
Quexington Feb 28, 2024
ba64835
Merge branch 'quex.main_wallet_protocol' into quex.prep_for_vault_wallet
Quexington Feb 28, 2024
8d431a1
Tweak keychain_proxy.get_key_for_fingerprint
Quexington Feb 28, 2024
d9443e7
Fix wallet RPC test?
Quexington Feb 28, 2024
eb5eb59
pragma: no cover
Quexington Feb 28, 2024
7aa2449
Merge branch 'quex.transport_layer' into quex.signer_commands
Quexington Feb 28, 2024
6c940c6
Make WalletStateManager.private_key optional (#16897)
Quexington Feb 29, 2024
7eb45ab
Redesign clvm_streamable
Quexington Mar 15, 2024
b44e595
Merge commit '83f090133f' into catchup/long_lived_vault_from_main_4df…
Quexington Mar 18, 2024
6e2c7c5
Fix test imports
Quexington Mar 18, 2024
fa96d05
black
Quexington Mar 18, 2024
334b4bd
fix one more test
Quexington Mar 18, 2024
713bf95
Address comments by @altendky
Quexington Mar 19, 2024
7ca3002
Test coverage
Quexington Mar 20, 2024
c793920
bytes32
Quexington Mar 20, 2024
2fec730
Better CLI mnemonic check
Quexington Mar 20, 2024
e7a7a11
Merge branch 'quex.observer_mode' into quex.pubkey_to_observation_root
Quexington Mar 20, 2024
6f46486
Use functools.partial
Quexington Mar 21, 2024
5680253
Rename full jsonify to chip 29
Quexington Mar 21, 2024
70f5665
whoops missed a couple
Quexington Mar 21, 2024
8fbc831
Update key functions to handle observer only functionality (#16903)
Quexington Mar 21, 2024
482e240
Merge remote-tracking branch 'origin/long_lived/vault' into quex.rede…
Quexington Mar 21, 2024
ac2f2e4
Merge commit 'long_lived/vault' into HEAD
Quexington Mar 21, 2024
e28b05f
Merge remote-tracking branch 'origin/main' into catchup/long_lived_va…
Quexington Mar 22, 2024
99a58af
Merge branch 'catchup/long_lived_vault_from_main_4df4496f57423173acd6…
Quexington Mar 22, 2024
6221093
Better CLI mnemonic check
Quexington Mar 20, 2024
c6143a8
Merge remote-tracking branch 'origin/catchup/long_lived_vault_from_ma…
Quexington Mar 22, 2024
0ac8aef
black
Quexington Mar 22, 2024
3dc341d
pylint
Quexington Mar 22, 2024
84ed3c8
Merge branch 'quex.wallet_rpc_client_types' into quex.tx_out_decorator
Quexington Mar 22, 2024
16a28b3
Merge branch 'quex.pubkey_to_observation_root' into quex.wallet_obser…
Quexington Mar 22, 2024
1fd43c1
Missed one
Quexington Mar 22, 2024
614c0e9
Merge remote-tracking branch 'origin/catchup/long_lived_vault_from_ma…
Quexington Mar 22, 2024
d49af2f
Merge branch 'quex.wallet_observation_root' into quex.main_wallet_pro…
Quexington Mar 22, 2024
917fe0f
black
Quexington Mar 22, 2024
c391c5f
Merge branch 'quex.tx_out_decorator' into quex.execute_signing_instru…
Quexington Mar 22, 2024
29ddd41
Merge branch 'quex.main_wallet_protocol' into quex.prep_for_vault_wallet
Quexington Mar 22, 2024
48dd429
Farm at least one block
Quexington Mar 25, 2024
cb6ab4f
Revert last change and fix 0 block farming
Quexington Mar 25, 2024
d536623
Merge branch 'quex.execute_signing_instructions_rpc' into quex.transp…
Quexington Mar 25, 2024
5fea5e5
black
Quexington Mar 25, 2024
b318b63
Merge branch 'quex.transport_layer' into quex.signer_commands
Quexington Mar 25, 2024
2481f78
bad merge
Quexington Mar 25, 2024
4003bca
Merge fix
Quexington Mar 25, 2024
061ee98
catchup: long_lived/vault from main @ b08713f3db9931ea16b1005b7676dd7…
Quexington Mar 26, 2024
1be0d0d
Merge remote-tracking branch 'origin/long_lived/vault' into quex.wall…
Quexington Mar 26, 2024
9ba9060
Inadvertent changes
Quexington Mar 26, 2024
d84cad1
Merge remote-tracking branch 'origin/long_lived/vault' into quex.pubk…
Quexington Mar 26, 2024
eb62c81
Inadvertent changes
Quexington Mar 26, 2024
23c9ee8
Broaden the `Keychain` definition of public keys to include more than…
Quexington Mar 26, 2024
e62e08c
Syncronize with quex.tx_out_decorator2
Quexington Mar 27, 2024
65e1c48
Merge branch 'quex.tx_out_decorator' into quex.execute_signing_instru…
Quexington Mar 27, 2024
04bed9b
Redesign `@clvm_streamable` (#17715)
Quexington Mar 28, 2024
98dda39
These are no longer dictionaries.
AmineKhaldi Mar 28, 2024
57b9eec
Use new clvm_streamable pattern
Quexington Mar 28, 2024
7df2114
Merge remote-tracking branch 'origin/long_lived/vault' into quex.wall…
Quexington Mar 29, 2024
5e13d4c
Fix offer endpoint
Quexington Mar 29, 2024
aacc9f0
Add support in wallet for non-G1Element observation roots (#16976)
Quexington Apr 1, 2024
5484654
Wallet -> MainWalletProtocol (#16978)
Quexington Apr 8, 2024
bcc7ebe
Add @tx_out_cmd decorator
Quexington Mar 25, 2024
ec6957f
Convert wallet RPC client to deserialized types (#17393)
Quexington Apr 8, 2024
92b1cc5
Merge commit '02a7e8b1b55b0f43add5c224fb5744313872b5b6' into catchup/…
Quexington Apr 8, 2024
2edabcb
Bump ecdsa version
Quexington Apr 8, 2024
8144884
Merge branch 'catchup/long_lived_vault_from_main_02a7e8b1b55b0f43add5…
Quexington Apr 9, 2024
fa800d5
Merge branch 'catchup/long_lived_vault_from_main_02a7e8b1b55b0f43add5…
Quexington Apr 9, 2024
ff8b5a8
catchup: long_lived/vault from main @ 02a7e8b1b55b0f43add5c224fb57443…
Quexington Apr 16, 2024
47fdf88
Prep for Vault Wallet (#17138)
Quexington Apr 25, 2024
41b9384
Merge commit '646c416622b4512097bdee7a9d48259136d41f1a' into catchup/…
Quexington May 6, 2024
ed66cc7
Fix @marshal util to return proper transactions
Quexington May 6, 2024
ff0b92f
catchup: into long_lived/vault from main @ 646c416622b4512097bdee7a9…
Quexington May 7, 2024
1abae41
Add get_public_key
Quexington May 8, 2024
d352c11
Add @tx_out_cmd decorator (#17842)
Quexington May 9, 2024
9fd0c86
port `chia wallet send` to @tx_out_cmd
Quexington Mar 25, 2024
96dd9e4
[CHIA-423] Port `chia wallet send` to @tx_out_cmd (#18002)
Quexington May 15, 2024
667d795
Merge commit 'bd3a638db10ee92a15f138ceaef06648c3c7b480' into catchup/…
Quexington May 15, 2024
618e4f9
merge fix of puzzle hash derivation
Quexington May 15, 2024
d423e18
Port `chia wallet coins` to @tx_out_cmd
Quexington Mar 25, 2024
15dfd0e
catchup: into long_lived/vault from main @ bd3a638db10ee92a15f138ceae…
Quexington May 16, 2024
a1bccab
Port chia wallet clawback to @tx_out_cmd
Quexington Mar 25, 2024
8f43e6c
[CHIA-424] Port `chia wallet coins` to @tx_out_cmd (#18023)
Quexington May 16, 2024
6a51fdc
[CHIA-426] Port `chia wallet clawback` to @tx_out_cmd (#18036)
Quexington May 17, 2024
c598f70
Port `chia wallet take/cancel_offer` to @tx_out_cmd
Quexington Mar 25, 2024
0afa088
[CHIA-427] Port `chia wallet take/cancel_offer` to @tx_out_cmd (#18038)
Quexington May 20, 2024
52ad57c
Port `chia wallet did ...` to @tx_out_cmd
Quexington Mar 26, 2024
be3edd0
[CHIA-428] Port `chia wallet did ...` to @tx_out_cmd (#18041)
Quexington May 20, 2024
19a70e7
Port `chia wallet nft ...` to @tx_out_cmd
Quexington Mar 26, 2024
fcc772e
[CHIA-429] Port `chia wallet nft ...` to @tx_out_cmd (#18044)
Quexington May 21, 2024
7adbf94
Port `chia wallet notifications send` to @tx_out_cmd
Quexington Mar 26, 2024
f10d13f
[CHIA-430] Port `chia wallet notifications send` to @tx_out_cmd (#18047)
Quexington May 22, 2024
c23b890
Port `chia wallet vcs ...` to @tx_out_cmd
Quexington Mar 26, 2024
a7a0cc8
[CHIA-431] Port `chia wallet vcs ...` to @tx_out_cmd (#18062)
Quexington May 22, 2024
e9c7d32
Port `chia dao ...` to @tx_out_cmd
Quexington Mar 26, 2024
a67e54f
Exclude data layer and plotnft functions
Quexington Mar 25, 2024
efb39bf
Merge branch 'quex.port_dao_cmds_to_tx_out_cmd' into quex.execute_sig…
Quexington May 22, 2024
c2c4a04
[no ci]
Quexington May 22, 2024
1ba3b3a
Address comments by @AmineKhaldi
Quexington May 22, 2024
8b7d391
Merge branch 'quex.execute_signing_instructions_rpc' into quex.transp…
Quexington May 23, 2024
a12341b
Fix rpc util
Quexington May 23, 2024
205045c
Merge branch 'quex.transport_layer' into quex.signer_commands
Quexington May 23, 2024
7424942
[CHIA-432] Port `chia dao ...` to @tx_out_cmd (and exclude DL and poo…
Quexington May 23, 2024
5c407ea
Merge commit '32fd48159f761ad7c59e5b8f02a7aed17e2503e9' into catchup/…
Quexington May 23, 2024
6fbee4d
catchup: long_lived/vault from main @ 32fd48159f761ad7c59e5b8f02a7aed…
Quexington May 28, 2024
78c8fb7
[CHIA-433] Make execute_signing_instructions RPC (#17398)
Quexington Jun 3, 2024
95ac9f1
add test for BSTLSigningInstructions
Quexington Jun 4, 2024
8e5add1
[CHIA-434] Add translation layer for blind signing (#16993)
Quexington Jun 5, 2024
18d46ed
[CHIA-435] Add `chia wallet signer` commands (#17399)
Quexington Jun 11, 2024
13ccfa7
Merge commit '9ea4609618cba2229dc9f4b916ec82927c79a0d6' into catchup/…
Quexington Jun 11, 2024
f370c45
Rename p2_singeton_via_delegated_puzzle -> p2_singeton_via_delegated_…
Quexington Jun 17, 2024
4091d79
catchup: long_lived/vault from main @ 9ea4609618cba2229dc9f4b916ec829…
Quexington Jun 17, 2024
d9c30a2
Add Add p2_singleton_via_delegated_puzzle_safe.clsp
Quexington Jun 17, 2024
0c993a0
Add test coverage
Quexington Jun 18, 2024
62e73a0
test coverage again
Quexington Jun 20, 2024
5c7364d
move gather_signing_info to main wallet
geoffwalmsley Jun 24, 2024
e583831
[CHIA-777] Generalize `p2_singleton_via_delegated_puzzle` (#18197)
Quexington Jun 25, 2024
17e52c5
Merge commit '9e1a4dceb724d7ebf56e3d8a75e8692184997805' into catchup/…
Quexington Jun 26, 2024
844cb8e
Bring Wallet into conformity with MainWalletProtocol
Quexington Jun 26, 2024
57198e2
catchup: long_lived/vault from main @ 9e1a4dceb724d7ebf56e3d8a75e8692…
Quexington Jul 8, 2024
6f55be0
move gather_signing_info to main wallet (#18240)
Quexington Jul 8, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion chia-blockchain-gui
Empty file modified chia/_tests/build-init-files.py
100755 → 100644
Empty file.
Empty file modified chia/_tests/check_pytest_monitor_output.py
100755 → 100644
Empty file.
Empty file modified chia/_tests/check_sql_statements.py
100755 → 100644
Empty file.
Empty file modified chia/_tests/chia-start-sim
100755 → 100644
Empty file.
158 changes: 158 additions & 0 deletions chia/_tests/clvm/test_p2_singletons.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,158 @@
from __future__ import annotations

import pytest
from chia_rs import G2Element

from chia.clvm.spend_sim import CostLogger, sim_and_client
from chia.types.blockchain_format.program import Program
from chia.types.blockchain_format.sized_bytes import bytes32
from chia.types.coin_spend import make_spend
from chia.types.mempool_inclusion_status import MempoolInclusionStatus
from chia.types.spend_bundle import SpendBundle
from chia.util.errors import Err
from chia.util.ints import uint64
from chia.wallet.conditions import CreateCoin
from chia.wallet.puzzles import p2_singleton_via_delegated_puzzle_safe as dp_safe
from chia.wallet.util.curry_and_treehash import shatree_atom

ACS = Program.to(1)
ACS_HASH = ACS.get_tree_hash()

MOCK_SINGLETON_MOD = Program.to([2, 5, 7]) # (a 5 11) - (mod (_ PUZZLE . solution) (a PUZZLE solution))
MOCK_SINGLETON_MOD_HASH = MOCK_SINGLETON_MOD.get_tree_hash()
MOCK_SINGLETON_LAUNCHER_ID = bytes32([0] * 32)
MOCK_SINGLETON_LAUNCHER_HASH = bytes32([1] * 32)
MOCK_SINGLETON = MOCK_SINGLETON_MOD.curry(
Program.to((MOCK_SINGLETON_MOD_HASH, (MOCK_SINGLETON_LAUNCHER_ID, MOCK_SINGLETON_LAUNCHER_HASH))),
ACS,
)
MOCK_SINGLETON_HASH = MOCK_SINGLETON.get_tree_hash()
dp_safe.PRE_HASHED_HASHES[MOCK_SINGLETON_MOD_HASH] = shatree_atom(MOCK_SINGLETON_MOD_HASH)
dp_safe.PRE_HASHED_HASHES[MOCK_SINGLETON_LAUNCHER_HASH] = shatree_atom(MOCK_SINGLETON_LAUNCHER_HASH)


@pytest.mark.anyio
async def test_dp_safe_lifecycle(cost_logger: CostLogger) -> None:
P2_SINGLETON = dp_safe.construct(MOCK_SINGLETON_LAUNCHER_ID, MOCK_SINGLETON_MOD_HASH, MOCK_SINGLETON_LAUNCHER_HASH)
P2_SINGLETON_HASH = dp_safe.construct_hash(
MOCK_SINGLETON_LAUNCHER_ID, MOCK_SINGLETON_MOD_HASH, MOCK_SINGLETON_LAUNCHER_HASH
)
assert dp_safe.match(P2_SINGLETON) is not None
assert dp_safe.match(ACS) is None
assert dp_safe.match(MOCK_SINGLETON) is None

async with sim_and_client() as (sim, sim_client):
await sim.farm_block(P2_SINGLETON_HASH)
await sim.farm_block(MOCK_SINGLETON_HASH)
p2_singleton = (await sim_client.get_coin_records_by_puzzle_hash(P2_SINGLETON_HASH, include_spent_coins=False))[
0
].coin
singleton = (await sim_client.get_coin_records_by_puzzle_hash(MOCK_SINGLETON_HASH, include_spent_coins=False))[
0
].coin

dp = Program.to(1)
dp_hash = dp.get_tree_hash()
bundle = cost_logger.add_cost(
"p2_singleton_w_mock_singleton",
SpendBundle(
[
make_spend(
p2_singleton,
P2_SINGLETON,
dp_safe.solve(
ACS_HASH,
dp,
Program.to([CreateCoin(bytes32([0] * 32), uint64(0)).to_program()]),
p2_singleton.name(),
),
),
make_spend(
singleton,
MOCK_SINGLETON,
Program.to([dp_safe.required_announcement(dp_hash, p2_singleton.name()).to_program()]),
),
],
G2Element(),
),
)
result = await sim_client.push_tx(bundle)
assert result == (MempoolInclusionStatus.SUCCESS, None)
checkpoint = sim.block_height
await sim.farm_block()

assert len(await sim_client.get_coin_records_by_puzzle_hash(bytes32([0] * 32), include_spent_coins=False)) == 1

await sim.rewind(checkpoint)

result = await sim_client.push_tx(
SpendBundle(
[
make_spend(
p2_singleton,
P2_SINGLETON,
dp_safe.solve(
ACS_HASH,
dp,
Program.to([CreateCoin(bytes32([0] * 32), uint64(0)).to_program()]),
bytes32([0] * 32),
),
),
make_spend(
singleton,
MOCK_SINGLETON,
Program.to([dp_safe.required_announcement(dp_hash, p2_singleton.name()).to_program()]),
),
],
G2Element(),
)
)
assert result == (MempoolInclusionStatus.FAILED, Err.ASSERT_MY_COIN_ID_FAILED)

result = await sim_client.push_tx(
SpendBundle(
[
make_spend(
p2_singleton,
P2_SINGLETON,
dp_safe.solve(
ACS_HASH,
dp,
Program.to([CreateCoin(bytes32([0] * 32), uint64(0)).to_program()]),
p2_singleton.name(),
),
),
make_spend(
singleton,
MOCK_SINGLETON,
Program.to([]),
),
],
G2Element(),
)
)
assert result == (MempoolInclusionStatus.FAILED, Err.ASSERT_ANNOUNCE_CONSUMED_FAILED)

result = await sim_client.push_tx(
SpendBundle(
[
make_spend(
p2_singleton,
P2_SINGLETON,
dp_safe.solve(
ACS_HASH,
dp,
Program.to([CreateCoin(bytes32([0] * 32), uint64(0)).to_program()]),
p2_singleton.name(),
),
),
make_spend(
singleton,
MOCK_SINGLETON,
Program.to([dp_safe.required_announcement(dp_hash, bytes32([0] * 32)).to_program()]),
),
],
G2Element(),
)
)
assert result == (MempoolInclusionStatus.FAILED, Err.ASSERT_ANNOUNCE_CONSUMED_FAILED)
3 changes: 2 additions & 1 deletion chia/_tests/core/daemon/test_daemon.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
from chia.simulator.setup_services import setup_full_node
from chia.util.config import load_config
from chia.util.json_util import dict_to_json_str
from chia.util.keychain import Keychain, KeyData, supports_os_passphrase_storage
from chia.util.keychain import Keychain, KeyData, KeyTypes, supports_os_passphrase_storage
from chia.util.keyring_wrapper import DEFAULT_PASSPHRASE_IF_NO_MASTER_PASSPHRASE, KeyringWrapper
from chia.util.ws_message import create_payload, create_payload_dict
from chia.wallet.derive_keys import master_sk_to_farmer_sk, master_sk_to_pool_sk
Expand Down Expand Up @@ -237,6 +237,7 @@ async def get_keys_for_plotting(self, request: Dict[str, Any]) -> Dict[str, Any]
def add_private_key_response_data(fingerprint: int) -> Dict[str, object]:
return {
"success": True,
"key_type": KeyTypes.G1_ELEMENT.value,
"fingerprint": fingerprint,
}

Expand Down
16 changes: 9 additions & 7 deletions chia/_tests/core/daemon/test_keychain_proxy.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from typing import Any, AsyncGenerator

import pytest
from chia_rs import G1Element

from chia.daemon.keychain_proxy import KeychainProxy, connect_to_keychain_and_validate
from chia.simulator.block_tools import BlockTools
Expand Down Expand Up @@ -47,21 +48,22 @@ async def test_add_private_key(keychain_proxy: KeychainProxy) -> None:
@pytest.mark.anyio
async def test_add_public_key(keychain_proxy: KeychainProxy) -> None:
keychain = keychain_proxy
await keychain.add_key(bytes(TEST_KEY_3.public_key).hex(), TEST_KEY_3.label, private=False)
assert isinstance(TEST_KEY_3.observation_root, G1Element)
await keychain.add_key(TEST_KEY_3.public_key.hex(), TEST_KEY_3.label, private=False)
with pytest.raises(Exception, match="already exists"):
await keychain.add_key(bytes(TEST_KEY_3.public_key).hex(), "", private=False)
await keychain.add_key(TEST_KEY_3.public_key.hex(), "", private=False)
key = await keychain.get_key(TEST_KEY_3.fingerprint, include_secrets=False)
assert key is not None
assert key.public_key == TEST_KEY_3.public_key
assert key.observation_root == TEST_KEY_3.observation_root
assert key.secrets is None

pk = await keychain.get_key_for_fingerprint(TEST_KEY_3.fingerprint, private=False)
assert pk is not None
assert pk == TEST_KEY_3.public_key
assert pk == TEST_KEY_3.observation_root

pk = await keychain.get_key_for_fingerprint(None, private=False)
assert pk is not None
assert pk == TEST_KEY_3.public_key
assert pk == TEST_KEY_3.observation_root

with pytest.raises(KeychainKeyNotFound):
pk = await keychain.get_key_for_fingerprint(1234567890, private=False)
Expand All @@ -82,8 +84,8 @@ async def test_get_key_for_fingerprint(keychain_proxy: KeychainProxy) -> None:
with pytest.raises(KeychainIsEmpty):
await keychain.get_key_for_fingerprint(None, private=False)
await keychain_proxy.add_key(TEST_KEY_1.mnemonic_str(), TEST_KEY_1.label)
assert await keychain.get_key_for_fingerprint(TEST_KEY_1.fingerprint, private=False) == TEST_KEY_1.public_key
assert await keychain.get_key_for_fingerprint(None, private=False) == TEST_KEY_1.public_key
assert await keychain.get_key_for_fingerprint(TEST_KEY_1.fingerprint, private=False) == TEST_KEY_1.observation_root
assert await keychain.get_key_for_fingerprint(None, private=False) == TEST_KEY_1.observation_root
with pytest.raises(KeychainKeyNotFound):
await keychain.get_key_for_fingerprint(1234567890, private=False)

Expand Down
6 changes: 3 additions & 3 deletions chia/_tests/core/data_layer/test_data_rpc.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,8 @@
from chia.util.timing import adjusted_timeout, backoff_times
from chia.wallet.trading.offer import Offer as TradingOffer
from chia.wallet.transaction_record import TransactionRecord
from chia.wallet.wallet import Wallet
from chia.wallet.wallet_node import WalletNode
from chia.wallet.wallet_protocol import MainWalletProtocol

pytestmark = pytest.mark.data_layer
nodes = Tuple[WalletNode, FullNodeSimulator]
Expand Down Expand Up @@ -813,7 +813,7 @@ async def offer_setup_fixture(
[full_node_service], wallet_services, bt = two_wallet_nodes_services
enable_batch_autoinsertion_settings = getattr(request, "param", (True, True))
full_node_api = full_node_service._api
wallets: List[Wallet] = []
wallets: List[MainWalletProtocol] = []
for wallet_service in wallet_services:
wallet_node = wallet_service._node
assert wallet_node.server is not None
Expand Down Expand Up @@ -2308,7 +2308,7 @@ async def test_wallet_log_in_changes_active_fingerprint(

mnemonic = create_mnemonic()
assert wallet_rpc_api.service.local_keychain is not None
private_key = wallet_rpc_api.service.local_keychain.add_key(mnemonic_or_pk=mnemonic)
private_key, _ = wallet_rpc_api.service.local_keychain.add_key(mnemonic_or_pk=mnemonic)
secondary_fingerprint: int = private_key.get_g1().get_fingerprint()

await wallet_rpc_api.log_in(request={"fingerprint": primary_fingerprint})
Expand Down
4 changes: 2 additions & 2 deletions chia/_tests/core/mempool/test_mempool_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,9 @@
from chia.wallet.conditions import AssertCoinAnnouncement
from chia.wallet.payment import Payment
from chia.wallet.util.tx_config import DEFAULT_TX_CONFIG
from chia.wallet.wallet import Wallet
from chia.wallet.wallet_coin_record import WalletCoinRecord
from chia.wallet.wallet_node import WalletNode
from chia.wallet.wallet_protocol import MainWalletProtocol

IDENTITY_PUZZLE = SerializedProgram.to(1)
IDENTITY_PUZZLE_HASH = IDENTITY_PUZZLE.get_tree_hash()
Expand Down Expand Up @@ -1620,7 +1620,7 @@ async def farm_a_block(full_node_api: FullNodeSimulator, wallet_node: WalletNode

async def make_setup_and_coins(
full_node_api: FullNodeSimulator, wallet_node: WalletNode
) -> Tuple[Wallet, list[WalletCoinRecord], bytes32]:
) -> Tuple[MainWalletProtocol, list[WalletCoinRecord], bytes32]:
wallet = wallet_node.wallet_state_manager.main_wallet
ph = await wallet.get_new_puzzlehash()
phs = [await wallet.get_new_puzzlehash() for _ in range(3)]
Expand Down
46 changes: 37 additions & 9 deletions chia/_tests/core/util/test_keychain.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import json
import random
from dataclasses import replace
from typing import Callable, List, Optional, Tuple
from typing import Callable, Dict, List, Optional, Tuple

import importlib_resources
import pytest
Expand All @@ -25,12 +25,14 @@
Keychain,
KeyData,
KeyDataSecrets,
KeyTypes,
bytes_from_mnemonic,
bytes_to_mnemonic,
generate_mnemonic,
mnemonic_from_short_words,
mnemonic_to_seed,
)
from chia.util.observation_root import ObservationRoot

mnemonic = (
"rapid this oven common drive ribbon bulb urban uncover napkin kitten usage enforce uncle unveil scene "
Expand Down Expand Up @@ -81,6 +83,9 @@ def test_basic_add_delete(self, empty_temp_file_keyring: TempKeyring, seeded_ran
assert kc._get_free_private_key_index() == 2
assert len(kc.get_all_private_keys()) == 2
assert len(kc.get_all_public_keys()) == 2
all_pks: List[G1Element] = kc.get_all_public_keys_of_type(G1Element)
assert len(all_pks) == 2

assert kc.get_all_private_keys()[0] == kc.get_first_private_key()
assert kc.get_all_public_keys()[0] == kc.get_first_public_key()

Expand All @@ -97,7 +102,7 @@ def test_basic_add_delete(self, empty_temp_file_keyring: TempKeyring, seeded_ran
assert len(kc.get_all_private_keys()) == 0

kc.add_key(bech32_pubkey, label=None, private=False)
all_pks = kc.get_all_public_keys()
all_pks = kc.get_all_public_keys_of_type(G1Element)
assert len(all_pks) == 1
assert all_pks[0] == public_key
kc.delete_all_keys()
Expand Down Expand Up @@ -155,7 +160,7 @@ def test_bip39_eip2333_test_vector(self, empty_temp_file_keyring: TempKeyring):

mnemonic = "abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about"
print("entropy to seed:", mnemonic_to_seed(mnemonic).hex())
master_sk = kc.add_key(mnemonic)
master_sk, _ = kc.add_key(mnemonic)
tv_master_int = 8075452428075949470768183878078858156044736575259233735633523546099624838313
tv_child_int = 18507161868329770878190303689452715596635858303241878571348190917018711023613
assert master_sk == PrivateKey.from_bytes(tv_master_int.to_bytes(32, "big"))
Expand Down Expand Up @@ -234,7 +239,7 @@ def test_key_data_generate(label: Optional[str]) -> None:
key_data = KeyData.generate(label)
assert key_data.private_key == AugSchemeMPL.key_gen(mnemonic_to_seed(key_data.mnemonic_str()))
assert key_data.entropy == bytes_from_mnemonic(key_data.mnemonic_str())
assert key_data.public_key == key_data.private_key.get_g1()
assert key_data.observation_root == key_data.private_key.get_g1()
assert key_data.fingerprint == key_data.private_key.get_g1().get_fingerprint()
assert key_data.label == label

Expand All @@ -246,7 +251,7 @@ def test_key_data_generate(label: Optional[str]) -> None:
def test_key_data_creation(input_data: object, from_method: Callable[..., KeyData], label: Optional[str]) -> None:
key_data = from_method(input_data, label)
assert key_data.fingerprint == fingerprint
assert key_data.public_key == public_key
assert key_data.observation_root == public_key
assert key_data.mnemonic == mnemonic.split()
assert key_data.mnemonic_str() == mnemonic
assert key_data.entropy == entropy
Expand All @@ -255,7 +260,7 @@ def test_key_data_creation(input_data: object, from_method: Callable[..., KeyDat


def test_key_data_without_secrets() -> None:
key_data = KeyData(fingerprint, public_key, None, None)
key_data = KeyData(fingerprint, bytes(public_key), None, None, KeyTypes.G1_ELEMENT.value)
assert key_data.secrets is None

with pytest.raises(KeychainSecretsMissing):
Expand Down Expand Up @@ -287,12 +292,21 @@ def test_key_data_secrets_post_init(input_data: Tuple[List[str], bytes, PrivateK
@pytest.mark.parametrize(
"input_data, data_type",
[
((fingerprint, G1Element(), None, KeyDataSecrets(mnemonic.split(), entropy, private_key)), "public_key"),
((fingerprint, G1Element(), None, None), "fingerprint"),
(
(
fingerprint,
bytes(G1Element()),
None,
KeyDataSecrets(mnemonic.split(), entropy, private_key),
KeyTypes.G1_ELEMENT.value,
),
"public_key",
),
((fingerprint, bytes(G1Element()), None, None, KeyTypes.G1_ELEMENT.value), "fingerprint"),
],
)
def test_key_data_post_init(
input_data: Tuple[uint32, G1Element, Optional[str], Optional[KeyDataSecrets]], data_type: str
input_data: Tuple[uint32, bytes, Optional[str], Optional[KeyDataSecrets], str], data_type: str
) -> None:
with pytest.raises(KeychainKeyDataMismatch, match=data_type):
KeyData(*input_data)
Expand Down Expand Up @@ -465,3 +479,17 @@ async def test_delete_drops_labels(get_temp_keyring: Keychain, delete_all: bool)
for key_data in keys:
keychain.delete_key_by_fingerprint(key_data.fingerprint)
assert keychain.keyring_wrapper.get_label(key_data.fingerprint) is None


@pytest.mark.parametrize("key_type", [e.value for e in KeyTypes])
def test_key_type_support(key_type: str) -> None:
"""
The purpose of this test is to make sure that whenever KeyTypes is updated, all relevant functionality is
also updated with it.
"""
generate_test_key_for_key_type: Dict[str, Tuple[int, bytes, ObservationRoot]] = {
KeyTypes.G1_ELEMENT.value: (G1Element().get_fingerprint(), bytes(G1Element()), G1Element())
}
obr_fingerprint, obr_bytes, obr = generate_test_key_for_key_type[key_type]
assert KeyData(uint32(obr_fingerprint), obr_bytes, None, None, key_type).observation_root == obr
assert KeyTypes.parse_observation_root(obr_bytes, KeyTypes(key_type)) == obr
Loading
Loading