- 54d2d1c: Added
getNumberOfSubmittedClaimsview function toIConsensusinterface
-
dee9d7c: Fix deployment Forge script
-
70a43e0: Make devnet build not require Cannon or Node.js
-
826473b: Improve deployment Forge script
- Store deployments in directories indexed by chain
- Create abstract deployment script contract for code reuse
- Make script idempotent (skips deployment when address has code)
- Implement loading deployment functionality (to be used in dave repo)
-
4e448cd: Fix devnet build (preserve historical states)
-
05ecd57: Add deployment script and guide
- 05ecd57: Add deployment script and guide
-
826473b: Improve deployment Forge script
- Store deployments in directories indexed by chain
- Create abstract deployment script contract for code reuse
- Make script idempotent (skips deployment when address has code)
- Implement loading deployment functionality (to be used in dave repo)
- dee9d7c: Fix deployment Forge script
- 70a43e0: Make devnet build not require Cannon or Node.js
- 4e448cd: Fix devnet build (preserve historical states)
- 335414a:
- Add
getNumberOfExecutedOutputs()view function to IApplication interface and implementation. - Add
getNumberOfAcceptedClaims()view function to IConsensus interface and implementations.
- Add
- 85190ad: Bump foundry from 1.1.0 to 1.4.3
- 363ca77: Use API token when publishing to Soldeer
- 4604760: Use the zero hash as salt for all
CREATE2deployments - b36152b: Bump solc from 0.8.29 to 0.8.30
- 1eaf7e1: Bump
@changesets/clifrom 2.22.0 to 2.29.7 - 949e2d1: Bump target EVM version from cancun to prague
- 363ca77: Use API token when publishing to Soldeer
- 85190ad: Bump foundry from 1.4.2 to 1.4.3
- 1eaf7e1: Bump
@usecannon/clifrom 2.22.0 to 2.25.0 - 4604760: Use the zero hash as salt for all
CREATE2deployments - fab54a1: Bump foundry from 1.1.0 to 1.4.2
- b36152b: Bump solc from 0.8.29 to 0.8.30
- 1eaf7e1: Bump
@changesets/clifrom 2.29.4 to 2.29.7 - 949e2d1: Bump target EVM version from cancun to prague
- 335414a:
- Add
getNumberOfExecutedOutputs()view function to IApplication interface and implementation. - Add
getNumberOfAcceptedClaims()view function to IConsensus interface and implementations.
- Add
- 84cb34e: Add dotfiles to
.soldeerignore
- 84cb34e: Add dotfiles to
.soldeerignore
- Added a
getDeploymentBlockNumberfunction to theIApplicationinterface, for improved event listening - Added a
getDataAvailabilityfunction to theIApplicationinterface
- Added the application contract address as input metadata
- Added the base layer chain ID as input metadata
- Added the EIP-4399
PREVRANDAOvalue as input metadata - Added an
InputTooLargeerror to theIInputBoxinterface
- Added an
Outputsinterface with the signatures of all canonical output types (notices,CALLvouchers, andDELEGATECALLvouchers) - Added a
valuefield toCALLvouchers, to encode the amount of Wei transferred through the message call - Added a new type of executable output:
DELEGATECALLvouchers - Added an
executeOutputfunction to theIApplicationinterface - Added a
wasOutputExecutedfunction to theIApplicationinterface - Added a
validateOutputfunction to theIApplicationinterface - Added a
validateOutputHashfunction to theIApplicationinterface - Added an
OutputExecutedevent to theIApplicationinterface - Added an
OutputNotExecutableerror to theIApplicationinterface, for when trying to execute a notice, for example - Added an
OutputNotReexecutableerror to theIApplicationinterface, for when trying to re-execute a voucher, for example - Added an
InsufficientFundserror to theIApplicationinterface, for when trying to execute a voucher with more value than the contract balance - Added an
InvalidOutputHashesSiblingsArrayLengtherror to theIApplicationinterface, for when providing a siblings array with invalid length - Added an
InvalidOutputsMerkleRooterror to theIApplicationinterface, when the outputs Merkle root derived from the validity proof is invalid - Added an
IOutputsMerkleRootValidatorinterface, to substituteIConsensusin theIApplicationinterface - Added a
SafeERC20Transfercontract to be called viaDELEGATECALLvouchers to safely transfer ERC-20 tokens (by checking whethertransferFromreturnstrue) - Added a
LibAddresslibrary for safely calling and delegating calls to foreign contracts - Added a
LibErrorlibrary for raising byte arrays as errors - Added a
LibMerkle32library for verifying Merkle proofs with 32-byte leaves
- Added an
EtherTransferFailederror to theIEtherPortalinterface - Added an
ERC20TransferFailederror to theIERC20Portalinterface
- Added a
submitClaim(address,uint256,bytes32)function to theIConsensusinterface - Added a
getEpochLengthfunction to theIConsensusinterface - Added a
ClaimSubmittedevent to theIConsensusinterface - Added a
ClaimAcceptedevent to theIConsensusinterface - Added a
NotEpochFinalBlockevent to theIConsensusinterface, for when trying to submit a claim with a last processed block that is not at the end of an epoch - Added a
NotPastBlockevent to theIConsensusinterface, for when trying to submit a claim with a last processed block that is not in the past - Added a
NotFirstClaimevent to theIConsensusinterface, for when trying to submit two claims for the same epoch - Added an
IQuoruminterface (which inherits from theIConsensusinterface) - Added an
IQuorumFactoryinterface for instantiating contracts that implement theIQuoruminterface - Added a
Quorumcontract (which implements theIQuoruminterface) - Added a
QuorumFactorycontract (which implements theIQuorumFactoryby instantiatingQuorumcontracts)
- Added a
getDeploymentBlockNumberfunction to theIInputBoxinterface, for improved event listening - Added an
IOwnableinterface with functions from OpenZeppelin'sOwnableabstract contract - Added a Cannonfile to describe the deployment of all singletons (
InputBox, portals, factories, andSafeERC20Transfer) - Added a workflow to publish the contracts source code to Soldeer, a package manager for Solidity dependencies
- Renamed
CartesiDAppasApplication - Renamed
ICartesiDAppasIApplication - Renamed
CartesiDAppFactoryasApplicationFactory - Renamed
ICartesiDAppFactoryasIApplicationFactory
- Changed the semantics of the
inputparameter of theInputAddedevent to encode both payload and metadata - Changed the semantics of the
getInputHashfunction of theIInputBoxinterface to be the hash of the input blob (which encodes both payload and metadata) - Changed the input size limit from 2097088 bytes (~2 MB) to 64 KB to ensure inputs can be merkelized later during Dave PRT disputes
- Changed the
OutputValidityProofstruct to contain just the output index and the output hashes siblings array - Changed the
executeOutputfunction (formerexecuteVoucher) to propagate errors raised by executable outputs (which includes vouchers)
- Changed the ERC-20 portal to only add deposit inputs if the transfers are successful (that is, when
transferFromreturnstrue), removing the need for thesuccessfield - Renamed
InputRelayasPortal - Renamed
IInputRelayasIPortal
- Changed the
IConsensusinterface to inherit from theIOutputsMerkleRootValidatorand ERC-165 interface
- Changed the Node.js package manager used in the repository from
yarntopnpm - Changed the tool to deploy the smart contracts from
hardhat-deployto Cannon - Changed the package manager used to manage Solidity dependencies from Node.js to Soldeer
- Removed the
senderparameter from theInputAddedevent (the sender address is now encoded in the input) - Removed the
InputSizeExceedsLimiterror in favor of theInputTooLargeerror
- Removed the
executeVoucherfunction in favor of the more genericexecuteOutputfunction - Removed the
validateNoticefunction in favor of the more genericvalidateOutputandvalidateOutputHashfunctions - Removed the Boolean return value from the
executeOutput(formerexecuteVoucher) andvalidateOutput(formervalidateNotice) functions - Removed the
VoucherExecutedevent in favor of the more genericOutputExecutedevent - Removed the
voucherIdparameter from theOutputExecutedevent (formerVoucherExecuted) in favor of the more genrericoutputIndexparameter - Removed the
wasVoucherExecutedevent in favor of the more genericwasOutputExecutedfunction - Removed the
withdrawEtherfunction fromApplicationin favor of vouchers with thevaluefield set to the desired amount of Wei to be withdrawn - Removed the
OnlyApplicationerror fromApplicationas it was only used by thewithdrawEtherfunction - Removed the
EtherTransferFailederror fromApplicationas it was only used by thewithdrawEtherfunction
- Removed the
successfield from the ERC-20 deposit input because all ERC-20 deposit inputs are now successful - Removed the
DAppAddressRelaycontract in favor of the application contract address field added as input metadata - Removed the
IDAppAddressRelayinterface
- Removed the
joinfunction from theIConsensusinterface - Removed the
getClaimfunction from theIConsensusinterface in favor of theisOutputsMerkleRootValidfunction from theIOutputsMerkleRootValidatorinterface - Removed the
ApplicationJoinedevent from theIConsensusinterface - Removed the
submitClaim(bytes)function from theIConsensusinterface in favor of thesubmitClaim(address,uint256,bytes32)function - Removed
authorityOwnerparameter fromAuthorityCreatedevent - Removed the
AuthorityWithdrawalFailederror from theAuthoritycontract - Removed the
NewHistoryevent from theAuthoritycontract - Removed the
getHistoryfunction from theAuthoritycontract - Removed the
migrateHistoryToConsensusfunction from theAuthoritycontract - Removed the
setHistoryfunction from theAuthoritycontract - Removed the
withdrawERC20Tokensfunction from theAuthoritycontract
- Removed the
Historycontract - Removed the
IHistoryinterface - Removed the
HistoryFactorycontract - Removed the
IHistoryFactoryinterface - Removed the
AuthorityHistoryPairFactorycontract - Removed the
IAuthorityHistoryPairFactoryinterface - Removed the
getAuthorityHistoryPairFactoryfunction from theISelfHostedApplicationFactoryinterface
- Bumped Solidity from 0.8.19 to 0.8.29
- Bumped OpenZeppelin contracts from 4.9.2 to 5.2.0
- Bumped Foundry from nightly builds to 1.1.0
- Bumped Node.js from 18 to 22
- Bumped Alloy from 0.3.1 to 0.12.4
- 263543d: Avoid conflicting claims in Quorum
- 6e893a7: Make
AuthorityandQuorumvalidate last processed block number
- 101bc7a: Bump solc from 0.8.23 to 0.8.29
-
bc0558f: Rename events:
-
ClaimAcceptance->ClaimAccepted -
ClaimSubmission->ClaimSubmitted -
NewOutputsMerkleRootValidator->OutputsMerkleRootValidatorChanged
-
- 5e19b4b: Add
getDeploymentBlockNumberfunction toIApplicationinterface
- 8fe54d7: Fix workflow that publishes Rust bindings
- 597dc74: Add Cannonfile
- c265308: Make
IConsensusimplement ERC-165
- c265308: Use stable release of Foundry
- 9f940da: Add data availability configuration to application contract
- 910acbb: Bump alloy to 0.8.0
- 68673bd: Restore transaction receipts from Ethereum Sepolia deployment
- 32ee7d7: Raise an error if voucher has more value than the contract has balance
- 9e515d4: Make
IAuthorityFactoryfunctions returnIAuthority - 9e515d4: Made
ISelfHostedApplicationFactoryreturnIApplication - 3ef8cb5: Make
IQuorumFactoryfunctions returnIQuorum
- b7d6477: Add
IOwnableinterface - d425fe1: Add
IQuoruminterface - e1bcf0d: Add
IAuthorityinterface
- 4f28ef9: Bump alloy to 0.3.1 for Rust bindings
- 25da049: Fix alloy dependency in Cargo.toml
- 56a8d11: Generate Alloy bindings in the CI
-
f8c25e9: Added a
lastProcessedBlockNumberparameter toIConsensusfunctions and events. -
3d40890: Removed
authorityOwnerparameter fromAuthorityCreatedevent. -
7f27379: Added an
epochLengthparameter to functions of:IAuthorityFactoryISelfHostedApplicationFactoryIQuorumFactory
- 7f27379: Added a
getEpochLengthfunction toIConsensusinterface.
-
5b46210: Add
validateOutputHashfunction toIApplication -
5b46210: Removed
InputRangestruct -
5b46210: Refactored
IConsensus- Removed
InputRangefrom functions and events - Claim is now output hashes root hash
- Replaced
getEpochHashwithwasClaimAccepted
- Removed
-
5b46210: Updated
wasOutputExecutedfunction signature- Removed
inputIndexparameter - Renamed
outputIndexWithinInputasoutputIndex
- Removed
-
5b46210: Remove functions
getInputBoxandgetPortalsfromIApplication -
5b46210: Removed parameters from
ApplicationcontractsIInputBox(not used)IPortals[](wasted gas onSSTORE, not used)
-
5b46210: Removed support to ERC-165 (not used)
-
5b46210: Remove
IInputBoxandIPortal[]parameters fromIApplicationFactoryandISelfHostedApplicationFactoryfunctions and events -
5b46210: Completely restructured
OutputValidityProof- Removed all fields
- Added
outputIndex - Added
outputHashesSiblings
-
446d05a: Add the following fields as the input metadata:
- The application contract address
- The chain ID
- The latest RANDAO mix of the post beacon state of the previous block
-
eee5e13: Removed ENS-related contracts
- eee5e13: Deploy contracts to Ethereum Sepolia
- eee5e13: Add
SafeERC20Transferto deploy script - eee5e13: Add
QuorumFactoryto deploy script
- 472eb80: Added contract
AssetTransferToENSthat can be used as a destination forDELEGATECALLvouchers to transfer assets to ENS-identified accounts. Added libraryLibAddressfor safe low level call and safe delegate call. - cae579d: Added ENS Portal. Added a new input encoding for ENS inputs.
- 5559379: Add a contract for safe ERC20 transfers. This can be used by delegatecall vouchers.
- d4c1164: Add self-hosted application factory contract
- 8e958f2: Supported the execution of
DELEGATECALLvouchers
- 91d1c115: Remove
EvmInspectfunction
- 91d1c115: Rename parameters of
EvmAdvancefunction
-
f29b098b: Adjusted the GitHub Action that publishes the Rust bindings to crates.io.
- Initialize git submodules recursively
- Install the foundry toolkit
-
d8561fe3: Modified the
OutputValidityProofstruct:- Collapsed the
vouchersEpochRootHashandnoticesEpochRootHashfields into a singleoutputsEpochRootHashfield - Added an
inputRangefield
- Collapsed the
-
d8561fe3: Modified the ERC-20 deposit input:
- Removed the
successfield, because the ERC-20 portal now only adds inputs for successful deposits.
- Removed the
-
d8561fe3: Modified the
CanonicalMachinelibrary:- Collapsed the
VOUCHER_METADATA_LOG2_SIZEandNOTICE_METADATA_LOG2_SIZEconstants into a singleOUTPUT_METADATA_LOG2_SIZEconstant (with the same value). - Collapsed the
EPOCH_VOUCHER_LOG2_SIZEandEPOCH_NOTICE_LOG2_SIZEconstants into a singleEPOCH_OUTPUT_LOG2_SIZEconstant (with the same value). - Updated the value of the
INPUT_MAX_SIZEconstant to reflect a change in the off-chain machine.
- Collapsed the
-
d8561fe3: Modified the
EtherPortalcontract:-
Made it support the following interfaces (as in EIP-165):
IERC165IInputRelayIEtherPortal
-
-
d8561fe3: Modified the
AbstractConsensuscontract:- Removed the
joinfunction - Implemented the
getEpochHashfunction - Added an internal
_acceptClaimfunction
- Removed the
-
13eb18a4: Inputs are now blockchain-agnostic and self-contained blobs.
-
4e2533ef: Include application address in
EvmAdvanceinput. -
d8561fe3: Modified the
IInputRelayinterface:- Made it inherit from
IERC165
- Made it inherit from
-
d8561fe3: Modified the
ERC1155BatchPortalcontract:-
Made it support the following interfaces (as in EIP-165):
IERC165IInputRelayIERC1155BatchPortal
-
-
d8561fe3: Modified the
IEtherPortalinterface:- Added an
EtherTransferFailederror.
- Added an
-
d8561fe3: Bumped
@openzeppelin/contractsfrom4.9.2to5.0.0. -
d8561fe3: Moved
Proofto a dedicated file in thecommondirectory. -
f39e4ef0: Added a
valuefield to vouchers. -
d8561fe3: Moved
OutputValidityProofto a dedicated file in thecommondirectory. -
d8561fe3: Modified the
ICartesiDAppFactoryinterface:-
Renamed it as
IApplicationFactory. -
Added the following parameters to its functions and events:
inputBoxinputRelays
-
-
d8561fe3: Modified the
CartesiDAppcontract:-
Renamed it as
Application. -
Added the following parameters to its constructor:
inputBoxinputRelays
-
Made it support the following interfaces (as in EIP-165):
IApplicationIERC721Receiver
-
Removed the
withdrawEtherfunction. -
Removed the
OnlyApplicationerror. -
Removed the
EtherTransferFailederror.
-
-
d8561fe3: Modified the
ERC1155SinglePortalcontract:-
Made it support the following interfaces (as in EIP-165):
IERC165IInputRelayIERC1155SinglePortal
-
-
d8561fe3: Removed:
- the
Historycontract. - the
IHistoryinterface. - the
HistoryFactorycontract. - the
IHistoryFactoryinterface. - the
AuthorityHistoryPairFactorycontract. - the
IAuthorityHistoryPairFactoryinterface. - the
OutputEncodinglibrary. - the
LibInputlibrary. - the
ApplicationAddressRelaycontract. - the
IApplicationAddressRelayinterface.
- the
-
8892a88b: Include chain ID in
EvmAdvanceinput. -
d8561fe3: Modified the
ICartesiDAppinterface:-
Renamed it as
IApplication. -
Made it inherit from:
IERC721Receiver.IERC1155Receiver(which inherits fromIERC165).
-
Modified the
executeVoucherfunction:- Renamed it as
executeOutput. - Errors raised by low-level calls are bubbled up.
- Changed the type of the
proofparameter toOutputValidityProof. - Removed the boolean return value.
- Renamed it as
-
Modified the
validateNoticefunction:- Renamed it as
validateOutput. - Changed type of the
proofparameter toOutputValidityProof. - Removed the boolean return value.
- Renamed it as
-
Modified the
VoucherExecutedevent:- Renamed it as
OutputExecuted. - Split the
voucherIdparameter intoinputIndexandoutputIndexWithinInputparameters. - Added an
outputparameter.
- Renamed it as
-
Modified the
wasVoucherExecutedfunction:- Renamed it as
wasOutputExecuted.
- Renamed it as
-
Added a
getInputBoxfunction. -
Added a
getInputRelaysfunction. -
Added an
InputIndexOutOfRangeerror. -
Added an
OutputNotExecutableerror. -
Added an
OutputNotReexecutableerror. -
Added an
IncorrectEpochHasherror. -
Added an
IncorrectOutputsEpochRootHasherror. -
Added an
IncorrectOutputHashesRootHasherror.
-
-
13eb18a4: Modified the
IInputBoxinterface:-
Modified the
InputAddedevent:- Removed the
senderparameter. - Changed the semantics of the
inputparameter.
- Removed the
-
Added an
InputTooLargeerror.
-
-
d8561fe3: Modified the
CartesiDAppFactorycontract:- Renamed it as
ApplicationFactory.
- Renamed it as
-
d8561fe3: Modified the
InputRelaycontract:-
Made it support the following interfaces (as in EIP-165):
IERC165IInputRelay
-
-
d8561fe3: Modified the
Authoritycontract:- Removed the
AuthorityWithdrawalFailederror - Removed the
NewHistoryevent - Removed the
getClaimfunction - Removed the
getHistoryfunction - Removed the
joinfunction - Removed the
migrateHistoryToConsensusfunction - Removed the
setHistoryfunction - Removed the
submitClaim(bytes)function - Removed the
withdrawERC20Tokensfunction - Implemented the
submitClaim(address,(uint64,uint64),bytes32)function
- Removed the
-
d8561fe3: Completely modified the
IConsensusinterface:- Removed the
joinfunction - Removed the
getClaimfunction - Removed the
ApplicationJoinedevent - Added a
submitClaimfunction - Added a
getEpochHashfunction - Added a
ClaimSubmissionevent - Added a
ClaimAcceptanceevent
- Removed the
-
d8561fe3: Bumped the Solidity compiler from
0.8.19to0.8.23. -
d8561fe3: Modified the
IERC20Portalinterface:- Added an
ERC20TransferFailederror.
- Added an
-
d8561fe3: Modified the
ERC20Portalcontract:-
Made it support the following interfaces (as in EIP-165):
IERC165IInputRelayIERC20Portal
-
-
d8561fe3: Removed deployments to Goerli testnets (L1 and L2s).
-
d8561fe3: Modified the
ERC721Portalcontract:-
Made it support the following interfaces (as in EIP-165):
IERC165IInputRelayIERC721Portal
-
-
d8561fe3: Added:
- an
Outputsinterface - an
InputRangestruct - a
LibInputRangelibrary - a
Quorumcontract (which implements theIConsensusinterface) - a
QuorumFactorycontract - an
IQuorumFactoryinterface
- an
- 321e29a: Support deployment to
arbitrum_sepoliaandoptimism_sepolianetworks. - 618121e: Bumped
@cartesi/utilfrom 6.0.0 to 6.1.0.
AuthorityFactory: Allows anyone to deployAuthoritycontracts. Supports deterministic deployment.HistoryFactory: Allows anyone to deployHistorycontracts. Supports deterministic deployment.AuthorityHistoryPairFactory: Allows anyone to deployAuthorityandHistorycontract pairs (such thatHistoryis owned byAuthority, andAuthoritystores/retrieves claims fromHistory). Supports deterministic deployment.Authority: Removed deployment files and script.History: Removed deployment files and script.
- Added
InvalidClaimIndexerror inHistorycontract - Made portals and relays inherit
InputRelay - Renamed
inboxInputIndextoinputIndexin contracts - Deployed contracts deterministically with
CREATE2factory - Renamed fields in
OutputValidityProofstructure - Updated
@cartesi/utilto 6.0.0 - Removed base portal and relay contracts and interfaces
- Removed
ConsensusCreatedevent fromAuthoritycontract - Removed
IInputBoxparameter fromAuthorityconstructor - Fixed input size limit in
InputBoxcontract
- Added input relay interface and base contract
- Deployed ERC-1155 portals
- Added
RPC_URLenvironment variable during deployment - Started using custom errors in contracts
- Improved proof generation system for on-chain tests
- Simplified the on-chain architecture (not backwards-compatible)
CartesiDAppdoes not implement EIP-2535 anymore- Made each Portal a contract of their own, and shared amongst all the DApps
- Made inputs added by Portals more compact by using the packed ABI encoding instead of the standard one
- Made ERC-20 deposits more generic by allowing base layer transfers to fail, and adding a boolean field signaling whether it was successful or not
- Made ERC-721 deposits more generic by adding an arbitrary data field to be interpreted by the off-chain machine in the execution layer
- Moved the input boxes of every DApp into a single, permissionless contract
- Input boxes are now append-only—they are not cleared every new epoch (old Input Facet)
- Modularized the consensus layer (a DApp can now seamlessly change its consensus model)
- Modularized the claim storage layer (a consensus can now seamlessly change how it stores claims)
- Voucher bitmask position is now determined by the input index (in the input box) and output index
- Validators need now to specify the range of inputs of each claim they submit on-chain
- Removed Setup Input
- Removed Quorum consensus model implementation (up to 8 validators)
- Removed Bank contract
- Removed DApp configuration parameters related to the off-chain machine specs (now defined as constants)
- Removed
epochIndexfield fromOutputValidityProofstruct - Removed headers from inputs added by trusted permissionless contracts like portals and relayers
- Added Authority consensus model implementation (single validator)
- Added Simple claim storage implementation (one claim per DApp)
- Added Library that defines several constants related to the canonical off-chain machine
- DApp Address Relay contract (allows the off-chain machine to know the DApp's address)
- Added script for updating proofs used in unit tests
- Adopted Foundry for contract testing (Hardhat is still being used for deployment)
- Documentation updates
- Deploy to Arbitrum Goerli and Optimism Goerli
- Add
validateNoticefunction to OutputFacet
- Moved logic from
erc721Depositfunction toonERC721Received - Renamed
ERC721Depositedevent toERC721Receivedand addedoperatorfield - Validators who lost a dispute are removed from the validator set, and cannot redeem fees from previous claims
- Changed the visibility of
Bank's state variables to private - Changed the visibility of
LibClaimsMask's functions to internal - Removed
erc721Depositfunction (callsafeTransferFromfrom the ERC-721 contract instead) - Removed
erc20Withdrawalfunction call (vouchers now calltransferfrom the ERC-20 contract directly instead) - Gas optimizations
- Add factory contract to deploy rollups diamond
- Mermaid diagram of the on-chain rollups on README
- Bumped solc version to 0.8.13
- Updated architecture to Diamonds design pattern
- Added
FeeManagerFacetandBankcontracts - Template Hash
- Setup Input
- NFT Portal
- Removed Specific ERC-20 Portal
First release.