-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 Release 1.6.0e https://bitbucket.org/JeanLucPicard/nxt/downloads/nxt-client-1.6.0e.zip sha256: e0a3eaca084fbe89cad5890ac9cb94a2e0c06bef5fe065c84702ff53e643aa4d nxt-client-1.6.0e.zip https://bitbucket.org/JeanLucPicard/nxt/downloads/nxt-client-1.6.0e.jar sha256: 49281f76b855e218e4f69a60f8cba6aaa5c0deeb382615196f6f728e958a01e7 nxt-client-1.6.0e.jar https://bitbucket.org/JeanLucPicard/nxt/downloads/nxt-client-1.6.0e.exe The exe and jar packages must have a digital signature by "Stichting NXT". This is an experimental release for testing only. Source code is not provided. Change log: This experimental release adds several major new features. It does not require a hard fork, and update to the 1.6 branch will be completely optional even after it is declared stable. 1.6 peers are compatible with 1.5 peers, but as usual the database changes are not reversible, going back from 1.6 to 1.5 would require starting again from a 1.5 database. Account ledger: The account ledger feature provides a record of all recent changes to the account balances (including NXT, asset, and currency balances), and the event that caused each change. It is enabled by default for all account, but can be set to track certain accounts only or be disabled completely, using the nxt.ledgerAccounts property. By default records are kept for the last 30,000 blocks, this can be changed using the nxt.ledgerTrimKeep property. The nxt.ledgerLogUnconfirmed property controls whether confirmed, unconfirmed, or both types of changes are tracked. The new APIs getAccountLedger and getAccountLedgerEntry are used to retrieve account ledger records. Their parameters and response fields are documented in the javadoc. Account ledger events can also be followed using the existing eventRegister and eventWait API. Using account ledger events as an alternative to the getAccountTransactions or getBlockchainTransactions API completely avoids the need to handle phased transactions as a special case. Only changes to account balances that actually happened, and at the time (block height) they happened, are recorded in the account ledger. The account ledger also makes it easier to monitor an account for changes that occurred as a result of past transactions (e.g. an AE order being filled), or are result of dividend payment transactions, or block forging fees. Peer services: Peers can advertise to other peers the set of services they provide, and include this information when sharing peer addresses with each other. Currently available services are Hallmark (being a hallmarked peer), and Prunable (providing archival and retrieval service for expired prunable data). To configure a peer to provide the Prunable service, nxt.maxPrunableLifetime must be set to -1 and nxt.includeExpiredPrunable must be true (default). Such a peer will then provide expired prunable data to other peers when requested. If nxt.includeExpiredPrunable is false, the node will still keep prunable data indefinitely (if nxt.maxPrunableLifetime is -1), but will not provide them to others. The services a peer provides are also exposed in the getBlockchainStatus and getStatus APIs. The getPeers API accepts optional service parameter, to filter the result based on desired provided service, and includes the services each peer provides in the peer info. Restore prunable data: A peer configured with nxt.maxPrunableLifetime=-1, or any positive value higher than the minimum of two weeks (1209600 seconds), when downloading the blockchain from scratch, will automatically start requesting the missing prunable parts (prunable plain/encrypted messages, and tagged data) from any archival peers it finds on the network (those providing the Prunable service). This task of requesting and restoring missing prunable data can also be triggered using the new retrievePrunedDat debug API, for peers that already have the full blockchain or need to be restarted during the download process. (Note that when nxt.maxPrunableLifetime is set to a positive value, extend tagged data transactions are ignored for the purpose of selecting which pruned tagged data to retrieve, the timestamp on the original upload data transaction is what is being used. To make sure all pruned data are retrieved, set nxt.maxPrunableLifetime to -1, and if really needed set it back to the desired value after the initial restore is complete.) The getBlockchainTransactions API now accepts optional includeExpiredPrunable parameter, to force including expired prunable parts in the response, if available (default false). Asset delete: Asset transfers to the Genesis accounts are now treated as deleting the corresponding number of shares, with the total asset quantity adjusted accordingly. A new deleteAssetShares API has been added to perform this function. At the next hard fork (1.7), asset transfers to Genesis will be completely disallowed and the deleteAssetShares API will then create a new AssetDelete transaction type, to achieve the same quantity reduction effect. API additions: A new getTaggedDataExtendTransactions API has been added, to retrieve all tagged data extend transactions for a given tagged data upload transaction. The getConstants API now also returns a list of all supported request types and their properties. The approveTransaction API accepts revealedSecretIsText boolean parameter, default false, as a way of specifying whether revealedSecret is text or binary. The old revealedSecretText parameter to submit the text value directly is still supported. Added encodeQRCode and decodeQRCode APIs, to handle the encoding and decoding of QR image on the server side, instead of in javascript, using the ZXing java QR processing library, version 3.2.1. This improves the generation and parsing of QR codes used in offline transaction processing, images that failed to decode correctly using javascript can now successfully be processed. Allow attaching encrypted messages to accounts that don't yet have a public key announced, as long as the public key is included in the same transaction as a public key announcement attachment. Several performance optimizations have been included in this release: The last 10 blocks and the transactions in them are now cached in memory. The unconfirmed transactions (up to nxt.maxUnconfirmedTransactions, default 2000) are also cached in memory. Accounts with zero balance are now deleted from the account table, which significantly reduces its size and should make queries for the balances of the active accounts faster. Only public keys for such accounts, if available, are permanently stored in the separate public_key table. Creation of new accounts for one-time use, which is the practice of many exchanges and merchants, should now be less of a burden for the database, as long as such accounts are fully emptied after use. Updated jetty to version 9.3.2. If unpacking on top of a previous installation, delete the old lib subdirectory first. This release will perform a database upgrade and rescan on first start. -----BEGIN PGP SIGNATURE----- iQIcBAEBCgAGBQJV8sIcAAoJENqvaxkWiP4ZvZQP/iWOYYj2PjqPp1OjtQt/nxbe 7sAUJBhISvc+NBSGCly53W34t/+QsPhE0eOoY9EZ6vvKqsvAXdDUFYdMKHbX2FZx gni32IxFMmDb64HlaG07GFSWvXAPwA/+lJCeWwBVwnkF9HvLJaTpdmG4+u9howsb OFeE6IAvHYAdEJLDpB27Fm3knQkTS4e0j3RJUtHt9DmREq0O+x4TByK1RnwAjQs2 NciTpIbKAN3T7OKzonES+5rQtXnp5pLulA7jw3QyfXTpIRu3DgKFXKobZbI8zHvK 2e2zGsrA7F267d6xYsPL1TjtqSKldxjuX0RP2zAd28yS0SNAll2Zq+4qFM4dPOBw 3jcbb3ecMySeJ7KI9SJxeq2PWA1ogLfs7/NvCAwLmgs7cPAmLgHE3LP/6HeL6ox2 Z/d/t+NvPHyTPh5DLXQ9q9rJNFKCWAd5NTmSyd4KZVbhm7/mVpWJwnH6CacE+8bX 4FDaA1uQh+4FVbzvBldlNGj7Q/mziNvz36cg0B3Dn/Bfgx04Bp3OPDhh+I/uU/Hw i+d3lr73UZlYNHkwMdtkFNnJ/mITBe02SRwpo07UvCWPYCSso5OacNC2n9rHnCOc Aqqy894h7WtNg60cFM4fBBC44UzMpECFIvOwCtOWEhzS8ES8S6Ly3nzYkp3RMOoq NCZgq03lVoyf7Kkk7GPO =7ack -----END PGP SIGNATURE-----