Skip to content

Releases: NeXTHorizon/hz-source

hz-v5.4

12 Dec 20:23
Compare
Choose a tag to compare

New API call getRichList added. This request is very expensive, therefore it is protected with a password (nhz.adminPassword) for non localhost access.

Versions less than 5.2 are blacklisted.

Only calculate checksums when checkpoint check is disabled.

Checkpoints updated and phasing block checksum added.

Bouncy Castle library to version 1.53, Jetty to version 9.2.14 and weupnp to 0.1.4 updated.

If you like to install the new version over an old version, then please remove the old library folder "lib/" before you start the installation.

hz-v5.3

27 Nov 23:13
Compare
Choose a tag to compare

GUI fixes:
Ajax multiqueue disabled, this fixes issues with lost requests.
Don't send prunable messages as default. (Checkbox "Message is Never Deleted" is now enabled.)
Plugin version check fixed.

Checkpoints updated

hz-v5.2

17 Nov 12:48
Compare
Choose a tag to compare

This release is a mandatory upgrade! It introduces a lot of new features, and makes a hard fork necessary at the block height of 515000.

This release requires Java 8 and will not compile nor run with Java 7.

The database upgrade from v4.0e may take up to 3 hours.
Upgrades from HZ v3.8.x and HZ v3.9.x are also supported, but the database will be emptied.

The fastest way (about 5 minutes - depending on download bandwidth) to upgrade to
Horizon version v5.2 is to download the database files, instead of upgrading or starting from scratch with an empty database.
Database files can be found here:
http://hz-services.com/downloads/nhz_dbs/

Horizon code changes:
Horizon UPnP replaced with new Nxt UPnP code
WebSockets are disabled by default
GUI login with account alias
GUI can optional encrypt and store secret in web browser
After hard fork guaranteed balance confirmations need 1440 blocks instead of 40 blocks
Support for hzannounce.com added
Checkpoints updated
Horizon merged with Nxt client version 1.5.15

New features from Nxt introduced with this release are:
Prunable messages/file upload up to 42KB, by default deleted after 2 weeks
Voting System (polls)
Phasing transactions (multi signature transactions)
Plugin support
Parallel blockchain download after hard fork

The following features will be available after block 515000:
Digital Good Store, Monetary System (Currencies), Dividend Payments,
Alias Deletion, Prunable Messages, Voting System, Phasing

License:
Nxt 1.5.x is now distributed under the GNU General Public License version 2 except the GUI source code, which still remains under the MIT license.
Affected horizon source code is now also distributed under the GNU General Public License version 2. GUI code is not affected.

Please look at the Nxt client changelog files for more details. The changelog files are
included in the release in the subdirectory changelogs/
nxt-client-1.5.1e.changelog.txt
nxt-client-1.5.2e.changelog.txt
nxt-client-1.5.3e.changelog.txt
nxt-client-1.5.4e.changelog.txt
nxt-client-1.5.5e.changelog.txt
nxt-client-1.5.6e.changelog.txt
nxt-client-1.5.7e.changelog.txt
nxt-client-1.5.8e.changelog.txt
nxt-client-1.5.9.changelog.txt
nxt-client-1.5.10.changelog.txt
nxt-client-1.5.11.changelog.txt
nxt-client-1.5.12.changelog.txt
nxt-client-1.5.13.changelog.txt
nxt-client-1.5.14.changelog.txt
nxt-client-1.5.15.changelog.txt

hz-v4.0e

21 Aug 01:01
Compare
Choose a tag to compare

The old hz-v4.0e release has been revoked. It has been renamed to hz-v4.0e-revoked.
This new release only fixes an misleading impression of authorship of the changelog.

This is a experimental release. An upgrade is not mandatory, but recommended.

This release is the first release which stores all objects in the h2 database.
On a normal VPS the database upgrade can take up to 2.5 hours.

The fastest way (about 5 minutes, depends on download bandwidth) to upgrade to
hz-v4.0e is to download the database, instead of upgrading or starting from scratch
with an empty database.

Database files can be found here http://hz-services.com/downloads/nhz_dbs/

Horizon code changes:
UPnP refactored
Checkpoints updated
Merged with Nxt client version 1.4.18

Nxt code changes:
All features, improvements und bugfixes from Nxt client 1.4.18 were merged.
The new features DigitalMonetary System, Dividend Payments and Alias Deletion are not yet enabled.

New API requests merged from Nxt:

Monetary System/Currencies (not yet enabled):
currencyBuy, currencySell, currencyReserveIncrease, currencyReserveClaim, currencyMint,
getAllCurrencies, getAccountCurrencies, getAccountCurrencyCount, getCurrency, getCurrencies,
getCurrencyFounders, getCurrencyIds, getCurrenciesByIssuer, getCurrencyAccounts,
getCurrencyAccountCount, getExchanges, getExchangesByExchangeRequest, getExchangesByOffer,
getAllExchanges, getCurrencyTransfers, getBuyOffers, getSellOffers, getOffer,
getAccountExchangeRequests, getMintingTarget, issueCurrency, publishExchangeOffer,
transferCurrency, canDeleteCurrency, deleteCurrency, searchCurrencies

Accounts:
getAccountBlockCount, getAccountBlocks, getAccountLessors

Aliases:
getAliasCount, deleteAlias (not yet enabled)

Asset Exchange:
getAssetAccounts, getAssetAccountCount, getAssetTransfers, getAccountCurrentAskOrders,
getAccountCurrentBidOrders, getAllOpenAskOrders, getAllOpenBidOrders, searchAssets,
dividendPayment (not yet enabled)

Blocks:
getBlocks, getECBlock

DGS (not yet enabled):
getDGSGoodsCount, getDGSGoodsPurchases, getDGSGoodsPurchaseCount, getDGSPurchaseCount,
getDGSTags, getDGSTagCount, searchDGSGoods

Util:
longConvert

Debug:
clearUnconfirmedTransactions, fullReset, popOff, scan, luceneReindex

Network:
addPeer, blacklistPeer

Please look at the NXT client changelog files for details. The changelog files are
included in the release in the subdirectory changelogs/

nxt-client-1.3.0.changelog.txt
nxt-client-1.3.1.changelog.txt
nxt-client-1.3.2.changelog.txt
nxt-client-1.3.3.changelog.txt
nxt-client-1.3.4.changelog.txt
nxt-client-1.3.5.changelog.txt
nxt-client-1.4.0e.changelog.txt
nxt-client-1.4.1e.changelog.txt
nxt-client-1.4.2e.changelog.txt
nxt-client-1.4.3e.changelog.txt
nxt-client-1.4.4e.changelog.txt
nxt-client-1.4.5.changelog.txt
nxt-client-1.4.6.changelog.txt
nxt-client-1.4.7.1.changelog.txt
nxt-client-1.4.7.changelog.txt
nxt-client-1.4.8.changelog.txt
nxt-client-1.4.9.changelog.txt
nxt-client-1.4.10.changelog.txt
nxt-client-1.4.11.changelog.txt
nxt-client-1.4.12.changelog.txt
nxt-client-1.4.13.changelog.txt
nxt-client-1.4.14.changelog.txt
nxt-client-1.4.15.changelog.txt
nxt-client-1.4.16.changelog.txt
nxt-client-1.4.17.changelog.txt
nxt-client-1.4.18.changelog.txt

hz-v4.0e-revoked

30 Jul 19:51
Compare
Choose a tag to compare

This is a experimental release. An upgrade is not mandatory, but recommended.

This is the first release which stores all derived objects in the database,
instead of keeping all of them in memory only.

Derived objects are those that are constructed based on the information already
available in the blockchain blocks and transactions - i.e, Accounts, Aliases,
Assets, Goods, Purchases, Orders, Trades. Storing them in the database instead of
in memory means the Asset Exchange and the Digital Goods Store can scale to much
higher number of assets, orders, and goods, without requiring an ever growing
amount of memory for each node.

Using a standard SQL database tables to store those records also allows for
much more sophisticated queries, and allows third parties to write and execute
custom queries against those tables directly, without being dependent on the NRS
http API only.

By storing the state of all derived objects as of the current height, plus their
state at previous heights up to 1440 blocks back, it is possible to completely
eliminate the need for blockchain rescans on startup, and on fork resolution.

On upgrade from, this version will perform an initial
build of the derived objects tables, which on a fast machine takes about 7 minutes,
but may take longer depending on your hardware. The database size will grow
during this rescan, but after shutdown should shrink back to around 1 GB.

There will be no rescans on subsequent restarts, and the startup time is now
reduced to a few seconds only. There will also be no rescans at runtime on block
pop offs.

Derived object tables are kept small by trimming them, only records needed to
allow rollback of up to 1440 blocks back are kept. If you need to preserve and
query historical information going back all the way to height 0, this trimming
can be disabled by setting nhz.trimDerivedTables=false (default is true) in
nhz.properties. After changing this property, a rebuild of the derived tables
can be triggered using the new scan API request, see below.

The default number of rollback records kept can be increased while still keeping
trimming enabled, by setting nhz.maxRollback to a higher value (default and
lowest possible is 1441). This should provide a compromise for those who want to
keep history of more than the default 1441 blocks, yet want to avoid the
performance penalty of never trimming the derived objects tables.

To allow for the increased use of database, default max number of database
connection has been increased to nhz.maxDbConnections=30, lock timeout
increased to nhz.dbDefaultLockTimeout=60 and MVCC is enabled by default
in nhz-default.properties.

H2 cache size allocation is improved. If nhz.dbCacheKB is not set,
the H2 cache will vary linearly from 16MB for JVM heap size 160MB, to
256MB for heap size 640MB or higher. This should allow low end devices
to run without needing a custom setting for the nhz.dbCacheKB parameter,
and prevent excessive memory use on machines with plenty of memory too.

To prevent overloading a node with invalid peer addresses, the maximum total
number of known peers is limited to nhz.maxNumberOfKnownPeers (default 3000).
Once this number has been reached, new peer addresses are not added, and peers
that have been last connected to more than a week ago are removed from the known
peer list, provided the node has enough connected public peers, until the number
of known peers is again reduced to below nhz.minNumberOfKnownPeers (default
1000).

Enforce that the nhz-default.properties file used matches the version of the
current release.

Updated jetty to version 9.2.10.

UPnP refactored.

DbShell servlet:
A command line access to the H2 database at runtime is now possible at:
http://localhost:7776/dbshell
This page uses the H2 shell tool to allow querying the database at runtime,
directly from the browser, without having to enable auto server mode in the jdbc
url. The debug APIs which allow direct manipulation of the blockchain
database are always enabled, but are protected with a password, which needs
to be set in the nhz.adminPassword property. Password is not required when the
API server is listening on the localhost interface only (the default).
The password protection can be disabled by setting nhz.disableAdminPassword=true
in nhz.properties.

Test servlet:
The usability of the http://localhost:7776/test API access page has been improved.

Enhanced nhz.allowedBotHosts property to also accepts a range of addresses
using CIDR notation.

New API requests:

Monetary System/Currencies (feature not yet enabled):
currencyBuy, currencySell, currencyReserveIncrease, currencyReserveClaim, currencyMint,
getAllCurrencies, getAccountCurrencies, getAccountCurrencyCount, getCurrency, getCurrencies,
getCurrencyFounders, getCurrencyIds, getCurrenciesByIssuer, getCurrencyAccounts,
getCurrencyAccountCount, getExchanges, getExchangesByExchangeRequest, getExchangesByOffer,
getAllExchanges, getCurrencyTransfers, getBuyOffers, getSellOffers, getOffer,
getAccountExchangeRequests, getMintingTarget, issueCurrency, publishExchangeOffer,
transferCurrency, canDeleteCurrency, deleteCurrency, searchCurrencies

Accounts:
getAccountBlockCount, getAccountBlocks, getAccountLessors

Aliases:
getAliasCount, deleteAlias

Asset Exchange:
getAssetAccounts, getAssetAccountCount, getAssetTransfers, getAccountCurrentAskOrders,
getAccountCurrentBidOrders, getAllOpenAskOrders, getAllOpenBidOrders, searchAssets,
dividendPayment (not yet enabled)

Blocks:
getBlocks, getECBlock

DGS (feature not yet enabled):
getDGSGoodsCount, getDGSGoodsPurchases, getDGSGoodsPurchaseCount, getDGSPurchaseCount,
getDGSTags, getDGSTagCount, searchDGSGoods

Util:
longConvert

Debug:
clearUnconfirmedTransactions, fullReset, popOff, scan, luceneReindex

Network:
addPeer, blacklistPeer

getAccountBlocks - like getAccountBlockIds, but returning full block JSON.
If includeTransactions parameter is true, also includes the transaction JSON.

getAccountCurrentAskOrders and getAccountCurrentBidOrders -
like getAccountCurrentAskOrderIds and getAccountCurrentBidOrderIds, but returning
full order JSON.

getAllOpenAskOrders and getAllOpenBidOrders now replace getAllOpenOrders, but
only returning ask or bid orders respectively, and allow firstIndex/lastIndex
pagination.

getAssetTransfers - retrieves the asset transfers for an asset, account, or both,
sorted by height descending.

getAssetAccounts - accepts an asset parameter and returns all accounts holding
this asset as of the current height, and the asset quantity each one owns, sorted
by asset quantity descending.
Takes an optional height parameter to allow retrieving asset holders as of a
previous blockchain height.

getAccountLessors - retrieves the accounts that have leased their balance to the
specified account, takes an optional height parameter to allow querying previous
blockchain heights.

The historical height query feature in getAssetAccounts and getAccountLessors
depends on the specified height records still being available, i.e. either table
trimming disabled, or maxRollback set high enough to cover that height.

longConvert - an utility API to convert between signed long ids as used in the
database and unsigned long ids represented as strings. Accepts an id in either
form and returns both the signed and unsigned versions.

getECBlock - returns the ecBlockId and ecBlockHeight given an optional timestamp,
current time if not supplied.

New debug API requests:

The following requests are used for debugging purposes only and should not
normally be needed. They are protected with a password, which needs
to be set in the nhz.adminPassword property. Do not enable on a public node
where the API is accessible to anyone.

fullReset - delete and redownload the whole blockchain.

popOff - accepts a numBlocks or height parameters, and pops off that many blocks
or back to that height. If table trimming is enabled (default), at most 1440
blocks can be popped off. Derived object tables are rolled back to the specified
height and blocks and transactions after that height are deleted.

scan - accepts a numBlocks or height parameters, rolls back the derived object
tables to that height and rebuilds them by rescanning the existing blockchain
from that height up again. Does not delete blocks or transactions from the
blockchain, unlike the popOff request. A request to rescan more than 1440 blocks
when table trimming is enabled will do a full rescan starting from height 0.
Setting validate parameter to true will also re-verify signatures and re-valudate
blocks and transactions during the rescan.

Added clearUnconfirmedTransactions debug API to force clearing of the
unconfirmed transactions pool.

API changes:
The limit parameter is no longer accepted by the getAskOrderIds, getBidOrderIds,
getAskOrders and getBidOrders APIs, as firstIndex/lastIndex parameters are now
used instead for pagination.

New API calls for peer management: addPeer and blacklistPeer. AddPeer will add
a peer address or IP, optionally with port number, to the list of known peers
and will try to connect to it. BlacklistPeer (password protected) will
blacklist a peer, for the default blacklisting period.

The following existing APIs now allow optional pagination using firstIndex,
lastIndex parameters:

getAccountBlockIds, getAccountCurrentAskOrderIds, getAccountCurrentBidOrderIds,
getAccountTransactionIds, getAccountTransactions, getAliases, getAllAssets,
getAllTrades, getAskOrderIds, getAskOrders, getAssetIds, getAssetsByIssuer,
getBidOrderIds, getBidOrders, getDGSGoods, getDGSPendingPurchases, getDGSPurchases,
getTrades

The limit parameter is no longer accepted by the getAskOrderIds, getBidOrderIds,
getAskOrders and getBidOrders APIs, as firstIndex/lastIndex parameters are now
used instead for pagination.

getAccountBlockIds in addition to allowing pagination now returns the blocks
in descending order, as this is more useful when showing the newest blocks
on top in the ...

Read more

hz-v3.9.2

14 Jul 14:14
Compare
Choose a tag to compare

This release removes old transaction version 0 code. This prevents clients from creating transaction version 0 transactions.
The update is mandatory.

Under the hood classes were renamed back to Nxt class naming convention. This makes the source code more Nxt compatible and improves maintenance and code merges.

Checkpoints updated.

hz-v3.9.1

21 Apr 02:12
Compare
Choose a tag to compare

Horizon v3.9.1 changelog

This is a critical bugfix release. Everyone is required to update.

It fixes the validation of asset exchange order cancellations.
The missing validation can be exploited by an attacker. The bug could be used to transfer
coins of a foreign bid order at the cost of own unconfirmed balance. Furthermore leads the attack to a DOS.

Mac OS X run command 'mac-osx-run.command' added.

hz-v3.9

02 Apr 17:22
Compare
Choose a tag to compare

Horizon v3.9 changelog

Sometimes a transaction got not included in a block because of to many NHZ V3.2 nodes in peers list. Now NHZ v3.2 nodes are blacklisted. They are already on a own fork since block 275000.

Peers updated and new pool peer addresses added to wellKnownPeers. The pool addresses are updated daily to provide a daily fresh list of peers.

Checkpoint checks during blockchain download added. Every 720th block is checked. Checkpoints are hard coded blockId checks. Only blockIds and heights in the blockchain up to the time of the release are recognized. Disable it by setting nhz.useCheckpoints to false.

GUI bug fixes:

  • Sometimes mainnet got recognized as testnet.
  • There were file encoding problems for some language
  • Asset exchange buy/sell input fields were always visible
  • Modals opened with full list of features (advanced mode) instead to open in basic mode.
  • Sometimes buttons were overlapping