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.
- Replaced the storage slot used for ImplementationAuthority on the proxies, to avoid conflict with ERC-1822 on block explorers. By using the same storage slot, the explorers were identifying this proxy as an ERC-1822, while it's a different implementation here, the storage slot is not used to store the address of the implementation but the address to ImplementationAuthority contract that references the implementation
- Identities are now required to implement the standardized
function isClaimValid(IIdentity _identity, uint256 claimTopic, bytes calldata sig, bytes calldata data) external view returns (bool)
, used for self-attested claims (_identity
is the address of the Identity contract). - Implemented the
isClaimValid
function in theIdentity
contract. - IdFactory now implements the
implementationAuthority()
getter.
- Implemented a new contract
Gateway
to interact with theIdFactory
. TheGateway
contract allows individual accounts (being EOA or contracts) to deploy identities for their own address as a salt. To deploy using a custom salt, a signature from an approved signer is required. - Implemented a new base contract
Verifier
to be extended by contract requiring identity verification based on claims and trusted issuers.
- added method createIdentityWithManagementKeys() that allows the factory to issue identities with multiple management keys.
- tests for the createIdentityWithManagementKeys() method
Version 2.0.0 Audited by Hacken, more details here
- ClaimIssuer
revokeClaim
is now deprecated, usage ofrevokeClaimBySignature(bytes signature)
is preferred.
- Add typechain-types (targeting ethers v5).
- Add tests cases for
execute
andapprove
methods. - Add method
revokeClaimBySignature(bytes signature)
in ClaimIssuer, prefer using this method instead of the now deprecatedrevokeClaim
method. - Add checks on ClaimIssuer to prevent revoking an already revoked claim.
- Added Factory for ONCHAINIDs
- Switch development tooling to hardhat.
- Implemented tests for hardhat (using fixture for faster testing time).
- Prevent calling
approve
method with a non-request execute nonce (added a require onexecutionNone
). - Update NatSpec of
execute
andapprove
methods.
- Remove constructor's visibility
- Ownable 0.8.0
- Context 0.8.0
- Update version to 1.3.0
- Update contracts to SOL =0.8.0
- Update test to work with truffle
- Update truffle-config.js
- Update solhint config
- Custom Upgradable Proxy contract that behaves similarly to the EIP-1822: Universal Upgradeable Proxy Standard (UUPS), except that it points to an Authority contract which in itself points to an implementation (which can be updated).
- New ImplementationAuthority contract that acts as an authority for proxy contracts
- Library Lock contract to ensure no one can manipulate the Logic Contract once it is deployed
- Version contract that gives the versioning information of the implementation contract
- variables in a separate contract (Storage.sol)
- structs in a separate contract (Structs.sol)
- Update contracts to SOL =0.6.9
- Add Constructor on ClaimIssuer Contract
- Fix CI
- ONCHAINID contract uses Proxy based on EIP-1167.
- New contracts,CloneFactory and IdentityFactory
- Github workflows actions
- Build script
- Lint rules for both Solidity and JS
- Ganache-Cli
- Rules for eslint (eslintrc)
- Rules for solhint
- new Tests for Proxy behavior
- Replaced Constructor by "Set" function on ERC734
- "Set" function is callable only once on ERC734
- Replaced Yarn by Npm
- Replaced coverage script by coverage plugin
- old Tests for compatibility with new proxy