A hardfork presents developers of any software product, especially, cryptocurrency, with a rare opportunity to make significant changes to the product. The Bytecoin developers have taken full advantage of this opportunity - version 3.3.0 brings over 60 improvements to various aspects of the product.
The most well known feature of the hardfork release is dynamic fees. Previously the fee was dynamic only in part: it was proportional to the size of the TX, but not lower than 0.01 BCN. After the hardfork this limitation is eliminated: the fee can go down to 0. The only thing to keep in mind is that the fee is a market instrument - the higher the fee, the more likely the miner would pick a TX first.
- There is another thing that is useful to keep in mind about the fees. Some people think that the size of the TX depends on the amount that they send, which is not completely true. The size of the TX depends on the granularity of previous outputs associated with the address. The smaller the outputs, the greater number of them is required to make up the TX, and the larger the body of that TX. On rare occasions the size of the TX can even be too large to fit in a block. Fortunately, this issue has an ingenuous workaround: send this amount in several smaller TXs.
- Seed nodes are now contacted approximately once per day. This feature greatly helps to catch up after bytecoind is started for users who run it after a delay of several weeks or more.
- An important fix, that prevents ignoring the external port on a peer handshake. It has made connections through exposed non-standard ports to nodes behind NATs, which was impossible before.
- Groestl hash function and Keccak permutation function, two very important components of cryptography which Bytecoin is built on, have been updated from their sources.
- Now the Bytecoin daemons warn users that inprocess bytecoind is deprecated and will be removed soon. This peculiarity is important to prevent bytecoind P2P attack vectors from reaching a walletd address space where wallet keys reside.
- Long JSON-RPC calls, the language structure that API communication is facilitated with, are now up to 2 times faster.
- 15 response and request objects have been deprecated or changed to convey the meaning of objects they describe better.
- This version enables the daemon CLI-parameter for the long sought-after test- and stage- nets. Testnet is an infrastructure that allows for easy local blockchain deployment on the integrator’s hardware for easy initial testing of the software. Unlike the testnet, stagenet is a global infrastructure that almost completely mimics the mainnet and is supposed to be taken advantage of on later stages of development. The testnet time multiplier can now be set to speed up all processes 10x, 100x, or even more.
- When participating in the testnet or stagenet, bytecoind now uses UDP Multicast to announce/discover other bytecoind nodes in the local network. Thus in most local networks the testnet will self-assemble without seed nodes.
The smooth Hardfork
The hardfork process is designed to be as smooth and unintrusive as possible. When 90% of blocks in a 24-hour time frame would be submitted by the new version, the hardfork would be automatically scheduled to happen in 14 days (or 10 000 blocks). This allows most users and partners to be aware of the network conditions and gives them enough time to update to the latest version.
Exchanges, partners and miners are a very important part of Bytecoin’s infrastructure. It is in part thanks to them that Bytecoin is now what it is.
The Bytecoin developers value their contribution to the success of the project and have taken expert care of the instruments they use during the integration and maintenance processes.
The new version brings much better error handling and more specific error codes. This makes troubleshooting an easier and faster process.
Binary methods now share single access point /binary_rpc. This addition streamlines the Bytecoin API structure.
The new “Paranoid mode” checks every byte of blockchain when downloading and is designed for especially concerned users or for testing purposes.
Now any field in requests that daemons do not understand will be reported as an error. This allows to bring order and eliminate uncertainty in the API querying process as well as reduce traffic.
In methods supporting longpoll (get_status and get_block_template) all longpoll arguments are now optional. Changes to fields that were not requested will not trigger response to longpoll.
The new get_wallet_info method fetches the most important info about the wallet. get_statistics response now includes much more information