Alpha 1.5
1. You can now provide an index to create_plots using the -i flag to create an arbitrary new plot derived from an existing plot key. Thanks @xorinox.
2. There is a new restart_harvester.sh in scripts/ to easily restart a harvester when you want to add a newly completed plot to the farm without restarting farmer, fullnode, timelord, etc.
3. Harvesters now log errors if they encounter a malformed or corrupted plot file. Again thanks @xorinox.
4. New AJAX based full node UI. To access go to http://127.0.0.1:8555/index.html with any modern web browser on the same machine as the full node.
5. VDF verification code is improved and is now more paranoid.
6. Timelords can now be run as a cluster of VDF client instances around a central Timelord instance.. Instructions are available in the Cluster Timelord section of the repo wiki.
7. If you want to benchmark your CPU as a VDF you can use vdf_bench square_asm 500000 for the assembly optimized test or just /vdf_bench square 500000 for the plain C++ code path. This tool is found in lib/chiavdf/fast_vdf/.
8. Improvements to shutting down services in all of the scripts in scripts/. Another @xorinox HT.
9. Thanks clean @dkacman for clean ups to the proof of space code.
10. Thanks to @davision for some typo fixes.
Once in a while I would run into this issue:
Harvester src.harvester : ERROR 02:43:26.358 Error using prover object. Reinitializing prover object.
Harvester src.server.server : ERROR 02:43:26.398 Error <class 'RuntimeError'> Caught an unknown exception!, closing connection Connection(('127.0.0.1', 8447), server_port 8447)
Farmer src.server.server : WARNING 02:43:26.399 Connection error by peer ('127.0.0.1', 43144), closing connection.
Chasing it down it was related to malformed/corrupted plot files. They had an unexpected size. I changed the code so the re-try of calling prover.get_qualities_for_challenge() is also wrapped in a try/except block. The loop for index, quality_str in enumerate(quality_strings) should only be executed when either calls to get_qualities_for_challenge() did not yield an exception. If an exception was caught, the error message should actually print the plot file causing the exception.
After terminating the full node (ctrl+c) I found that in some cases one or several python processes still run. After investigating I found the the _kill_servers() method is actually not killing the processes as it didn't specify SIGKILL. By default kill will send SIGTERM which _term() was already doing.
The tool can be used to benchmark the following:
- "square_asm": form squaring in assembly
- "square": form squaring in C
- "discr": generation of form discriminant from seed
changes based on the output cppcheck --enable=all --inconclusive --force *.hpp
* marked members const where possible
* marked members noexcept where possible
* marked members static where possible
* changed to constructor initialization lists where possible
Alpha 1.4
1. Compiling and execution now detect AES-NI, or a lack of it, and fall back to a software AES implementation. This adds support for Raspberry Pi 4, related ARM processors and Celeron processors.
2. Added install instructions for CentOS/RHEL 8.1. Thanks to @A-Caccese for fixes to Windows WSL instructions.
3. Due to changes to the sqlite database that are not backwards compatible so re-synch will be required. Loading the blockchain only loads headers into memory instead of header blocks (header + proofs), speeds up the startup, and reduces normal operation memory usage by 80%. Memory access is now synchronous to reduce use of locks and speed up block processing.
4. Chia fullnode, farmer and harvester now default to logging to chia.log in the chia-blockchain directory. This is configured in config.yaml and due to config.yaml changes it is recommended to edit the new template config instead of using older config.yaml’s from previous versions.
5. Plotting working directory and final directory can both be specified in config.yaml
6. uvloop is now an optional add on.
7. Plotting now logs a timestamp at each major step. Thanks @dkackman who also fixed some compiler warnings. Additionally harvester/farmer will not try to farm plots that they don’t have the key for.
8. Added support for Python 3.8.
In "Each line that starts with `pip ...` becomes `python -m pip ...`" changed "python -m pip" with "python3.7 -m pip" (paragraph "Alternate method for Ubuntu 18.04 LTS"). The command "python -m pip" calls the wrong version of python.
* New database table to store headers
* Loading blockchain only loads headers into memory instead of header blocks (header + proofs), speeds up the startup, and reduces normal operation memory usage by 80%
* Fix deadlock issues with store class
* Make memory store access synchronous, to reduce use of locks, this improves performance of block and unfinished block processing
* Remove locks from reads of DB, only lock for writes
* Cleaner configuration system with argparse
* Log to file by default, configurable to stdout
* Proof of space binary and create_plots scripts allow passing in temp and final directories