All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.40.0 - 2024-08-14
- Update to
dusk-plonk
v0.20
0.39.0 - 2024-05-08
- Switch parameter for gadgets:
composer
should always be the first parameter
0.38.0 - 2024-04-24
- Change
const PARTIAL_ROUNDS
to 60 (was 59) #260 - Increase the number of constants to 340 (was 335) #260
- Change
finalize
to return the hash directly (not wrapped in aResult
) #259
0.37.0 - 2024-03-27
- Add variable length encryption and decryption #236
- Add variable length encryption and decryption gadgets #236
- Add
encryption
feature #236
- Remove
PoseidonCipher
struct as it is replaced by encryption functions #236 - Remove
cipher
feature #236 - Remove
rkyv
dependency and all related features #236 - Remove
bytecheck
dependency #236 - Remove
dusk-bytes
dependency #236
- Append the tag as a constant when initializing the gadget state #236
0.36.0 - 2024-03-13
- Add
Hash
struct #202 - Add
Error
struct #202 - Add
Domain
struct #202 - Add
From<Domain> for u64
implementation #251 - Add
dusk-safe
dependency #248
- Remove
perm_uses
module as it is obsolete with the introduction of SAFE #248 - Remove
merkle
feature with the introduction of SAFE #248 - Remove
Domain.encoding
method in favor ofFrom
trait #251
0.35.0 - 2024-02-28
- Rename trait
hades::Strategy
tohades::Permutation
#243 - Rename struct
hades::ScalarStrategy
tohades::ScalarPermutation
#243 - Rename struct
hades::GadgetStrategy
tohades::GadgetPermutation
#243 - Reduce the number of
ROUND_CONSTANTS
from 960 to 335 #246 - Remove the constants iterator in favor of indexing the constants array directly #246
- Change
ROUND_CONSTANTS
into a two-dimensional array #246 - Rename
TOTAL_FULL_ROUNDS
toFULL_ROUNDS
#246
- Remove
hades::Strategy
,hades::ScalarStrategy
andhades::GadgetStrategy
from public API #243 - Remove
dusk-hades
dependency #240
- Add the code for the hades permutation to crate #240
- Add internal
permute
andpermute_gadget
functions tohades
module #243 - Add SAFE dependency #248
0.34.0 - 2024-01-24
- Restructure crate features #184
- Remove
default
andalloc
features #184
- Add
zk
andcipher
features #184
0.33.0 - 2024-01-03
- Update
dusk-plonk
to 0.19 - Update
dusk-hades
to 0.24
0.32.0 - 2023-12-13
- Update
dusk-bls12_381
to 0.13 - Update
dusk-jubjub
to 0.14 - Update
dusk-plonk
to 0.18 - Update
dusk-hades
to 0.23
0.31.0 - 2023-10-11
- Update
dusk-bls12_381
to 0.12 - Update
dusk-jubjub
to 0.13 - Update
dusk-plonk
to 0.16 - Update
dusk-hades
to 0.22
0.30.1 - 2023-06-28
- Fix missing
rkyv
feature
0.30.0 - 2023-06-28
- Update
dusk-plonk
from0.13
to0.14
- Update
dusk-hades
from0.20
to0.21
- Add sponge over fixed input length for merkle tree hashing #215
0.29.0 - 2023-05-17
- Remove merkle tree logic from this crate #212
0.28.2 - 2023-04-06
- Add benchmark for running sponge gadged on 5 BlsScalar (one permutation) #206
- Add benchmarks for cypher in native and zk #197
0.28.1 - 2023-01-18
- Implement
dusk_bytes::Serializable
forPoseidonBranch
andPoseidonLevel
#203 - Add benchmarks for merkle opening proof #197
- Derive
Copy
forPoseidonBranch
#200
0.28.0 - 2022-11-10
- Update
dusk-plonk
from0.12
to0.13
- Update
dusk-hades
from0.19
to0.20
0.27.0 - 2022-10-19
- Add support for
rkyv-impl
underno_std
- Add
ranno
version0.1
to dependencies #180
- Change
PoseidonBranch
to have two fields -root
andpath
. The path is now a fixed length array. #189 - Change
PoseidonTree
to build only with thealloc
feature #180 - Change
PoseidonTree
to take a genericKeyed
over the leaf type instead of aPoseidonAnnotation
#180 - Make
PoseidonTree::new
const #180 - Update
microkelvin
from0.15
to0.17
#180 - Update
nstack
from0.14.0-rc
to0.16
#180
- Remove
PoseidonBranch
Default
implementation #189 - Remove
std
feature #180 - Remove
canon
andpersistence
features #180 - Remove
Error
struct #180 - Remove
canonical
andcanonical-derive
from dependencies #180 - Remove
PoseidonMaxAnnotation
#180
- Fix merkle opening circuit #181
- Fix CHANGELOG version links [#191]
0.26.0 - 2022-08-17
- Add
rkyv
implementation behind feature gate #175
- Update
dusk-bls12_381
from0.8
to0.11
- Update
dusk-jubjub
from0.10
to0.12
- Update
dusk-hades
from0.17.0-rc
to0.19
- Update
canonical
from0.6
to0.7
- Update
canonical_derive
from0.6
to0.7
- Update
microkelvin
from0.14
to0.15
- Update
nstack
from0.13
to0.14.0-rc
- Update
dusk-plonk
from0.9
to0.12
- Change merkle opening to constrain leaf #162
- Export
sponge::truncated::hash
regardless ofalloc
feature #167 - Remove useless
let
insponge::truncated
- Fix module injection for
tree
andcipher
modules
0.22.0 - 2021-07-27
0.21.0 - 2021-07-05
- Add integration tests with examples of custom walker iterators #134
- Add
persistance
feature to the crate #151 - Add
truncated
module in sponge to deal with scalar conversions #153
- Change the tree logic to be compatible with
microkelvin v0.9
#151 - Changed toolchain-file version to nightly-2021-06-06 #149
- Change feature set config for the crate #138
- Update
error
module to be no_std compatible #132 - Update to latest
dusk-poseidon
,dusk-bls12_381
anddusk-jubjub
#126 - Update to latest
microkelvin v0.9
,nstack v0.9
andcanonical v0.6
#125 - Update randomness provider to
rand_core
#127 - Change trait bound system for
PoseidonTree
#125 - Update
PoseidonTreeAnnotation
to be an autotrait #125 - Update feature system for the crate #138
- Change
PoseidonLeaf
getter methods to return refs #143
- Remove
anyhow
andthiserror
from deps #132 - Remove
PoseidonWalkableIterator
andPoseidonWalkableAnnotation
#125 - Remove
canon_host
feature checks from CI #136 - Remove
anyhow
andthiserror
usage #132 - Remove
microkelvin
requirements from Tree #146
- Fix Readme.md import from lib.rs #148
0.20.0 - 2021-04-06
- Merkle Opening constant circuit description #122
0.19.0 - 2021-03-11
- Update
dusk-plonk
from0.5
to0.6
#117 - Update
dusk-hades
from0.13
to0.14
0.18.0 - 2021-02-11
- Change crate's name from
Poseidon252
todusk-poseidon
- Implement
Canon
forPoseidonBranch
0.17.0 - 2021-02-01
- Sponge gadget import path simplified.
- PoseidonBranch minimum depth fixed. #112
0.16.0 - 2021-01-27
- Update canonical to v0.5
- Update dusk-bls12_381 to v0.6
- Update dusk-jubjub to v0.8
- Update dusk-plonk to v0.5
- Update hades252 to v0.12.0
- Remove
hex
crate for unit test in favor ofdusk-bytes
- Update CHANGELOG to ISO 8601
- to/from bytes methods of
PoseidonCipher
refactored in favor of dusk-bytes
0.15.0 - 2020-12-04
- PoseidonMaxAnnotation borrow fix for latest microkelvin.
0.14.1 - 2020-11-21
- Sponge hash defined as a no-std function.
0.14.0 - 2020-11-17
- No-Std compatibility.
0.13.2 - 2020-11-11
- Update Hades version and libraries dependent on BLS and JubJub
0.13.1 - 2020-11-06
- Feature split between
canon
andcanon_host
for constrained and unconstrained environments. - Canon implementation for PoseidonTree.
0.13.0 - 2020-11-04
- PoseidonLeaf pos setter for API consistency with Phoenix
- PoseidonCipher std::io implementations
0.12.0 - 2020-11-04
- Gate-featured
canonical
impl. PoseidonAnnotation
as generic to support walkable implementations
0.11.0 - 2020-10-30
- Bump
hades252
tov0.10.0
- Major refactor on the poseidon tree to comply with the simplifications provided by microkelvin
0.10.0 - 2020-10-05
- Bump
hades252
tov0.9.0
- Bump
dusk-plonk
tov0.3.1
0.9.0 - 2020-10-04
root()
fn forPoseidonBranch
.
- Padding implementation for
PoseidonBranch
with opening gadgets.
- Extension fn's from the crate.
0.8.1 - 2020-10-01
- Implement
inner
andinner_mut
methods on PoseidonTree
0.8.0 - 2020-09-29
- Use
dusk-plonk
v0.2.11
- Use
hades252 0.8.0
0.7.0 - 2020-09-23
- Removed PI constraint from
merkle_opening_gadget
to implementCircuitBuilder
trait. - Use
nstack 0.5.0
0.6.4 - 2020-09-07
PoseidonCipher
from/to bytes.
0.6.3 - 2020-09-01
- Fixed_len hashing tools with variable input and output scalars.
0.6.2 - 2020-08-27
PoseidonCipher
zk encrypt and decrypt functions.
0.6.1 - 2020-08-13
add_constant_witness
method replacement byadd_witness_to_circuit_description
.- Changed
dusk-plonk
version tov0.2.7
. - Changed
Hades252
version tov0.7.0
.
0.6.0 - 2020-08-07
- Use
dusk-plonk v0.2.0
as dependency. - Refactor the tests related to Proof generation to work with the Prover&Verifier abstraction.
- Constrain
eom
in sponge_hash function.
- Poseidon cipher encryption, decryption and plonk gadget for zk prove of encryption with a key.
0.5.0 - 2020-07-07
PoseidonTree
abstraction with padding and Proof gen. capabilities.
0.4.0 - 2020-06-30
- Use NarrowHAMT for ctsize Proofs & padded Branches instead of NStack.
- NStack dependencies are no longer needed nor used.
0.3.0 - 2020-06-23
-
Merkle-Tree Opening inclusion proof generation capabilities.
-
Methods for generating ZKProofs with PLONK getting a kelvin::Branch.
-
Use Nstack for merkle-tree branch type.
0.2.0 - 2020-06-15
-
PLONK as ZKP algorithm for the poseidon-hash functions.
-
Optimization on the Sponge hash fn to skip useless addition if the width of the messages is the appropiate one to do it. (
WIDTH < HADES_WIDTH -1
).
- Both the merkle-hash and the sponge-hash techniques use now PLONK instead of Bulletproofs.
- Bulletproofs and Curve25519 as dependencies since we no longer use them.
0.1.0 - 2020-02-10
- Poseidon252 Sponge-hash impl with BulletProofs.
- Variants of sponge for
Scalar
&Gadget(Variable/LC)
.