Version 0.6.0

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Release 0.6.0

http://download.nxtcrypto.org/nxt-client-0.6.0.zip

sha256: 40154756de464c9587b738c84f14a4a06dfb02476507f1a2383cbe03dc5bd48b

Change log:

Fixed a critical bug. Everybody should upgrade immediately.
The fix in 0.5.12 was not enough.

A more detailed changelog will follow tomorrow, or you can
figure it out yourself. Now I go to sleep.

Did I mention that everyone should upgrade?

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)

iQIcBAEBAgAGBQJS8uAbAAoJEFOhyXc7+e2AVD0QAM09cbDLn12ncCnyhbQTGVqJ
SxQr4MllRWSmIkQihXYud1a9USQYUs+l6oP8BM+fiSc6/vJctFu9wb24L90N1vL/
RAFdrLDMqtm7dB4DkVFtoGQsClpNob1HLEzsFK5QQUkhkLUsYOD9hifYhHCJm6LO
dda3N0qVMHiVrJfIljYbMRrKAcXDoFY1Z7ajJu4W2ttoz2LGkOAApNV854+AhyxI
D5Z0S13JiMJWXGv6BAFDeOewvCLk6TuPGpusFJb03dKPoZftfwoLe+o0MDBa53Bx
T4M5GStPCpV+xcf9dCqReNa1XtMMWA7rnXfLH+IM0OmtSCTh7zXRDqzocNuNagFR
LoXcTlfN0L1nHXR4beMbQclEifVXjQS32D9XaX1EEEzN/zcOYQrJIQYFuNBjv1w3
mIsleduDVJGCbMlgjrpytEKROuwYynVUXWkAC93c2ueOQEWgU4AKwuYmWBMpzbdB
RBUaXpFVAfYi4dHRwSwHRGeY1bzSV99msbjAnfPWuiltQrcK5Ma8MbTZrv7K/43I
Rjv7YpIIFN4P3Qroxr4+1bCA6MwS/DaQpFygQx5kqMhiL56/8Rm9NggaICRu/CDP
h6G09XYrhhwfVaABlzAhWEijc3wcXWcwP44QWSH/7k7jt0su5MHXKeosmp4OTUkE
B3XuAWOvEWwse4bsbl71
=z84D
-----END PGP SIGNATURE-----

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

More detailed change log of 0.6.0:

The critical bugfix will still be disclosed later. This is only to
document
the other changes from 0.5.12 to 0.6.0, as there are plenty of them.

The 0.5.x branch is really painful for me to work with, after getting used
to
the fully refactored code in 0.6.x and 0.7.x. Therefore, I decided to stop
maintaining 0.5.x completely and move on to 0.6.x.

The last bugfix in 0.5.12 was not sufficient, and all forging users should
upgrade to 0.6.0 as soon as possible. 0.5.12 is broken and will not be
fixed.

The 0.6.x branch still uses serialized object files, however those are not
backwards compatible with 0.5.x. Old blocks.nxt and transactions.nxt files
from 0.5.x will be imported automatically and converted to the new format
the first time 0.6.0 is run.

The blockchainStoragePath parameter in web.xml is no longer needed.

The code has been significantly refactored and is no longer a single java
file.
All classes previously nested in Nxt have been moved out to their own
files.

Everything is under a top level nxt package, and as a result the
servlet-class
parameter in web.xml has to be changed to nxt.Nxt. Sorry that I forgot to
mention that when releasing 0.6.0:

<servlet-name>Nxt</servlet-name>
<servlet-class>nxt.Nxt</servlet-class>

There are three subpackages, nxt.user, nxt.peer, and nxt.http, with
request
handlers in separate classes for all the UI, peer to peer, and http API
requests respectively. This completely replaces the old huge switch/case
statements in the servlet doGet and doPost methods.

All the business logic has been moved out of the Nxt servlet class.

A new Transaction.Type class hierarchy has been added to handle all logic
for transaction validation, transaction attachment handling, and
transaction
application. This completely replaces the switch statements that used to
hold the transaction validation and processing logic.

Transaction undo, on block pop-off, has been implemented for transactions
which
can be undone. For all others, an UndoNotSupportedException triggers a
full
blockchain rescan.

A custom NxtException exception hierarchy is now used to help with block
and
transaction validation. Most transaction and block parameters are now
enforced
to be valid in the Transaction and Block constructors, which makes it sort
of
difficult to forget to validate them.

Many minor and not so minor performance and memory optimizations, based on
actual profiling measurements, have been applied.

All field and method access modifiers have been reviewed. No java field or
method
is more accessible than it needs to be. Everything that can be private, is
now
private. Everything that should be final, is now final.

All JSON response and error handling has been cleaned up and optimized.

Unnecessary to and from ByteBuffer conversions in block and transaction
processing
have been removed.

A deadline limit of not more than 1440 minutes for new transactions is now
enforced.

Peers that submit invalid block or transaction data are automatically
blacklisted.

Java API documentation is now available at http://localhost:7874/doc/ ,
all APIs
are subject to change as it is work in progress.

Minor UI changes: added warnings to the unlock account dialog and
message.html,
added sendMoney to admin.html.

New or improved APIs:

getAccount
parameter: account (the account id)
returns: publicKey (if known), balance, effectiveBalance, all asset
balances

getAsset
parameter: asset (the asset id)
returns: accountId of the asset issuer, asset name, description and
quantity

getAssetIds
returns: all existing asset id's.

getAskOrderIds and getBidOrderIds now require an asset parameter, and
return
the order id's for that asset only.

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)

iQIcBAEBAgAGBQJS82bBAAoJEFOhyXc7+e2A9UYP/ignHYDkNQsl7mIEmtHjLXQL
Vnhk2qdpR4g1N9JS7Q7JjzlhW9XzMT5aCiEqWgl4hi2zq1ymPL6McO1zD5IxQz1N
tDy1MnjXYp3SrabqnOhPGF/VHqO7VACaCi2uboBHo9fTF+TzW8fu7UD/4oo9LTLl
EaHrKTmBBPjAXooTP7eHgGhUbKi3cc0adwDppK9m0XZKoo7igkt6Rn91p4TXNwYf
WKUY6cce4BdhdtlUsGXKNLPKXEBxIG74MzTyb+2KT4TqlREQkVWV5e4+wctdgj5+
Hrh0lTUvDomzoT+ohXVxgkSKILvGHanX8t1laTkNpjVMqFbSGI9ViJfazFq5heXw
rs/bi9IclFBQvSowz3pToCC8VVxQm6sYrjOj1k2+wVPIie2qWCDj+4WOOqnYf8P8
QNUqP0VncJ0n0RjlvBlX5LQRENekHIR4SaI5rCPcppwz/tNQGB6tDfbXqUT7V77m
Oxg869TOknszSaPu3M/D63Y0i2tn+R27fuaAcvBeKK5ArGlKAlwMSQgjpocoxRos
RJan41fv50YfenniyTjYkRAx0R3iXiFNrdMD3lqEntYyqSxfviZf1fSpUazheMNW
7JwTfOpcV2mTObPMr1ZKJWz2yl1CzPy/J4caA7SXGkzB1nc/onkjJWHYNSBRyGLr
+0/q4Hc0x3XYVvyHM4ng
=OQ1o
-----END PGP SIGNATURE-----