Core Updates & What’s Next
Hi Everyone, it’s been a while since our last update but today we want to give you a more in depth overview of developments that have been accomplished over the past few months.
With the hard fork to upgrade the POS consensus on September 21st these are the major changes that happened at that time.
As stated at the time of the fork the main objective was to secure Zano TX history to make 51% attacks practically impossible.
• Changed POS rule that previously would not allow locked coins to participate in POS mining as a result time-locked coins now immediately participate in POS mining.
• Implemented a more strict policy on staking to secure and prevent the consensus from a potential take over with major POS hashrate attack.
• Patched the difficulty adjustment algo to avoid potential strong fluctuations.
Multi lingual interfaces
On October 8th with the release of build v184.108.40.206 we implemented 4 new languages for the GUI you can access this in the software GUI settings tab.We are working on adding more translations and will be rolled out in future builds, this is something that the community can participate in as a bounty project, we still have 22 languages that need to be translated.
New Database Implementation
We had tried to use the newest version of LMDB but soon after we found out that it doesn’t handle file size automatically and needs to manually stop all transactions and resize database. Since Zano uses an asynchronous core it is simply not suitable to use that version this was the reason for rolling back to an older and more stable version of LMDB. After this we considered it very carefully and decided to start working with MDBX, This database is built on LMDB so there are many similarities but it does have some significant improvements which are listed here in their GitHub https://github.com/leo-yuriev/libmdbx#improvements-over-lmdb. We were also impressed with the developers support as he was quick to answer questions and fix any issues we had.
With all that said on the technical side and reasoning behind testing MDBX, we were able to include both LMDB and MDBX in the latest build due to Zano’s architecture being very flexible. If you want to test out MDBX you can do it by specifying
(if you choose to test this out please note that the entire blockchain will re-synchronize, Also make sure to update your git submodules if you are building from source)
git submodule update --init --recursive
Bug Fixes and Minor Enhancements
If you follow every new release you notice that there are almost always bug fixes, here are some of the most recent
Core & global
• fixed multi-precision overflow bug in fork choice rule
• global Unicode support improved: 1) it’s okay now to have complicated Windows username; 2) it’s okay if path to Zano includes non-ascii symbols; 3) simplewallet can work with non-ascii wallet file paths
• improved PRNG manipulation safety (for automated tests)
• merged DB basic_key_value_accessor and solo_value fixes from Boolberry
• NTP tools & core time sync checking were greatly improved
• terminal handler implemented for both daemon and GUI, it will help in complicated crashes investigation (if they ever happen)
• newly passwords should satisfy limited ascii-like character set
• wallet: safety improved when saving data: free space and possible write errors are taken into account
• wallet: fixed incorrect wallet’s balance on certain stages of contract processing
• core: very old pre-hardfork nodes are now filtered out by P2P subsystem to avoid meaningless traffic
• API: fixed resync market issue
• core: fixed rare multi-thread synchronization issue
• P2P: fixed a rare case of double connections between nodes
• P2P: fixed a rare case of invalid handshake handling
• GUI: fixed a bug with P2P state config not being saved before 30 min online period
• GUI: option — enable-qt-logs can be used to switch on Qt internal logs and forward it to the main log system
• GUI: animated icons and many minor fixes and improvements (including translations)
• GUI: issue with incorrect balance showing in wallet during certain stages of contract processing this has been fixed
• simplewallet: wallet contracts RPC API implemented:
contracts_send_proposal, contracts_accept_proposal, contracts_get_all, contracts_release, contracts_request_cancel, contracts_accept_cancel
• daemon: marketplace service enabled through new API and command-line options
We want to ensure the community that despite things being a bit more quiet than usual we continue to be full speed ahead with development, currently we have 2 main objectives to accomplish.
The first being the mobile wallet which is currently under development. As you may have noticed on the github we are testing a few different things to use for the app. Time frame on this is 1–2 months depending on several factors regarding what code base we decide to use for it or if we go the route of writing it from scratch, this still has not been decided on yet.
Secondly, as we mentioned in other articles, we are working on implementing a new privacy protocol this is a much heavier task than the one above but we are making progress on it. As soon as our research is completed on it we will have more details on how the upgrade will happen. At some point after that there will be a hard fork to implement the new protocol.
As was mentioned earlier today in the discord both Andre and Pavel are currently out of the office on a business trip. This has been a planned business trip to Zurich to meet with potentially new business partners, following this they will travel to Copenhagen to meet with a Journalist from a crypto related media outlet. Stay tuned for more details!