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
UncreditedEAI
value, 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.
UncreditedEAI
is 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. CreditEAI
transactions 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
Delegate
targets, and only active nodes will be allowed to submitCreditEAI
transactions for their delegated accounts. CreditEAI
transactions 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
/transaction
endpoint in the API now includes historical data about the fees and SIB incurred on the transaction. - The
/account/history
API call previously did not includeCreditEAI
transactions that affected the balance of the account. Now it does.
Other improvements
- 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 Next issue Price calculation for ndau (used in the
/price/current
endpoint 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.
Node Operations
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.
- The
keytool
program now directly supports generating node data files.