Features that will affect blockchain hashes
All of the following features were turned on as of block 31025. After this point, previous versions of the ndau software will fail to sync to the blockchain correctly.
- Some transactions were failing to reset the
UncreditedEAIvalue, with the result that under rare conditions some accounts could have been credited with too much EAI. However, another bug prevented this one from having any impact on actual accounts.
- Accounts that had become unlocked and did not have any other transactions were calculating EAI incorrectly, leading to some users receiving excess EAI. Accounts in this situation got a small amount of additional EAI.
- The same accounts that were affected by the previous bug had their EAI reduced slightly because uncredited EAI was not being properly calculated.
UncreditedEAIis now being properly accumulated as a result of this fix. Accounts would have lost EAI due to this bug, but only accounts that had the previous bug (which earned extra EAI) were affected; no accounts lost EAI due to this issue.
CreditEAItransactions that affect an account will now clear its lock status if the lock has expired. Previously only transactions that were sent from the account would clear its lock status.
- Only active nodes will be allowed to be specified as
Delegatetargets, and only active nodes will be allowed to submit
CreditEAItransactions for their delegated accounts.
CreditEAItransactions must be run by delegated nodes at least monthly; if they fail to do so, EAI accumulation will be limited to the most recent month’s worth of EAI.
- A bug existed that would have allowed some invalid transactions to partially update account state. We know of no transactions where this occurred.
- To prevent accounts from becoming locked out by submitting unusually high sequence numbers, it is now required that each transaction’s sequence number be no more than 128 greater than the current sequence value on the account. This means that accounts are guaranteed to be able to submit at least 70 quadrillion transactions before running out of sequence values.
Improvements that affect snapshots
Normally a node that joins the network can load an existing snapshot of the blockchain and its API cache so that it can catch up quickly. The following improvements invalidate previous API caches, so nodes will either have to restart from genesis or catch up from a snapshot created after v1.2.0 was released. Catchup from genesis currently takes less than 20 minutes for a typical node.
- Transaction information from the
/transactionendpoint in the API now includes historical data about the fees and SIB incurred on the transaction.
/account/historyAPI call previously did not include
CreditEAItransactions that affected the balance of the account. Now it does.
- More information about EAI calculation details is now going to the logs.
- Major improvements to the logging infrastructure. Node logging has been standardized and improved — in particular, all log output including panics is being captured as JSON logs and sent to the logging output, and all logs are decorated with some standard fields.
- Logging now logs timestamps to the microsecond, which is the full resolution of the timestamps.
- The target price calculation for ndau (used in the
/price/currentendpoint of the ndau API) was corrected to resolve an ambiguity regarding the number of price increments in ndau phase 1 (corrected from 10,000 to 9,999).
- Many new tests were added in the process of diagnosing and debugging these issues. In particular, there is the start of a system to record, replay and debug the set of changes to an individual account.
- Much obsolete terminology was removed from both the documentation and the source code.
- We now gate new features by block height so that the blockchain can replay properly from genesis.
- We now verify as part of our build process that source code changes can play back the entire blockchain from genesis without error.
We’ve also made some changes to the way nodes are managed in order to complete the mechanism by which nodes can join and leave the network, and by which their node performance is evaluated. This is to support fully decentralized operation of the ndau network.
- Nodes are now identified by their ndau address in all transactions related to node operations. Since none of these transactions have ever been submitted, it does not affect the blockchain.
- Node operators should generate new node addresses.
keytoolprogram now directly supports generating node data files.