zcash-haskell/CHANGELOG.md
Rene Vergara dea960c2ac
Functions to handle commitment tree nodes for Sapling and Orchard (#100)
This PR includes the functions for hashing commitment nodes for both Sapling and Orchard. It also includes functions to validate tree roots and Merkle paths.

Reviewed-on: https://git.vergara.tech///Vergara_Tech/zcash-haskell/pulls/100
Co-authored-by: Rene Vergara <rene@vergara.network>
Co-committed-by: Rene Vergara <rene@vergara.network>
2024-11-15 18:48:36 +00:00

6.9 KiB

Changelog for zcash-haskell

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.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 ShieldedOutputs 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