Updated: Nov 8
This is a progress report regarding our development of Avian 4.1. This is a minor update; however, it WILL be a mandatory update due to the 5% block reward being added. This was voted by the community and will be included in the 4.1 updates. Since 4.1, we have made our development on GitHub more transparent by creating a PR (Pull Request) for each change we make. This allows anyone to look at and comment on the changes. This should reduce the centralization of the dev process and how changes are added. Once a non-urgent PR gets approved by a core dev and/or community, we will allow 24hr for any changes or comments before merging. We would like to state that anyone in the community is free to contribute to Avian Core. If you find any issues or want to make a change, feel free to make an issue or a pull request with your code. Furthermore, we enabled GitHub discussion allowing anyone in the community to ask questions about anything related to Avian Core. If you have ideas about Avian you want to add, feel free to post them on our GitHub discussion. The possibilities are endless!
From July 11–18 (1 week), 17 pull requests were created!
A) UI Changes for 4.1
1. The peer tab was vastly improved by adding: (PR #76)
Direction column and icon showing if a peer is inbound or outbound.
“Copy address” to the context menu when right-clicking a peer.
Elide long peer strings in their middle
2. Pruning was added to the options dialog. This allows you to reduce the space used by Avian to a min of 1 GB by removing old blocks. (PR #77)
3. Assets in the overview page using the same gradient for consistent looks. (PR #78)
B) Avian Flight Plans changes for 4.1
Avian Flight Plans (AFP) have been refactored and improved for 4.1. The changes include: (PR #80)
Added a help message for the “-flightplans” option
Removed the use of a “hacky” marco to get path
Added “list_flightplans” RPC method.
Removed weblib *(web3 lib from AFP is being removed because it is insecure and incomplete.)*
C) Other changes for 4.1
1. 5% block reward code to AVN foundation wallet (PR #87)
Since this was requested and approved by the community, this change will result in a hard fork causing 4.1 to become a mandatory update. This change will require rigorous testing and *could* delay the release of 4.1.
2. Fixed regression test (regtest) (PR #69):
3. Add a new RPC method called liststucktransactions (PR #79)
This creates a new RPC method that returns all transactions in the wallet that do not have a mempool entry. This tool can be helpful for exchange or pool ops to check for stuck transactions, allowing them to quickly notice any issues.
4. Built-in Lua builds now use POSIX mkstemp instead of risky tmpnam. (PR #73)
This fixes an error message when linking avian during the build process.
Our targets (Linux, Mingw-w64, Darwin) support POSIX standards.
5. Rename crow.h to minotaurx.h (PR #75)
6. ci: Create CodeQL action to analyze code (PR #71)
Our CI process now has a CodeQL action to analyze code for security issues and many more. It was crucial that new code (AFP, etc) be checked by CodeQL
7. Introduce proper ‘AreMessagesDeployed()’ and ‘AreRestrictedAssetsDeployed()’ (PR #89)
D) Planned changes for 4.1
1. ci: Add and fix testing to the workflow (PR #72, still in draft, may be pushed to 4.2)
This adds the option for GitHub Action to run our testing framework. Enabling the test runner will check if a breaking change such as wrong block reward or messed up diff algo is present and fail on GitHub.
This PR is a draft to make sure all of our tests pass and if not adapt to work with our code base.
2. Update dependencies (PR #91, causing issues)
Upgrade QT 5.7.1 -> 5.12.10 for improved security.
3. Rate limit processing incoming addr messages (PR #94, waiting for approval and CI)
Rate-limiting incoming addr messages can reduce CPU and bandwidth usage.
4. Rework transaction download scheduling
(Backport of Bitcoin PR that includes security enhancements for preventing two kinds of attacks, Bitcoin PR #14897). According to Bitcoin PR #14897, the author committed patches to avoid potential attacks that can prevent Bitcoin nodes from getting transactions with others. However, this PR introduces vulns/bugs (later on patched with other PRs), and forcing a hard limit of 100 max in-flight tx per peer can cause unexpected issues. In Avian’s case, our mempool TX does not go above 200 txs and combined with our 30s the issues it reduced even further. A slow peer with 8 outgoing connections gives us space for 800 in-flight txs which is more than enough for a slow peer. More research regarding this issue is required and may not be included in 4.1.
E) Slow wallet loading times
We have been looking closely into the slow loading times and have determined the cause. In the loading blocks, the wallet calculates the PoW hash, which can be x16rt or MinotaurX. When the wallet calculates the PoW hash of a MinotaurX block, it slows down causing a slow loading time. The slowdown occurs since MinotaurX is a CPU-heavy algo and requires much more CPU usage than the SHA-256 algo. Since using the PoW hash for the block index is not needed (PoW hash can be calculated when we need to verify proof-of-work) we can use the SHA-256 hash for the block index object. This will increase wallet loading time; however, it is a breaking change and needs testing rigorously for a smooth translation from the old format to the new format. We appreciate the community’s patience on this matter.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Download the 4.0 core wallet from our website: https://avn.network/wallet/
For more help with mining, join our Discord: https://linktr.ee/aviannetwork
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Written and Directed by @Furious#0695 on Discord
Edited, and Designed by @Tsunami🌊#0736 on Discord