Skip to content

Releases: OpenZeppelin/openzeppelin-confidential-contracts

v0.4.1

08 Jun 15:12
d237bd9

Choose a tag to compare

Bug Fixes

  • BatcherConfidential: Enable decryption of the joinedAmount in BatcherConfidential. (#387)

v0.5.0-rc.0

15 May 20:56
49e7145

Choose a tag to compare

v0.5.0-rc.0 Pre-release
Pre-release

Token

  • ERC7984: Remove revert on transfer where the sender has an uninitialized balance. (#357)
  • ERC7984IdentityCheck: Add an ERC7984 extension that checks the identity of the recipient on _update. (#364)
  • ERC7984Rwa: Always call _update on transfers (even force). Bypass restriction via restriction override. (#339)
  • ERC7984Rwa: Add token recovery functionality. (#341)
  • IERC7984Rwa: Add token recovery function and event. (#341)
  • ERC7984Hooked: Add an ERC7984 extension that calls external hooks before and after transfer of confidential tokens. (#332)
  • ERC7984HookModule: Add a base hook module for building modules compatible with ERC7984Hooked. (#351)
  • ERC7984BalanceCapHookModule: An example hook module that enforces a confidential balance cap for the token. (#351)
  • ERC7984HolderCapHookModule: An example hook module that enforces a maximum number of holders for the token. (#351)

Utils

  • FHESafeMath: Add saturatingAdd and saturatingSub functions. (#341)
  • HandleAccessManager: return false by default in _validateHandleAllowance. (#338)

v0.4.0

30 Mar 16:50
7ac7cee

Choose a tag to compare

  • Migrate @fhevm/solidity dependency to 0.11.1 (#311)
  • Upgrade openzeppelin/contracts and openzeppelin/contracts-upgradeable to v5.6.1 (#314)

Token

  • ERC7984ERC20Wrapper: use a bytes32 unwrap request identifier instead of identifying batches by the euint64 unwrap amount. (#326)
  • ERC7984ERC20Wrapper: Support ERC-165 interface detection on ERC7984ERC20Wrapper. (#267)
  • ERC7984ERC20Wrapper: return the amount of wrapped token sent on wrap calls. (#307)
  • ERC7984ERC20Wrapper: return unwrapped amount on unwrap calls (#288)
  • ERC7984ERC20Wrapper: revert on wrap if there is a chance of total supply overflow. (#268)
  • ERC7984Restricted, ERC7984Rwa: Rename isUserAllowed to canTransact (#291)

Finance

  • BatcherConfidential: A batching primitive that enables routing between two ERC7984ERC20Wrapper contracts via a non-confidential route. (#293)

Utils

  • HandleAccessManager: change _validateHandleAllowance to return a boolean and validate it. (#303)

v0.4.0-rc.0

16 Mar 18:30

Choose a tag to compare

v0.4.0-rc.0 Pre-release
Pre-release
  • Migrate @fhevm/solidity dependency to 0.11.1 (#311)
  • Upgrade openzeppelin/contracts and openzeppelin/contracts-upgradeable to v5.6.1 (#314)

Token

  • ERC7984ERC20Wrapper: use a bytes32 unwrap request identifier instead of identifying batches by the euint64 unwrap amount. (#326)
  • ERC7984ERC20Wrapper: Support ERC-165 interface detection on ERC7984ERC20Wrapper. (#267)
  • ERC7984ERC20Wrapper: return the amount of wrapped token sent on wrap calls. (#307)
  • ERC7984ERC20Wrapper: return unwrapped amount on unwrap calls (#288)
  • ERC7984Restricted, ERC7984Rwa: Rename isUserAllowed to canTransact (#291)
  • ERC7984ERC20Wrapper: revert on wrap if there is a chance of total supply overflow. (#268)

Finance

  • BatcherConfidential: A batching primitive that enables routing between two ERC7984ERC20Wrapper contracts via a non-confidential route. (#293)

Utils

  • HandleAccessManager: change _validateHandleAllowance to return a boolean and validate it. (#303)

v0.3.1

07 Jan 14:04
v0.3.1
14f20de

Choose a tag to compare

Bug fixes

  • ERC7984ERC20Wrapper: revert on wrap if there is a chance of total supply overflow. (#268)

v0.3.0

28 Nov 13:44
v0.3.0
f0914b6

Choose a tag to compare

  • Migrate @fhevm/solidity from v0.7.0 to 0.9.1 (#202, #248, #254)

Token

  • Rename all ConfidentialFungibleToken files and contracts to use ERC7984 instead. (#158)
  • ERC7984: Change tokenURI() to contractURI() following change in the ERC. (#209)
  • ERC7984: Support ERC-165 interface detection on ERC-7984. (#246)
  • IERC7984: Change tokenURI() to contractURI() following change in the ERC. (#209)
  • IERC7984: Support ERC-165 interface detection on ERC-7984. (#246)
  • ERC7984Omnibus: Add an extension of ERC7984 that exposes new functions for transferring between confidential subaccounts on omnibus wallets. (#186)
  • ERC7984ObserverAccess: Add an extension for ERC7984, which allows each account to add an observer who is given access to their transfer and balance amounts. (#148)
  • ERC7984Restricted: An extension of ERC7984 that implements user account transfer restrictions. (#182)
  • ERC7984Freezable: Add an extension to ERC7984, which allows accounts granted the "freezer" role to freeze and unfreeze tokens. (#151)
  • ERC7984Rwa: An extension of ERC7984, that supports confidential Real World Assets (RWAs). (#160)

Utils

  • FHESafeMath: Add tryAdd and trySub functions that return 0 upon failure. (#206)
  • FHESafeMath: Support non-initialized inputs in tryIncrease(..)/tryDecrease(..). (#183)

v0.3.0-rc.0

10 Oct 07:23
04342a7

Choose a tag to compare

v0.3.0-rc.0 Pre-release
Pre-release

Token

  • ERC7984: Rename all ConfidentialFungibleToken files and contracts to use ERC7984 instead. (#158)
  • ERC7984: Change tokenURI() to contractURI() following change in the ERC. (#209)
  • IERC7984: Change tokenURI() to contractURI() following change in the ERC. (#209)
  • ERC7984Omnibus: Add an extension of ERC7984 that exposes new functions for transferring between confidential subaccounts on omnibus wallets. (#186)
  • ERC7984ObserverAccess: Add an extension for ERC7984, which allows each account to add an observer who is given access to their transfer and balance amounts. (#148)
  • ERC7984Restricted: An extension of ERC7984 that implements user account transfer restrictions. (#182)
  • ERC7984Freezable: Add an extension to ERC7984, which allows accounts granted the "freezer" role to freeze and unfreeze tokens. (#151)
  • ERC7984Rwa: An extension of ERC7984, that supports confidential Real World Assets (RWAs). (#160)

Utils

  • Migrate @fhevm/solidity from v0.7.0 to 0.8.0. (#202)
  • FHESafeMath: Add tryAdd and trySub functions that return 0 upon failure. (#206)
  • FHESafeMath: Support non-initialized inputs in tryIncrease(..)/tryDecrease(..). (#183)

v0.2.0

15 Aug 02:15
aed3fa1

Choose a tag to compare

  • Upgrade all contracts to use @fhevm/solidity 0.7.0. (#27)

Token

  • IConfidentialFungibleToken: Prefix totalSupply and balanceOf functions with confidential. (#93)
  • IConfidentialFungibleToken: Rename EncryptedAmountDisclosed event to AmountDisclosed. (#93)
  • ConfidentialFungibleToken: Change the default decimals from 9 to 6. (#74)
  • ConfidentialFungibleTokenERC20Wrapper: Add an internal function to allow overriding the max decimals used for wrapped tokens. (#89)
  • ConfidentialFungibleTokenERC20Wrapper: Add an internal function to allow overriding the underlying decimals fallback value. (#133)

Governance

  • VotesConfidential: Add votes governance utility for keeping track of FHE vote delegations. (#40)
  • ConfidentialFungibleTokenVotes: Add an extension of ConfidentialFungibleToken that implements VotesConfidential. (#40)

Finance

  • VestingWalletConfidential: A vesting wallet that releases confidential tokens owned by it according to a defined vesting schedule. (#91)
  • VestingWalletCliffConfidential: A variant of VestingWalletConfidential which adds a cliff period to the vesting schedule. (#91)
  • VestingWalletConfidentialFactory: A generalized factory that allows for batch funding of confidential vesting wallets. (#102)

Misc

  • HandleAccessManager: Minimal contract that adds a function to give allowance to callers for a given ciphertext handle. (#143)
  • ERC7821WithExecutor: Add an abstract contract that inherits from ERC7821 and adds an executor role. (#102)
  • CheckpointsConfidential: Add a library for handling checkpoints with confidential value types. (#60)
  • TFHESafeMath: Renamed to FHESafeMath. (#137)

v0.2.0-rc.2

14 Jul 05:04
432762c

Choose a tag to compare

v0.2.0-rc.2 Pre-release
Pre-release
  • VestingWalletCliffExecutorConfidentialFactory: Renamed to VestingWalletConfidentialFactory and default implementation removed in favor of a user-defined vesting wallet implementation. (#109)

v0.2.0-rc.1

12 Jul 00:39
ed3ca9a

Choose a tag to compare

v0.2.0-rc.1 Pre-release
Pre-release
  • VestingWalletConfidential: A vesting wallet that releases confidential tokens owned by it according to a defined vesting schedule. (#91)
  • VestingWalletCliffConfidential: A variant of VestingWalletConfidential which adds a cliff period to the vesting schedule. (#91)
  • VestingWalletCliffExecutorConfidentialFactory: Fund multiple VestingWalletCliffExecutorConfidential in batch. (#102)
  • ERC7821WithExecutor: Add an abstract contract that inherits from ERC7821 and adds an executor role. (#102)
  • IConfidentialFungibleToken: Prefix totalSupply and balanceOf functions with confidential and change EncryptedAmountDisclosed event to AmountDisclosed. (#93)
  • ConfidentialFungibleToken: Update totalSupply, balanceOf, and EncryptedAmountDisclosed as required by interface changes. (#93)
  • ConfidentialFungibleTokenERC20Wrapper: Add an internal function to allow overriding the maximum decimals value. (#89)