Exonum Java Binding 0.3
Pre-release
Pre-release
Highlights
This release brings:
- Support of flat map proofs, the new compact proof format for
ProofMap
, supporting several keys. - Built-in serializers of Java primitive types, some Exonum library types and protobuf messages.
- Ability to report the transaction execution result as an exception with extra information accessible by a client:
TransactionExecutionException
. - A separate module
exonum-java-binding-common
that can be used in client applications to create transaction messages, check proofs, serialize/deserialize data, perform cryptographic operations. - Various fixes and improvements.
The release is based on Exonum 0.8.
Added
- Flat map proofs support, including proofs of absence and multiproofs — proofs for several
entries at once. (#250, #507, #532) StandardSerializers
now supportsbool
,fixed32
,uint32
,sint32
,fixed64
,uint64
,sint64
,float
anddouble
primitive types,PrivateKey
,PublicKey
andbyte[]
serialization. (#514, #523)- A deterministic
Serializer
of any protobuf message —StandardSerializers#protobuf
. (#493) - Static factory methods accepting protobuf messages to collections,
allowing to pass Protocol Buffer messages directly instead of using
StandardSerializers#protobuf
. (#505) Message.Builder#setBody(byte[])
to avoidByteBuffer.wrap
in the client code. (#401)MapIndex.isEmpty()
method to check if MapIndex is empty. (#445)- Wallet transactions history support to the cryptocurrency-demo. (#481)
Changed
Transaction#execute
can throwTransactionExecutionException
to roll back
any changes to the database. The exception includes an error code and an optional
description which the framework saves to the storage for later retrieval.
Any other exception is considered as an unexpected error (panic in Rust terms). (#392)- Refactored
exonum-java-proofs
module toexonum-java-binding-common
module
withcom.exonum.binding.common
root package so that more functionality
is available to client applications with no dependency onexonum-java-binding-core
(#459)- Moved
crypto
package toexonum-java-binding-common
module. (#467) - Moved
hash
package toexonum-java-binding-common
module. (#469) - Moved
Transaction
-related classes to the newcom.exonum.binding.transaction
package. (#469) - Moved
messages
package tomessage
package inexonum-java-binding-common
module. (#469) - Moved
proofs
package tocom.exonum.binding.common
package. (#469) - Moved
serialization
package tocom.exonum.binding.common
package. (#469)
- Moved
ProofMapIndexProxy#getProof
to return a flatUncheckedMapProof
instead of tree-likeMapProof
, which is a more efficient format in terms of space. (#478)ProofListIndexProxy#getProof
andProofListIndexProxy#getRangeProof
to return
UncheckedListProof
instead ofListProof
. The latter is renamed intoListProofNode
and may be accessed throughUncheckedListProof#getRootProofNode
(#516)ListProofValidator
returns an instance ofNavigableMap
instead ofMap
. (#457)