X25519 shared secrets now match those generated by libsodium.
New tests show that shared secrets are the same using either set
of private+public key combinations.
Changed proxy private key generation from using simple SHA256
of shared secret to using SHA256(shared secret + both public keys).
Added a temporary "BouncyCastle25519" shim class to provide missing
key conversion from Ed25519 to X25519.
Added a finer-grained result (enum) to synchronization to replace
stark boolean result. This allows Controller to decide whether
peer can be retried in the next round (e.g. network issue) or
cooled off for an hour (e.g. peer way too far behind)
Fixed bug with wrong UPDATE_GROUP serialized transaction length.
Added logging to BlockMessage when deserialization to help catch
future bugs.
Restrict synchronizer to only consider peers at most 60 blocks behind.
Synchronizer will only process a batch of 200 blocks at a time.
Improve debugging message in Peer.
Checking interval increased from 5 seconds to 5 minutes.
(Reduces repeated fails).
System tray icon should show message just prior to applying downloaded update.
Proxy forging recipient no longer needs a public key on the blockchain
at the point PROXY_FORGING transaction is submitted.
Proxy forging recipient is given a last-reference, if they don't have one,
when they receive their first block rewards.
Split block fees in proxy forging scenario, using same share proportion.
100% proxy sharing is now allowed.
Fixed account flags processing for accounts in genesis block.
AutoUpdate needs separate logfiles for its process as
log4j2's rolling appender doesn't support locking.
So we create AU_LOGGER in AutoUpdate and set it up
using static { } block.
Added support for starting/querying/stopping auto-update
Windows service.
Changed Controller's public connectionUrl field to
getRepositoryUrl() public static method so it
can incorporate repositoryPath from Settings.
Controller has added support for auto-update on startup.
Fix bugs with Settings not using userPath properly.
Removed obsolete standalone binary classes:
* blockgenerator
* txhex
* v1feeder
Removed all @Produces from API resources as response content type is
sorted by Swagger.
Added API /admin/info for generic node info.
Added API /arbitrary/ endpoints.
Moved arbitrary data storage from ArbitraryTransaction to ArbitraryRepository.
V4 arbitrary transaction signature is based on data's hash.
Original commit was d02f282, and commit message was:
Initial auto-update support, network MAGIC change, arbitrary tx improvements
Various fixes to synchronization
Added missing code for processing incoming block summaries in Network.
Fixed block summaries serialization and removed references to BlockData.
Fixed bug in transaction transformation where base transaction length
didn't include reference or fee lengths.
Original commit was ebbab7b
After opening repository connection with RepositoryManager.getRepostory(),
any 'read' from repository (e.g. SELECT) starts the transaction
even though HSQLDB documentation states there are no shared/read locks
in MVCC concurrency model.
The work-around for this is to 'reset' HSQLDB's in-transaction flag
by performing a ROLLBACK (Repository.discardChanges) immediately
after acquiring the blockchain lock (which is used to ringfence
changes that might collide like these).
Also adding an extra check to prevent payments to nonexistent AT
addresses as it touches Transaction.
API /addresses/{address} now returns lastReference taking unconfirmed into account.
Added DELETE /peers/known to remove all known peers from repository.
Added blockchain locking around Transaction methods like isValidUnconfirmed
as they (temporarily) update account lastReference.
Ditto getInvalidTransactions, etc.