Exonum Versions Save

An extensible open-source framework for creating private/permissioned blockchain applications

v0.10.3

5 years ago

Internal Improvements

exonum

  • Unpin versions of dependencies.

v0.10.2

5 years ago

0.10.2 - 2019-01-14

New features

exonum

  • Added i128/u128 support for StorageKey, StorageValue. (#1179)

exonum-crypto

  • Added i128/u128 support for CryptoHash. (#1179)

v0.9.6

5 years ago

Internal Improvements

exonum

  • Disabled default features of the actix-web dependency to get rid of a ring dependency which leads to build crash.

exonum-testkit

  • Disabled default features of the actix-web dependency to get rid of a ring dependency which leads to build crash.

v0.10.1

5 years ago

Internal Improvements

exonum

  • Dependencies have been updated. (#1111, #1162, #1167, #1168)

  • ctrl+c handler has been added for correct node stopping. (#1163)

exonum-crypto

  • pwbox dependency has been updated. (#1164)

v0.9.5

5 years ago

Internal Improvements

exonum

  • A version of snow dependency has been updated.

v0.10

5 years ago

Breaking Changes

  • Changed the message format, which, in turn, has led to changes in the byte representation of transactions and precommit messages. (#916)

  • Transaction::execute now accepts TransactionContext as the second parameter. TransactionContext provides the public key of transaction author, ID of current service, and transaction hash. (#943)

  • Transaction::verify method has been removed. (#1085)

  • Every transaction that contains the public key of the author was refactored to use the author indicated in TransactionContext. (#984 #980 #979 #975 #971)

  • /transactions/ endpoint can now handle transaction messages in hex format. Services that used custom endpoints were refactored to use explorer/v1/transactions. (#943 #984 #980 #979 #975 #971)

  • majority_count parameter has been moved from StoredConfiguration to ConfigurationService configuration. (#828)

  • Removed obsolete enable_blockchain_explorer option from NodeApiConfig. (#891)

  • Consensus messages and inner structs are now serialized with protobuf. (#1028)

  • tx_pool_capacity parameter has been removed from MemoryPoolConfig. (#1036)

exonum

  • Trait TransactionSend was removed. ApiSender now contains broadcast_transaction method. (#943)

  • api::Error::InternalError now contains failure::Error instead of Box<::std::error::Error>. (#879)

  • TransactionSend::send now returns Result<(), failure::Error> instead of io::Result. (#879)

  • ApiSender methods send_external_message and peer_add now returns Result<(), failure::Error> instead of io::Result. (#879)

  • majority_count parameter has been added to generate-template and generate-testnet commands (#828)

  • NodePrivateConfig fields have been renamed: listen_addr to listen_address and external_addr to external_address. (#809)

  • NodePublicConfig addr field has been renamed to address. (#809)

  • Config parameter external_address is now a required value. (#826)

  • Config parameter round_timeout has been renamed to first_round_timeout. Now timeout for round r is first_round_timeout + (r-1)*round_timeout_increase where round_timeout_increase is determined as a certain percentage of first_round_timeout. The value of this percentage is defined in ConsensusConfig::TIMEOUT_LINEAR_INCREASE_PERCENT` constant (10%). (#848)

  • missing_keys, entries, all_entries methods of CheckedMapProof and MapProof::missing_keys_unchecked method now return impl Iterator instead of Vec. (#918)

  • Connect message field addr with SocketAddr has been removed, pub_addr with str of unresolved external address of the peer is used instead. (#942)

  • Endpoint v1/peers now returns ConnectInfo in incoming connections instead of single IP-addresses. (#959)

  • Fork::remove_by_prefix() method now specifies prefix as Option<&[u8]> instead of Option<&Vec<u8>>. (#1042)

  • exonum_derive crate has been added with custom derives for ProtobufConvert and TransactionSet (#1055)

  • TransactionResult is now serialized using protobuf. Empty description of the result is now the equivalent of there being no description of the result. (#1075)

exonum-testkit

  • Structures in tests and examples are serialized using protobuf now. (#1078)

exonum-timestamping

  • Structures in tests and examples are serialized using protobuf now. (#1081)

exonum-cryptocurrency

  • Structures in tests and examples are serialized using protobuf now. (#1081)

exonum-configuration

  • The Vote and VoteAgainst now save the transaction hash instead of full transaction message. (#984)

  • Structures are serialized using protobuf now. (#1086)

exonum-time

  • Structures are serialized using protobuf now. (#1086)

New Features

exonum

  • Added possibility to use domain names instead of IP addresses as a peer's addresses. (#826)

  • Added v1/rebroadcast endpoint that can be used to broadcast all transactions from the pool to other nodes. (#859)

  • Now each consecutive round is longer than previous by some constant percentage of first_round_timeout. (#848)

  • Added /v1/blocks/subscribe endpoint for following block commit events through WebSockets (#792).

  • Added MapProof::all_entries_unchecked method. It is used for more efficient calculations in Exonum Java Bindings, but can be used for debug purposes as well. (#918)

  • Added listen-address command line argument to specify different external address (peer-address) and listen address when generating config files. (#942)

  • Peer address is resolved on connect instead of resolving on node startup. (#942)

  • Now peers require only one connection to exchange messages between them. (#945)

exonum-crypto

  • Added utils module with functions create_keys_file for creating and read_keys_from_file for reading files that contain a public key and encrypted secret key. (#1056)

exonum-build

  • exonum-build crate has been added to simplify writing build.rs files for services that use protobuf code generation. (#1076)

Bug Fixes

exonum

  • Bug with pool size overflow has been fixed. (#853)

  • Bug in NoiseWrapper::decrypt_msg caused by wrong calculation of encrypted and decrypted message sizes has been fixed. (#873)

  • Transactions (signature) verification benchmark has been fixed. (#673)

  • Node no longer panics when transaction pool has a lot of transactions and consensus is at round 0. (#673)

  • Node now works correctly after consensus re-enable via API. (#902)

  • Bug with incorrect EOF handling while decoding network messages has been fixed. (#917)

  • Bug leading to deletion of excessive data when clearing an index belonging to an index family has been fixed. (#1042)

API Improvements

exonum

  • new_in_family index constructor introduced in #531 now accepts &str and &[u8] as an index_id value.

Internal Improvements

exonum

  • NodeHandler::run_handler now returns Result<(), failure::Error> instead of io::Result. (#879)

  • Transactions (signature) verification benchmark has been added. (#808)

  • A new function storage::proof_list_index::root_hash() has been added to efficiently compute Merkle root hash from a list of hashes without an intermediate ProofListIndex. Verification of block root hashes has been optimized as well. (#802)

  • NoiseHandshake::finalize now returns error if remote peer's public key is not in ConnectList. (#811)

  • Now nodes will switch to min_propose_timeout for block proposal timeout faster if they receive more than propose_timeout_threshold transactions during max_propose_timeout. (#844)

  • Custom log formatting (along with colored and term dependencies) has been removed in favor of env_logger. (#857).

  • Several dependencies have been updated. (#861, #865, #871)

  • Transactions are now verified in a thread pool. Thread pool size is set to optimal value by default (CPU count) or can be configured manually. (#673)

  • The finalize command now does not include the node itself as its own trusted peer in the generated configuration. (#892)

  • Added a possibility to create ServiceApiBuilder with blockchain. (#929)

  • ConnectInfo and ConnectList now stores unresolved addresses as strings. (#942)

  • Now network module uses PublicKeys to identify peers. (#942)

  • system/v1/peers endpoint now properly returns incoming and outgoing connections of the node. (#942)

v0.9.4

5 years ago

New features

exonum

  • SegmentField implementation for Option has been added, allowing to store optional values inside of transactions. (#1004)

v0.9.3

5 years ago

Breaking Changes

exonum

  • Config parameter external_address is now a required value. (#826)

New features

exonum

  • Added possibility to use domain names instead of IP addresses as a peer's addresses. In config file domain names can be used in ConnectList configuration and addresses will be resolved once on startup. (#826)

v0.9.2

5 years ago

Internal Improvements

exonum

  • Added a possibility to create ServiceApiBuilder with blockchain. (#929)

v0.9.1

5 years ago

Bug Fixes

exonum

  • failure version has been updated to 0.1.2 in order to fix the build issue with failure_derive. (#845)

  • Bug with "unknown propose" execution has been fixed. (#841)