NOTE: As of November 8, 2019, both Mainnet and Testnet have been upgraded to v1.2.1.
Overview
This document outlines the changes between ndau v1.2.0 and v1.2.1.
ndau blockchain changes
No new transactions have been added and no transaction semantics have changed. The v1.2.1 blockchain is playback-compatible with v1.2.0.
ndau transaction changes
To accrue EAI, ndau accounts must be delegated to registered nodes. Those nodes then credit that accrued EAI to their delegated accounts. The requirement to delegate accounts only to currently-registered nodes has not been enforced, but it is now required. The Delegate and CreateChildAccount transactions each specify the delegated node address, and those transactions now enforce this constraint.
The new /node/registered-nodes API endpoint (see below) returns the ndau addresses of all currently-registered nodes. At the moment there are five registered nodes on the ndau testnet and mainnet. Their addresses are:
ndarw5i7rmqtqstw4mtnchmfvxnrq4k3e2ytsyvsc7nxt2y7ndaq3nqhez3vvxn8rx4m6s6n3kv7k9js8i3xw8hqnwvi2etendahnsxr8zh7r6u685ka865wz77wb78xcn45rgskpeyiwuzandam75fnjn7cdues7ivi7ccfq8f534quieaccqibrvuzhqxandaekyty73hd56gynsswuj5q9em68tp6ed5v7tpft872hvuc
ndau API changes
/block/before
Fixed documentation for its expected behavior. The before suggests that the given block will not be included in the results, but it is. So think of “before” as “on or before”. This is similar to the behavior of the new /transaction/before endpoint. It’s inclusive.
/node/registered-nodes
Documentation for this new endpoint is pending.
/transaction
This endpoint is still supported but deprecated and will be removed in the future. It is replaced by the more usable and informative /transaction/detail endpoint. Please update any existing code as soon as possible.
/transaction/detail
The format of the response has changed. Here is an example of the new format:
{"BlockHeight": 30000,"TxOffset": 0,"Fee": 1000000,"SIB": 0,"TxHash": "abcdefghijklmnopqrstuv","TxType": "Transfer","TxData": {"source": "nda...","destination": "nda...","qty": 1000000000,"sequence": 100,"signatures": ["abc123..."]},"Timestamp": "2018-07-10T20:01:02Z"}
The "Tx" and "TxBytes" objects have been removed. The following objects have been added:
"TxHash"- The transaction’s unique hash.
"TxType"- The transaction type.
"TxData"- The transaction-specific data. This object differs for each transaction type. The previous format was not fully deserializing all of the transaction’s fields. The new format is intended to be easier to interpret and more convenient for consumption.
"Timestamp"- The timestamp of the block that contains the transaction. It’s the time when the block was committed to the blockchain. All transactions in a block share the same timestamp.
/transaction/before
This endpoint has been added to the API (live on Testnet, currently pending on Mainnet). The documentation for it can be found in the ndauapi README.md file (also here). But here it is, for convenience:
GET /transaction/before/:txhash
Returns a sequence of transaction metadata for transactions on or before a given transaction hash.
Parameters:
| Name | Kind | Description | DataType |
|---|---|---|---|
txhash | Path | Only transactions on or before this will be returned. Use 'start' to get the most recent page of transactions. Use a numeric block height to get transactions in and before that block | string |
type | Query | Case-insensitive transaction type name to filter by. Use multiple instances of this parameter to get results for multiple transaction types. Leave off to get transactions of any type | string |
limit | Query | The maximum number of items to return. Use a positive limit, or 0 for getting max results; default=0, max=100 | int |
Produces: [application/json]
Writes:
{"Txs": [{"BlockHeight": 1234,"TxOffset": 3,"Fee": 0,"SIB": 0,"TxHash": "123abc34099f","TxType": "Lock","TxData": {"target": "ndamgmmntjwhq37gi6rwpazy4fka6zgzix55x85kkhepvuue","period": "1m","sequence": 1234,"signatures": null},"Timestamp": "2018-07-10T20:01:02Z"}],"NextTxHash": "123abc34099f" }
Response object
"Txs"- The transaction elements in this list have the same format as the response from the
/transactionendpoint, documented earlier. Will benullif there are no results.
- The transaction elements in this list have the same format as the response from the
"NextTxHash"- This is the transaction hash to use on the next call to
/transaction/beforeto return the next page of results. It will be""if there are no more pages after the one just returned.
- This is the transaction hash to use on the next call to
- If a hash was given but is not valid, then null is returned instead of an object with nil/empty
"Tx"and"NextTxHash"fields.
Internal improvements
- Minor logging enhancements
- Compatibility fixes for upgraded noms
- Compatibility fixes for upgraded tendermint
- Refactored ndau API to be mockable
Dependency changes
- Upgraded
github.com/alexflint/go-argfromv1.0.0tov1.1.0 - Using
github.com/alecthomas/templaterevisionfb15b899a75114aa79cc930e33c46b577cc664b1 - Using
github.com/alecthomas/unitsrevisionc3de453c63f4bdb4dadffab9805ec00426c505f7 - Using
github.com/attic-labs/kingpinversionv2.2.6 - Upgraded
github.com/attic-labs/nomsto revision1d6d4689808c155bccec3764720abfcb4ff9a3e7 - Using
github.com/libp2p/go-buffer-poolversionv0.0.2 - Upgraded
github.com/tendermint/tendermintfromv0.31.7tov0.32.3 - Using
github.com/tendermint/tm-dbversionv0.1.1