-----BEGIN PGP SIGNED MESSAGE-----Hash: SHA1Release 1.5.0esha256:da89d5d7641b9dcfba725ad618fd5b98da39254d7bcdad129c2affcc9a3826e8 nxt-client-1.5.0e.zipThis is a development release for testing only. Source code is not provided.Change log:This is an experimental release for the Voting System and Phasing. It enablesthese features on testnet, and is a required update for all testnet nodes.It is also possible to run this version on main net, but the block at which thenew features will be enabled has not been set yet.New features:Voting System.Voting System API calls:CreatePoll, CastVote, GetPoll, GetPolls, GetPollResult, GetPollVote,GetPollVotes, SearchPolls.Polls processing is optional. If nxt.processPolls=false (default is true), votecounting is not done and no poll results are stored. This can be used to reducethe load on lower performance nodes. It is still possible to get the results ofa poll using getPollResult, as long as the required vote and balances datahasn't been trimmed yet.Regardless of the nxt.processPolls setting, votes for polls that finishedbefore the last trim height (1441 blocks by default) are deleted and onlyaggregate results, if processing is enabled, are kept.Votes are weighted based on the voting model selected, which can be by account,by balance, by asset balance or by currency balance, and a minimum balancecutoff can also be specified. The voting model is defined when the poll iscreated, however a different voting model can be specified when calling thegetPollResult API, to calculate on the fly an alternative vote counting, aslong as vote data is still available.Voting multiple times, changing, or deleting votes is not allowed.The fee to create a poll is 10 NXT for a poll with up to 20 options, with 1 NXTadditional fee for any additional option (max 100 options are possible).Phasing.Phasing API calls:ApproveTransaction, GetAccountPhasedTransactions,GetAccountPhasedTransactionCount, GetAssetPhasedTransactions,GetCurrencyPhasedTransactions, GetPhasingPoll, GetPhasingPolls,GetPhasingPollVote, GetPhasingPollVotes, GetVoterPhasedTransactions.A transaction of any type can be phased by adding a phased=true parameter andan appropriate set of phasing parameters. Phased transactions are accepted inthe blockchain immediately (subject to all usual validations), but are executedonly at finish height, if still valid and if the required quorum has been met.If not approved, or not valid at finish height, they remain in the blockchainbut are never executed, and any changes they caused to the sender unconfirmedbalance are reversed, except that the fee is not refunded.In addition to the voting models available in polls, phased transactions canuse a whitelist of accounts (max 10) allowed to vote for the transaction.It is possible to vote for (approve) up to 10 phased transactions with a singleapproval transaction. This transaction will be accepted in the blockchain onlyif all phased transactions it is voting for are already in it.Voting multiple times is allowed but has no effect on vote counting, votesafter the first vote from each account are ignored.It is also possible to make any transaction phased without needing voting forapproval. This can be used to create transactions with deferred execution.Pay on reveal secret is supported as a voting model for phased transactions.When this voting model is used, the phased transaction must include thehash of a secret chosen by the sender (up to 100 bytes long), and an approvaltransaction for it is only accepted if it includes the secret that results inthis hash. It does not matter who the sender of the approval transaction is,unless a whitelist is also defined. Supported hash functions currently aresha256, ripemd160, and sha256 followed by ripemd160. The codes to specify themas parameters are available from the getConstants API.Finally, it is possible to make a phased transaction that is released orrejected not on the basis of voting, but based on the presence of othertransactions (linked transactions) in the blockchain at its finish height.To do that, up to 10 phasingLinkedFullHash transaction hashes can be definedwhen creating the phased transaction. Note that this does not create adependency between the linked transactions themselves. This feature can beused to implement atomic execution of transactions of any type, provided thephased transaction is phasing safe. Transactions already in the blockchainbefore the acceptance of the phased transaction can also be linked, as longas they are not more than 60 days old, or themselves phased transactions.The deferred execution with no approval needed, pay on reveal secret, andlinked transactions features are currently accessible using the API only, theUI for them will be completed in a later release.Similar to voting, the phasing data for phased transaction that finished beforethe last trim height is also deleted and only the aggregate approval resultsare kept.The fee for making a transaction phased depends on the voting model selected.For by-account voting with no minimum balance, or no voting needed, it is 1 NXTin addition to the regular fee for that particular transaction type. For votingthat depends on voter balances, the additional phasing fee is 20 NXT.The fee for approving a phased transaction is 1 NXT for each phasedtransaction included in the vote.Variable size messages, encrypted messages, digital goods deliveries. After VSblock, messages and encrypted messages will be allowed to be up to 40 kbyteslong instead of 1000 bytes, with 1 NXT fee for each 1024 bytes. Digital goodsdeliveries can also be up to 40 kbytes, with 1 NXT fee for each 1024 bytesafter the first 10k. A single transaction is always limited not to exceed themaximum block payload length, currently 255 * 176 bytes.Other new APIs:GetOrderTrades - given an askOrder, bidOrder, or both, returns all trades thatwere executed as a result of this order.GetDGSExpiredPurchases - returns the purchases for a given seller which haveexpired without being delivered.GetDGSTagsLike - returns all Digital Goods Store tags starting with a given(at least 2 characters long) prefix.GetAliasesLike - returns all Aliases starting with a given (at least 2characters long) prefix.SearchAccounts - full text search on account info (name and description).GetPlugins - returns a list of all installed plugins.DumpPeers - returns all active peers of a certain version.Shutdown - shuts down the server. Takes an optional scan parameter, if truethe derived tables are truncated and a full rescan with validation is scheduledon next start. The resulting nxt_db folder is smaller, and a node bootstrappedwith this database is going to verify the blockchain and rebuild all derivedtables on start. While this ensures validity of the blockchain and all tables,it cannot verify that this is the current consensus blockchain and not a fork,therefore providing such a database for download is still not trustless.GetLog - returns the most recent log messages, kept in a memory buffer.GetStackTraces - returns the stack traces of the currently running threads.Shutdown, getLog and getStackTraces require the admin password.Changed APIs:CreateTransaction - to facilitate debugging and to allow preparing transactionbytes and json even for transactions that are currently invalid, if broadcastparameter is false, all relevant transaction fields (json, bytes, hash, etc)are still included in the result even in the case of invalid transaction.If broadcast=true, those fields are returned only in case of successfultransaction broadcast, otherwise only the error messages are returned.This change affects all APIs that end up creating a new transaction.GetConstants - in addition to adding the new transaction types and subtypes,and the voting models, the format of the resulting json has been changed.Added optional timestamp parameter to getExchanges and getTrades.Added optional account parameter and pagination support to getCurrencyFounders.Always include errorCode and errorDescription in some API results that only hadan error field in case of an error.Limit number of records returned by all APIs that support pagination tonxt.maxAPIRecords at a time (default 100), unless the admin password isprovided or is not needed.AddPeer adds an isNewlyAdded boolean to the returned peer json, indicatingwhether the peer was not already known.Client changes:Extended UI in the "advanced" transaction modal dialog for every transactiontype for invoking the different variants of phased transactions (to be approvedby a certain number of accounts or balance/asset/currency holders).New main sidebar item for the Voting System, modal to create the various typesof polls, pages to find active polls and follow polls over time, list with ownpolls and votes casted.Generic notification system for incoming transactions showing the numberof transaction types and total new transactions.Unconfirmed transactions are only displayed in the "Dashboard" and "My Transactions"pages and no longer appear in other tables.Transaction info dialog for AE Bid and Ask orders now displays a table containingthe actual trades mathcing the specific order.New account login feature for faster login just by Nxt account.User specific client DB with new logout option to clear user data.Streamlined sidebar/navigation structure.Send Currency button added to the toolbar which invokes the transfer currency dialogEnvironment information, client settings and various diagnostic information is loggedto the browser's JavaScript console during startup and login.Phasing tab was added to the transaction info dialog of phased transactions.Various bug fixes.Client Plugin System:Functionality - The NRS client comes with a new plugin system, enabling thirdparty developers to provide additional functionality for the client. Pluginscan be activated/deactivated on startup, the status of installed plugins can beseen on a separate settings page. Plugins can hook into the new "Plugins"sidebar navigation item or provide their own navigation structure.Security - Plugins are not sandboxed or restricted in any way and have fullaccess to client functionality including the passphrase. It is essential to onlyinstall plugins from trusted sources and in doubt don't use plugins togetherwith accounts storing larger amounts of NXT. There are prominent securitywarnings both on the login page and within the plugins folder.Installation - A Plugin is provided as an archived file containing the necessaryHTML/JS/CSS files and can be installed by extracting the file in the plugins/client directory.Developer - For a plugin to be valid is has to follow a certain minimal filestructure and be shipped with a manifest.json file with some meta information.Detailed information can be found in the DEVELOPERS.md file in the plugins/directory. There is also a "hello_world" example plugin to get an idea howthings work.Other important changes:Fixed transaction ordering in AE order matching to always be by transactionindex instead of by id, to take effect after Voting System Block.Enforce nxt.adminPassword if set, even if the APIServer is listening onlocalhost only.Added nxt.ignorePeerAnnouncedAddress and nxt.cjdnsOnly properties, relevantonly for cjdns users or multihomed nodes.Default initial peers are now stored in nxt.defaultPeers andnxt.testnetDefaultPeers instead of being populated by NxtDbVersion on databasecreation.Allow the API server to handle both http and https requests on different ports,if nxt.apiServerSSLPort is set to a port different from nxt.apiServerPort andnxt.apiSSL=true. If the SSL and non-SSL ports are configured to be the same,the nxt.apiSSL property determines whether SSL is used or not. On testnet,non-SSL port is hardcoded to 6876 and SSL, if enabled, to 6877.Reduced the default nxt.maxRollback to 800. Also added a nxt.trimFrequencysetting to control how often the trim is run, default 1000.This release requires Java 8 and will not run or compile with Java 7.run.bat has been updated to search for a Java 8 installation using the Windowsregistry.Updated Jetty to version 9.2.10 and Bouncy Castle to version 1.52. If unpackingon top of a previous installation, delete the old lib folder first.This release will perform a database upgrade with a full rescan on first start.-----BEGIN PGP SIGNATURE-----Version: GnuPG v1.4.12 (GNU/Linux)iQIcBAEBAgAGBQJVItxeAAoJEFOhyXc7+e2AGksQAJT0SolvRBp8bUPllvz4MivZ4JirVpWQbVXaE7u3PKte3qA+UFgcaincMU1YM9YCPsHsbX9K24+fIRhblHHBoG7pzVrqYNcE/1+uJMS0I1UFV2GDx3aFY+2lM/m4rVp8BXNGuUdNFdvAO6vW8i0bj+BaRbe6Xds58YzGXZbkIuxNDnJHqlL/gBAF1q3yPuvftBx6m8nnGoOdjsVh6UDcrHTheeqK2hI4ZGNilwE0Coc99qIzSJi85ReE3/LANlQVac532ggVg4dK21HuB2joVtFowvBEcFpoeW4VdFSWWla3DRdxOOMo13OnIpIi07cWgrHH/eIG2VtZxoG3rFSyYe9sNsVCwuV3iQxcvlU6yd4DzWprauyOKjJy0WQC0500whgJfKEZUVZeFVxlh3vLJVKN4Jmc0cR2/hfqnpIQ6I13w8s6+UeeLnkQxmFRN9DKRICkX6PSqjejfDNjNEutCqAu9edJ8QmVlJIUygeOjoMRZLVx4fDuxXG9UZOxu4r8DT9IfvkjX0pt5huI8uHSHIpBtOKKV3aaELfhh2ybF7n86D+i50UAZsRUz/jSLEYfAawS6Em25hpmxk3SdRtz7UxsrhvD8qCyVTWeSbqtztZoUmcgWvPqDvcMqi9DTZjn2WgsoFaIBtBHzRyNjW568NYJ9KMLLhaV6bZ6eMK3mGle=rWe6-----END PGP SIGNATURE-----