From dfa0557ca29744dea6cc9286c4b886872b81ee70 Mon Sep 17 00:00:00 2001 From: Kyle Altendorf Date: Mon, 15 Jul 2024 15:36:34 -0400 Subject: [PATCH] attempt to "commonize" prettier config (#18297) * attempt to "commonize" prettier config * apply to md * manual touchup --- .github/PULL_REQUEST_TEMPLATE.md | 11 +- .pre-commit-config.yaml | 2 +- .prettierrc.yaml | 7 + BUILD_TIMELORD.md | 4 +- CHANGELOG.md | 679 ++++++++++++++++--------------- CODE_OF_CONDUCT.md | 26 +- LEGACY-SUPPORT-POLICY.md | 2 +- PRETTY_GOOD_PRACTICES.md | 11 +- README.md | 93 +++-- 9 files changed, 435 insertions(+), 400 deletions(-) diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index e19adddbab..912fc0cc64 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -3,22 +3,17 @@ - In order to be merged, you must add the most appropriate category Label (Added, Changed, Fixed) to your PR --> + ### Purpose: - - + ### Current Behavior: - - ### New Behavior: - - + ### Testing Notes: - - diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 58b2d57bf8..0a89e63331 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -32,7 +32,7 @@ repos: rev: v3.1.0 hooks: - id: prettier - types_or: [ini, json, toml, yaml] + types_or: [ini, json, toml, yaml, markdown] - repo: https://github.com/scop/pre-commit-shfmt rev: v3.8.0-1 hooks: diff --git a/.prettierrc.yaml b/.prettierrc.yaml index c4ac3fcf5f..27a0fcfbbf 100644 --- a/.prettierrc.yaml +++ b/.prettierrc.yaml @@ -5,3 +5,10 @@ overrides: singleQuote: false experimentalTernaries: true useTabs: false + - files: ["*.md"] + options: + singleQuote: false + - files: ["*.js", "*.jsx", "*.ts", "*.tsx", "*.cjs", "*.mjs"] + options: + printWidth: 120 + singleQuote: true diff --git a/BUILD_TIMELORD.md b/BUILD_TIMELORD.md index 51ba6064a9..c2fb431177 100644 --- a/BUILD_TIMELORD.md +++ b/BUILD_TIMELORD.md @@ -24,8 +24,8 @@ Timelord uses to run the VDF and prove the Proof of Time is `vdf_client` and `vdf_bench` is a utility to get a sense of a given CPU's iterations per second. - To build vdf_client set the environment variable BUILD_VDF_CLIENT to "Y". -`export BUILD_VDF_CLIENT=Y`. + `export BUILD_VDF_CLIENT=Y`. - Similarly, to build vdf_bench set the environment variable BUILD_VDF_BENCH -to "Y". `export BUILD_VDF_BENCH=Y`. + to "Y". `export BUILD_VDF_BENCH=Y`. Building and running Timelords in Windows x86-64 is not yet supported. diff --git a/CHANGELOG.md b/CHANGELOG.md index 77a7e518b9..d54cc06f0b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -18,333 +18,357 @@ macOS 12 (Monterey) is deprecated. This release (2.4.2) will be the last release ## 2.4.1 Chia blockchain 2024-06-25 ## What's Changed + ### Fixed -* Fixed light wallet (wallet only) syncing issues introduced in 2.4.0 + +- Fixed light wallet (wallet only) syncing issues introduced in 2.4.0 ### Known Issues -* A breaking backwards compatibility issue was introduced in 2.4.0 in the daemon RPC call `add_private_key`. We expect to resolve this in a future release. -* You cannot import or use a 12-word mnemonic key with 2.4.0 or 2.4.1. To import and use a 12-word mnemonic key we recommend you use 2.3.1. This will be resolved in a future release + +- A breaking backwards compatibility issue was introduced in 2.4.0 in the daemon RPC call `add_private_key`. We expect to resolve this in a future release. +- You cannot import or use a 12-word mnemonic key with 2.4.0 or 2.4.1. To import and use a 12-word mnemonic key we recommend you use 2.3.1. This will be resolved in a future release ### Deprecated + macOS 11 (Big Sur) is deprecated. This release (2.4.1) will be the last release to support macOS 11 ## 2.4.0 Chia blockchain 2024-06-20 ## What's Changed + ### Added -* Soft fork 5: disallow infinity G1 points as public keys in AGG_SIG_* conditions -* DL: Added support for updating multiple datastores in a single batch update -* Add unfinished block to state change event (thanks @felixbrucker) -* CHIP-0026 Mempool Updates -* Preliminary support for observer mode. Ability to add public keys via CLI + +- Soft fork 5: disallow infinity G1 points as public keys in `AGG_SIG_*` conditions +- DL: Added support for updating multiple datastores in a single batch update +- Add unfinished block to state change event (thanks @felixbrucker) +- CHIP-0026 Mempool Updates +- Preliminary support for observer mode. Ability to add public keys via CLI ### Changed -* Remove `tx_records` from `dl_update_multiple` RPC (breaking change) -* DL: optimizations for autoinsert and upsert -* Increase farmer fill rate to 70% -* Use Rust types for `RecentChainData`, `ProofBlockHeader` and `WeightProof` -* Use Rust version of `MerkleSet` -* Remove unused files -* Make a couple of DAOWallet methods return lists of transaction records -* Simplify `MerkleSet` by making it immutable -* Add ability to profile the farmer process -* Remove unused current_inner from PoolState -* Optimize `launcher_id_to_p2_puzzle_hash()` -* Add genesis challenge to `get_network_info` RPC -* Puzzle hash optimizations -* Optimize key derivation in the wallet -* Add optional trusted CIDR list -* Make `BLSCache` a proper class -* Split capabilities for each service -* Use kv compressed in DL batch update -* Updated gui to `electron 30.0.9` -* Bump `chia_rs` to `0.9.0` and update G1Element handling -* Bump `boto3` to `1.34.114` -* Bump `chiabip158` to `1.5.1` -* Bump `clvm` to `0.9.10` -* Bump `aiohttp` to `3.9.4` -* Bump `filelock` to `3.14.0` -* Bump `importlib-resources` to `6.4.0` -* Bump `keyring` to `25.1.0` -* Bump `dnspython` to `2.6.1` -* Bump `typing-extensions` to `4.11.0`, -* Bump `packaging` to `24.0` -* Bump `hsms` to `0.3.1`, + +- Remove `tx_records` from `dl_update_multiple` RPC (breaking change) +- DL: optimizations for autoinsert and upsert +- Increase farmer fill rate to 70% +- Use Rust types for `RecentChainData`, `ProofBlockHeader` and `WeightProof` +- Use Rust version of `MerkleSet` +- Remove unused files +- Make a couple of DAOWallet methods return lists of transaction records +- Simplify `MerkleSet` by making it immutable +- Add ability to profile the farmer process +- Remove unused current_inner from PoolState +- Optimize `launcher_id_to_p2_puzzle_hash()` +- Add genesis challenge to `get_network_info` RPC +- Puzzle hash optimizations +- Optimize key derivation in the wallet +- Add optional trusted CIDR list +- Make `BLSCache` a proper class +- Split capabilities for each service +- Use kv compressed in DL batch update +- Updated gui to `electron 30.0.9` +- Bump `chia_rs` to `0.9.0` and update G1Element handling +- Bump `boto3` to `1.34.114` +- Bump `chiabip158` to `1.5.1` +- Bump `clvm` to `0.9.10` +- Bump `aiohttp` to `3.9.4` +- Bump `filelock` to `3.14.0` +- Bump `importlib-resources` to `6.4.0` +- Bump `keyring` to `25.1.0` +- Bump `dnspython` to `2.6.1` +- Bump `typing-extensions` to `4.11.0`, +- Bump `packaging` to `24.0` +- Bump `hsms` to `0.3.1`, ### Fixed -* Add bytes type to `DerivationRecord.pubkey` -* Do not return unexpected coins from `get_coin_state` -* Fix memo plotid -* Filter out duplicate coins returned by `RequestPuzzleState` -* fix confusion between prompt and don't prompt in the plotnft CLI -* drop deprecated `authentication_public_key` from pool config -* Fixed some typos (thanks @wersfeds) -* Make sure to use no more than 61 cpus on windows (fixes #17967) -* Handle reorgs in data layer wallet -* Modify `VerifiedCredential.launch` to handle multiple source coins -* Add tx_config and extra_conditions to DID creation endpoint -* DL: Return exception and error from `get_kv_diff` when either of the hashes has no data -* Link trade cancellations with announcements -* Add coin id index to coin state batching -* Remove homebrew rpaths from `_ssl.cpython.so` on macOS during build (fixes #18099) -* Aligned `lerna` and `nx` versions -* Set permissions in DEB `postinst.sh` for chrome-sandbox (fixes #17956) + +- Add bytes type to `DerivationRecord.pubkey` +- Do not return unexpected coins from `get_coin_state` +- Fix memo plotid +- Filter out duplicate coins returned by `RequestPuzzleState` +- fix confusion between prompt and don't prompt in the plotnft CLI +- drop deprecated `authentication_public_key` from pool config +- Fixed some typos (thanks @wersfeds) +- Make sure to use no more than 61 cpus on windows (fixes #17967) +- Handle reorgs in data layer wallet +- Modify `VerifiedCredential.launch` to handle multiple source coins +- Add tx_config and extra_conditions to DID creation endpoint +- DL: Return exception and error from `get_kv_diff` when either of the hashes has no data +- Link trade cancellations with announcements +- Add coin id index to coin state batching +- Remove homebrew rpaths from `_ssl.cpython.so` on macOS during build (fixes #18099) +- Aligned `lerna` and `nx` versions +- Set permissions in DEB `postinst.sh` for chrome-sandbox (fixes #17956) ### Deprecated + macOS 11 (Big Sur) is deprecated. This release (2.4.0) will be the last release to support macOS 11 ## 2.3.1 Chia blockchain 2024-04-28 ### Added -* Added `warp.green` CATs (`wUSDC.b`, `wmilliETH.b`, `wUSDC`, `wmilliETH`, `wUSDT`) to the known CAT list + +- Added `warp.green` CATs (`wUSDC.b`, `wmilliETH.b`, `wUSDC`, `wmilliETH`, `wUSDT`) to the known CAT list ## 2.3.0 Chia blockchain 2024-05-01 ### Fixed -* Fixed `Install.ps1` for PowerShell 7.4 -* Fixed readability of `Could not find parent coin` error log by printing hex and not bytes -* Fixed some shutdown log spam by ensuring signal objects for signal handlers (fixes #17578) -* Fixed negative plot sync durations not crashing the harvester (fixes #15027) (thanks @felixbrucker) -* Fixed log spam by only logging warnings about protocol mismatches for farmer and harvester -* Fixed log spam by logging rollbacks only if heights are actually deleted -* Fixed DID update metadata issue (fixes #17412) -* Fixed error codes and add more test coverage for message conditions -* Fixed non-development source install -* Fixed reorg from 0 -* Fixed (again) Datalayer download banning -* Improved timelord skip peak logic. -* Used click.Path for make_offer command filename (fixes #10920) -* Handle when xch_target_address in config doesn't decode correctly (fixes #16995) -* Delete unconfirmed Clawback TX -* tighten up the check for duplicate UnfinishedBlocks before requesting that block -* Optimized Datalayer `get_key_by_node` -* Added test for observance of melted CAT balance (fixes #17727) -* increase backwards compatibility by using default values for peer file path -* Added `--skip-keyring` option to `chia start` and use in GUI (fixes #17848) + +- Fixed `Install.ps1` for PowerShell 7.4 +- Fixed readability of `Could not find parent coin` error log by printing hex and not bytes +- Fixed some shutdown log spam by ensuring signal objects for signal handlers (fixes #17578) +- Fixed negative plot sync durations not crashing the harvester (fixes #15027) (thanks @felixbrucker) +- Fixed log spam by only logging warnings about protocol mismatches for farmer and harvester +- Fixed log spam by logging rollbacks only if heights are actually deleted +- Fixed DID update metadata issue (fixes #17412) +- Fixed error codes and add more test coverage for message conditions +- Fixed non-development source install +- Fixed reorg from 0 +- Fixed (again) Datalayer download banning +- Improved timelord skip peak logic. +- Used click.Path for make_offer command filename (fixes #10920) +- Handle when xch_target_address in config doesn't decode correctly (fixes #16995) +- Delete unconfirmed Clawback TX +- tighten up the check for duplicate UnfinishedBlocks before requesting that block +- Optimized Datalayer `get_key_by_node` +- Added test for observance of melted CAT balance (fixes #17727) +- increase backwards compatibility by using default values for peer file path +- Added `--skip-keyring` option to `chia start` and use in GUI (fixes #17848) ### Added -* Added Python 3.12 support -* Added new subscription and wallet sync protocol support (will be used by the wallet in future releases) -* Added Chip-25 Message Conditions support (https://github.com/Chia-Network/chips/pull/98) -* Added support for HTTP redirect for the pool url (thanks @felixbrucker) -* Added `use_delta_sync` option for faster wallet sync (thanks @felixbrucker) -* Added Datalayer RPC pagination. -* Added Datalayer multiple batch updates with `submit_on_chain` option. -* Added `get_network_info` RPC to daemon -* Added `new_unfinished_block2` support in Chia seeder -* Added Hint support for SpendSim + +- Added Python 3.12 support +- Added new subscription and wallet sync protocol support (will be used by the wallet in future releases) +- Added Chip-25 Message Conditions support (https://github.com/Chia-Network/chips/pull/98) +- Added support for HTTP redirect for the pool url (thanks @felixbrucker) +- Added `use_delta_sync` option for faster wallet sync (thanks @felixbrucker) +- Added Datalayer RPC pagination. +- Added Datalayer multiple batch updates with `submit_on_chain` option. +- Added `get_network_info` RPC to daemon +- Added `new_unfinished_block2` support in Chia seeder +- Added Hint support for SpendSim ### Changed -* Transition `FullBlock`, `BlockRecord`, `CoinSpend`, and `HeaderBlock` to rust -* Move tests - all tests and infrastructure are now included in the chia-blockchain package under `chia/_tests` -* Remove `Announcement` class in favor of `Condition` subclasses -* Remove `ignore_max_send_amount` -* Use `psutil.cpu_affinity()` instead of `os.cpu_count()` -* Stop automatic transaction pushing by wallets -* Unify transaction pushing -* For testing purposes added support for non-ssl rpc clients -* Return TXs from CATWallet and Offer creation -* Remove all install.sh code that installs python and leave it to the user to install separately -* Remove old `unhashable` special case in `Streamable` -* Optimize `validate_removals()` -* Remove support for migrating peers from legacy file format -* Set unique peer filenames when swapping to/from testnets -* Cleaner cli output for rpc client fetch errors -* Optimized Datalayer subscription handling by using a `QueuedAsyncPool` for `DataLayer.periodically_manage_data()` -* Update README.md links for wiki & faq sunset -* Update README formatting and links (thanks @bknox83) -* Turned concatenation of strings to f-strings (thanks @eukub) -* Remove dead code in `multiprocess_validation` -* Improve logging of the height-to-hash and sub-epoch-summaries cache -* Pass full version in `Handshake` (thanks @felixbrucker) -* Separate protocol versions for full_node, farmer, harvester, wallet -* Optimized v1 to v2 DB upgrade -* Datalayer: Avoid manage data loop delay for self subscriptions -* Datalayer: Don't download DAT files that are already on disk -* Datalayer: `get_proof` optimizations - use get_ancestors_optimized -* Datalayer: Optimize insert/upsert/delete by using `get_node_by_key` -* Datalayer: stop using fee config setting and remove from initial config -* Datalayer: Optimize clean_node_table's query and speedup by leveraging relaxed foreign_keys -* Enabled compression for cli rpm -* Bump `chia_rs` to `0.6.1` -* Bump `clvm_tools` to `0.4.9` -* Bump `chiavdf` to `1.1.4` -* Bump `chiapos` to `2.0.4` -* Bump `clvm` to `0.9.9` -* Bump `aiohttp` to `3.9.2` -* Bump `anyio` to `4.3.0` -* Bump `boto3` to `1.34.46` -* Bump `aiosqlite` to `0.20.0` -* Bump `colorlog` to `6.8.2` -* Bump `cryptography` to `42.0.5` -* Bump `keyring` to `24.3.1` -* Bump `dnspython` to `2.5.0` -* Bump `watchdog` to `4.0.0` -* Bump `dnslib` to `0.9.24` -* Bump `typing-extensions` to `4.10.0` + +- Transition `FullBlock`, `BlockRecord`, `CoinSpend`, and `HeaderBlock` to rust +- Move tests - all tests and infrastructure are now included in the chia-blockchain package under `chia/_tests` +- Remove `Announcement` class in favor of `Condition` subclasses +- Remove `ignore_max_send_amount` +- Use `psutil.cpu_affinity()` instead of `os.cpu_count()` +- Stop automatic transaction pushing by wallets +- Unify transaction pushing +- For testing purposes added support for non-ssl rpc clients +- Return TXs from CATWallet and Offer creation +- Remove all install.sh code that installs python and leave it to the user to install separately +- Remove old `unhashable` special case in `Streamable` +- Optimize `validate_removals()` +- Remove support for migrating peers from legacy file format +- Set unique peer filenames when swapping to/from testnets +- Cleaner cli output for rpc client fetch errors +- Optimized Datalayer subscription handling by using a `QueuedAsyncPool` for `DataLayer.periodically_manage_data()` +- Update README.md links for wiki & faq sunset +- Update README formatting and links (thanks @bknox83) +- Turned concatenation of strings to f-strings (thanks @eukub) +- Remove dead code in `multiprocess_validation` +- Improve logging of the height-to-hash and sub-epoch-summaries cache +- Pass full version in `Handshake` (thanks @felixbrucker) +- Separate protocol versions for full_node, farmer, harvester, wallet +- Optimized v1 to v2 DB upgrade +- Datalayer: Avoid manage data loop delay for self subscriptions +- Datalayer: Don't download DAT files that are already on disk +- Datalayer: `get_proof` optimizations - use get_ancestors_optimized +- Datalayer: Optimize insert/upsert/delete by using `get_node_by_key` +- Datalayer: stop using fee config setting and remove from initial config +- Datalayer: Optimize clean_node_table's query and speedup by leveraging relaxed foreign_keys +- Enabled compression for cli rpm +- Bump `chia_rs` to `0.6.1` +- Bump `clvm_tools` to `0.4.9` +- Bump `chiavdf` to `1.1.4` +- Bump `chiapos` to `2.0.4` +- Bump `clvm` to `0.9.9` +- Bump `aiohttp` to `3.9.2` +- Bump `anyio` to `4.3.0` +- Bump `boto3` to `1.34.46` +- Bump `aiosqlite` to `0.20.0` +- Bump `colorlog` to `6.8.2` +- Bump `cryptography` to `42.0.5` +- Bump `keyring` to `24.3.1` +- Bump `dnspython` to `2.5.0` +- Bump `watchdog` to `4.0.0` +- Bump `dnslib` to `0.9.24` +- Bump `typing-extensions` to `4.10.0` ### Known Issues -* Please be aware that logging at `DEBUG` log level may log your local keyring passphrase to the log file. Note this is **not** your key mnemonic. + +- Please be aware that logging at `DEBUG` log level may log your local keyring passphrase to the log file. Note this is **not** your key mnemonic. ## 2.2.1 Chia blockchain 2024-03-4 ### Fixed -* Fixed issue with finding bladebit and madmax plotters in CLI and GUI (thanks @nanofarmer) -* Fixed issue with banning peers due to incorrect `INVALID_TRANSACTIONS_FILTER_HASH` and `INVALID_BLOCK_COST` log errors (#17620) + +- Fixed issue with finding bladebit and madmax plotters in CLI and GUI (thanks @nanofarmer) +- Fixed issue with banning peers due to incorrect `INVALID_TRANSACTIONS_FILTER_HASH` and `INVALID_BLOCK_COST` log errors (#17620) ## 2.2.0 Chia blockchain 2024-02-28 -* Thanks to @bhorvitz for major help debugging a performance issue during coin DB lookup +- Thanks to @bhorvitz for major help debugging a performance issue during coin DB lookup ### Fixed -* Fix TX amount calculation in trade manager (fixes #16842) -* Subscribe to DIDs that come into wallet (fixes #17242) -* Remove duplicate short option from make_offer command (fixes #17371) -* add `SerializedProgram.to()` to simplify some code -* include information for `setuptools_scm` in git archives -* fix type mismatch with `Optional[bytes]` and `bytes` in `wallet/conditions.py` -* fixed typo in `get_coin_record_by_name` docstring (thanks @Abakrombie) -* Fixed readme links (thanks @Abakrombie) -* DL: Don't allow mirrors with empty urls (fixes #16920) -* DL: Improve input for CLI `add_missing_files` (fixes #17039) -* DL: Use unsubscribe queue to relax subscriptions lock -* DL: Use Datalayer banning logic for HTTP download failures -* extend the mempool tests for timelocks, and improve error codes -* extend measured sizes for plot check with value for larger K sizes (thanks @neurosis69) -* Add a few missing type annotations -* Log string header_hash on long validation warnings -* Fix sorted for dictionary keys of both bytes/xch -* Fixed an issue where `chia wallet did transfer` command mistreats the type of `fee` -* Fix signage point message for remote harvesters with large numbers of pools -* undo BlockRecord cache insert, when DB fails -* Warn if running `install-plotter.sh` as root + +- Fix TX amount calculation in trade manager (fixes #16842) +- Subscribe to DIDs that come into wallet (fixes #17242) +- Remove duplicate short option from make_offer command (fixes #17371) +- add `SerializedProgram.to()` to simplify some code +- include information for `setuptools_scm` in git archives +- fix type mismatch with `Optional[bytes]` and `bytes` in `wallet/conditions.py` +- fixed typo in `get_coin_record_by_name` docstring (thanks @Abakrombie) +- Fixed readme links (thanks @Abakrombie) +- DL: Don't allow mirrors with empty urls (fixes #16920) +- DL: Improve input for CLI `add_missing_files` (fixes #17039) +- DL: Use unsubscribe queue to relax subscriptions lock +- DL: Use Datalayer banning logic for HTTP download failures +- extend the mempool tests for timelocks, and improve error codes +- extend measured sizes for plot check with value for larger K sizes (thanks @neurosis69) +- Add a few missing type annotations +- Log string header_hash on long validation warnings +- Fix sorted for dictionary keys of both bytes/xch +- Fixed an issue where `chia wallet did transfer` command mistreats the type of `fee` +- Fix signage point message for remote harvesters with large numbers of pools +- undo BlockRecord cache insert, when DB fails +- Warn if running `install-plotter.sh` as root ### Added -* Support for third-party, farmer-rewarded, Harvesters (Chip-22) -* Singleton fast forward -* Verify p2 delegated conditions signatures and add a new SigningMode for Tangem cards (thanks @MarvinQuevedo) -* DL: add upsert action -* DL: Add support for generating and verifying DataLayer Proofs of Inclusions `get_proof` and `verify_proof` -* Improve transparency of what full nodes are doing and where they spend their time with additional Mempool logging -* add feature to profile just the block validation -* Add `--override` flag to `make_offer` -* Add full node RPC `get_aggsig_additional_data` to get the aggsig additional data -* Add fork height & rolled_back_records to block event for metrics -* extend Block validation timing logs to measure just the CLVM and conditions -* Add support for defining a list of full node peers to connect to (thanks @felixbrucker) -* Add preliminary support for getting coin states in batches -* improve mempool reorg logic when the peak is a non-transaction block -* Add `additions` and `removals` to `get_offer_summary` API response (thanks @mikehw) -* improve handling of `UnfinishedBlock`s -* Add testnet11 constants to config if missing when configuring to run on testnet -* We have added several new translations in this release. Thanks to WNFT, advlive, hezoushe + +- Support for third-party, farmer-rewarded, Harvesters (Chip-22) +- Singleton fast forward +- Verify p2 delegated conditions signatures and add a new SigningMode for Tangem cards (thanks @MarvinQuevedo) +- DL: add upsert action +- DL: Add support for generating and verifying DataLayer Proofs of Inclusions `get_proof` and `verify_proof` +- Improve transparency of what full nodes are doing and where they spend their time with additional Mempool logging +- add feature to profile just the block validation +- Add `--override` flag to `make_offer` +- Add full node RPC `get_aggsig_additional_data` to get the aggsig additional data +- Add fork height & rolled_back_records to block event for metrics +- extend Block validation timing logs to measure just the CLVM and conditions +- Add support for defining a list of full node peers to connect to (thanks @felixbrucker) +- Add preliminary support for getting coin states in batches +- improve mempool reorg logic when the peak is a non-transaction block +- Add `additions` and `removals` to `get_offer_summary` API response (thanks @mikehw) +- improve handling of `UnfinishedBlock`s +- Add testnet11 constants to config if missing when configuring to run on testnet +- We have added several new translations in this release. Thanks to WNFT, advlive, hezoushe ### Changed -* reorg optimizations -* bump `chia_rs` to `0.4.1` -* initiate phasing out of the `coin_solutions` name in JSON structs -* slight simplification to `get_min_fee_rate()` -* Remove `coin_solutions` from `SpendBundle` entirely -* use rust types for `VDFInfo`, `VDFProof` and `ClassgroupElement` -* evict entries continuously from `seen_unfinished_blocks` -* move `tools/legacy_keyring.py` to `chia/legacy/keyring.py` -* Rust `proof-of-space`, `reward chain` and `foliage` types -* DL: Compress `get_keys_values` output by hash. -* replace hardcoded value for `db_readers` (thanks @neurosis69) -* use rust types for `slots`, `SubEpochSummary` and `SubEpochData` -* Update default testnet to testnet11 -* remove old work-around for a bug in version `1.1.4` and earlier -* use rust implementation of `SerializedProgram` -* Rework block fill logic to fill blocks with more SpendBundles (transactions) -* fix typo in logging -* increase farmer block fill rate to 60% -* Force the use of `coin_puzzle_hash` index to `get_unspent_lineage_info_for_puzzle_hash` + +- reorg optimizations +- bump `chia_rs` to `0.4.1` +- initiate phasing out of the `coin_solutions` name in JSON structs +- slight simplification to `get_min_fee_rate()` +- Remove `coin_solutions` from `SpendBundle` entirely +- use rust types for `VDFInfo`, `VDFProof` and `ClassgroupElement` +- evict entries continuously from `seen_unfinished_blocks` +- move `tools/legacy_keyring.py` to `chia/legacy/keyring.py` +- Rust `proof-of-space`, `reward chain` and `foliage` types +- DL: Compress `get_keys_values` output by hash. +- replace hardcoded value for `db_readers` (thanks @neurosis69) +- use rust types for `slots`, `SubEpochSummary` and `SubEpochData` +- Update default testnet to testnet11 +- remove old work-around for a bug in version `1.1.4` and earlier +- use rust implementation of `SerializedProgram` +- Rework block fill logic to fill blocks with more SpendBundles (transactions) +- fix typo in logging +- increase farmer block fill rate to 60% +- Force the use of `coin_puzzle_hash` index to `get_unspent_lineage_info_for_puzzle_hash` ## 2.1.4 Chia blockchain 2024-01-10 ### Fixed -* Update chia_rs to 0.2.15 for AMD K10 architecture (fixes #16386) + +- Update chia_rs to 0.2.15 for AMD K10 architecture (fixes #16386) ### Changed -* improved CPU usage due to tight loop in `send_transaction()` -* improve performance of `total_mempool_fees()` and `total_mempool_cost()` -* reduced the default maximum peer count to 40 from 80 (only applies to new configs) -* changed to `normal` SQlite db sync option (previously was `full`) -* reduced the mempool size to 10 blocks from 50 blocks (improves performance) -* improve performance of the mempool by batch fetching items from the db +- improved CPU usage due to tight loop in `send_transaction()` +- improve performance of `total_mempool_fees()` and `total_mempool_cost()` +- reduced the default maximum peer count to 40 from 80 (only applies to new configs) +- changed to `normal` SQlite db sync option (previously was `full`) +- reduced the mempool size to 10 blocks from 50 blocks (improves performance) +- improve performance of the mempool by batch fetching items from the db ## 2.1.3 Chia blockchain 2023-12-18 ### Fixed -* Fixed a regression in 2.1.2 that could cause a farmer to fail to be able to create a block in some cases + +- Fixed a regression in 2.1.2 that could cause a farmer to fail to be able to create a block in some cases ## 2.1.2 Chia blockchain 2023-12-13 ### Fixed -* Fix deep reorgs and add tests -* Reduce possible Signage Point bursts by forwarding 4 most recent cached SPs only -* Fix condition serialization in RPC client -* Fix DID resync to not create DID wallets that don't belong to the current key -* Fix `get_block_spends` to work correctly post hard-fork -* Shutdown on startup failure and log to the log if possible -* fix issue with syncing testnet10 from 0 -* Chunk SQLite query for old TR/TX conversion (fixes #16589) -* Allow set_status to overwrite trade in store (fixes #16461) -* Add cache to wallet node preventing resend of processing TX -* Correct `FullNodeDiscovery.pending_tasks` typo without `s` -* Fix `chia wallet coins list` by adding NFT, DID, DAO_CAT to wallets denominated in mojos -* generalize JSON serializer -* Fix possible peak height race -* Fix invalid sync request -* request blocks in batches of 32 instead of 33 (saves 3% bandwidth) -* Fix `get_block_generator` fork detection -* Fix set_status accidental arg (fixes #16817) -* Fix issues with upgrading Chia via RPM by claiming ownership of `/opt/chia` in the RPM -* clean out `/opt/chia` before install and after removal of rpm + +- Fix deep reorgs and add tests +- Reduce possible Signage Point bursts by forwarding 4 most recent cached SPs only +- Fix condition serialization in RPC client +- Fix DID resync to not create DID wallets that don't belong to the current key +- Fix `get_block_spends` to work correctly post hard-fork +- Shutdown on startup failure and log to the log if possible +- fix issue with syncing testnet10 from 0 +- Chunk SQLite query for old TR/TX conversion (fixes #16589) +- Allow set_status to overwrite trade in store (fixes #16461) +- Add cache to wallet node preventing resend of processing TX +- Correct `FullNodeDiscovery.pending_tasks` typo without `s` +- Fix `chia wallet coins list` by adding NFT, DID, DAO_CAT to wallets denominated in mojos +- generalize JSON serializer +- Fix possible peak height race +- Fix invalid sync request +- request blocks in batches of 32 instead of 33 (saves 3% bandwidth) +- Fix `get_block_generator` fork detection +- Fix set_status accidental arg (fixes #16817) +- Fix issues with upgrading Chia via RPM by claiming ownership of `/opt/chia` in the RPM +- clean out `/opt/chia` before install and after removal of rpm ### Added -* Allow DApps to use WalletConnect to sign customized puzzles by extending sign APIs -* Add support for lists of peers in the config (thanks @felixbrucker) -* Update to support looking up mnemonic by just the first 4 letters of each word -* Allow the daemon to use TLS v1.2 via config flag (thanks @dkackman) -* Add systemd init files to CLI-only Linux packages -* DL: remove data from the DB on unsubscribe + +- Allow DApps to use WalletConnect to sign customized puzzles by extending sign APIs +- Add support for lists of peers in the config (thanks @felixbrucker) +- Update to support looking up mnemonic by just the first 4 letters of each word +- Allow the daemon to use TLS v1.2 via config flag (thanks @dkackman) +- Add systemd init files to CLI-only Linux packages +- DL: remove data from the DB on unsubscribe ### Changed -* ban peers for 10 minutes when violating consensus rules -* Remove `tx_endpoint` from `select_coins` -* DID wallet coin_added by @ytx1991 in https://github.com/Chia-Network/chia-blockchain/pull/16256 -* Use network overrides for default port for WalletPeers -* Improve clarity of legacy support policy language -* Add config option to set rpc timeout and use it for simulator tests -* rename `ClassgroupElement.from_bytes()` -* Optimize CRCAT trades -* harmonize `SerializedProgram` with `Program` -* Swap some info logs in seeder to warning -* Distinguish `insufficient_partials` from `invalid_partials` -* transition away from `__bytes__` conversion for fixed-size integers -* Use BLS from `chia_rs` and stop using `blspy` wheel in chia-blockchain -* simplify the interface to `mempool_manager.new_peak()` -* reduce redundant calls to compute the header hash -* Change `-h` to `-k` for `--key` flag for datalayer `get_value` cli command -* Update `chia_rs` to `0.2.13` -* Update `clvm_tools` to `0.4.7` -* Update `aiohttp` to `3.9.1` (fixes a WebSocket bug introduced in 3.9.0) -* Change `chia show keys --show-mnemonic-seed` to also show farmer private key (thanks xchdata1) -* Adjust ban times when unable to download properly DL DAT files -* return `List[TransactionRecord]` from nft bulk mint functions -* DL: delete full files when subscribed to a datastore per config +- ban peers for 10 minutes when violating consensus rules +- Remove `tx_endpoint` from `select_coins` +- DID wallet coin_added by @ytx1991 in https://github.com/Chia-Network/chia-blockchain/pull/16256 +- Use network overrides for default port for WalletPeers +- Improve clarity of legacy support policy language +- Add config option to set rpc timeout and use it for simulator tests +- rename `ClassgroupElement.from_bytes()` +- Optimize CRCAT trades +- harmonize `SerializedProgram` with `Program` +- Swap some info logs in seeder to warning +- Distinguish `insufficient_partials` from `invalid_partials` +- transition away from `__bytes__` conversion for fixed-size integers +- Use BLS from `chia_rs` and stop using `blspy` wheel in chia-blockchain +- simplify the interface to `mempool_manager.new_peak()` +- reduce redundant calls to compute the header hash +- Change `-h` to `-k` for `--key` flag for datalayer `get_value` cli command +- Update `chia_rs` to `0.2.13` +- Update `clvm_tools` to `0.4.7` +- Update `aiohttp` to `3.9.1` (fixes a WebSocket bug introduced in 3.9.0) +- Change `chia show keys --show-mnemonic-seed` to also show farmer private key (thanks xchdata1) +- Adjust ban times when unable to download properly DL DAT files +- return `List[TransactionRecord]` from nft bulk mint functions +- DL: delete full files when subscribed to a datastore per config ## 2.1.1 Chia blockchain 2023-10-11 ### Fixed + - Changed electron version for GUI to 25.9.0 to fix whitescreen issues seen on some linux systems (fixes #16538) ## 2.1.0 Chia blockchain 2023-10-05 ### Added + - Credential Restricted CATs - Add timelock information to Trades and Transactions - Add ergonomic timelock parsing to RPCs @@ -370,6 +394,7 @@ macOS 11 (Big Sur) is deprecated. This release (2.4.0) will be the last release - Bladebit Hybrid disk mode ### Changed + - Remove CAT1 UX guards - Dedup offer cancellation logic - upgrade electron-builder to 24.6.3 and Lerna to 7.1.3 @@ -394,6 +419,7 @@ macOS 11 (Big Sur) is deprecated. This release (2.4.0) will be the last release - Update install-gui.sh to check Node 18 and npm 9 ### Fixed + - Fixed python3-venv in install.sh (thanks @d1m1trus) - Change include_standard_libraries for CLVM compilation default to True - add dust warning message to chia coins commands & cleanup code @@ -419,7 +445,7 @@ macOS 11 (Big Sur) is deprecated. This release (2.4.0) will be the last release - add fee for cat creation - max_coin_amount should default to None in wallet send command - Add extra_conditions to special offer making -- bump chia_rs to include bugfix for new AGG_SIG_* conditions in mempool mode +- bump `chia_rs` to include bugfix for new `AGG_SIG\*` conditions in mempool mode - Fix `chia farm summary` aborting early if no local full node present (fixes #16164) (thanks @xchdata1) - fix typo in PendingTxCache - rename `chia data add_missing_files` `-f`/`--foldername` to `-d`/`--directory` @@ -428,6 +454,7 @@ macOS 11 (Big Sur) is deprecated. This release (2.4.0) will be the last release - Fix glitch NFT wallet test ### Removed + - Support for MacOS 10.14 and 10.15 - Support for Chia database schema version 1 - Support for minting CATs via RPC @@ -463,7 +490,7 @@ macOS 11 (Big Sur) is deprecated. This release (2.4.0) will be the last release - Move CAT_MOD from cat_loader -> cat_utils - Use a more aggresive activation schedule on testnet10 - Full_node: More set usage in subscription code -- Rename exclude_coin_* -> excluded_coin_* for consistency +- Rename `exclude_coin_*` -> `excluded_coin_*` for consistency - Add `**kwargs` to all `generate_signed_transaction` definitions - Full_node: Add `max_height` to `CoinStore.get_coin_states_by_ids` - Util: Some tweaks to `StructStream` and sized ints @@ -556,6 +583,7 @@ macOS 11 (Big Sur) is deprecated. This release (2.4.0) will be the last release ## 1.8.2 Chia blockchain 2023-06-28 ### Added + - Add `chia wallet vcs` command for Verifiable Credential operations - Add `chia wallet clawback` command for clawback operations - Add `chia wallet did` commands `get_details`, `update_metadata`, `find_lost`, `message_spend`, `transfer` @@ -565,6 +593,7 @@ macOS 11 (Big Sur) is deprecated. This release (2.4.0) will be the last release - Add `confirmed` boolean to wallet RPC `get_transactions` ### Changed + - Identical spend aggregation - CAT wallet now will hint to CAT change - Move to Discord in docs and install scripts @@ -579,6 +608,7 @@ macOS 11 (Big Sur) is deprecated. This release (2.4.0) will be the last release - Updated `chiavdf` to `1.0.9` ### Fixed + - Fix `chia wallet make_offer` short-option collision on `-r` (Fixes #14874) (Thanks @yyolk) - Fix `GENERATOR_MOD2` to have the same cost as `GENERATOR_MOD` - Subscribe to the change children of CATs @@ -593,11 +623,13 @@ macOS 11 (Big Sur) is deprecated. This release (2.4.0) will be the last release ## 1.8.1 Chia blockchain 2023-05-17 ### Changed + - Updated testnet softfork height so softfork rules take effect on testnet immediately - Move to Discord in docs and install scripts (#15193) - Optimize compact proofs ### Fixed + - Issue where CLI only listed first 50 NFTs by hardcoding `num` param when listing NFTs from CLI - Issue where wallet might display `RuntimeError: dictionary changed size during iteration` by avoiding dict changes while iterating in `handle_nft` - Issue where node had trouble keeping peers with `assert self.peak is not None` error by not adding transactions to the mempool before it has a valid peak (fixes #15217) @@ -605,6 +637,7 @@ macOS 11 (Big Sur) is deprecated. This release (2.4.0) will be the last release ## 1.8.0 Chia blockchain 2023-05-03 ### Added + - Added `chia completion` command - Added wallet_removed to `state_changes` messages to support wallet removal in GUI - Add support to `cat_spend` RPC for running TAIL @@ -613,6 +646,7 @@ macOS 11 (Big Sur) is deprecated. This release (2.4.0) will be the last release - DataLayer plugin support and infrastructure ### Changed + - Fix soft fork to 60 days - Don't subscribe to all coin ids in the DB - Handle trade coins in the `try` block of `new_coin_state` @@ -633,6 +667,7 @@ macOS 11 (Big Sur) is deprecated. This release (2.4.0) will be the last release - List the columns for `INSERT` into `coin_record` ### Fixed + - Disconnect untrusted peers if we find a trusted synced one - Only compile CLVM if source newer than hex - Fixed windows issues with passphrase prompt on CLI by flushing prompt (Fixes #14889) @@ -659,6 +694,7 @@ macOS 11 (Big Sur) is deprecated. This release (2.4.0) will be the last release ## 1.7.1 Chia blockchain 2023-03-22 ### Added + - `get_transaction_memo` wallet RPC - `set_wallet_resync_on_startup` wallet RPC to reset wallet sync data on wallet restart - `nft_count_nfts` wallet RPC - counts NFTs per wallet or for all wallets @@ -671,6 +707,7 @@ macOS 11 (Big Sur) is deprecated. This release (2.4.0) will be the last release - `curry` Chialisp library replaces `curry-and-treehash` ### Changed + - `chia show -f` changed to output proper JSON - `Rate limiting` log messages are themselves rate limited - Notified GUI when wallets are removed @@ -686,6 +723,7 @@ macOS 11 (Big Sur) is deprecated. This release (2.4.0) will be the last release - Changed mempool backend to use an in-memory SQLite DB ### Fixed + - Quieted wallet log output for `Record: ... not in mempool` (fixes #14452) - Quieted log output for `AttributeError: 'NoneType' object has no attribute '_get_extra_info` - Reduced log output for `Using previous generator for height` @@ -701,6 +739,7 @@ macOS 11 (Big Sur) is deprecated. This release (2.4.0) will be the last release - Improved the accuracy of the wallet sync status indication ### Deprecated + - `curry-and-treehash` Chialisp library replaced by new `curry` library ## 1.7.0 Chia blockchain 2023-02-15 @@ -714,7 +753,7 @@ macOS 11 (Big Sur) is deprecated. This release (2.4.0) will be the last release - Add gzip support to DataLayer download client (Thanks, @Chida82!) - Add proxy support to DataLayer download client (Thanks again, @Chida82!) - Add `get_timestamp_for_height` Wallet RPC for converting heights to timestamps -- Add `tools/legacy_keyring.py` to allow migration from the removed old key storage format. Available only from source installations. +- Add `tools/legacy_keyring.py` to allow migration from the removed old key storage format. Available only from source installations. - Add Arch Linux to install-gui.sh script (Thanks, @DaOneLuna!) - Add a `daemon_heartbeat` setting to config.yaml - add `trusted_max_subscribe_items` and `wallet:trusted_peers` to config.yaml @@ -1190,7 +1229,7 @@ macOS 11 (Big Sur) is deprecated. This release (2.4.0) will be the last release - Added RPCs for NFT (see ) - Enable stricter mempool rule when dealing with multiple extra arguments - Added a retry when loading pool info from a pool at 2 minute intervals -- Added CLI options `--sort-by-height` and –sort-by-relevance` to `chia wallet get_transactions` +- Added CLI options `--sort-by-height` and `-–sort-by-relevance` to `chia wallet get_transactions` - Harvester: Introduce `recursive_plot_scan` - Add libgmp-dev to Bladebit installation - thanks to @TheLastCicada - Add support for multiple of the same CAT in aggregate offers - Thanks to @roseiliend @@ -1414,7 +1453,7 @@ There is a known issue where harvesters will not reconnect to the farmer automat - Added new CLI option, chia keys derive, to allow deriving any number of keys in various ways. This is particularly useful to do an exhaustive search for a given address using chia keys derive search. - Div soft fork block height set to 2,300,000. - Added the ability to add an optional fee for creating and changing plot NFTs. -- Added *multiprocessing_start_method:* entry in config.yaml that allows setting the python *start method* for multiprocessing (default is *spawn* on Windows & MacOS, *fork* on Unix). +- Added `multiprocessing_start_method:` entry in config.yaml that allows setting the python _start method_ for multiprocessing (default is `spawn` on Windows & MacOS, `fork` on Unix). - Added option to "Cancel transaction" accepted offers that are stuck in "pending". ### Changed @@ -1479,7 +1518,7 @@ There is a known issue where harvesters will not reconnect to the farmer automat - If you start with wallet mode and then switch to farmer mode and back to wallet mode, the full node will continue to sync in the background. To get the full node to stop syncing after switching to wallet mode, you will need to close the Chia and relaunch the Chia app. - Wallets with large number of transactions or large number of coins will take longer to sync (more than a few minutes), but should take less time than a full node sync. It could fail in some cases. - Huge numbers cannot be put into amount/fee input for transactions in the GUI. -- Some Linux systems experience excessive memory usage with the value *default*/*python_default*/*fork* configured for *multiprocessing_start_method:*. Setting this value to *spawn* may produce better results, but in some uncommon cases, is know to cause crashes. +- Some Linux systems experience excessive memory usage with the value `default`/`python_default`/`fork` configured for `multiprocessing_start_method:`. Setting this value to `spawn` may produce better results, but in some uncommon cases, is know to cause crashes. - Sending a TX with too low of a fee can cause an infinite spinner in the GUI when the mempool is full. - Workaround: Restart the GUI, or clear unconfirmed TX. - Claiming rewards when self-pooling using CLI will show an error message, but it will actually create the transaction. @@ -1489,7 +1528,7 @@ There is a known issue where harvesters will not reconnect to the farmer automat ### Added - Farmers rejoice: today's release integrates two plotters in broad use in the Chia community: Bladebit, created by @harold-b, and Madmax, created by @madMAx43v3r. Both of these plotters bring significant improvements in plotting time. More plotting info [here](https://github.com/Chia-Network/chia-blockchain/wiki/Alternative--Plotters). -- This release also includes several important performance improvements as a result of last weekends "Dust Storm", with two goals in mind: make sure everyone can farm at all times, and improve how many transactions per second each node can accept, especially for low-end hardware. Please know that these optimizations are only the first wave in a series of many over the next few releases to help address this going forward. While the changes we have implemented in this update may not necessarily solve for *every* possible congestion scenario, they should go a long way towards helping low-end systems perform closer to expectations if this happens again. +- This release also includes several important performance improvements as a result of last weekends "Dust Storm", with two goals in mind: make sure everyone can farm at all times, and improve how many transactions per second each node can accept, especially for low-end hardware. Please know that these optimizations are only the first wave in a series of many over the next few releases to help address this going forward. While the changes we have implemented in this update may not necessarily solve for _every_ possible congestion scenario, they should go a long way towards helping low-end systems perform closer to expectations if this happens again. - Performance improvements for nodes to support higher transaction volumes, especially for low powered devices like RaspBerry Pi. Full details at [#9050](https://github.com/Chia-Network/chia-blockchain/pull/9050). - Improved multi-core usage through process pools. - Prioritized block validation. @@ -1535,7 +1574,7 @@ We have some great improvements in this release: We launched our migration of ke ### Changed -- Truncate points_[found,acknowledged]_24h to 24 hours at each signage point. +- Truncate points\_[found,acknowledged]\_24h to 24 hours at each signage point. - Improved reliability of test_farmer_harvester_rpc.py, by increasing the interval between harvester checks, which should avoid spamming logs with excessive plot refreshing and cache updates. - Thanks @cross for change that allows using IPv6 address in config.yaml for remote harvesters and other chia services. - Change to stop creating unused indexes in block_records and full_blocks tables. @@ -1657,15 +1696,15 @@ Today we’re releasing version 1.2.6 to address a resource bug with nodes, and - Added an option to sign bytes as well as UTF-8 strings, which is particularly helpful if you're writing Chialisp puzzles that require signatures and you want to test them without necessarily writing a whole python script for signing the relevant data. - Added a first version of .pre-commit-config.yaml and applied the changes required by the following initial hooks in separate commits. To use this you need to install pre-commit, see . - We have added many new translations in this release based on community -submissions. Thanks to @RuiZhe for Chinese, Traditional; @HansCZ for Czech; -@LUXDAD for English, Australia; @f00b4r for Finnish; @jimkoen, @ruvado for German; @Arielzikri for Hebrew; @A-Caccese for Italian; @Hodokami for Japanese; @LUXDAD for Latvian; @vaexperience for Lithuanian; @LUXDAD for Russian; @juands1644 for Spanish, Argentina; @MrDyngrak, @ordtrogen for Swedish; @richeyphu for Thai; @Ansugo, @baturman for Turkish. + submissions. Thanks to @RuiZhe for Chinese, Traditional; @HansCZ for Czech; + @LUXDAD for English, Australia; @f00b4r for Finnish; @jimkoen, @ruvado for German; @Arielzikri for Hebrew; @A-Caccese for Italian; @Hodokami for Japanese; @LUXDAD for Latvian; @vaexperience for Lithuanian; @LUXDAD for Russian; @juands1644 for Spanish, Argentina; @MrDyngrak, @ordtrogen for Swedish; @richeyphu for Thai; @Ansugo, @baturman for Turkish. ### Changed -- Thanks @altendky for Correct * to ** kwargs unpacking in time_out_assert(). +- Thanks @altendky for Correct `*` to `**` kwargs unpacking in time_out_assert(). - Thanks @altendky for changing the default to paginate to chia wallet get_transactions to address 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. - Removed commented-out debug breakpoints. -- Enabled Rust condition checker to add the ability to parse the output conditions from a generator program in Rust. It also validates some of the conditions in Rust. +- Enabled Rust condition checker to add the ability to parse the output conditions from a generator program in Rust. It also validates some of the conditions in Rust. - Switched IP address lookup to first use Chia's service ip.chia.net. - Made changes so that when creating SSL certificate and private key files, we ensure that files are written with the proper file permissions. - Define a new encrypted keyring format to be used to store keys, and which is optionally encrypted to a user-supplied passphrase. GUI for the passphrase will come in an upcoming release. @@ -1704,7 +1743,7 @@ submissions. Thanks to @RuiZhe for Chinese, Traditional; @HansCZ for Czech; - Thanks @aarcro for adding timing metrics to plot check. - Thanks @chadwick2143 for adding the ability to set the port to use for the harvester. - Added more friendly error reporting for peername errors. -- We have added many new translations in this release. Thanks to @L3Sota, @hodokami and @L3Sota for Japanese; @danielrangel6, @memph1x and @dvd101x for Spanish (Mexico); @fsavaget, @semnosao and @ygalvao for Portuguese (Brazilian); @juands1644 for Spanish (Argentina); @darkflare for Portuguese; @wong8888, @RuiZhe, @LM_MA, @ezio20121225, @GRIP123, @11221206 and @nicko1122 for Chinese Traditional; @atomsymbol for Slovak; @SirGeoff and @rolandfarkasCOM for Hungarian; @ordtrogen for Swedish; @HansCZ and @kafkic for Czech; @SupperDog for Chinese Simplified; @baturman and @Ansugo for Turkish; @thebacktrack for Russian; @itservicelukaswinter for German; @saeed508, @Amirr_ezA and @themehran for Persian; @hgthtung for Vietnamese; @f00b4r for Finnish; @IMIMIM for Latvian; @Rothnita and @vanntha85 for Khmer; @Rothnita and @Gammaubl for Thai; @marcin1990 for Polish; @mydienst for Bosnian; @dvd101x and @darkflare for Spanish; @ATSHOOTER for Albanian; @Munyuk81 for Indonesian; @loppefaaret for Danish; @sharjeelaziz and @nzjake for English; @nzjake for English (New Zealand). We apologize if we missed anyone and welcome corrections. +- We have added many new translations in this release. Thanks to @L3Sota, @hodokami and @L3Sota for Japanese; @danielrangel6, @memph1x and @dvd101x for Spanish (Mexico); @fsavaget, @semnosao and @ygalvao for Portuguese (Brazilian); @juands1644 for Spanish (Argentina); @darkflare for Portuguese; @wong8888, @RuiZhe, @LM_MA, @ezio20121225, @GRIP123, @11221206 and @nicko1122 for Chinese Traditional; @atomsymbol for Slovak; @SirGeoff and @rolandfarkasCOM for Hungarian; @ordtrogen for Swedish; @HansCZ and @kafkic for Czech; @SupperDog for Chinese Simplified; @baturman and @Ansugo for Turkish; @thebacktrack for Russian; @itservicelukaswinter for German; @saeed508, @Amirr_ezA and @themehran for Persian; @hgthtung for Vietnamese; @f00b4r for Finnish; @IMIMIM for Latvian; @Rothnita and @vanntha85 for Khmer; @Rothnita and @Gammaubl for Thai; @marcin1990 for Polish; @mydienst for Bosnian; @dvd101x and @darkflare for Spanish; @ATSHOOTER for Albanian; @Munyuk81 for Indonesian; @loppefaaret for Danish; @sharjeelaziz and @nzjake for English; @nzjake for English (New Zealand). We apologize if we missed anyone and welcome corrections. ### Changed @@ -1755,13 +1794,13 @@ submissions. Thanks to @RuiZhe for Chinese, Traditional; @HansCZ for Czech; ### Added - Portable pooled plots are now available using our new plot NFT. These allow you to plot new plots to an NFT that can either self farm or join and leave pools. During development there were changes to the plot NFT so portable pool plots (those made with `-c` option to `chia plots create`) using code from before June 25th are invalid on mainnet. -OG plots made before this release can continue to be farmed side by side with the new portable pool plots but can not join pools using the official pooling protocol. You can learn more as a farmer by checking out the [pool user guide](https://github.com/Chia-Network/chia-blockchain/wiki/Pooling-User-Guide). Pool operators and those wanting to understand how the official pooling protocol operates should check out our [pooling implementation reference repository](https://github.com/Chia-Network/pool-reference). If you plan to use plot NFT, all your farmers and harvesters must be on 1.2.0 to function properly for portable pool plots. + OG plots made before this release can continue to be farmed side by side with the new portable pool plots but can not join pools using the official pooling protocol. You can learn more as a farmer by checking out the [pool user guide](https://github.com/Chia-Network/chia-blockchain/wiki/Pooling-User-Guide). Pool operators and those wanting to understand how the official pooling protocol operates should check out our [pooling implementation reference repository](https://github.com/Chia-Network/pool-reference). If you plan to use plot NFT, all your farmers and harvesters must be on 1.2.0 to function properly for portable pool plots. - The exact commit after which Plot NFTs should be valid is the 89f7a4b3d6329493cd2b4bc5f346a819c99d3e7b commit (in which `pools.testnet9` branch was merged to main) or 5d62b3d1481c1e225d8354a012727ab263342c0a within the `pools.testnet9` branch. - `chia farm summary` and the GUI now use a new RPC endpoint to properly show plots for local and remote harvesters. This should address issues #6563, #5881, #3875, #1461. - `chia configure` now supports command line updates to peer count and target peer count. - Thank you @gldecurtins for adding logging support for remote syslog. - Thanks to @maran and @Animazing for adding farmer and pool public key display to the RPC. -- We have added translations for Hungarian, Belarusian, Catalan, and Albanian. For Hungarian thanks to @SirGeoff, @azazio @onokaxxx, @rolandfarkasCOM, @HUNDavid , @horvathpalzsolt, @stishun74, @tusdavgaming, @idotitusz, @rasocsabi, @mail.kope, @gsprblnt, @mbudahazi, @csiberius, @tomatos83, @zok42, @ocel0t, @rwtoptomi, @djxpitke, @ftamas85, @zotya0330, @fnni, @kapabeates, @zamery, @viktor.gonczi, @pal.suta, @miv, and @Joeman_. For Belarusian thanks to @shurix83, @haxycgm, and @metalomaniax. For Catalan thank you to @Poliwhirl, @Pep-33, @marqmarti, @meuca, @Guiwdin, @carlescampi, @jairobtx, @Neoares, @darknsis, @augustfarrerasgimeno, and @fornons. Finally for Albanian thanks to @ATSHOOTER and @lakedeejay. We apologize if we missed anyone and welcome corrections. +- We have added translations for Hungarian, Belarusian, Catalan, and Albanian. For Hungarian thanks to @SirGeoff, @azazio @onokaxxx, @rolandfarkasCOM, @HUNDavid , @horvathpalzsolt, @stishun74, @tusdavgaming, @idotitusz, @rasocsabi, @mail.kope, @gsprblnt, @mbudahazi, @csiberius, @tomatos83, @zok42, @ocel0t, @rwtoptomi, @djxpitke, @ftamas85, @zotya0330, @fnni, @kapabeates, @zamery, @viktor.gonczi, @pal.suta, @miv, and @Joeman\_. For Belarusian thanks to @shurix83, @haxycgm, and @metalomaniax. For Catalan thank you to @Poliwhirl, @Pep-33, @marqmarti, @meuca, @Guiwdin, @carlescampi, @jairobtx, @Neoares, @darknsis, @augustfarrerasgimeno, and @fornons. Finally for Albanian thanks to @ATSHOOTER and @lakedeejay. We apologize if we missed anyone and welcome corrections. - Our release process is now fully automated from tagging a release to publishing installers to all of the appropriate locations and now makes the release artifacts available via torrents as well. - All Chia repositories now automatically build M1 wheels and create a new MacOS M1 native installer. - New CLI command `chia plotnft` to manage pools. @@ -1776,7 +1815,7 @@ OG plots made before this release can continue to be farmed side by side with th - We have made a host of changes to the GUI to support pooling and to improve the wallet experience. - We updated chiapos to version 1.0.3. This adds parallel reads to GetFullProof. Thanks to @marcoabreu ! We now print target/final directory early in the logs refs and log process ID. Thanks to @grayfallstown ! We are now using Gulrak 1.5.6. -@683280 optimized code in phase1.hpp. @jespino and @mrhacky started migrating to flags instead of booleans parameters for `show_progress` and `nobitfield`. If you are providing third-party tools you may need to make adjustments if relying on the chiapos log. + @683280 optimized code in phase1.hpp. @jespino and @mrhacky started migrating to flags instead of booleans parameters for `show_progress` and `nobitfield`. If you are providing third-party tools you may need to make adjustments if relying on the chiapos log. - Updated chiavdf to version 1.0.2 to fix certain tests. - Windows builds now rely upon Python 3.9 which obviates the fix in 1.1.7. - We are now using miniupnpc version 2.2.2 so that we can support Python 3.9 on Windows. @@ -2013,7 +2052,7 @@ Batch process weight proof epochs in groups of 900 to fit below May 2020 sqlite ### Changed -- The plotter in bitfield mode is much improved in plotting speed (~15% faster than in 1.0.3), now requires 28% less temporary space (238.3 GiB/256 GB), and now uses its maximum memory in phase 1 and only needs 3389MiB for optimal sorting of a k32. Total writes should also be down by about 20%. On almost all machines we expect bitfield to be as fast or faster. For CPUs that predate the [Nehalem architecture](https://en.wikipedia.org/wiki/Nehalem_(microarchitecture)), bitfield plotting will not work and you will need to use no bitfield. Those CPUs were generally designed before 2010. +- The plotter in bitfield mode is much improved in plotting speed (~15% faster than in 1.0.3), now requires 28% less temporary space (238.3 GiB/256 GB), and now uses its maximum memory in phase 1 and only needs 3389MiB for optimal sorting of a k32. Total writes should also be down by about 20%. On almost all machines we expect bitfield to be as fast or faster. For CPUs that predate the [Nehalem architecture](), bitfield plotting will not work and you will need to use no bitfield. Those CPUs were generally designed before 2010. - The `src` directory in chia-blockchain has been changed to `chia` to avoid namespace collisions. - GUI install builds have been simplified to rely on one `.spec` file in `chia/` - The weight proof timeout can now be configured in config.yaml. @@ -2306,7 +2345,7 @@ Batch process weight proof epochs in groups of 900 to fit below May 2020 sqlite - The websocket address is no longer displayed in the GUI unless it is running as a remote GUI. Thanks @dkackman ! - `chia plots check` now will continue checking after it finds an error in a plot to the total number of checks you specified. - If you run install-gui.sh or install-timelord.sh without being in the venv, the script will warn you that you need to `. ./activate` and exit with error. -- If you attempt to install on a 32 bit Pi/ARM OS, the installer exits with a helpful error message. You can still fail when running under a 64 bit kernel but using a 32 bit Python 3. +- If you attempt to install on a 32 bit Pi/ARM OS, the installer exits with a helpful error message. You can still fail when running under a 64 bit kernel but using a 32 bit Python 3. - The application is now more aware of whether it is running a testnet or mainnet. This impacts wallet's display behavior and certain blockchain validation rules. - Interface improvements for `chia netspace`. - Now that aiosqlite included our upstream improvements we install version 0.17.0. @@ -2352,13 +2391,13 @@ Batch process weight proof epochs in groups of 900 to fit below May 2020 sqlite - We have added Italian, Russian, and Finnish. More to come soon. - There is now remote UI support. [Documents](https://github.com/Chia-Network/chia-blockchain-gui/blob/main/remote.md) will temporarily live in the repository but have moved to the [wiki](https://github.com/Chia-Network/chia-blockchain/wiki/Connecting-the-UI-to-a-remote-daemon). Thanks to @dkackman for this excellent addition! - Added the ability to specify an address for the pool when making plots (-c flag), as opposed to a public key. The block -validation was changed to allow blocks like these to be made. This will enable changing pools in the future, by specifying a smart transaction for your pool rewards. + validation was changed to allow blocks like these to be made. This will enable changing pools in the future, by specifying a smart transaction for your pool rewards. - Added `chia plots check --challenge-start [start]` that begins at a different `[start]` for `-n [challenges]`. Useful when you want to do more detailed checks on plots without restarting from lower challenge values you already have done. Huge thanks to @eFishCent for this and all of the debugging work behind the scenes confirming that plot failures were machine errors and not bugs! ### Changed - Sub blocks renamed to blocks, and blocks renamed to transaction blocks, everywhere. This effects the RPC, now -all fields that referred to sub blocks are changed to blocks. + all fields that referred to sub blocks are changed to blocks. - Base difficulty and weight have increased, so difficulty of "5" in the rc1 testnet will be equivalent to "21990232555520" in the previous testnet. - 'chia wallet send' now takes in TXCH or XCH as units instead of mojos. - Transactions have been further sped up. @@ -2671,7 +2710,7 @@ all fields that referred to sub blocks are changed to blocks. - A bug in bls-singatures/blspy could cause a stack overflow if too many signatures were verified at once. This caused the block of death at 11997 of the Beta 15 chain. Updated to 0.2.4 to address the issue. - GUI Wallet now correctly updates around reorgs. - chiapos 0.12.32 fixed a an out of bounds read that could crash the plotter. It also contains a fix to better handle the case of drive letters on Windows. -- Node would fail to start on Windows Server 2016 with lots of cores. This [python issue explains]( https://bugs.python.org/issue26903) the problem. +- Node would fail to start on Windows Server 2016 with lots of cores. This [python issue explains](https://bugs.python.org/issue26903) the problem. ### Known Issues @@ -2845,7 +2884,7 @@ all fields that referred to sub blocks are changed to blocks. - Handle disconnection and reconnection of hard drives properly. - Addressed pre-Haswell Windows signatures failing. - MacOS, Linux x64, and Linux aarch64 were not correctly compiling libsodium in -the blspy/bls-signatures library. + the blspy/bls-signatures library. - Removed outdated "200 plots" language from Plot tab. - Fixed spelling error for "folder" on Plot tab. - Various node dependency security vulnerabilities have been fixed. @@ -2861,76 +2900,76 @@ the blspy/bls-signatures library. ### Added - We have released a new plot file format. We believe that plots made in this -format and with these IETF BLS keys will work without significant changes on -mainnet at launch. + format and with these IETF BLS keys will work without significant changes on + mainnet at launch. - We now use [chacha8](https://cr.yp.to/chacha.html) and -[blake3](https://github.com/BLAKE3-team/BLAKE3) for proof of space instead of -the now deprecated AES methods. This should increase plotting speed and support -more processors. + [blake3](https://github.com/BLAKE3-team/BLAKE3) for proof of space instead of + the now deprecated AES methods. This should increase plotting speed and support + more processors. - Plot refreshing happens during all new challenges and only new/modified files -are read. + are read. - Updated [blspy](https://github.com/Chia-Network/bls-signatures) to use the -new [IETF standard for BLS signatures](https://tools.ietf.org/html/draft-irtf-cfrg-bls-signature-02). + new [IETF standard for BLS signatures](https://tools.ietf.org/html/draft-irtf-cfrg-bls-signature-02). - Added a faster VDF process which generates n-wesolowski proofs quickly -after the VDF result is known. This requires a high number of CPUs. To use it, -set timelord.fast_algorithm = True in the config file. + after the VDF result is known. This requires a high number of CPUs. To use it, + set timelord.fast_algorithm = True in the config file. - Added a new type of timelord helper - blue boxes, which generate compact -proofs of time for existing proven blocks. This helps reducing the database -size and speeds up syncing a node for new users joining the network. Full nodes -send 100 random un-compact blocks per hour to blue boxes, and if -timelord.sanitizer_mode = True, the blue box timelord will work on those -challenges. Unlike the main timelord, average machines can run blue boxes -and contribute to the chain. Expect improvements to the install method for -blue boxes in future releases. + proofs of time for existing proven blocks. This helps reducing the database + size and speeds up syncing a node for new users joining the network. Full nodes + send 100 random un-compact blocks per hour to blue boxes, and if + timelord.sanitizer_mode = True, the blue box timelord will work on those + challenges. Unlike the main timelord, average machines can run blue boxes + and contribute to the chain. Expect improvements to the install method for + blue boxes in future releases. - From the UI you can add a directory that harvester will always check for -existing and new plots. Harvester will only look in the specific directory you -specify so you'll have to add any subfolders you want to also contain plots. + existing and new plots. Harvester will only look in the specific directory you + specify so you'll have to add any subfolders you want to also contain plots. - The UI now asks for confirmation before closing and shows shutdown progress. - UI now tries to shut down servers gracefully before exiting, and also closes -the daemon before starting. + the daemon before starting. - The various sub repositories (chiapos, chiavdf, etc.) now build ARM64 binary -wheels for Linux with Python 3.8. This makes installing on Ubuntu 20.04 lts on -a Raspberry Pi 3 or 4 easy. + wheels for Linux with Python 3.8. This makes installing on Ubuntu 20.04 lts on + a Raspberry Pi 3 or 4 easy. - Ci's check to see if they have secret access and attempt to fail cleanly so -that ci runs successfully complete from PRs or forked repositories. + that ci runs successfully complete from PRs or forked repositories. - Farmer now sends challenges after a handshake with harvester. - The bls-signatures binary wheels include libsodium on all but Windows which -we expect to add in future releases. + we expect to add in future releases. - The chia executable is now available if installing from the Windows or MacOS -Graphical installer. Try `./chia -h` from -`~\AppData\Local\Chia-Blockchain\app-0.1.8\resources\app.asar.unpacked\daemon\` -in Windows or -`/Applications/Chia.app/Contents/Resources/app.asar.unpacked/daemon` on MacOS. + Graphical installer. Try `./chia -h` from + `~\AppData\Local\Chia-Blockchain\app-0.1.8\resources\app.asar.unpacked\daemon\` + in Windows or + `/Applications/Chia.app/Contents/Resources/app.asar.unpacked/daemon` on MacOS. ### Changed - Minor changes have been made across the repositories to better support -compiling on OpenBSD. HT @n1000. + compiling on OpenBSD. HT @n1000. - Changed XCH units to TXCH units for testnet. - A push to a branch will cancel all ci runs still running for that branch. - Ci's now cache pip and npm caches between runs. - Improve test speed with smaller discriminants, less blocks, less keys, and -smaller plots. + smaller plots. - RPC servers and clients were refactored. - The keychain no longer supports old keys that don't have mnemonics. - The keychain uses BIP39 for seed derivation, using the "" passphrase, and -also stores public keys. -- Plots.yaml has been replaced. Plot secret keys are stored in the plots, - and a list of directories that harvester can find plots in are in config.yaml. -You can move plots around to any directory in config.yaml as long as the farmer -has the correct farmer's secret key too. + also stores public keys. +- Plots.yaml has been replaced. Plot secret keys are stored in the plots, + and a list of directories that harvester can find plots in are in config.yaml. + You can move plots around to any directory in config.yaml as long as the farmer + has the correct farmer's secret key too. - Auto scanning of plot directories for .plot files. - The block header format was changed (puzzle hashes and pool signature). - Coinbase and fees coin are now in merkle set, and bip158 filter. - New harvester protocol with 2/2 harvester and farmer signatures, and modified -farmer and full node protocols. + farmer and full node protocols. - 255/256 filter which allows virtually unlimited plots per harvester or drive. - Improved create_plots and check_plots scripts, which are now -"chia plots create" and "chia plots check". + "chia plots create" and "chia plots check". - Add plot directories to config.yaml from the cli with "chia plots add". - Use real plot sizes in UI instead of a formula/ - HD keys now use EIP 2333 format instead of BIP32, for compatibility with -other chains. + other chains. - Keys are now derived with the EIP 2334 (m/12381/8444/a/b). - Removed the ability to pass in sk_seed to plotting, to increase security. - Linux builds of chiavdf and blspy now use a fresh build of gmp 6.2.1. @@ -2940,13 +2979,13 @@ other chains. - uPnP now works on Windows. - Log rotation should now properly rotate every 20MB and keep 7 historical logs. - Node had a significant memory leak under load due to an extraneous fork -in the network code. + in the network code. - Skylake processors on Windows without AVX would fail to run. - Harvester no longer runs into 512 maximum file handles open issue on Windows. - The version generator for new installers incorrectly handled the "dev" -versions after a release tag. + versions after a release tag. - Due to a python bug, ssl connections could randomly fail. Worked around -[Python issue 29288](https://bugs.python.org/issue29288) + [Python issue 29288](https://bugs.python.org/issue29288) - Removed websocket max message limit, allowing for more plots - Daemon was crashing when websocket gets improperly closed @@ -2954,14 +2993,14 @@ versions after a release tag. - All keys generated before Beta 1.8 are of an old format and no longer useful. - All plots generated before Beta 1.8 are no longer compatible with testnet and -should be deleted. + should be deleted. ### Known Issues - For Windows users on pre Haswell CPUs there is a known issue that causes -"Given G1 element failed g1_is_valid check" when attempting to generate -keys. This is a regression from our previous fix when it was upstreamed into -relic. We will make a patch available for these systems shortly. + "Given G1 element failed g1_is_valid check" when attempting to generate + keys. This is a regression from our previous fix when it was upstreamed into + relic. We will make a patch available for these systems shortly. ## [1.0beta7] aka Beta 1.7 - 2020-06-08 @@ -3158,7 +3197,7 @@ relic. We will make a patch available for these systems shortly. ### Added - There is now full transaction support on the Chia blockchain. In this initial Beta 1.0 release, all transaction types are supported though the wallets and UIs currently only directly support basic transactions like coinbase rewards and sending coins while paying fees. UI support for our [smart transactions](https://github.com/Chia-Network/wallets/blob/main/README.md) will be available in the UIs shortly. -- Wallet and Node GUI’s are available on Windows, Mac, and desktop Linux platforms. We now use an Electron UI that is a full light client wallet that can also serve as a node UI. Our Windows Electron Wallet can run standalone by connecting to other nodes on the network or another node you run. WSL 2 on Windows can run everything except the Wallet but you can run the Wallet on the native Windows side of the same machine. Also the WSL 2 install process is 3 times faster and *much* easier. Windows native node/farmer/plotting functionality are coming soon. +- Wallet and Node GUI’s are available on Windows, Mac, and desktop Linux platforms. We now use an Electron UI that is a full light client wallet that can also serve as a node UI. Our Windows Electron Wallet can run standalone by connecting to other nodes on the network or another node you run. WSL 2 on Windows can run everything except the Wallet but you can run the Wallet on the native Windows side of the same machine. Also the WSL 2 install process is 3 times faster and _much_ easier. Windows native node/farmer/plotting functionality are coming soon. - Install is significantly easier with less dependencies on all supported platforms. - If you’re a farmer you can use the Wallet to keep track of your earnings. Either use the same keys.yaml on the same machine or copy the keys.yaml to another machine where you want to track of and spend your coins. - We have continued to make improvements to the speed of VDF squaring, creating a VDF proof, and verifying a VDF proof. diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 8998906234..59adbe7884 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,22 +14,22 @@ appearance, race, religion, or sexual identity and orientation. Examples of behavior that contributes to creating a positive environment include: -* Using welcoming and inclusive language -* Being respectful of differing viewpoints and experiences -* Gracefully accepting constructive criticism -* Focusing on what is best for the community -* Showing empathy towards other community members +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members Examples of unacceptable behavior by participants include: -* The use of sexualized language or imagery and unwelcome sexual attention or - advances -* Insulting/derogatory comments, and personal or political attacks, or excessive trolling. -* Public or private harassment -* Publishing others' private information, such as a physical or electronic - address, without explicit permission -* Other conduct which could reasonably be considered inappropriate in a - professional setting +- The use of sexualized language or imagery and unwelcome sexual attention or + advances +- Insulting/derogatory comments, and personal or political attacks, or excessive trolling. +- Public or private harassment +- Publishing others' private information, such as a physical or electronic + address, without explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting ## Our Responsibilities diff --git a/LEGACY-SUPPORT-POLICY.md b/LEGACY-SUPPORT-POLICY.md index fbe166a1d0..3050cecc3b 100644 --- a/LEGACY-SUPPORT-POLICY.md +++ b/LEGACY-SUPPORT-POLICY.md @@ -1,6 +1,6 @@ # Legacy Software and Operating System Support Policy -It is the official policy of the Chia Blockchain project to end software support when the original maintainer of the software deems it End of Life (EOL) or stops providing support. The most relevant targets of this policy are Python, Node.js, and operating systems. +It is the official policy of the Chia Blockchain project to end software support when the original maintainer of the software deems it End of Life (EOL) or stops providing support. The most relevant targets of this policy are Python, Node.js, and operating systems. ## Long-term Support Conflicts diff --git a/PRETTY_GOOD_PRACTICES.md b/PRETTY_GOOD_PRACTICES.md index 7bc2a83369..be0e925415 100644 --- a/PRETTY_GOOD_PRACTICES.md +++ b/PRETTY_GOOD_PRACTICES.md @@ -115,7 +115,6 @@ def use_open_directly(path: Path): return file.read() ``` - ### Context managers for single use scenarios Even when no reuse is necessary there are still reasons to use context managers. @@ -146,13 +145,11 @@ def f(x, y, z): z.process(x, y) ``` - ### Examples - https://github.com/Chia-Network/chia-blockchain/pull/11467 - https://github.com/Chia-Network/chia-blockchain/pull/10166 - ## Classes There are a few basic goals for classes that are targeted by the guidance provided below. @@ -437,7 +434,6 @@ class ThreeIntAdder(Protocol): Another option for additional expressivity around hinting a callable with a protocol is to use overloads to narrow the possible combinations of calls. It is often better to just avoid overload situations, but as we retrofit hints to existing code we may prefer this option sometimes. - ### Type variables `TypeVar` allows you to create 'variables' for type hints. @@ -617,8 +613,8 @@ class SomeWallet: ## Tests -- Do not import `test_*` modules. Instead locate shared tooling in non-test files within the `tests/` directory or subdirectories. -- Do not import fixtures. Fixtures are shared by locating them in `conftest.py` files at whatever directory layer you want them to be recursively available from. +- Do not import `test_*` modules. Instead locate shared tooling in non-test files within the `tests/` directory or subdirectories. +- Do not import fixtures. Fixtures are shared by locating them in `conftest.py` files at whatever directory layer you want them to be recursively available from. - Do not use test classes. `unittest` requires that tests be held in a class. pytest does not. @@ -647,7 +643,7 @@ class SomeWallet: ## Idioms -- Avoid use of non-booleans as booleans such as `if the_list:`. If you mean `if len(the_list) > 0:` write that, if you mean `if an_optional_thing is not None:` write that. +- Avoid use of non-booleans as booleans such as `if the_list:`. If you mean `if len(the_list) > 0:` write that, if you mean `if an_optional_thing is not None:` write that. ## Exceptions @@ -665,7 +661,6 @@ You want the code to fail quickly and clearly with a `NameError`, not silently c This is why linters discourage bare `except:` and overly broad `except Exception:` clauses. Especially don't `except BaseException:` as that can consume even shutdown requests. - ```python from datetime import datetime diff --git a/README.md b/README.md index 5b2cb4baee..bcbec273f8 100644 --- a/README.md +++ b/README.md @@ -2,20 +2,21 @@ [![Chia Network logo][logo-chia]][link-chia] -| Releases | Repo Stats | Socials | -| -------- | ---------- | ------- | -[![Latest Release][badge-release]][link-latest]
[![Latest RC][badge-rc]][link-release]
[![Latest Beta][badge-beta]][link-release] | [![Coverage][badge-coverage]][link-coverage]
[![Downloads][badge-downloads]][link-downloads]
[![Commits][badge-commits]][link-commits]
[![Contributers][badge-contributers]][link-contributers] | [![Discord][badge-discord]][link-discord]
[![YouTube][badge-youtube]][link-youtube]
[![Reddit][badge-reddit]][link-reddit]
[![Twitter][badge-twitter]][link-twitter] +| Releases | Repo Stats | Socials | +| ----------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [![Latest Release][badge-release]][link-latest]
[![Latest RC][badge-rc]][link-release]
[![Latest Beta][badge-beta]][link-release] | [![Coverage][badge-coverage]][link-coverage]
[![Downloads][badge-downloads]][link-downloads]
[![Commits][badge-commits]][link-commits]
[![Contributers][badge-contributers]][link-contributers] | [![Discord][badge-discord]][link-discord]
[![YouTube][badge-youtube]][link-youtube]
[![Reddit][badge-reddit]][link-reddit]
[![Twitter][badge-twitter]][link-twitter] | Chia is a modern cryptocurrency built from scratch, designed to be efficient, decentralized, and secure. Here are some of the features and benefits: -* [Proof of space and time][link-consensus] based consensus which allows anyone to farm with commodity hardware -* Very easy to use full node and farmer GUI and cli (thousands of nodes active on mainnet) -* [Chia seeder][link-seeder], which maintains a list of reliable nodes within the Chia network via a built-in DNS server. -* Simplified UTXO based transaction model, with small on-chain state -* Lisp-style Turing-complete functional [programming language][link-chialisp] for money related use cases -* BLS keys and aggregate signatures (only one signature per block) -* [Pooling protocol][link-pool] that allows farmers to have control of making blocks -* Support for light clients with fast, objective syncing -* A growing community of farmers and developers around the world + +- [Proof of space and time][link-consensus] based consensus which allows anyone to farm with commodity hardware +- Very easy to use full node and farmer GUI and cli (thousands of nodes active on mainnet) +- [Chia seeder][link-seeder], which maintains a list of reliable nodes within the Chia network via a built-in DNS server. +- Simplified UTXO based transaction model, with small on-chain state +- Lisp-style Turing-complete functional [programming language][link-chialisp] for money related use cases +- BLS keys and aggregate signatures (only one signature per block) +- [Pooling protocol][link-pool] that allows farmers to have control of making blocks +- Support for light clients with fast, objective syncing +- A growing community of farmers and developers around the world Please check out the [Chia website][link-chia], the [Intro to Chia][link-intro], and [FAQ][link-faq] for information on this project. @@ -38,39 +39,37 @@ Install instructions are available in the [Installation Details][link-install] s Once installed, an [Intro to Chia][link-intro] guide is available in the [Chia Docs][link-docs]. -[badge-beta]: https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fdownload.chia.net%2Flatest%2Fbadge-data-beta.json&query=%24.message&logo=chianetwork&logoColor=black&label=Latest%20Beta&labelColor=%23e9fbbc&color=%231e2b2e -[badge-beta2]: https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fdownload.chia.net%2Flatest%2Fbadge-data-beta.json&query=%24.message&logo=chianetwork&logoColor=%23e9fbbc&label=Latest%20Beta&labelColor=%23474748&color=%231e2b2e&link=https%3A%2F%2Fgithub.com%2FChia-Network%2Fchia-blockchain%2Freleases&link=https%3A%2F%2Fgithub.com%2FChia-Network%2Fchia-blockchain%2Freleases -[badge-commits]: https://img.shields.io/github/commit-activity/w/Chia-Network/chia-blockchain?logo=GitHub +[badge-beta]: https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fdownload.chia.net%2Flatest%2Fbadge-data-beta.json&query=%24.message&logo=chianetwork&logoColor=black&label=Latest%20Beta&labelColor=%23e9fbbc&color=%231e2b2e +[badge-beta2]: https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fdownload.chia.net%2Flatest%2Fbadge-data-beta.json&query=%24.message&logo=chianetwork&logoColor=%23e9fbbc&label=Latest%20Beta&labelColor=%23474748&color=%231e2b2e&link=https%3A%2F%2Fgithub.com%2FChia-Network%2Fchia-blockchain%2Freleases&link=https%3A%2F%2Fgithub.com%2FChia-Network%2Fchia-blockchain%2Freleases +[badge-commits]: https://img.shields.io/github/commit-activity/w/Chia-Network/chia-blockchain?logo=GitHub [badge-contributers]: https://img.shields.io/github/contributors/Chia-Network/chia-blockchain?logo=GitHub -[badge-coverage]: https://img.shields.io/coverallsCoverage/github/Chia-Network/chia-blockchain?logo=Coveralls&logoColor=red&labelColor=%23212F39 -[badge-discord]: https://dcbadge.vercel.app/api/server/chia?style=flat-square&theme=full-presence -[badge-discord2]: https://img.shields.io/discord/1034523881404370984.svg?label=Discord&logo=discord&colorB=1e2b2f -[badge-downloads]: https://img.shields.io/github/downloads/Chia-Network/chia-blockchain/total?logo=GitHub -[badge-rc]: https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fdownload.chia.net%2Flatest%2Fbadge-data-rc.json&query=%24.message&logo=chianetwork&logoColor=white&label=Latest%20RC&labelColor=%230d3349&color=%23474748 -[badge-reddit]: https://img.shields.io/reddit/subreddit-subscribers/chia?style=flat-square&logo=reddit&labelColor=%230b1416&color=%23222222 -[badge-release]: https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fdownload.chia.net%2Flatest%2Fbadge-data.json&query=%24.message&logo=chianetwork&label=Latest%20Release&labelColor=%231e2b2e&color=%230d3349 -[badge-twitter]: https://img.shields.io/twitter/follow/chia_project?style=flat-square&logo=x.org&logoColor=white&labelColor=black -[badge-youtube]: https://img.shields.io/youtube/channel/subscribers/UChFkJ3OAUvnHZdiQISWdWPA?style=flat-square&logo=youtube&logoColor=%23ff0000&labelColor=%230f0f0f&color=%23272727 - -[link-chia]: https://www.chia.net/ -[link-chialisp]: https://chialisp.com/ -[link-commits]: https://github.com/Chia-Network/chia-blockchain/commits/main/ -[link-consensus]: https://docs.chia.net/consensus-intro/ -[link-contributers]: https://github.com/Chia-Network/chia-blockchain/graphs/contributors -[link-coverage]: https://coveralls.io/github/Chia-Network/chia-blockchain -[link-discord]: https://discord.gg/chia -[link-docs]: https://docs.chia.net/docs-home/ -[link-downloads]: https://www.chia.net/downloads/ -[link-faq]: https://docs.chia.net/faq/ -[link-install]: https://docs.chia.net/installation/ -[link-intro]: https://docs.chia.net/introduction/ -[link-latest]: https://github.com/Chia-Network/chia-blockchain/releases/latest -[link-pool]: https://docs.chia.net/pool-farming/ -[link-reddit]: https://www.reddit.com/r/chia/ -[link-release]: https://github.com/Chia-Network/chia-blockchain/releases -[link-seeder]: https://docs.chia.net/guides/seeder-user-guide/ -[link-twitter]: https://twitter.com/chia_project -[link-upnp]: https://www.homenethowto.com/ports-and-nat/upnp-automatic-port-forward/ -[link-youtube]: https://www.youtube.com/chianetwork - -[logo-chia]: https://www.chia.net/wp-content/uploads/2022/09/chia-logo.svg "Chia logo" +[badge-coverage]: https://img.shields.io/coverallsCoverage/github/Chia-Network/chia-blockchain?logo=Coveralls&logoColor=red&labelColor=%23212F39 +[badge-discord]: https://dcbadge.vercel.app/api/server/chia?style=flat-square&theme=full-presence +[badge-discord2]: https://img.shields.io/discord/1034523881404370984.svg?label=Discord&logo=discord&colorB=1e2b2f +[badge-downloads]: https://img.shields.io/github/downloads/Chia-Network/chia-blockchain/total?logo=GitHub +[badge-rc]: https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fdownload.chia.net%2Flatest%2Fbadge-data-rc.json&query=%24.message&logo=chianetwork&logoColor=white&label=Latest%20RC&labelColor=%230d3349&color=%23474748 +[badge-reddit]: https://img.shields.io/reddit/subreddit-subscribers/chia?style=flat-square&logo=reddit&labelColor=%230b1416&color=%23222222 +[badge-release]: https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fdownload.chia.net%2Flatest%2Fbadge-data.json&query=%24.message&logo=chianetwork&label=Latest%20Release&labelColor=%231e2b2e&color=%230d3349 +[badge-twitter]: https://img.shields.io/twitter/follow/chia_project?style=flat-square&logo=x.org&logoColor=white&labelColor=black +[badge-youtube]: https://img.shields.io/youtube/channel/subscribers/UChFkJ3OAUvnHZdiQISWdWPA?style=flat-square&logo=youtube&logoColor=%23ff0000&labelColor=%230f0f0f&color=%23272727 +[link-chia]: https://www.chia.net/ +[link-chialisp]: https://chialisp.com/ +[link-commits]: https://github.com/Chia-Network/chia-blockchain/commits/main/ +[link-consensus]: https://docs.chia.net/consensus-intro/ +[link-contributers]: https://github.com/Chia-Network/chia-blockchain/graphs/contributors +[link-coverage]: https://coveralls.io/github/Chia-Network/chia-blockchain +[link-discord]: https://discord.gg/chia +[link-docs]: https://docs.chia.net/docs-home/ +[link-downloads]: https://www.chia.net/downloads/ +[link-faq]: https://docs.chia.net/faq/ +[link-install]: https://docs.chia.net/installation/ +[link-intro]: https://docs.chia.net/introduction/ +[link-latest]: https://github.com/Chia-Network/chia-blockchain/releases/latest +[link-pool]: https://docs.chia.net/pool-farming/ +[link-reddit]: https://www.reddit.com/r/chia/ +[link-release]: https://github.com/Chia-Network/chia-blockchain/releases +[link-seeder]: https://docs.chia.net/guides/seeder-user-guide/ +[link-twitter]: https://twitter.com/chia_project +[link-upnp]: https://www.homenethowto.com/ports-and-nat/upnp-automatic-port-forward/ +[link-youtube]: https://www.youtube.com/chianetwork +[logo-chia]: https://www.chia.net/wp-content/uploads/2022/09/chia-logo.svg "Chia logo"