# Changelog for zcash-haskell All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [0.7.6.0] ### Changed - Removed workaround for missing `time` field in Zebra's `getblock` response. ## [0.7.5.0] ### Added - Sapling commitment node functions - Sapling Merkle path test ### Changed - Upgraded Rust dependencies to latest versions: - `zcash_primitives` 0.19.0 - `zcash_client_backend` 0.14.0 - `orchard` 0.10.0 - `sapling-crypto` 0.3.0 - `incrementalmerkletree` 0.7.0 - `zip32` 0.1.2 ## [0.7.4.0] ### Added - `MerklePath` ## [0.7.3.0] ### Added - Function to create an Orchard hash from a note commitment - Function to hash Orchard commitments ### Changed - Modified frontiers to use `HexString` for ommers - Optimized `createTransaction` ## [0.7.2.0] ### Changed - Modified Sapling commitment trees to use Frontier ## [0.7.1.1] ### Added - `ToJSON` instance for `BlockResponse` ### Changed - Updated libraries: - conduit - data-fix - happy - happy-lib - http-conduit - iproute - mono-traversable - network - secp256k1-haskell - strict - typed-process ## [0.7.1.0] ### Added - Type `OrchardFrontier` ### Changed - Modified Orchard commitment trees functions to use Frontier ## [0.7.0.2] ### Changed - Modified witness update functions to skip the process if no commitments are present ## [0.7.0.1] ### Added - New error type `PrivacyPolicyError` ## [0.7.0.0] - Implement `wagyu-zcash-parameters` in Rust bindings ## [0.6.2.3] ### Fixed - Decoding of unified addresses with no transparent receivers ## [0.6.2.2] - Added JSON instances for `ZcashNet` - Added JSON instances for `Transaction` - Added `ValidAddress` ## [0.6.2.1] ### Changed - Modified the parsing of raw transactions for shielded outputs - Upgraded to GHC 9.6.5 ## [0.6.2.0] ### Changed - Performance enhancement for transaction creation ## [0.6.1.1] ### Added - Type for transaction creation errors - Types for Sapling circuit parameters - Function to create transaction - Function to derive distinct transparent spending keys ### Changed - Add `Read` instance for `Rseed` ## [0.6.1.0] ### Added - Function to create a raw transaction - New types for transaction creation: - `Rseed` - `TransparentTxSpend` - `SaplingTxSpend` - `OrchardTxSpend` - `OutgoingNote` - Rust crates: - `secp256k1` - `jubjub` - `rand_core` ### Changed - `DecodedNote` type now includes a field for `rho` and one for `rseed` ## [0.6.0.0] ### Added - Rust crates: - `sapling-crypto` 0.1.3 ### Changed - Modified handling of `ShieldedOutput`s based on new Rust crates - Upgraded Rust crates: - `orchard` to 0.7.1 - `zcash_primitives` to 0.14.0 - `zcash_client_backend` to 0.11.1 ## [0.5.5.4] ### Added - Functions to update Sapling witnesses. - Functions to update Orchard witnesses. ## [0.5.5.3] ### Added - Added function to generate an `ExchangeAddress` in Human Readable Format Using a `TransparentAddress` in HRF - `encodeExchangeAddress` a function to create a `ExchangeAddress` in HRF - `decodeExchangeAddress` a function to obtain a `TransparentAddress` object from an `ExchangeAddress` in HRF - Added new type `ExchangeAddress` ### Fixed - Orchard note nullifier calculation - Sapling spend field parsing ## [0.5.5.2] ### Added - Added function to encode a Sappling Address in Human Readable Format Using a SaplingReceiver `encodeSaplingAddress` a zcash sapling address is returned or Nothing if the function fails - Added decoding and encoding test ## [0.5.5.1] ### Added - Added unction to decode a Sappling Address in Human Readable Format `decodeSaplingAddress` returns 43 byte array containing - Added a new Datatype `SaplingAddress` - Added a new FFI function `rust_wrapper_decode_sapling_address` to haskell-rust interface ### Changed - `TransparentAddress` type refactored - `TransparentReceiver` added to replace old `TransparentAddress` - `sha256` Function moved outside of `encodeTransparentReceiver` ## [0.5.5.0] ### Added - Added unction to decode Transparent Address in Human Readable Format ### Changed - `TransparentAddress` type refactored - `TransparentReceiver` added to replace old `TransparentAddress` - `sha256` Function moved outside of `encodeTransparentReceiver` ## [0.5.4.1] ### Added - Functions to handle Sapling commitment trees, incremental witnesses and note positions ## [0.5.4.0] ### Added - Function to decode Orchard actions with a spending key - Functions for Bech32 encoding - Function to encode a Sapling address ## [0.5.3.0] ### Added - Function to decode Sapling outputs with a spending key ### Fixed - Parsing of `TxIn` for FFI ## [0.5.2.0] ### Added - Functionality to parse transparent bundles from Zebra - Types for transparent `TxIn`, `TxOut`, `OutPoint` ## [0.5.1.0] ### Added - Functionality to capture Sapling Spends ### Changed - Modified the `makeZebraCall` function to handle errors explicitly - Modified the RPC response to handle missing `result` field ## [0.5.0.1] ### Added - Function to encode a human-readable transparent address - Function to generate a seed phrase - Implementations of `Read` for types - Function to make RPC calls to `zebrad` - Function to encode unified addresses from receivers - Function to generate an Orchard spending key - Constants for Zcash protocol - Types for Spending Keys and Receivers for Sapling and Orchard - Function to generate an Orchard receiver - Function to generate a Sapling receiver - Function to generate a Transparent receiver ### Changed - Update installation to `cabal` - Updated Rust crates: - `bech32` to 0.11 - `orchard` to 0.7.0 - `zcash_note_encryption` to 0.4.0 - `zcash_primitives` to 0.13.0 - `zcash_client_backend` to 0.10.0 - `zip32` to 0.1.0 - Changed the `UnifiedAddress` to allow for optional shielded receivers ### Removed - `Makefile` ## [0.3.0] ### Added - Type to represent a transparent address/receiver ### Changed - Full decoding of Unified Address ## [0.2.0] ### Added - `matchOrchardAddress` function to ensure a UA matches a UVK and corresponding tests - `makeZcashCall` function moved into this library - `RpcResponse`, `RpcCall` types moved into this library - Functions to decode Sapling transactions - Tests for Sapling decoding - Type for block response - Type for raw transaction response - JSON parsers for block response, transaction response, `ShieldedOutput` and `OrchardAction` - Tests for JSON parsers - Haddock annotations ### Changed - Rearranged modules for cleaner dependencies. - Upgrade to Haskell LTS 21.6 ## [0.1.0] - 2023-06-14 ### Added - Function `decodeHexText` - Function `decodeBech32` - Function `f4Jumble` - Function `f4UnJumble` - Function `isValidShieldedAddress` - Function `isValidSaplingViewingKey` - Function `matchSaplingAddress` - Function `isValidUnifiedAddress` - Function `decodeUfvk` - Function `decryptOrchardAction` - Type `RawData` - Type `ShieldedOutput` - Type `OrchardAction` - Type `OrchardDecodedAction` - Type `UnifiedFullViewingKey`