├── .github ├── CODEOWNERS └── workflows │ ├── public-release-v1.0.0.yml │ ├── public-release.yml │ └── test.yml ├── .gitignore ├── .gitmodules ├── LICENSE ├── README.md ├── SECURITY.md ├── example.env.secrets ├── foundry.toml ├── remappings.txt ├── script ├── 1-deploy-deterministic-PermitC.sh ├── DeployDeterministicPermitC.s.sol └── test │ └── generate-coverage-report.sh ├── src ├── CollateralizedPausableFlags.sol ├── Constants.sol ├── DataTypes.sol ├── Errors.sol ├── PermitC.sol ├── interfaces │ ├── IImmutableCreate2Factory.sol │ └── IPermitC.sol ├── libraries │ └── PermitHash.sol └── openzeppelin-optimized │ ├── EIP712.sol │ └── Ownable.sol └── test ├── Base.t.sol ├── DeterministicDeployment.t.sol ├── PermitC1155.ApprovalTransfer.t.sol ├── PermitC1155.PositionApprovalTransfer.t.sol ├── PermitC1155.SignatureTransfer.t.sol ├── PermitC20.ApprovalTransfer.t.sol ├── PermitC20.PositionApprovalTransfer.t.sol ├── PermitC20.SignatureTransfer.sol ├── PermitC721.ApprovalTransfer.t.sol ├── PermitC721.SignatureTransfer.t.sol ├── approve ├── approve.t.sol └── approve.tree ├── benchmarks ├── BenchmarkBase.t.sol ├── forge-metering │ ├── BenchmarkApprovals.t.sol │ ├── BenchmarkApprovedTransferERC20.t.sol │ ├── BenchmarkCancelNonce.t.sol │ └── BenchmarkPermitTransferFromERC20.t.sol ├── manual-metering │ ├── BenchmarkApprovals.t.sol │ ├── BenchmarkApprovedTransferERC20.t.sol │ ├── BenchmarkCancelNonce.t.sol │ └── BenchmarkPermitTransferFromERC20.t.sol └── mocks │ ├── ContractMock.sol │ └── TestERC20.sol ├── invalidateUnorderedApprovalNonces ├── invalidateUnorderedApprovalNonces.t.sol └── invalidateUnorderedApprovalNonces.tree ├── invalidateUnorderedSignatureNonces ├── invalidateUnorderedSignatureNonces.t.sol └── invalidateUnorderedSignatureNonces.tree ├── lockdown ├── lockdown.t.sol └── lockdown.tree ├── mocks ├── ERC1155Mock.sol ├── ERC1155Reverter.sol ├── ERC1271ContractSignerMock.sol ├── ERC1271InvalidContractSignerMock.sol ├── ERC20Mock.sol ├── ERC20Reverter.sol ├── ERC721Mock.sol └── ERC721Reverter.sol ├── permitTransferFrom ├── permitTransferFrom.t.sol ├── permitTransferFrom.tree └── permitTransferFromBatch.tree ├── permitTransferFromWithAdditionalData ├── permitTransferFromWithAdditionalData.tree └── permitTransferFromWithAdditionalDataBatch.tree ├── setApprovalForAll └── setApprovalForAll.tree ├── transferFrom ├── transferFrom.tree └── transferFromBatch.tree ├── updateApprovalBySignature ├── updateApprovalBySignature.tree └── updateApprovalBySignatureBatch.tree └── updateApprovalForAllBySignature └── updateApprovalForAllBySignature.tree /.github/CODEOWNERS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/.github/CODEOWNERS -------------------------------------------------------------------------------- /.github/workflows/public-release-v1.0.0.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/.github/workflows/public-release-v1.0.0.yml -------------------------------------------------------------------------------- /.github/workflows/public-release.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/.github/workflows/public-release.yml -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/.github/workflows/test.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/.gitignore -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/.gitmodules -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/README.md -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/SECURITY.md -------------------------------------------------------------------------------- /example.env.secrets: -------------------------------------------------------------------------------- 1 | RPC_URL= 2 | ETHERSCAN_API_KEY= 3 | USER_ADDRESS= 4 | PK= -------------------------------------------------------------------------------- /foundry.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/foundry.toml -------------------------------------------------------------------------------- /remappings.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/remappings.txt -------------------------------------------------------------------------------- /script/1-deploy-deterministic-PermitC.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/script/1-deploy-deterministic-PermitC.sh -------------------------------------------------------------------------------- /script/DeployDeterministicPermitC.s.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/script/DeployDeterministicPermitC.s.sol -------------------------------------------------------------------------------- /script/test/generate-coverage-report.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/script/test/generate-coverage-report.sh -------------------------------------------------------------------------------- /src/CollateralizedPausableFlags.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/src/CollateralizedPausableFlags.sol -------------------------------------------------------------------------------- /src/Constants.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/src/Constants.sol -------------------------------------------------------------------------------- /src/DataTypes.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/src/DataTypes.sol -------------------------------------------------------------------------------- /src/Errors.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/src/Errors.sol -------------------------------------------------------------------------------- /src/PermitC.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/src/PermitC.sol -------------------------------------------------------------------------------- /src/interfaces/IImmutableCreate2Factory.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/src/interfaces/IImmutableCreate2Factory.sol -------------------------------------------------------------------------------- /src/interfaces/IPermitC.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/src/interfaces/IPermitC.sol -------------------------------------------------------------------------------- /src/libraries/PermitHash.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/src/libraries/PermitHash.sol -------------------------------------------------------------------------------- /src/openzeppelin-optimized/EIP712.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/src/openzeppelin-optimized/EIP712.sol -------------------------------------------------------------------------------- /src/openzeppelin-optimized/Ownable.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/src/openzeppelin-optimized/Ownable.sol -------------------------------------------------------------------------------- /test/Base.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/Base.t.sol -------------------------------------------------------------------------------- /test/DeterministicDeployment.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/DeterministicDeployment.t.sol -------------------------------------------------------------------------------- /test/PermitC1155.ApprovalTransfer.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/PermitC1155.ApprovalTransfer.t.sol -------------------------------------------------------------------------------- /test/PermitC1155.PositionApprovalTransfer.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/PermitC1155.PositionApprovalTransfer.t.sol -------------------------------------------------------------------------------- /test/PermitC1155.SignatureTransfer.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/PermitC1155.SignatureTransfer.t.sol -------------------------------------------------------------------------------- /test/PermitC20.ApprovalTransfer.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/PermitC20.ApprovalTransfer.t.sol -------------------------------------------------------------------------------- /test/PermitC20.PositionApprovalTransfer.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/PermitC20.PositionApprovalTransfer.t.sol -------------------------------------------------------------------------------- /test/PermitC20.SignatureTransfer.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/PermitC20.SignatureTransfer.sol -------------------------------------------------------------------------------- /test/PermitC721.ApprovalTransfer.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/PermitC721.ApprovalTransfer.t.sol -------------------------------------------------------------------------------- /test/PermitC721.SignatureTransfer.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/PermitC721.SignatureTransfer.t.sol -------------------------------------------------------------------------------- /test/approve/approve.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/approve/approve.t.sol -------------------------------------------------------------------------------- /test/approve/approve.tree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/approve/approve.tree -------------------------------------------------------------------------------- /test/benchmarks/BenchmarkBase.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/benchmarks/BenchmarkBase.t.sol -------------------------------------------------------------------------------- /test/benchmarks/forge-metering/BenchmarkApprovals.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/benchmarks/forge-metering/BenchmarkApprovals.t.sol -------------------------------------------------------------------------------- /test/benchmarks/forge-metering/BenchmarkApprovedTransferERC20.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/benchmarks/forge-metering/BenchmarkApprovedTransferERC20.t.sol -------------------------------------------------------------------------------- /test/benchmarks/forge-metering/BenchmarkCancelNonce.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/benchmarks/forge-metering/BenchmarkCancelNonce.t.sol -------------------------------------------------------------------------------- /test/benchmarks/forge-metering/BenchmarkPermitTransferFromERC20.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/benchmarks/forge-metering/BenchmarkPermitTransferFromERC20.t.sol -------------------------------------------------------------------------------- /test/benchmarks/manual-metering/BenchmarkApprovals.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/benchmarks/manual-metering/BenchmarkApprovals.t.sol -------------------------------------------------------------------------------- /test/benchmarks/manual-metering/BenchmarkApprovedTransferERC20.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/benchmarks/manual-metering/BenchmarkApprovedTransferERC20.t.sol -------------------------------------------------------------------------------- /test/benchmarks/manual-metering/BenchmarkCancelNonce.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/benchmarks/manual-metering/BenchmarkCancelNonce.t.sol -------------------------------------------------------------------------------- /test/benchmarks/manual-metering/BenchmarkPermitTransferFromERC20.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/benchmarks/manual-metering/BenchmarkPermitTransferFromERC20.t.sol -------------------------------------------------------------------------------- /test/benchmarks/mocks/ContractMock.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/benchmarks/mocks/ContractMock.sol -------------------------------------------------------------------------------- /test/benchmarks/mocks/TestERC20.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/benchmarks/mocks/TestERC20.sol -------------------------------------------------------------------------------- /test/invalidateUnorderedApprovalNonces/invalidateUnorderedApprovalNonces.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/invalidateUnorderedApprovalNonces/invalidateUnorderedApprovalNonces.t.sol -------------------------------------------------------------------------------- /test/invalidateUnorderedApprovalNonces/invalidateUnorderedApprovalNonces.tree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/invalidateUnorderedApprovalNonces/invalidateUnorderedApprovalNonces.tree -------------------------------------------------------------------------------- /test/invalidateUnorderedSignatureNonces/invalidateUnorderedSignatureNonces.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/invalidateUnorderedSignatureNonces/invalidateUnorderedSignatureNonces.t.sol -------------------------------------------------------------------------------- /test/invalidateUnorderedSignatureNonces/invalidateUnorderedSignatureNonces.tree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/invalidateUnorderedSignatureNonces/invalidateUnorderedSignatureNonces.tree -------------------------------------------------------------------------------- /test/lockdown/lockdown.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/lockdown/lockdown.t.sol -------------------------------------------------------------------------------- /test/lockdown/lockdown.tree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/lockdown/lockdown.tree -------------------------------------------------------------------------------- /test/mocks/ERC1155Mock.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/mocks/ERC1155Mock.sol -------------------------------------------------------------------------------- /test/mocks/ERC1155Reverter.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/mocks/ERC1155Reverter.sol -------------------------------------------------------------------------------- /test/mocks/ERC1271ContractSignerMock.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/mocks/ERC1271ContractSignerMock.sol -------------------------------------------------------------------------------- /test/mocks/ERC1271InvalidContractSignerMock.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/mocks/ERC1271InvalidContractSignerMock.sol -------------------------------------------------------------------------------- /test/mocks/ERC20Mock.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/mocks/ERC20Mock.sol -------------------------------------------------------------------------------- /test/mocks/ERC20Reverter.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/mocks/ERC20Reverter.sol -------------------------------------------------------------------------------- /test/mocks/ERC721Mock.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/mocks/ERC721Mock.sol -------------------------------------------------------------------------------- /test/mocks/ERC721Reverter.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/mocks/ERC721Reverter.sol -------------------------------------------------------------------------------- /test/permitTransferFrom/permitTransferFrom.t.sol: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /test/permitTransferFrom/permitTransferFrom.tree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/permitTransferFrom/permitTransferFrom.tree -------------------------------------------------------------------------------- /test/permitTransferFrom/permitTransferFromBatch.tree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/permitTransferFrom/permitTransferFromBatch.tree -------------------------------------------------------------------------------- /test/permitTransferFromWithAdditionalData/permitTransferFromWithAdditionalData.tree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/permitTransferFromWithAdditionalData/permitTransferFromWithAdditionalData.tree -------------------------------------------------------------------------------- /test/permitTransferFromWithAdditionalData/permitTransferFromWithAdditionalDataBatch.tree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/permitTransferFromWithAdditionalData/permitTransferFromWithAdditionalDataBatch.tree -------------------------------------------------------------------------------- /test/setApprovalForAll/setApprovalForAll.tree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/setApprovalForAll/setApprovalForAll.tree -------------------------------------------------------------------------------- /test/transferFrom/transferFrom.tree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/transferFrom/transferFrom.tree -------------------------------------------------------------------------------- /test/transferFrom/transferFromBatch.tree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/transferFrom/transferFromBatch.tree -------------------------------------------------------------------------------- /test/updateApprovalBySignature/updateApprovalBySignature.tree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/updateApprovalBySignature/updateApprovalBySignature.tree -------------------------------------------------------------------------------- /test/updateApprovalBySignature/updateApprovalBySignatureBatch.tree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/updateApprovalBySignature/updateApprovalBySignatureBatch.tree -------------------------------------------------------------------------------- /test/updateApprovalForAllBySignature/updateApprovalForAllBySignature.tree: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/limitbreakinc/PermitC/HEAD/test/updateApprovalForAllBySignature/updateApprovalForAllBySignature.tree --------------------------------------------------------------------------------