Version 0.8.0e

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

Release 0.8.0e

http://download.nxtcrypto.org/nxt-client-0.8.0e.zip

sha256: 12ea7642953934b4b36cb833c500afefc9d1521776a298e3a6b6473cb0303a0c

Change log:

This release introduces a major change in the Nxt server architecture.
Instead of being a servlet run by Jetty, Nxt is now a standalone
application which itself launches Jetty servlets, when needed.
This should make it easier to use as a Java library, as it no longer
needs to be run inside a servlet container.

The Nxt configuration has been made more flexible, both for the end user
and for application developers. Nxt no longer uses web.xml, or any xml
files for that matter. Instead, a user-friendly properties file is used.

The layout of the distribution has been changed and simplified. Unpacking
the zip file will produce the following directory structure:

nxt/conf/
This is where the configuration files are kept. All default properties
are in conf/nxt-default.properties. You should never edit this file,
unless you are a packager or client developer who needs different
defaults for his distribution.
All default values are reasonable, so Nxt can just be started without
any configuration. If however the end user wants to customize some
parameters, the way to do that is to create another properties file,
conf/nxt.properties, containing ONLY the properties that need to be
different from the defaults. Nxt will read both nxt-default.properties
and nxt.properties, and the values in nxt.properties will override those
in nxt-default.properties.

nxt/html/
This contains the html files needed for the NRS javascript based client,
under html/nrs, the html-based tools such as admin.html and update.html
under html/tools, and the javadoc documentation for the Java API under
html/doc.

nxt/lib/
This is where all required Java libraries are kept - Jetty, H2 database,
and the JSON-simple library. All Jetty libraries that are not used by Nxt
are no longer included, which also results in a smaller distribution
package.

nxt/nxt.jar
This jar contains all compiled Nxt classes.

nxt/run.sh
This script is the simplest way to start Nxt, under Linux:
java -Xmx1024M -cp nxt.jar:lib/*:conf nxt.Nxt
As you can see, the classpath needs to include nxt.jar, all the jars under
lib, and the conf directory.

Notably missing are start.jar, webapps, and the Jetty configuration
directories, which are no longer needed.

In addition to the switch to embedded Jetty, significant refactoring of
the
code has been done, which may be of interest to users of the Java API. The
changes are too many to describe here, but can be easily seen by comparing
the javadoc of 0.8.0 with that of the 0.7 branch. Most notably, interfaces
have been defined for the Block and Transaction classes, the Blockchain
class has been split into several classes, and the Peer and User classes
have also seen some clean up.

Client developers using the Java API can override any of the default
properties by submitting a custom Properties object to Nxt.init().

The configurable properties in nxt-default.properties are all documented
in
the comments in that file. Some additional details about those:

Nxt will start up to three different Jetty servers, if needed.

The peer networking server accepts http requests from peers. It is only
started if nxt.shareMyAddress=true (which is the default). If you are
behind
a firewall and don't have an externally visible IP, you can set this to
false
to disable it.

The port and host interface of the peer server are configurable. If you
set
a non-default port in nxt.peerServerPort, this will be appended to the
address
you announce to peers (this address should be set in nxt.myAddress). Using
non-default peer networking port hasn't been tested much though.

For a machine with multiple network interfaces, now you can specify on
which
interface to bind each server. By default, nxt.peerServerHost=0.0.0.0 so
the
peer networking server listens on all interfaces.

There are no hardcoded nxt.wellKnownPeers in the default properties files.
You are supposed to set those to your own preferred peers in
nxt.properties.
However, if none are set, a random selection of nxtcrypto.org and
nxtbase.com
public nodes will be used.

The DoS Filter is enabled for the peer server only.

The API server accepts http/json API requests. By default, now it runs on
port
7876, and listens on the local 127.0.0.1 interface only. If you run a
public
node and want to accept API requests from anyone, set nxt.apiServerHost to
0.0.0.0, and nxt.allowedBotHosts to * (or empty).

The nxt.apiResourceBase points to a directory of static html files that
are
also served by the API server. Developers of clients using the http/json
API
will want to customize this to point to their client html and javascript
files.

The Jetty Cross Origin Filter can be enabled for the API server by setting
nxt.apiServerCORS=true (disabled by default).

The UI server is used for the NRS javascript client UI. By default it runs
on
port 7875 and accepts requests from localhost only. Client developers
using
the same API calls as the NRS client (not the http/json ones) should
customize
nxt.uiResourceBase to point to their client html and javascript files
instead.

SSL can be enabled for both the API server and the UI server (default
disabled).
If this is done, the corresponding ports will accept https requests only.
There
is no way currently to have both http and https supported at the same
time, but
this can be added, I just didn't see the need for it.
If you enable SSL, you need to set nxt.keyStorePath and
nxt.keyStorePassword,
and obviously you need to have your own SSL certificate (self-signed or
signed
by a CA) in a keystore file. I have only tested this with a self-signed
certificate.

Client developers using the Java API will probably want to disable both
the
API server and the UI server, and for users without a visible IP address
even the peer server.

Debugging output is now disabled by default, but can be enabled by setting
nxt.debug=true. Exception stack traces will still be logged, as long as
nxt.enableStackTraces=true. I hope there will be none of those.

The connection to the database can be completely customized, as the full
jdbc url used to connect to it is exposed in the properties file and can
be
modified. Client developers that insist on being able to access the
database
from a separate process, while Nxt is running, can do so by appending
;AUTO_SERVER=TRUE to the jdbc url, which will enable automatic mixed-mode.
This is disabled by default, but if you enable it and write to the
database
while Nxt is running, expect things to break.

It is also possible to have the database in a different location, not just
in the current working directory, if you change the jdbc url accordingly.

To change the amount of memory used for the database cache, use the
nxt.dbCacheKB parameter, in kilobytes. If set to 0, by default 50 % of the
memory available to the JVM is used for database cache.

There have been no changes to the database schema, you should use your
existing nxt_db directory with this release too, instead of downloading
the blockchain from scratch.

This release is labeled experimental, but please try it. In particular,
the
client developers and packagers should test it well, and if there are no
major issues, expect the 0.7 branch to become obsolete soon.

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

iQIcBAEBAgAGBQJTCIslAAoJEFOhyXc7+e2AnuoP/08xD1mjeNmv8/vBkSq39MhH
z+FToey65bbg2gQOSxMSdnr35C8oucS5kwBltCVvcXNyoyAEPZfsFfig3a1m5m2H
5TaJOywdH88ve9M1RouV2jdCo3Y7WAXC5uP8iHzp5YYVaR3XlhIwYW74uk62qQqn
NICuvmDhutDDcDGq+IkdR80x7XjqaReuXGZ44MHr2xNlQetkKLvB6kVcB7JhuZYt
KmufeCSC5qcFFdVsfZHN3xP5Mg+65VCGZayKDiJT0+uP5wfwlAPFqak25sLerfHn
fEi349W7afKw3FES1uvTIPBxnO4CShmhCzOvK4Yy3K5I4INSTWqQumEEDRL7STM2
wqhph5ewGEqJ0W+3yQN+j6AG33aawGoICLevkY2+g3+aaZ/cy1KjIiAns/ed33XB
nm2prnkvO2jNipNxcRUH5AP+o6+2k6LAfDxAzTHFWXboSQgr8RFWdwQP+R4Lvvbm
jaGiaqIvLzwyFboWgpkXwBZuhmVe1+L+icbUscUMW7gXm5XNpLgyOmPz3wuHUAe1
tqcpdW6EoiKIbHPgDkKyyRNugXuG18LdqHEW4RqpwuQIlBRoMkQ5Gzo7GSk7eLko
I+YNAktBiRv2W4dl1R1ngltwsoYCK4FBU4nWRhHjMzgjHrSCfaehi0rS42SbPfJE
cFUk+6MeaSGu+q35NOSD
=Zrbu
-----END PGP SIGNATURE-----
Version 0.8.1e

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

Release 0.8.1e

http://download.nxtcrypto.org/nxt-client-0.8.1e.zip

sha256: 4c665609a08fc5e79143e715c0f46246c66d35c1db6138ca9b025a1188d9aa3c

Change log:

Improved handling of peer announced addresses and ports. Setting
nxt.myAddress is now optional, which will help users with dynamic IP
addresses. When connecting to a peer, as long as nxt.shareMyAddress is
enabled, it will at a later time attempt to connect to your announced
address, or if not set, to the address your request came from.
If successful, the peer will use this address to connect to you in the
future, and will share it with others. This also does verification of
announced addresses, and considers your node connected only after a
successful connection to the announced address is made. This will prevent
invalid announced addresses from being spread to other peers too.

If you need to use a non-default port, the port has to be appended to your
announced address too. It does not need to be the same as
nxt.myPeerServerPort, so you can run the server on one port but forward
a different router port to it. If the port is not set in announced address
however, but nxt.myPeerServerPort is non-default, nxt.myPeerServerPort
will automatically be appended to the announced address.

To summarize: For users with dynamic IPs, you don't need to put anything
in nxt.myAddress, but still need to set up port forwarding at your router.

Verification of hallmarks has also been improved to attempt to resolve
hostnames to IP addresses. Note that if you use a non-default port,
the hallmark should include your address only, without the port.

Added generateToken API request. Parameters are secretPhrase and website,
response is the token string wrapped in JSON. This is also available
on the admin.html page.

Improved handling of init and shutdown. Nxt.shutdown() is now public and
client developers can call it. When Nxt is started as a standalone
application by calling main(), it will schedule a shutdown hook, otherwise
if started using init(), the caller of init() is responsible for calling
shutdown() or scheduling a shutdown hook.

Delayed starting the blockchain scan and the jetty servlets until the
initialization of all classes has completed. This should allow registering
listeners with those, and will also help prevent errors due to servlets
starting to accept requests before the system is fully initialized.

If nxt-default.properties is not found in the classpath, Nxt will also
make an attempt to load it from the file defined in the system property
nxt-default.properties, so you can define it on the command line:
java -Dnxt-default.properties=conf/nxt-default.properties. This is of
interest to client developers only.

Support use of POST in addition to GET for all API and UI http requests.
To enforce use of POST only, for those requests that require the user
secretPhrase, the nxt.properties nxt.apiServerEnforcePOST and
nxt.uiServerEnforcePOST can be set (default is false for API, true for
UI). This way client developers can enforce that only POST requests are
used for handling sensitive data.

The default NRS browser UI has been changed to use POST only, and so have
the tools - admin.html, message.html, alias.html. This way the user
secretPhrase will no longer be cached in the browser memory.

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

iQIcBAEBAgAGBQJTC23tAAoJEFOhyXc7+e2AoW0P/iRzGr2E4h0kfKJdVE6lbmim
BE5X4uksz8A8Amdo8KoVKEAnTlEGkOHEPPXl2jegiJZi4CupxYNqOR7EaXdPwFNg
eQbA+pOgazpG7ljoZAfdKve4qEEQj4/enBgWRAMMnwEeysi/SMMxSPbzk2QI3EA+
h/kFHHuZjerbdbWghqaaETG11RzZYLiFt0xhFQtBcgCxjdTTGJ3eA9euRuP2VpGo
vsy4UhwjS1nZsv1B6DVuZpZcviDR2siXTTiZNPO/pxOvHP9rbGhKK7DUwrgLkI23
aqi52c8beCRfNIszhqfO+qPrRQOl51a3KeuedkNyt5QyaKoKSyRb8pKSk7H6D3n8
F9u9zWdl4+97a0KZVsl9sOKHN6oQW4CKjFD+/P0xz6FAVz29IrFmUAS1582mwjGB
LtcleI4LzBhYLXP9xblOQw8DMhrSz0kInMSlXkhjHrwMgQ/Z706RcPa4m3E7Itp7
4212I4kgQOj2CMB0Dj2F+M7msbpJ4fOgZwe3n7dU5d0CqkyfDHqS59qdoSEw+m8P
OVFqYGccLgwC4oqISV9MKGXK+GQmAnOsk3qUmuk7IwuFLvKFiOH2ONezlEgNf3Nq
H9ishR4Kz5EmL+lxMVVdFKJv4F+wBvrJ46kCn6dLpdE3AAQ8UE3igHuuzWSfuN9b
IDqSgNO/e6KgYRNSw5N3
=xPDQ
-----END PGP SIGNATURE-----
Version 0.8.2e

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

Release 0.8.2e

http://download.nxtcrypto.org/nxt-client-0.8.2e.zip

sha256: cd0ceda97fd1752d6fa2877bd4a343570f8b62ae1de2009cd7688087c619c3d4

Change log:

Mostly minor fixes for problems reported with 0.8.1e.

Fixed hallmark string in json peer info.

Improved Logger, added removeListener methods.

Don't set Content-lenght headers when using XMLHttpRequest to send POST
requests.

Added jetty-security jar.

Moved worker_sha256.js to tools.

Also add random mynxt.info nodes to default wellKnownPeers.

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

iQIcBAEBAgAGBQJTDNiwAAoJEFOhyXc7+e2A1lYQANcxMSCbyzTkzYKLwGFtphxe
3gtZfbN+PW/KZrvp3am4pRKiP2HsEVxKzk8UjC2dRUYkbNKc/K79ck9o+qkIprqF
+oOnj5VgjT1LmUrBg0sQrScxyDELLmF4A89dk4WFre+JRdGYManLdEsCRfbCf2jC
uOwhIrtej5gEP8FMj6NG2UiY59xdc2UMtSdGYUaSsYZhQNjS6514LQPtwlKGXUfh
bZNqaRut4ZoegbDEtNfVJOI+BzZB3OOkReEl371YeCBSkhAkboZm1Zhzi+oLwni0
3nENhzCk0LurufoBIzFW/sKr0HyMhJYAXfSKsGRb3blJO1KeVNIStjAwWJgcqcNF
agyL/5aciBMvTj6eu6wl/TqtB1pSwQzks3DPfUT79vAlECkb+5JnYQxFtuseKV44
IaSRUMNXfcfn2LjHU7Pz1Hrhfmc525fUHcD1V0S8ANVlb6Ig0X0snxPCSli2SmQL
atABusbXjaFxDRh7bbGTdQGWlu/6cN5AIuNjuDFElrRnmf/ItyxwpHweeEdV3f5j
2dJz8vQ3AJyuTC+hCqUcYgrPGFpEKuknK5T/4uI4yADSmBH6LnOJkG76yNwMugBu
swu5INrushwQZkL4rxmnQMFN+r57VRXy+2hA7bbWW/+G3DPq7DW7SaWi3umyZV61
Obqrmy8qIs1siIy2rmva
=Zg4G
-----END PGP SIGNATURE-----
Version 0.8.3

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

Release 0.8.3

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

sha256: 9a59c60336e01e87a3a1484697dd35a57d8782747145f8049496e19cbffdd537

Change log:

Fixed UI problems with display and updates of My Transactions.
Consistent counting of transaction confirmations. Transactions included
in the last block are considered having 0 confirmations.

When a block is pushed, the BLOCK_PUSHED event is now emitted before
the REMOVED_UNCONFIRMED_TRANSACTIONS and ADDED_CONFIRMED_TRANSACTIONS
events.

Added BlockchainProcessor.RESCAN_BEGIN and RESCAN_END events, triggered
before and after a re-scan (not the regular start-up scan).

Fixed a few null pointers caused by bad peer data.

Improved handling of peer addresses and hallmarks.

Added blacklisted status to peer info.

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

iQIcBAEBAgAGBQJTDkldAAoJEFOhyXc7+e2Ag+AP/2Loj424Fy7FWFC3Nr8xD9Y2
RaMaG8qSX6sKnSmvzp6ogLQF9RwNRdR+7ebhUjOB4NaObT2VcVFP6GUHpzXEQH+J
v44pV/odFTzlnRCgGWREzteUmjG01xyoSpp7CEaqd8ZSnvFuLg0MCq2viHhCIg0M
/tEYLK7RmrcGMrsPOUutg3xME1ERoRC1YjuMPCCJSSP9JHm2L7D2S4LxvH+xQT8x
OwPoKXmgsMn8nXsudMRWMyVAwzpYT4AkgUqXYzsLBMeVKcLePfbwgqzMT6Z9IKUR
MTStGn3dXYsm7+2n2zP+oDy1ob3FKGlnMmqa/BaHZySpwTLD0kebPLRVjkgoj3eD
2apwugeeP84eLVKy7o1LApRXrVSYdw3MW/ZIDe2H/8LF3HaHuINNXSAgX3aslvyR
kJxkcRyAFl9C7nT0mSH2vUAHk3n3hA/1meuJ4rCOw03JxI3wMjJGjR4sHtWO4ik3
r7I4UywzG89ABXZOAM9Q7ItO3NL5HdrcGfsDSc0hVZehqKYDHOZSdrPpb03rJont
NOYxo4oEsf8DGOLFiLtYGN9zCtWkjsVl3fKMvVmRIqutz/VqSXL2kQIdVR6oUI9k
QMBXMUfzXAiEcOdYPx0VjqaJmbitLVF0qXL+TByTkROzP7TRYqJHWdCzqiAA3Jr3
9UpvYGW111MyHY53Hcyf
=7618
-----END PGP SIGNATURE-----