- Javascript support via Scala.JS
- CI configuration for Scala.js
- configuration of SBT with necessary JS dependencies (@noble/hashes) using ScalablyTyped
- removed all Java dependencies in
shared
code (jvm still uses BouncyCastle) - necessary code changes for Scala.js cross-compilation
- the following classes moved to JVM-only module (with the corresponding tests): Blake2b256Unsafe, Blake2b512, CryptographicHash64, Keccak, Keccak256, Keccak512, Sha256Unsafe, Skein256, Skein512, Stribog256, Stribog512, ThreadUnsafeHash, Whirlpool
- Custom equality for BatchMerkleProof
- Bugfix for BatchMerkleProof (reckless .head call)
- scmInfo fix in build.sbt
- Rework of sliced AVL+ trees (BatchAVLProverManifest / BatchAVLProverSubtree)
- Batch Merkle proof implementation
- AuthenticationTreeOps.logError
- Scala, scorex-util, Guava, BouncyCastle dependencies updated
- example app in SparseMarkleTree reworked into tests (#38)
- switch from sbt-git to sbt-dynver
- migration from Travis to GA
- Guava's comparator for byte arrays is used instead of custom old one ( #74 )
- Scala 2.13 support ( #75 )
- remove logback dependency, add sbt-dependency-graph plugin
- add git versioning, cross-build with scala 2.11, auto sonatype publishing(WIP); remove sbt-lock
- Manifest deserialization now checks that valueLength is not negative
- Fix for "BatchAVLProverManifest changes its properties after serialization/deserialization" bug (#58)
- Minor update with dependencies update (Guava 21.x, scorex.utils 0.1.1)
- Always explicit encoding in .getBytes String method
- Base* and logging are moved to scorex-utils
- Base58: empty string allowed as parameter
- Reworked Base16 implementation has much better performance
- Minor changes in MerkleTree implementation
- Bugfix release: a bug in double rotation processing in AVL+ tree implementation has been fixed
- AVL+ tree serialization, see BatchAVLProverSerializer class
- Possibility to get list of removed nodes, see removedNodes() in BatchAVLProver
- Better Base58 performance
- Initial implementation of sparse Merkle trees
- randomWalk() in BatchAVLProver can accept external randomness via an optional parameter
- improved performance of Base58-related operations
- treeWalk() and randomWalk() methods in BatchAVLProver
- generateProof() -> generateProofAndUpdateStorage() in PersistentBatchAVLProver, new optional parameter for this method (to pass additional key-value pairs into storage)
- additional optional parameter for PersistentBatchAVLProver (with the same meaning as above)
- Style fixes
- version method signature change in VersionedAVLStorage
- rollbackVersions method in VersionedAVLStorage
- AdProof was renamed to SerializedAdProof
- Shapeless dependency removed
- Using tagged types instead of Array[Byte], suppertagged microframework is used for that
- BouncyCastle 1.58
- Rollback changes from 1.3.3
- version method signature change in VersionedAVLStorage
- rollbackVersions method in VersionedAVLStorage
- prover() in PersistentBatchAVLProver (don't store the ref, it is mutable!)
- No constructor for PersistentBatchAVLProver anymore, use PersistentBatchAVLProver.create
- Added hash functions Whirlpool, Skein and Stribog from BouncyCastle
- performOneOperation() return value type fix in PersistentBatchAVLProver
- Instead of imported Java implementations for hash functions, BouncyCastle to be used for hash functions
- Because of previous item, most of hash functions were removed. Scrypto has SHA-256, Blake2b-(256/512) and Keccak-(256/512) wrappers only in this version.
- Index checking in Merkle proof generation
- PersistentBatchAVLProver interface improvements
- MerkleTree and MerkleProof implementation - static Merkle trees
- BatchAVLVerifier now has an interface for traversal through its tree, extractNodes() and extractFirstNode() functions
- Parameter valueLength is now optional
- Better interface for authenticated dynamic dictionaries, namely Operation/Lookup/Modification families
- Versioned deterministic Merkle trees with in-memory or on-disk storage
- Authenticated skiplists
- Authenticated AVL trees
- Commutative hash
- It is possible to get results of hash and signing functions wrapped in statically sized byte array using Sized from Shapeless