All major changes to Constellation will be recorded here.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
0.3.0 - 2018-02-08
-
workdircommand line and configuration option to set the directory in which files specified in other command-line arguments, as well as auto-generated files, will be placed. -
TLS certificate auto-generation and mutual authentication using a whitelist, certificate authority, or trust-on-first-use model. See
sample.conffor more information.
-
Node API: The
fromparameter to/sendis now optional. If unset, the first public key listed inpublickeyswill be used. -
Argon2id is now the default for password-based key locking.
- Sending to (and trying to encrypt for) your own public key will now fail more intuitively.
0.2.0 - 2017-11-06
-
A
dirstorage engine which stores payloads as individual files in a folder, suitable for use with FUSE connectors. (Note that, if used with Quorum and a distributed file system, it should have strong read-after-create consistency to avoid unexpected behavior. In other words, after a file is created, other nodes should immediately be able to read it.)The
dirstorage engine uses Base32-encoded filenames to ensure compatibility with most file systems. -
(Experimental) A
sqlitestorage engine. See related discussion at Consensys#37 -
(Experimental) A
leveldbstorage engine. See related discussion at Consensys#37 -
A non-persistent
memorystorage engine. -
Ability to choose a storage engine in configs and on the command line:
--storage=bdb:path:bdbstorage engine using thepathfolder.--storage=dir:path:dirstorage engine using thepathfolder.--storage=leveldb:path:leveldbstorage engine using thepathfolder.--storage=memory: non-persistentmemorystorage engine.--storage=sqlite:path:sqlitestorage engine using thepathfolder.--storage=path: Default storage engine (bdb) using thepathfolder.
-
The
tofield of Send requests may now be empty. When there are no recipients, the payload will be encrypted using a throwaway public key, and the encrypted payload will not be sent to any external nodes.
- Node API:
/sendRawis now/sendraw/receiveRawis now/receiveraw- The
fromandtoheaders for the/sendrawand/receiverawendpoints are nowc11n-fromandc11n-torespectively.
0.1.0 - 2017-06-06
This release includes changes to the configuration file
format. Backward compatibility is maintained, but we recommend users
migrate to the new format as soon as it's convenient. Please see
the Changed section below and sample.conf for more information.
-
Ability to specify any configuration file parameter on the command line, e.g.
--storage=data. If a configuration file is given as an argument, the command line options will override the options specified in the file. A configuration file is no longer necessary to launchconstellation-node. -
Ability to set an IPv4/IPv6 whitelist for simple access control using
ipwhitelist. -
Ability to specify
-v [NUM]or-vv,-vvvto control verbosity level. -
Ability to generate a key pair using
--generatekeys, removing the need for a separateconstellation-enclave-keygenbinary. -
Ability to define a number of public keys that will always be added to the recipient list for all transactions, e.g. for backup purposes, using
alwayssendto. -
Ability to output Constellation version and exit using
--version. -
Ability to specify a file containing passwords for the private keys given (if locked) with
passwords. Each line contains a password for a key in the same sequence they were given inprivatekeys. If a key is not locked, but others are, add a blank line for that key's entry in the passwords file. -
Support for deleting payloads and addition of
deletemethod for the private API. (Thanks to Conor Svensson.) -
Addition of
sendRawandreceiveRawmethods to the private API which forego base64-encoding and the associated overhead. (Thanks to Conor Svensson.) -
scripts/db-list-keys.pyfor listing keys in a payload database, for aiding in troubleshooting. -
build-linux-static.dockerfilefor building binaries statically using musl inside an Alpine Linux container.
-
Most configuration options, e.g. the IPC socket path, are now optional, in anticipation of later adding runtime configuration ability.
portmust always be specified either in the configuration file or with--port. -
Ability to specify multiple public/private key pairs using
publickeysandprivatekeysin the configuration file, or--publickeysand--privatekeyson the command line. (The ordering of the public and private keys must match.) -
Some options have been renamed:
socketPathis nowsocketotherNodeUrlsis nowothernodespublicKeyPathis nowpublickeys(a list -- see previous)privateKeyPathis nowprivatekeys(a list -- see previous)storagePathis nowstorageipWhitelistis nowipwhitelist
Constellation remains backwards compatible with configuration files using the old naming conventions, however the new and old naming should not be mixed, and we recommend switching to the new naming as soon as possible.
If you were previously making use of archival keys, we suggest putting the public/private archival keys in
publickeysandprivatekeysrespectively, then adding the archival public key toalwayssendto, which will emulate the same behavior. (Note, however, that this key will be advertised as available on this node to the rest of the network.)If you're using Constellation with Quorum 1.1.0 or earlier and pointing to the new configuration file in PRIVATE_CONFIG, add
socketPathandpublicKeyPathto the bottom of the file in order for geth to load properly, then remove those options after upgrading to a later release.
- The camel case configuration options
socketPath,otherNodeUrls,publicKeyPath,privateKeyPath,storagePath,ipWhitelistarchivalPrivateKeyPathandarchivalPublicKeyPath. (please see Changed section above for details.)
-
Any newlines will be ignored in key files.
-
Nodes now attempt to synchronize with each other more aggressively in the first few minutes after startup, which should address issues with "Unknown recipient" errors shortly after startup.
- Initial Constellation release.