Commit Graph
14659 Commits
Author SHA1 Message Date
Arvid NorbergandGitHub 98b001682f enable the rust condition checker unconditionally in testnet (#8122) 2021-08-24 10:53:46 -07:00
YostraandGitHub f918669f32 Fix single coin generator (#8185)
* fix single coin generator

* add sha256tree file

* add test for single

* pass it as array

* remove breakpoint
2021-08-24 10:50:40 -07:00
Chris MarslenderandGitHub f43aa739af Clean up the GHA mac build to just build and upload to GHA (azure deals with s3 + release workflows) (#8178) 2021-08-23 11:42:10 -07:00
William Blanke ddf8b0b9ff updated gui to 80a41d8161ec9028995fec18158ac9e611b00f02 2021-08-23 10:50:02 -07:00
Earle LoweandGitHub a119cd7328 Check AttributeError for non-Optional members during node shutdown (#8109)
* Check AttributeError for non-Optional elements

* Changed to use hasattr
2021-08-20 11:41:34 -07:00
Arvid NorbergandGitHub 1cc047df1d tolerate fields replacing network constants in config.yaml that don't exist, but print warning (#8121) 2021-08-19 11:14:42 -07:00
Almog De PazandGitHub c4c14939a5 Sync faster (#7665)
* better concurrency for sync_from_fork_point

* dedup code in wallet

* revert

* lint

* lint

* logs

* lint

* lint

* error handling, async bug fix

* lint

* break fetch if bath failed coroutine

* remove outdated comment

* consolidate duplicate code

* consolidate duplicate code

* notify wallet after each batch

* typo

* add try/catch/finally

* typing, check stale peer

* comment on worker shutdown
2021-08-18 18:26:38 -07:00
Earle LoweandGitHub da5df49f39 New call for logging peer_host (#8108) 2021-08-18 13:02:30 -07:00
Kyle AltendorfandGitHub 2183709f06 add --paginate/--no-paginate to chia wallet get_transactions (#7977)
* add --paginate/--no-paginate to chia wallet get_transactions

The default remains to paginate if sys.stdout.isatty(), otherwise it
defaults to not paginating.  This addresses cases such as piping and
output redirection to a file where the command previously just hung
while waiting for the user to press c for the next page.

* shorten lines for linting

* avoid BrokenPipeError such as with head

* stop using click's undocumented PacifyFlushWrapper
2021-08-18 10:59:58 -07:00
Arvid NorbergandGitHub cd2f9d9d00 remove commented-out debug breakpoint()s (#8114) 2021-08-18 10:13:03 -07:00
Arvid NorbergandGitHub d81198384f fix mempool TX cache cost (#8054)
* fix issue where the cost of the mempool TX cache (for spend bundles that can't be included in a block yet) would not be reset when the cache was emptied

* factor out the Pending TX cache from mempool, to allow unit testing
2021-08-17 23:09:15 -07:00
Chris MarslenderandGitHub 00af150e00 Increase timeout (#8111)
* Increase timeout

* increase timeout to 30
2021-08-17 19:54:50 -07:00
Arvid NorbergandGitHub 5ee182932e Rust conditions (#7167)
* use rust implementation of condition checker

* enable rust condition checker at specific block height

* bump switch-over height
2021-08-17 14:57:41 -07:00
artyandGitHub 2ea15bbda3 Add documentation for treehash params (#8092) 2021-08-17 10:53:49 -07:00
Matt HauffandGitHub 1e18dc65fc Added a py.typed file in the chia directory for pep-561 compliance (#8014) 2021-08-17 10:53:25 -07:00
Matt HauffandGitHub 90313d9205 Added an RPC for coin records by multiple coin names (#7920) 2021-08-17 10:52:51 -07:00
Florin ChiricaandGitHub 2ce7c5950c Use ip.chia.net (#8039)
* Use ip.chia.net

* oops...
2021-08-16 14:12:43 -07:00
Florin ChiricaandGitHub 639d5ee1f6 Enable querying AAAA records for DNS Introducer. (#8008)
* Initial commit DNS ipv6.

* Fix pyblack.

* nit.
2021-08-16 11:35:37 -07:00
Earle LoweandGitHub e4a802da04 Manually update version in package.json (#8057) 2021-08-15 20:32:20 -07:00
Jeff CruikshankandGitHub 39fbe2aa17 Create SSL keys/certs with proper permissions, also verify/fix existing installs (#7972)
* Create directories with 755 permissions, SSL certs with 644, and keys with 600.

* Check SSL file permissions during chia_init(). Exits if permissions are incorrect.

* Overwrite certs/keys instead of failing to write

* Skip SSL file permission checks on Windows (requires checking ACLs)

* Check SSL file permissions when creating an ssl_context

* Skip check_ssl on Windows.
Handle some SSLInvalidPermissions exceptions.

* Added a few comments

* Added chia init --fix-ssl-permissions option to attempt to fix SSL file permission issues.
Update imported cert permissions when using chia init -c.
Code cleanup/restructuring.

* Return a tuple instead of a list

* LGTM and other minor fixes

* Fixed SSL test breakage when calling ssl_context_for_client. The ca_crt param was being passed in as both the cert and private key, triggering the permission check failure.

* Don't exit if SSL file permissions issues are found

* Tweak the exception types that are raised from traverse_dict
2021-08-15 15:53:54 -07:00
Matt HauffandGitHub 950e78e1f2 Added some new class methods to the Program objects (#8041) 2021-08-13 10:15:25 -07:00
7b2aab99c8 Add test of pairing cache for BLS signature verification (#8028)
Co-authored-by: Rostislav <rostislav@users.noreply.github.com>
2021-08-12 12:00:22 -07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
ab102bb4d9 Bump github/super-linter from 4.5.1 to 4.6.1 (#8015)
Bumps [github/super-linter](https://github.com/github/super-linter) from 4.5.1 to 4.6.1.
- [Release notes](https://github.com/github/super-linter/releases)
- [Commits](https://github.com/github/super-linter/compare/v4.5.1...v4.6.1)

---
updated-dependencies:
- dependency-name: github/super-linter
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-08-12 10:34:37 -07:00
dependabot[bot]andGitHub b06568a74d Bump actions/setup-node from 2.3.0 to 2.4.0 (#8016) 2021-08-10 16:06:33 -07:00
dependabot[bot]andGitHub ed66c57ced Bump watchdog from 2.1.2 to 2.1.3 (#8017) 2021-08-10 15:59:35 -07:00
Arvid NorbergandGitHub 750a2759a3 test agg sig conditions (#7962)
* agg sig conditions always take two args

* extend test a bit, add comment

* unit test agg sig parser where args list is not null terminated

* fix formatting
2021-08-10 15:26:29 -07:00
dustinfaceandGitHub 53149f2e57 chia|tests: Introduce PlotManager + some plot loading improvements and fixes (#7848)
* harvester|plotting|tests: Introduce `PlotManager` class

This moves all plots related and plot-directory related stuff from the
harvester into the class `PlotManager`, adjusts all related code
accordingly and adds some extra wrappers there.

* harvester|plotting|tests: Return how many new plots were loaded

* plotting: Fix `failed_to_open_filenames` re-try interval

With `< 1200` it just tries it on the next refresh.

* plotting: Fix and improve duplicates handling

* harvester|plotting: Thread locks for `PlotManager.plots`

* chia|tests: Load plots in batches

* chia|tests: Move plot refreshing into a separate thread

* plotting: Properly handle removed plots

And fix tests accordingly. It seems like this fix https://github.com/Chia-Network/chia-blockchain/pull/3350 wasn't really a fix, rather adjusting to allow for a bug?

* plotting|harvester|tests: Introduce `PlotRefreshResult`

* tests: Expand `test_farmer_harvester_rpc.py`

* chia|tests: Move some stuff from `plot_tools.py` into new file `util.py`

* refactor: Rename `plot_tools.py` to `manager.py`

* chia|tests: Use pure dataclass for `PlotsRefreshParameter`

With `uint16` as type saving to config doesn't work, this is a
preparation for the next commit.

* harvester: Adjust deprecation message, use `info` instead of `warning`

* plotting: Fix typo

* refactor: Rename `filename` to `file_path`

Fits better and does avoid shadowing with filename from outer scope.

* chia|tests: Move some methods from `plotting.manager` to `plotting.util`

* plotting: Make `refresh_callback` mandatory
2021-08-09 10:25:15 -07:00
dustinfaceandGitHub b1ade3ad81 refactor: Introduce write_uint32 and parse_uint32 in streamable.py (#7932)
* refactor: Introduce `parse_uint32` in `streamable.py`

* refactor: Introduce `write_uint32` in `streamable.py`

* tests: Add `test_uint32` in `test_streamable.py`

Adds tests for `write_uint32` and `parse_uint32`
2021-08-09 10:23:44 -07:00
Jeff CruikshankandGitHub a957d660d1 When proxying to a local keychain, don't attempt to communicate over the websocket. (#7949) 2021-08-05 09:45:31 -07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
fa71f91f4c Bump bitstring from 3.1.7 to 3.1.9 (#7676)
Bumps [bitstring](https://github.com/scott-griffiths/bitstring) from 3.1.7 to 3.1.9.
- [Release notes](https://github.com/scott-griffiths/bitstring/releases)
- [Changelog](https://github.com/scott-griffiths/bitstring/blob/master/release_notes.txt)
- [Commits](https://github.com/scott-griffiths/bitstring/commits)

---
updated-dependencies:
- dependency-name: bitstring
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-08-04 13:49:34 -07:00
325d7f8245 Keyring passphrase protection (#7249)
* Moved keyring handling into a KeyringWrapper class

* Update click to 8.0.x for prompt_required support

* Renamed KeyringWrapper to _KeyringWrapper

* Expose password management options on Linux

* CLI support for setting/removing a password

* Global option for specifying the master password

* Cache the password instead of setting on the context

* Password bootstrapping during chia init

* Tidying up _KeyringWraper's interface

* Initial pass migrating the legacy keyring contents

* Encryption/decryption of keyring.yaml contents

* FileKeyring backend encrypts with ChaCha20Poly1305

* Tightened up keyring migration and initialization

* Fixed issues identified by linters

* Remove root_path from Keychain

* Prevent double-migration if setting master passwd

* KeyringWrapper tests are mostly complete

* FileKeyring will now honor the service param

* Tests for get/set/delete password

* Formatting/commenting updates

* Writer lock support with tests - WIP

* keyring.yaml is now watched for modifications

* Reader/Writer lock for get/delete password

* Fixed linter issues

* Reader lock tests

* Formatting update

* Hook up CHIA_ROOT support for KeychainWrapper

* Quick fix to address test failures

* Fixed failures when existing legacy keyring exists

* Fixed test failures caused by reusing the same temp dir

* keyring.yaml now lives in ~/.chia_keys by default. Can be overridden with CHIA_KEYS_ROOT or --keys-root-path

* Fixed migration failure when setting a password (not using the default)

* KeyringWrapper now uses supports_keyring_password to determine if a FileKeyring should be used. Patched tests to work regardless of whether supports_keyring_password return False

* The daemon now takes a --have-gui option that will prevent calling check_keys() during startup. If the keyring is locked, we want the GUI to prompt for the password.

* Added is_keyring_locked RPC call

* Added 'unlock_keyring' RPC command

* Added KeychainProxy and KeychainServer to handle RPC messages related to keyring operations. WalletNode no longer directly accesses the Keychain class.

* Turn on macOS support for testing keyring passwords

* Fixed get_key_for_fingerprint to use the ocal keychain if the platform doesn't need to remotely access the daemon's keychain.

Fixed key reconstruction when sent over RPC.

* Farmer now accesses the keychain over RPC

* Fixes for linter issues and some restructuring to support tests that use setup_nodes.py

* Couple of fixes to unblock the GUI from launching when a keyring password is set

* Added a keychain RPC call for add_private_key()

* Added remaining keychain proxy RPC calls for delete_key_by_fingerprint and delete_all_keys

* Check for None when inspecting request arguments

* Run check_keys after unlocking the keyring when the daemon is launched via GUI

* Added check_keys RPC method.
Fixed deserialization of key entropy in get_all_private_keys. This was preventing the GUI from being able to show key details.

* Added get_first_private_key to keychain_server/proxy.
create_plots now uses the keychain proxy when launched from the daemon.

* Added a comment about KeychainProxy in chia plots check

* Workaround import conflict  when importing from 'tests.*' due to fasteners name conflict

* Simulator now uses KeychainProxy if launched by the daemon.
KeychainServer/Proxy now takes keychain user/testing params for testing scenarios.

* Added "set_keyring_passphrase" RPC message

* Reworking KeychainProxy usage to handle local keychain tests and RPC keychain tests.

* Replace my prior usage of asyncio.run() with asyncio.get_event_loop().run_until_complete()

* Silencing file_keyring logging for the moment.

* Updated tests to use test keychains and appropriate BlockTools construction

BlockTools should now be created with create_block_tools(_async) to handle async scenarios.

Updated block_tools to be async compatible

Updated fasteners to fix installation of top-level 'tests' in site-packages

* Added 'remove_keyring_passphrase' RPC message to the daemon

Minor tweak to TempKeyring to default to some test params

* Fixed linter issues

* Remove flake8 ignore statement now that the fasteners module has been updated

* Some initial renaming changes: password -> passphrase

* Fixed wallet RPC issue where get_key_for_fingerprint wasn't awaited-upon.

Fixed legacy keyring initialization (for migration scenarios)

* Fixed improperly merged file

* Fixed linter issues.
More renaming.

* Updated spots that were still using an incorrect keychain call

* Renamed use_password_cache, obtain_current_password

* Renamed supports_keyring_password

* Renamed has_master_password

* Renamed has_cached_password, get_cached_master_password

* Linter fixes

* Renamed master_password_is_valid

* Renamed set_cached_master_password

* Renamed set_master_password

* Renamed remove_master_password

* Renamed has_cached_master_password

* Renaming in file_keyring and keyring_wrapper

Updated default keyring payload used for tests

* Renamed get_password
Other renaming updates

* Renamed set_password
Other renaming updates

* Renamed remaining password occurrences (where appropriate)

* password -> passphrase

* Added tests for setting an emoji and Japanese master passphrase

* Attempt to notify the daemon when a keyring passphrase is set/updated/removed

* Missed one password -> passphrase replacement.

* Fixed some file synchronization issues found when running tests on macOS

* Adjusted timeout values for test_writer_lock_reacquisition_failure for macOS.

* Removed logging statements previously added for debugging

* Prompt for keyring passphrase up-front when launching a service.

Changed --have-gui flag to --wait-for-unlock

* Updated set_keyring_passphrase RPC message to fix optional current_passphrase param when the keyring is using the default passphrase.

* Minor test cleanup to deduplicate some code.

* Fixed regression when setting a new master passphrase

* Minor refactoring and docs/commenting updates

* Renaming password -> passphrase went too far. Keyring backends use password terminology for compatibility with third party backends.

* Disabling macOS support (previously added for testing only)

* Disabling passphrase support in preparation for sending out the PR

* Fixed improper merge (vscode didn't save changes during rebase)

* Update chia/cmds/init_funcs.py

Co-authored-by: Adam Kelly <338792+aqk@users.noreply.github.com>

* skip_check_keys -> should_check_keys

* Shuffling some imports around to break cycles reported by LGTM

* Handle unlocking the daemon if it's already launched and waiting for unlock.

* Replaced uses_keychain_proxy decorator in farmer.py. Fixed async usage of get_reward_targets.

Linter/reformatting fixes

* Replaced uses_keychain_proxy decorator with a clearer method.

* Cleanup the temp keyring dir using shutil.rmtree()

* Restored self._root_path (had been changed to self.root_path)

* Minor cleanup

* ensure_keychain_proxy() now throws if connect_to_keychain_and_validate() fails

* Plot key resolution now yields a PlotKeys object which can be passed into create_plots.

De-indented test_invalid_icc_sub_slot_vdf to keep git blame tidy.

* Added 'keyring_status' daemon RPC message to support the GUI

* Minor changes relating to PR feedback

* Addressed more PR feedback (mostly type annotations)

* Commented-out macOS file keyring usage. This can be re-enabled for testing purposes.

* Addressed test failures that require multiple keyrings in the same process. Each TempKeyring will now set a custom KeyringWrapper instance.

* Fixed logic for communicating user_passphrase_is_set in the keyring_status RPC response.

* Updated type annotations and method signature for set_passphrase to expect a string instead of bytes.

* Fixed Wallet RPC tests

* Fixed full_node_store tests. BlockTools should be created using the create_block_tools(_async) function(s)

* Fixed test failures in test_pool_rpc

* Fixed test_daemon. After BlockTools.setup_plots is run, the config file needs to be re-read to refresh stale plot_directories.

* Suppressing LGTM false positives regarding passphrase leakage in CLI error output. Seems that LGTM sees MIN_PASSPHRASE_LEN as sensitive data.

* Second attempt at suppressing LGTM false positives

* Third attempt at addressing LGTM false positives

* Removed test_keyring_wrapper param from Keychain ctor. Test setup now sets the keyring_wrapper property directly.

* Reformatting

* More targeted update of the test config to refresh just the "plot_directories" value

* More LGTM suppressions

Co-authored-by: Adam Kelly <338792+aqk@users.noreply.github.com>
Co-authored-by: wjblanke <wjb98672@gmail.com>
2021-08-04 12:46:55 -07:00
Chris MarslenderandGitHub 6a7034ffaa Swap password to just be "foo" (#7946) 2021-08-04 09:58:53 -07:00
Matt HauffandGitHub b66bd13295 Added an option to sign bytes as well as UTF-8 strings (#7923) 2021-08-04 09:27:44 -07:00
Chris MarslenderandGitHub deac3ad3cc Create keychain for use in CI jobs (#7933)
* Create keychain for use in CI jobs

* Add local keychain in the template for workflow generation
2021-08-03 13:52:12 -07:00
dependabot[bot]GitHubdependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
90540a5137 Bump styfle/cancel-workflow-action from 0.9.0 to 0.9.1 (#7935)
Bumps [styfle/cancel-workflow-action](https://github.com/styfle/cancel-workflow-action) from 0.9.0 to 0.9.1.
- [Release notes](https://github.com/styfle/cancel-workflow-action/releases)
- [Commits](https://github.com/styfle/cancel-workflow-action/compare/0.9.0...0.9.1)

---
updated-dependencies:
- dependency-name: styfle/cancel-workflow-action
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-08-03 13:43:57 -07:00
Arvid NorbergandGitHub 7927a45945 remove initial transaction freeze feature (#7922) 2021-08-03 10:21:37 -07:00
Adam KellyandGitHub d029a2a594 Separate locking and non-locking cases for get_confirmed_balance_for_wallet to allow calling a few wallet_state_manager methods while already under the wallet_state_manager lock (#7790) 2021-08-03 09:55:57 -07:00
c4b6014e01 Remove index on coin_record spent column (#7794)
* Remove index on spent column

* Ignore index for queries on spent column

* Use IndexBy to select index to use

* Remove IndexedBy from coin_parent query

* Readd index on coin_spent

* Remove whitespaces

Co-authored-by: dustinface <35775977+xdustinface@users.noreply.github.com>

* Split query into serveral lines

Co-authored-by: dustinface <35775977+xdustinface@users.noreply.github.com>

* Split query into serveral lines

Co-authored-by: dustinface <35775977+xdustinface@users.noreply.github.com>

* Add missing newline

* Fix lint/black issue

Co-authored-by: dustinface <35775977+xdustinface@users.noreply.github.com>
Co-authored-by: Earle Lowe <e.lowe@chia.net>
2021-08-03 09:54:36 -07:00
Arvid NorbergandGitHub d380957460 remove trailing whitespace in generated workflow files (#7921) 2021-08-02 17:14:25 -07:00
Chris MarslenderandGitHub 1139737c7e Swap to the chia version of notarize CLI that retries status and has exit codes when it fails (#7919) 2021-08-02 15:25:17 -07:00
Arvid NorbergandGitHub 485fab80b7 don't save unknown conditions (#7548)
* don't save unknown conditions

* remove UNKNOWN enum from ConditionOpcode enum
2021-08-02 14:40:32 -07:00
Arvid NorbergandGitHub 258de4522f remove unnecessary indentation in block_body_validation (#7916) 2021-08-02 14:39:17 -07:00
Chris MarslenderandGitHub f5bba8f89d Pyinstaller 4.5 (#7915)
* Pyinstaller 4.5 for M1

* Update linux builds to 4.5

* Update windows to pyinstaller 4.5

* Pyinstaller 4.5 for intel mac
2021-08-02 12:47:25 -07:00
dustinfaceandGitHub b2fdeb2291 pre-commit: Add initial config and run it for all files (#7053)
* pre-commit: Add initial `.pre-commit-config.yaml`

* pre-commit: Apply hook `end-of-file-fixer`

* pre-commit: Apply hook `trailing-whitespace`

* pre-commit: Apply hook `debug-statements`

* contrib: Add `pre-commit` section
2021-08-02 10:48:22 -07:00
dustinfaceandGitHub 74f88690b4 refactor: Rename folder tests/core/types to tests/core/custom_types (#7852)
* refactor: Rename folder `tests/core/types` to `tests/core/custom_types`

Seems like the name `types` in the folder conflicts there with some python
standard stuff because i just can't get the debugger in PyCharm to work
without this renaming. Instantly getting the following error:

```
ImportError: cannot import name 'MappingProxyType' from 'types'
(/home/me/chia/chia-blockchain/tests/core/types/__init__.py)
Traceback (most recent call last):
  File
"/snap/pycharm-professional/248/plugins/python/helpers/pydev/pydevd.py",
line 8, in <module>
    from contextlib import contextmanager
  File "/usr/lib/python3.8/contextlib.py", line 7, in <module>
    from types import MethodType
ImportError: cannot import name 'MethodType' from 'types'
(/home/me/chia/chia-blockchain/tests/core/types/__init__.py)
```

If someone has an idea how else to fix this please tell me!

* github: Run `build-workflows.py`

With DID tests dropped!
2021-08-02 10:41:34 -07:00
Adam KellyandGitHub f05988fc6d Disable DID wallet tests while DID wallet is under construction. (#7862) 2021-08-02 10:40:59 -07:00
Michael GraczykandGitHub 552a656f04 Fix type annotation in sync_store (#7911) 2021-08-02 08:46:33 -07:00
Chris MarslenderandGitHub 30079586b2 Build RPM in Chia Centos7 base image instead of VM (#7866) 2021-07-29 22:39:37 -07:00
Chris MarslenderandGitHub 801c9ce296 remove duplicated sed command in rpm build (#7865) 2021-07-29 18:08:33 -07:00
Earle LoweandGitHub bafb654a36 EL.Set version in package.json before packaging (#7864)
* Set version in package.json before packaging
2021-07-29 17:32:23 -07:00