From d56afa9d84fafc15040ac70f791aab135a904ce5 Mon Sep 17 00:00:00 2001 From: ravinagill15 Date: Thu, 23 Jan 2025 17:56:54 -0800 Subject: [PATCH 1/2] verify flow --- verification_artifacts/FiatTokenProxy.json | 199 +++ verification_artifacts/FiatTokenV2_2.json | 1470 ++++++++++++++++++ verification_artifacts/SignatureChecker.json | 80 + verification_artifacts/input.json | 15 + 4 files changed, 1764 insertions(+) create mode 100644 verification_artifacts/FiatTokenProxy.json create mode 100644 verification_artifacts/FiatTokenV2_2.json create mode 100644 verification_artifacts/SignatureChecker.json create mode 100644 verification_artifacts/input.json diff --git a/verification_artifacts/FiatTokenProxy.json b/verification_artifacts/FiatTokenProxy.json new file mode 100644 index 000000000..e19bffc4d --- /dev/null +++ b/verification_artifacts/FiatTokenProxy.json @@ -0,0 +1,199 @@ +{ + "compiler": { "version": "0.6.12+commit.27d51765" }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "implementationContract", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousAdmin", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newAdmin", + "type": "address" + } + ], + "name": "AdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { "stateMutability": "payable", "type": "fallback" }, + { + "inputs": [], + "name": "admin", + "outputs": [ + { "internalType": "address", "name": "", "type": "address" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "newAdmin", "type": "address" } + ], + "name": "changeAdmin", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "implementation", + "outputs": [ + { "internalType": "address", "name": "", "type": "address" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + } + ], + "name": "upgradeTo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newImplementation", + "type": "address" + }, + { "internalType": "bytes", "name": "data", "type": "bytes" } + ], + "name": "upgradeToAndCall", + "outputs": [], + "stateMutability": "payable", + "type": "function" + } + ], + "devdoc": { + "details": "This contract proxies FiatToken calls and enables FiatToken upgrades", + "kind": "dev", + "methods": { + "admin()": { "returns": { "_0": "The address of the proxy admin." } }, + "changeAdmin(address)": { + "details": "Changes the admin of the proxy. Only the current admin can call this function.", + "params": { + "newAdmin": "Address to transfer proxy administration to." + } + }, + "implementation()": { + "returns": { "_0": "The address of the implementation." } + }, + "upgradeTo(address)": { + "details": "Upgrade the backing implementation of the proxy. Only the admin can call this function.", + "params": { + "newImplementation": "Address of the new implementation." + } + }, + "upgradeToAndCall(address,bytes)": { + "details": "Upgrade the backing implementation of the proxy and call a function on the new implementation. This is useful to initialize the proxied contract.", + "params": { + "data": "Data to send as msg.data in the low level call. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/develop/abi-spec.html#function-selector-and-argument-encoding.", + "newImplementation": "Address of the new implementation." + } + } + }, + "title": "FiatTokenProxy", + "version": 1 + }, + "userdoc": { "kind": "user", "methods": {}, "version": 1 } + }, + "settings": { + "compilationTarget": { + "contracts/v1/FiatTokenProxy.sol": "FiatTokenProxy" + }, + "evmVersion": "istanbul", + "libraries": {}, + "metadata": { "bytecodeHash": "ipfs" }, + "optimizer": { "enabled": true, "runs": 10000000 }, + "remappings": [ + ":@ensdomains/=node_modules/@ensdomains/", + ":@openzeppelin/=node_modules/@openzeppelin/", + ":@solidity-parser/=node_modules/prettier-plugin-solidity/node_modules/@solidity-parser/", + ":ds-test/=lib/forge-std/lib/ds-test/src/", + ":eth-gas-reporter/=node_modules/eth-gas-reporter/", + ":forge-std/=lib/forge-std/src/", + ":hardhat/=node_modules/hardhat/" + ] + }, + "sources": { + "contracts/upgradeability/AdminUpgradeabilityProxy.sol": { + "keccak256": "0x55b58fa45bd1ebf255d2eabbd9257445fce2ae7486e8e683623d3375d2d93d1e", + "license": "Apache-2.0", + "urls": [ + "bzz-raw://6ec18ce29bdd44706fce5cdaefb0a6ca4129c1c2f8375cb74d8c6790aaaddec4", + "dweb:/ipfs/QmXEVnvLp4xAPEgSAkotawcCcggsdDQjAvG4crPuWfA4U9" + ] + }, + "contracts/upgradeability/Proxy.sol": { + "keccak256": "0x2cfa23c03d22d153d41e3b4f2c68e46e4b207205b5d12345b43e575b1da8164a", + "license": "Apache-2.0", + "urls": [ + "bzz-raw://3ff3a86ef54b3763b0ff3e7c3d27a3000d7d2e5ede7c269ab8f0123147cda179", + "dweb:/ipfs/QmVki2G1PsmuaS7npjuwikNUqvfBDgFrmYUkdkEJqaDwxK" + ] + }, + "contracts/upgradeability/UpgradeabilityProxy.sol": { + "keccak256": "0x7d1312c9090e5fb98d6ab676edcf0c64099e7a251a18091566816a6a2dece517", + "license": "Apache-2.0", + "urls": [ + "bzz-raw://f86a893a20bdb283cec644ddeeb37b766e604ea136f6157341fad669d7ceedfe", + "dweb:/ipfs/QmQJKYTr2BmLNyTiYVXMYEJWE3JCsR1p7j3fWDacZ3V5vf" + ] + }, + "contracts/v1/FiatTokenProxy.sol": { + "keccak256": "0x7ee55764f74b2983880409ab3873ad6a7299231cd48cb4b9d40a10259d012424", + "license": "Apache-2.0", + "urls": [ + "bzz-raw://95d2b6c3a7c76d2f88a6f3b3785a20460e58bac9d46c6db2bd62496dca06f65b", + "dweb:/ipfs/QmdX71TWN96ScnvEYHNVnmJfhgfJdF2pE1pgVcjLcbugrK" + ] + }, + "node_modules/@openzeppelin/contracts/utils/Address.sol": { + "keccak256": "0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea", + "license": "MIT", + "urls": [ + "bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c", + "dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN" + ] + } + }, + "version": 1 +} diff --git a/verification_artifacts/FiatTokenV2_2.json b/verification_artifacts/FiatTokenV2_2.json new file mode 100644 index 000000000..d21b5e9e0 --- /dev/null +++ b/verification_artifacts/FiatTokenV2_2.json @@ -0,0 +1,1470 @@ +{ + "compiler": { "version": "0.6.12+commit.27d51765" }, + "language": "Solidity", + "output": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "authorizer", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "nonce", + "type": "bytes32" + } + ], + "name": "AuthorizationCanceled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "authorizer", + "type": "address" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "nonce", + "type": "bytes32" + } + ], + "name": "AuthorizationUsed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_account", + "type": "address" + } + ], + "name": "Blacklisted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newBlacklister", + "type": "address" + } + ], + "name": "BlacklisterChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "burner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Burn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newMasterMinter", + "type": "address" + } + ], + "name": "MasterMinterChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "minter", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Mint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "minter", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "minterAllowedAmount", + "type": "uint256" + } + ], + "name": "MinterConfigured", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "oldMinter", + "type": "address" + } + ], + "name": "MinterRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { "anonymous": false, "inputs": [], "name": "Pause", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newAddress", + "type": "address" + } + ], + "name": "PauserChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "newRescuer", + "type": "address" + } + ], + "name": "RescuerChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "_account", + "type": "address" + } + ], + "name": "UnBlacklisted", + "type": "event" + }, + { "anonymous": false, "inputs": [], "name": "Unpause", "type": "event" }, + { + "inputs": [], + "name": "CANCEL_AUTHORIZATION_TYPEHASH", + "outputs": [ + { "internalType": "bytes32", "name": "", "type": "bytes32" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { "internalType": "bytes32", "name": "", "type": "bytes32" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [ + { "internalType": "bytes32", "name": "", "type": "bytes32" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "RECEIVE_WITH_AUTHORIZATION_TYPEHASH", + "outputs": [ + { "internalType": "bytes32", "name": "", "type": "bytes32" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TRANSFER_WITH_AUTHORIZATION_TYPEHASH", + "outputs": [ + { "internalType": "bytes32", "name": "", "type": "bytes32" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "address", "name": "spender", "type": "address" } + ], + "name": "allowance", + "outputs": [ + { "internalType": "uint256", "name": "", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "value", "type": "uint256" } + ], + "name": "approve", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "authorizer", + "type": "address" + }, + { "internalType": "bytes32", "name": "nonce", "type": "bytes32" } + ], + "name": "authorizationState", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "name": "balanceOf", + "outputs": [ + { "internalType": "uint256", "name": "", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_account", "type": "address" } + ], + "name": "blacklist", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "blacklister", + "outputs": [ + { "internalType": "address", "name": "", "type": "address" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "_amount", "type": "uint256" } + ], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "authorizer", + "type": "address" + }, + { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "name": "cancelAuthorization", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "authorizer", + "type": "address" + }, + { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, + { "internalType": "bytes", "name": "signature", "type": "bytes" } + ], + "name": "cancelAuthorization", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "minter", "type": "address" }, + { + "internalType": "uint256", + "name": "minterAllowedAmount", + "type": "uint256" + } + ], + "name": "configureMinter", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "currency", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "decrement", "type": "uint256" } + ], + "name": "decreaseAllowance", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "increment", "type": "uint256" } + ], + "name": "increaseAllowance", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "string", "name": "tokenName", "type": "string" }, + { "internalType": "string", "name": "tokenSymbol", "type": "string" }, + { + "internalType": "string", + "name": "tokenCurrency", + "type": "string" + }, + { "internalType": "uint8", "name": "tokenDecimals", "type": "uint8" }, + { + "internalType": "address", + "name": "newMasterMinter", + "type": "address" + }, + { "internalType": "address", "name": "newPauser", "type": "address" }, + { + "internalType": "address", + "name": "newBlacklister", + "type": "address" + }, + { "internalType": "address", "name": "newOwner", "type": "address" } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "string", "name": "newName", "type": "string" } + ], + "name": "initializeV2", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "lostAndFound", + "type": "address" + } + ], + "name": "initializeV2_1", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accountsToBlacklist", + "type": "address[]" + }, + { "internalType": "string", "name": "newSymbol", "type": "string" } + ], + "name": "initializeV2_2", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_account", "type": "address" } + ], + "name": "isBlacklisted", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" } + ], + "name": "isMinter", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "masterMinter", + "outputs": [ + { "internalType": "address", "name": "", "type": "address" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_to", "type": "address" }, + { "internalType": "uint256", "name": "_amount", "type": "uint256" } + ], + "name": "mint", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "minter", "type": "address" } + ], + "name": "minterAllowance", + "outputs": [ + { "internalType": "uint256", "name": "", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" } + ], + "name": "nonces", + "outputs": [ + { "internalType": "uint256", "name": "", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { "internalType": "address", "name": "", "type": "address" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pauser", + "outputs": [ + { "internalType": "address", "name": "", "type": "address" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "value", "type": "uint256" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" }, + { "internalType": "bytes", "name": "signature", "type": "bytes" } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "value", "type": "uint256" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "value", "type": "uint256" }, + { + "internalType": "uint256", + "name": "validAfter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "validBefore", + "type": "uint256" + }, + { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, + { "internalType": "bytes", "name": "signature", "type": "bytes" } + ], + "name": "receiveWithAuthorization", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "value", "type": "uint256" }, + { + "internalType": "uint256", + "name": "validAfter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "validBefore", + "type": "uint256" + }, + { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "name": "receiveWithAuthorization", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "minter", "type": "address" } + ], + "name": "removeMinter", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "tokenContract", + "type": "address" + }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "rescueERC20", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rescuer", + "outputs": [ + { "internalType": "address", "name": "", "type": "address" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { "internalType": "uint256", "name": "", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "value", "type": "uint256" } + ], + "name": "transfer", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "value", "type": "uint256" } + ], + "name": "transferFrom", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "newOwner", "type": "address" } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "value", "type": "uint256" }, + { + "internalType": "uint256", + "name": "validAfter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "validBefore", + "type": "uint256" + }, + { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, + { "internalType": "bytes", "name": "signature", "type": "bytes" } + ], + "name": "transferWithAuthorization", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "value", "type": "uint256" }, + { + "internalType": "uint256", + "name": "validAfter", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "validBefore", + "type": "uint256" + }, + { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "name": "transferWithAuthorization", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_account", "type": "address" } + ], + "name": "unBlacklist", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "unpause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newBlacklister", + "type": "address" + } + ], + "name": "updateBlacklister", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_newMasterMinter", + "type": "address" + } + ], + "name": "updateMasterMinter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "_newPauser", "type": "address" } + ], + "name": "updatePauser", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "newRescuer", "type": "address" } + ], + "name": "updateRescuer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "version", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "pure", + "type": "function" + } + ], + "devdoc": { + "kind": "dev", + "methods": { + "DOMAIN_SEPARATOR()": { + "returns": { "_0": "The bytes32 EIP712 domain separator." } + }, + "allowance(address,address)": { + "params": { + "owner": "The token owner's address.", + "spender": "The spender's address." + }, + "returns": { "_0": "The remaining allowance." } + }, + "approve(address,uint256)": { + "params": { + "spender": "The spender's address.", + "value": "The allowance amount." + }, + "returns": { "_0": "True if the operation was successful." } + }, + "authorizationState(address,bytes32)": { + "details": "Nonces are randomly generated 32-byte data unique to the authorizer's address", + "params": { + "authorizer": "Authorizer's address", + "nonce": "Nonce of the authorization" + }, + "returns": { "_0": "True if the nonce is used" } + }, + "balanceOf(address)": { + "params": { "account": "The address to check." }, + "returns": { "_0": "balance The fiat token balance of the account." } + }, + "blacklist(address)": { + "params": { "_account": "The address to blacklist." } + }, + "burn(uint256)": { + "details": "The caller must be a minter, must not be blacklisted, and the amount to burn should be less than or equal to the account's balance.", + "params": { "_amount": "the amount of tokens to be burned." } + }, + "cancelAuthorization(address,bytes32,bytes)": { + "details": "Works only if the authorization is not yet used. EOA wallet signatures should be packed in the order of r, s, v.", + "params": { + "authorizer": "Authorizer's address", + "nonce": "Nonce of the authorization", + "signature": "Signature bytes signed by an EOA wallet or a contract wallet" + } + }, + "cancelAuthorization(address,bytes32,uint8,bytes32,bytes32)": { + "details": "Works only if the authorization is not yet used.", + "params": { + "authorizer": "Authorizer's address", + "nonce": "Nonce of the authorization", + "r": "r of the signature", + "s": "s of the signature", + "v": "v of the signature" + } + }, + "configureMinter(address,uint256)": { + "params": { + "minter": "The address of the minter.", + "minterAllowedAmount": "The minting amount allowed for the minter." + }, + "returns": { "_0": "True if the operation was successful." } + }, + "decreaseAllowance(address,uint256)": { + "params": { + "decrement": "Amount of decrease in allowance", + "spender": "Spender's address" + }, + "returns": { "_0": "True if successful" } + }, + "increaseAllowance(address,uint256)": { + "params": { + "increment": "Amount of increase in allowance", + "spender": "Spender's address" + }, + "returns": { "_0": "True if successful" } + }, + "initialize(string,string,string,uint8,address,address,address,address)": { + "params": { + "newBlacklister": "The blacklister address for the fiat token.", + "newMasterMinter": "The masterMinter address for the fiat token.", + "newOwner": "The owner of the fiat token.", + "newPauser": "The pauser address for the fiat token.", + "tokenCurrency": "The fiat currency that the token represents.", + "tokenDecimals": "The number of decimals that the token uses.", + "tokenName": "The name of the fiat token.", + "tokenSymbol": "The symbol of the fiat token." + } + }, + "initializeV2(string)": { "params": { "newName": "New token name" } }, + "initializeV2_1(address)": { + "params": { + "lostAndFound": "The address to which the locked funds are sent" + } + }, + "initializeV2_2(address[],string)": { + "params": { + "accountsToBlacklist": "A list of accounts to migrate from the old blacklist", + "newSymbol": "New token symbol data structure to the new blacklist data structure." + } + }, + "isBlacklisted(address)": { + "params": { "_account": "The address to check." }, + "returns": { + "_0": "True if the account is blacklisted, false if the account is not blacklisted." + } + }, + "isMinter(address)": { + "params": { "account": "The address to check." }, + "returns": { + "_0": "True if the account is a minter, false if the account is not a minter." + } + }, + "mint(address,uint256)": { + "params": { + "_amount": "The amount of tokens to mint. Must be less than or equal to the minterAllowance of the caller.", + "_to": "The address that will receive the minted tokens." + }, + "returns": { "_0": "True if the operation was successful." } + }, + "minterAllowance(address)": { + "params": { "minter": "The address to check." }, + "returns": { "_0": "The remaining minter allowance for the account." } + }, + "nonces(address)": { + "params": { "owner": "Token owner's address (Authorizer)" }, + "returns": { "_0": "Next nonce" } + }, + "owner()": { + "details": "Tells the address of the owner", + "returns": { "_0": "the address of the owner" } + }, + "pause()": { + "details": "called by the owner to pause, triggers stopped state" + }, + "permit(address,address,uint256,uint256,bytes)": { + "details": "EOA wallet signatures should be packed in the order of r, s, v.", + "params": { + "deadline": "The time at which the signature expires (unix time), or max uint256 value to signal no expiration", + "owner": "Token owner's address (Authorizer)", + "signature": "Signature bytes signed by an EOA wallet or a contract wallet", + "spender": "Spender's address", + "value": "Amount of allowance" + } + }, + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": { + "params": { + "deadline": "The time at which the signature expires (unix time), or max uint256 value to signal no expiration", + "owner": "Token owner's address (Authorizer)", + "r": "r of the signature", + "s": "s of the signature", + "spender": "Spender's address", + "v": "v of the signature", + "value": "Amount of allowance" + } + }, + "receiveWithAuthorization(address,address,uint256,uint256,uint256,bytes32,bytes)": { + "details": "This has an additional check to ensure that the payee's address matches the caller of this function to prevent front-running attacks. EOA wallet signatures should be packed in the order of r, s, v.", + "params": { + "from": "Payer's address (Authorizer)", + "nonce": "Unique nonce", + "signature": "Signature bytes signed by an EOA wallet or a contract wallet", + "to": "Payee's address", + "validAfter": "The time after which this is valid (unix time)", + "validBefore": "The time before which this is valid (unix time)", + "value": "Amount to be transferred" + } + }, + "receiveWithAuthorization(address,address,uint256,uint256,uint256,bytes32,uint8,bytes32,bytes32)": { + "details": "This has an additional check to ensure that the payee's address matches the caller of this function to prevent front-running attacks.", + "params": { + "from": "Payer's address (Authorizer)", + "nonce": "Unique nonce", + "r": "r of the signature", + "s": "s of the signature", + "to": "Payee's address", + "v": "v of the signature", + "validAfter": "The time after which this is valid (unix time)", + "validBefore": "The time before which this is valid (unix time)", + "value": "Amount to be transferred" + } + }, + "removeMinter(address)": { + "params": { "minter": "The address of the minter to remove." }, + "returns": { "_0": "True if the operation was successful." } + }, + "rescueERC20(address,address,uint256)": { + "params": { + "amount": "Amount to withdraw", + "to": "Recipient address", + "tokenContract": "ERC20 token contract address" + } + }, + "rescuer()": { "returns": { "_0": "Rescuer's address" } }, + "totalSupply()": { + "returns": { "_0": "The totalSupply of the fiat token." } + }, + "transfer(address,uint256)": { + "params": { "to": "Payee's address.", "value": "Transfer amount." }, + "returns": { "_0": "True if the operation was successful." } + }, + "transferFrom(address,address,uint256)": { + "details": "The caller must have some fiat token allowance on the payer's tokens.", + "params": { + "from": "Payer's address.", + "to": "Payee's address.", + "value": "Transfer amount." + }, + "returns": { "_0": "True if the operation was successful." } + }, + "transferOwnership(address)": { + "details": "Allows the current owner to transfer control of the contract to a newOwner.", + "params": { "newOwner": "The address to transfer ownership to." } + }, + "transferWithAuthorization(address,address,uint256,uint256,uint256,bytes32,bytes)": { + "details": "EOA wallet signatures should be packed in the order of r, s, v.", + "params": { + "from": "Payer's address (Authorizer)", + "nonce": "Unique nonce", + "signature": "Signature bytes signed by an EOA wallet or a contract wallet", + "to": "Payee's address", + "validAfter": "The time after which this is valid (unix time)", + "validBefore": "The time before which this is valid (unix time)", + "value": "Amount to be transferred" + } + }, + "transferWithAuthorization(address,address,uint256,uint256,uint256,bytes32,uint8,bytes32,bytes32)": { + "params": { + "from": "Payer's address (Authorizer)", + "nonce": "Unique nonce", + "r": "r of the signature", + "s": "s of the signature", + "to": "Payee's address", + "v": "v of the signature", + "validAfter": "The time after which this is valid (unix time)", + "validBefore": "The time before which this is valid (unix time)", + "value": "Amount to be transferred" + } + }, + "unBlacklist(address)": { + "params": { "_account": "The address to remove from the blacklist." } + }, + "unpause()": { + "details": "called by the owner to unpause, returns to normal state" + }, + "updateBlacklister(address)": { + "params": { "_newBlacklister": "The address of the new blacklister." } + }, + "updateMasterMinter(address)": { + "params": { + "_newMasterMinter": "The address of the new master minter." + } + }, + "updatePauser(address)": { + "params": { "_newPauser": "The address of the new pauser." } + }, + "updateRescuer(address)": { + "params": { "newRescuer": "The address of the new rescuer." } + }, + "version()": { "returns": { "_0": "Version string" } } + }, + "title": "FiatToken V2.2", + "version": 1 + }, + "userdoc": { + "kind": "user", + "methods": { + "DOMAIN_SEPARATOR()": { "notice": "Get the EIP712 Domain Separator." }, + "allowance(address,address)": { + "notice": "Gets the remaining amount of fiat tokens a spender is allowed to transfer on behalf of the token owner." + }, + "approve(address,uint256)": { + "notice": "Sets a fiat token allowance for a spender to spend on behalf of the caller." + }, + "authorizationState(address,bytes32)": { + "notice": "Returns the state of an authorization" + }, + "balanceOf(address)": { + "notice": "Gets the fiat token balance of an account." + }, + "blacklist(address)": { "notice": "Adds account to blacklist." }, + "burn(uint256)": { + "notice": "Allows a minter to burn some of its own tokens." + }, + "cancelAuthorization(address,bytes32,bytes)": { + "notice": "Attempt to cancel an authorization" + }, + "cancelAuthorization(address,bytes32,uint8,bytes32,bytes32)": { + "notice": "Attempt to cancel an authorization" + }, + "configureMinter(address,uint256)": { + "notice": "Adds or updates a new minter with a mint allowance." + }, + "decreaseAllowance(address,uint256)": { + "notice": "Decrease the allowance by a given decrement" + }, + "increaseAllowance(address,uint256)": { + "notice": "Increase the allowance by a given increment" + }, + "initialize(string,string,string,uint8,address,address,address,address)": { + "notice": "Initializes the fiat token contract." + }, + "initializeV2(string)": { "notice": "Initialize v2" }, + "initializeV2_1(address)": { "notice": "Initialize v2.1" }, + "initializeV2_2(address[],string)": { "notice": "Initialize v2.2" }, + "isBlacklisted(address)": { + "notice": "Checks if account is blacklisted." + }, + "isMinter(address)": { "notice": "Checks if an account is a minter." }, + "mint(address,uint256)": { + "notice": "Mints fiat tokens to an address." + }, + "minterAllowance(address)": { + "notice": "Gets the minter allowance for an account." + }, + "nonces(address)": { "notice": "Nonces for permit" }, + "permit(address,address,uint256,uint256,bytes)": { + "notice": "Update allowance with a signed permit" + }, + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": { + "notice": "Update allowance with a signed permit" + }, + "receiveWithAuthorization(address,address,uint256,uint256,uint256,bytes32,bytes)": { + "notice": "Receive a transfer with a signed authorization from the payer" + }, + "receiveWithAuthorization(address,address,uint256,uint256,uint256,bytes32,uint8,bytes32,bytes32)": { + "notice": "Receive a transfer with a signed authorization from the payer" + }, + "removeMinter(address)": { "notice": "Removes a minter." }, + "rescueERC20(address,address,uint256)": { + "notice": "Rescue ERC20 tokens locked up in this contract." + }, + "rescuer()": { "notice": "Returns current rescuer" }, + "totalSupply()": { + "notice": "Gets the totalSupply of the fiat token." + }, + "transfer(address,uint256)": { + "notice": "Transfers tokens from the caller." + }, + "transferFrom(address,address,uint256)": { + "notice": "Transfers tokens from an address to another by spending the caller's allowance." + }, + "transferWithAuthorization(address,address,uint256,uint256,uint256,bytes32,bytes)": { + "notice": "Execute a transfer with a signed authorization" + }, + "transferWithAuthorization(address,address,uint256,uint256,uint256,bytes32,uint8,bytes32,bytes32)": { + "notice": "Execute a transfer with a signed authorization" + }, + "unBlacklist(address)": { "notice": "Removes account from blacklist." }, + "updateBlacklister(address)": { + "notice": "Updates the blacklister address." + }, + "updateMasterMinter(address)": { + "notice": "Updates the master minter address." + }, + "updatePauser(address)": { "notice": "Updates the pauser address." }, + "updateRescuer(address)": { "notice": "Updates the rescuer address." }, + "version()": { + "notice": "Version string for the EIP712 domain separator" + } + }, + "notice": "ERC20 Token backed by fiat reserves, version 2.2", + "version": 1 + } + }, + "settings": { + "compilationTarget": { "contracts/v2/FiatTokenV2_2.sol": "FiatTokenV2_2" }, + "evmVersion": "istanbul", + "libraries": {}, + "metadata": { "bytecodeHash": "ipfs" }, + "optimizer": { "enabled": true, "runs": 10000000 }, + "remappings": [ + ":@ensdomains/=node_modules/@ensdomains/", + ":@openzeppelin/=node_modules/@openzeppelin/", + ":@solidity-parser/=node_modules/prettier-plugin-solidity/node_modules/@solidity-parser/", + ":ds-test/=lib/forge-std/lib/ds-test/src/", + ":eth-gas-reporter/=node_modules/eth-gas-reporter/", + ":forge-std/=lib/forge-std/src/", + ":hardhat/=node_modules/hardhat/" + ] + }, + "sources": { + "contracts/interface/IERC1271.sol": { + "keccak256": "0x8755a3f5c92f746d1dff56c9389b5dfcba2630c7057b62da2531437871709f7e", + "license": "Apache-2.0", + "urls": [ + "bzz-raw://a9aac28c347968ea5eaad87756f74be163411b5d55e338093c6c120d0b264616", + "dweb:/ipfs/Qmf2mfJF6dDxoNXYfyp7BqGhctC3YjKYGpzNUmipDfqHDf" + ] + }, + "contracts/util/ECRecover.sol": { + "keccak256": "0x7abfe3fc8384dbabe687b69f167653f9cfd9ffc89d954e852705ce3ba4379e0b", + "license": "Apache-2.0", + "urls": [ + "bzz-raw://97891f5fa6e380ffc65f3f031a1efb300bdb63f510f1d20faf5bbb9586496033", + "dweb:/ipfs/QmbnQKEe9FwCFpisyJJQPAvYNo57EuRNT1UsBQYVc26FJX" + ] + }, + "contracts/util/EIP712.sol": { + "keccak256": "0x0bb667288d2164139244dcbe02eee3453dfcdbdd04017a6d6076ca8910be0d57", + "license": "Apache-2.0", + "urls": [ + "bzz-raw://5cb904b9abf2a97fd864d483ae46c4868fd06e8f12a307e943b8d9c1f0b5a716", + "dweb:/ipfs/QmV6tWPVfm4amdb6xy4nHKb5rwfxAxM13b1ojBQ7FSJBP5" + ] + }, + "contracts/util/MessageHashUtils.sol": { + "keccak256": "0xc4b8586fc80806077670ac58d7cddd22708b0743a5d3507c4f64a01c40539bda", + "license": "Apache-2.0", + "urls": [ + "bzz-raw://34b1e4db62aef82ae24bff074a4e333a6bbb0a0fe78be6064480526515048af4", + "dweb:/ipfs/QmS1TrXywfD2YiBMidEQTeVK9whxXvuN4b9qZ5uGUMKirh" + ] + }, + "contracts/util/SignatureChecker.sol": { + "keccak256": "0xdd897f22c2b24d14e6f6f5a0235664955fd70611e5e283dc5573aac8bfd7207f", + "license": "Apache-2.0", + "urls": [ + "bzz-raw://fdcf4e52294e000226d216f5cdae3f4769d93ebcad22b540b2cb58141860114f", + "dweb:/ipfs/QmR9BGSCJ8WtmX6wMM62uqQuhRSVSmkifJZVxWZLMREozp" + ] + }, + "contracts/v1.1/FiatTokenV1_1.sol": { + "keccak256": "0x074eb0ccfae05bae37aff36fdfb694250a8fd7b0178caef0635507ab1344b918", + "license": "Apache-2.0", + "urls": [ + "bzz-raw://082ed1324bf6219acf0a01d5bea0f9e07f972c7f6df403c13e721c7bb46a3a67", + "dweb:/ipfs/QmPu2XwF1hFxMexy1FAzHkE3LBt2NQ5YfoZycGZL4sQgTR" + ] + }, + "contracts/v1.1/Rescuable.sol": { + "keccak256": "0x79bb6ea6f45b58ad75c9c8cfe82825930cddc77d817607ddc61d3e1f78a74cfb", + "license": "Apache-2.0", + "urls": [ + "bzz-raw://f6aa670e4d26932d143fd946077fc21c82c6e22ed66861faa42567b2684ecf01", + "dweb:/ipfs/QmQmWkmXDoR7Z8fyxfrRg6gUZTvKAi6sPmgyX1Jj9d1mAq" + ] + }, + "contracts/v1/AbstractFiatTokenV1.sol": { + "keccak256": "0x3ff009bf7a01e2bf600d320b8be0921014606c0c9643990ab5b1acc7bb5b14e0", + "license": "Apache-2.0", + "urls": [ + "bzz-raw://7180e208d2ac06b8927eac72644ab00e7d03d2d93a57e41380c299147cdc4ea9", + "dweb:/ipfs/QmeNAWsejER9AuqeuLD6V42Pp1tGHYcXJ65LoAoP1EUrUs" + ] + }, + "contracts/v1/Blacklistable.sol": { + "keccak256": "0xd44b9f11d8fc1384f8261d4fd9c2fcd06893846d92605541d797c94e70e158d8", + "license": "Apache-2.0", + "urls": [ + "bzz-raw://a184e8a647a516e23eac13d8743eece6f743424cda5034d8e8f8c05c75912181", + "dweb:/ipfs/Qmec8QpCBFUvXfwMxGG3zZf7nfWjhkDUK2ch6k1N5DoZHu" + ] + }, + "contracts/v1/FiatTokenV1.sol": { + "keccak256": "0xe5e2f197479f0595180384277345ca09c12e26ce57c4c427f4c8013a08b4a4de", + "license": "Apache-2.0", + "urls": [ + "bzz-raw://5680d3b32215c8ddfda2d1bd9770e5b5957fb931139f5434c22cf883a516fe0a", + "dweb:/ipfs/Qmf8mLTfkfjbs97gWDHPJjMJGc6R44ok6WsCAkeaVQqpfh" + ] + }, + "contracts/v1/Ownable.sol": { + "keccak256": "0xdd51a06c4d6c38ef806c50463ade63123980334bf173c3301794e242228fc9e5", + "license": "MIT", + "urls": [ + "bzz-raw://46632a7280a569d30da08ae6c0559295fa1dd6917ba458785ac1f50736474741", + "dweb:/ipfs/QmYb5zXqzTHPaWegnn5NcmrbDHbVFYnpENXvtgjQxCrjMe" + ] + }, + "contracts/v1/Pausable.sol": { + "keccak256": "0xa1112323b001871746d971f9dd2c61d094ea856146071537dc9d92e18e8cc829", + "license": "MIT", + "urls": [ + "bzz-raw://9ba61133c7e0f552222d0d3f05d0bba65f29e1db5242a50a3ec16b55aa0e7cc9", + "dweb:/ipfs/QmZtJV2VVPp5Upi4siVuM1mYjfzHPfXY95XjepAo6MYVxc" + ] + }, + "contracts/v2/AbstractFiatTokenV2.sol": { + "keccak256": "0x1e9218de2ee11f0f1beabdadba445afcd849918490167bb1a4533d18ebe4d5b2", + "license": "Apache-2.0", + "urls": [ + "bzz-raw://12b6fd3c3e51296d54361853f6003482b119e9fe1ca526702e2b060546cf96b3", + "dweb:/ipfs/QmbqgLouA4mGQt1BDs5srEMyu8jCa84j7fPUp5duN3T1PU" + ] + }, + "contracts/v2/EIP2612.sol": { + "keccak256": "0x16f5b3c4bb47369c28c13ee2d3370aeea576339ee81518ccbf939b9baa612106", + "license": "Apache-2.0", + "urls": [ + "bzz-raw://b6647ec12c93233b374854af468ea8b5d50b9c16fb3defc8421cf8bb4dd80179", + "dweb:/ipfs/QmQVEq8vdYFxCtgJ9dNJWXd5VYDXLUiUrgsDL4fCXFUGxN" + ] + }, + "contracts/v2/EIP3009.sol": { + "keccak256": "0xc98927aa58d2f966468c15a22ef6527cf380292cacdc3457b8863b76507dfd94", + "license": "Apache-2.0", + "urls": [ + "bzz-raw://965036cf068ff19ff247f8d82548966a5169c15d632af750f17f1f05259a89c8", + "dweb:/ipfs/QmZo1sMGRpe2BPzdr6Vr1tRFqurkacWd5roD3YHwKMwFKP" + ] + }, + "contracts/v2/EIP712Domain.sol": { + "keccak256": "0x4e03896c8853f071048927ca14231a448e6867e16d2551231e1be72c796c838d", + "license": "Apache-2.0", + "urls": [ + "bzz-raw://0dbca6649b894a93688f69908c7ff4bf557a0ceefeca00c82d6104cfdb902903", + "dweb:/ipfs/QmbyQV5wHrXoC33RB6NpULYmRNd6oNd4tb72nyughJUAta" + ] + }, + "contracts/v2/FiatTokenV2.sol": { + "keccak256": "0xaa69bbb548a49984893ca49826fded938890c9fed3219c43a121f522957c1da5", + "license": "Apache-2.0", + "urls": [ + "bzz-raw://3ad10dcef5d9610ca45ae2a8a4f977e16ad71d973fb4aa133b90374f3bd08f8e", + "dweb:/ipfs/QmbB54frYGoyaHMF85NA1AKuWXM63A24QpwbKHsbyM17Cm" + ] + }, + "contracts/v2/FiatTokenV2_1.sol": { + "keccak256": "0x7f26b9a3033844a8540834382090cd0b4485a74f04daa1452342cfc14f1a959a", + "license": "Apache-2.0", + "urls": [ + "bzz-raw://9c58788073f0c6602057a6854431b5cba485871a57553e65cc913d0bea8567ff", + "dweb:/ipfs/Qmbis7mKgredEgMCNUB8ymkij6XeJ1svZQTjUiMejqnobN" + ] + }, + "contracts/v2/FiatTokenV2_2.sol": { + "keccak256": "0xbdacdfd386a04adaf337f31dc2720e37dbb008d92b81c3cc98324efc855dce5d", + "license": "Apache-2.0", + "urls": [ + "bzz-raw://28d70ffbeb499aedaeb47f98ed9e0d5bbed0e83dc22e9d745fc0433824b0d452", + "dweb:/ipfs/Qmbt7B24ZpefvGsTt6a2aYgpDrbX6NCKNbHeTSctH3J7zg" + ] + }, + "node_modules/@openzeppelin/contracts/math/SafeMath.sol": { + "keccak256": "0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52", + "license": "MIT", + "urls": [ + "bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c", + "dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR" + ] + }, + "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "keccak256": "0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5", + "license": "MIT", + "urls": [ + "bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08", + "dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC" + ] + }, + "node_modules/@openzeppelin/contracts/token/ERC20/SafeERC20.sol": { + "keccak256": "0xf12dfbe97e6276980b83d2830bb0eb75e0cf4f3e626c2471137f82158ae6a0fc", + "license": "MIT", + "urls": [ + "bzz-raw://b3a849c2d95e85463909e5b5c920b13e7a11216ca14127085e16d22b9379d52a", + "dweb:/ipfs/QmUg3CZDbCCcQdroEpexBy5ZFd5vD1UWijWQq9qHZjtJNQ" + ] + }, + "node_modules/@openzeppelin/contracts/utils/Address.sol": { + "keccak256": "0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea", + "license": "MIT", + "urls": [ + "bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c", + "dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN" + ] + } + }, + "version": 1 +} diff --git a/verification_artifacts/SignatureChecker.json b/verification_artifacts/SignatureChecker.json new file mode 100644 index 000000000..e08ca6dcc --- /dev/null +++ b/verification_artifacts/SignatureChecker.json @@ -0,0 +1,80 @@ +{ + "compiler": { "version": "0.6.12+commit.27d51765" }, + "language": "Solidity", + "output": { + "abi": [ + { + "inputs": [ + { "internalType": "address", "name": "signer", "type": "address" }, + { "internalType": "bytes32", "name": "digest", "type": "bytes32" }, + { "internalType": "bytes", "name": "signature", "type": "bytes" } + ], + "name": "isValidSignatureNow", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + } + ], + "devdoc": { + "details": "Signature verification helper that can be used instead of `ECRecover.recover` to seamlessly support both ECDSA signatures from externally owned accounts (EOAs) as well as ERC1271 signatures from smart contract wallets. Adapted from https://github.com/OpenZeppelin/openzeppelin-contracts/blob/21bb89ef5bfc789b9333eb05e3ba2b7b284ac77c/contracts/utils/cryptography/SignatureChecker.sol", + "kind": "dev", + "methods": { + "isValidSignatureNow(address,bytes32,bytes)": { + "details": "Checks if a signature is valid for a given signer and data hash. If the signer is a smart contract, the signature is validated against that smart contract using ERC1271, otherwise it's validated using `ECRecover.recover`.", + "params": { + "digest": "Keccak-256 hash digest of the signed message", + "signature": "Signature byte array associated with hash", + "signer": "Address of the claimed signer" + } + } + }, + "version": 1 + }, + "userdoc": { "kind": "user", "methods": {}, "version": 1 } + }, + "settings": { + "compilationTarget": { + "contracts/util/SignatureChecker.sol": "SignatureChecker" + }, + "evmVersion": "istanbul", + "libraries": {}, + "metadata": { "bytecodeHash": "ipfs" }, + "optimizer": { "enabled": true, "runs": 10000000 }, + "remappings": [ + ":@ensdomains/=node_modules/@ensdomains/", + ":@openzeppelin/=node_modules/@openzeppelin/", + ":@solidity-parser/=node_modules/prettier-plugin-solidity/node_modules/@solidity-parser/", + ":ds-test/=lib/forge-std/lib/ds-test/src/", + ":eth-gas-reporter/=node_modules/eth-gas-reporter/", + ":forge-std/=lib/forge-std/src/", + ":hardhat/=node_modules/hardhat/" + ] + }, + "sources": { + "contracts/interface/IERC1271.sol": { + "keccak256": "0x8755a3f5c92f746d1dff56c9389b5dfcba2630c7057b62da2531437871709f7e", + "license": "Apache-2.0", + "urls": [ + "bzz-raw://a9aac28c347968ea5eaad87756f74be163411b5d55e338093c6c120d0b264616", + "dweb:/ipfs/Qmf2mfJF6dDxoNXYfyp7BqGhctC3YjKYGpzNUmipDfqHDf" + ] + }, + "contracts/util/ECRecover.sol": { + "keccak256": "0x7abfe3fc8384dbabe687b69f167653f9cfd9ffc89d954e852705ce3ba4379e0b", + "license": "Apache-2.0", + "urls": [ + "bzz-raw://97891f5fa6e380ffc65f3f031a1efb300bdb63f510f1d20faf5bbb9586496033", + "dweb:/ipfs/QmbnQKEe9FwCFpisyJJQPAvYNo57EuRNT1UsBQYVc26FJX" + ] + }, + "contracts/util/SignatureChecker.sol": { + "keccak256": "0xdd897f22c2b24d14e6f6f5a0235664955fd70611e5e283dc5573aac8bfd7207f", + "license": "Apache-2.0", + "urls": [ + "bzz-raw://fdcf4e52294e000226d216f5cdae3f4769d93ebcad22b540b2cb58141860114f", + "dweb:/ipfs/QmR9BGSCJ8WtmX6wMM62uqQuhRSVSmkifJZVxWZLMREozp" + ] + } + }, + "version": 1 +} diff --git a/verification_artifacts/input.json b/verification_artifacts/input.json new file mode 100644 index 000000000..310adb9b8 --- /dev/null +++ b/verification_artifacts/input.json @@ -0,0 +1,15 @@ +{ + "SignatureChecker": { + "contractAddress": "0xe9aBA835f813ca05E50A6C0ce65D0D74390F7dE7", + "contractCreationTxHash": "0x9b71d1e6b49cd8facc8d6fd66bfdf2b3ebabaab4dab9089e638afbc0b19918ed" + }, + "FiatTokenV2_2": { + "contractAddress": "0xB1EeAD6959cb5bB9B20417d6689922523B2B86C3", + "contractCreationTxHash": "0xb824e15271c49f91b09f00d0c16916df052b8fe62d29c3d96fc6fa4febc180a2" + }, + "FiatTokenProxy": { + "contractAddress": "0xF1815bd50389c46847f0Bda824eC8da914045D14", + "contractCreationTxHash": "0x8c97ee4600163bbc5492d4093e559d59d2c858d8042f1acc3542f532ca65a261" + }, + "rpcUrl": "https://mainnet.evm.nodes.onflow.org" +} From 92b3d2efbc67e5256728c204ef452a0ef9ca5a49 Mon Sep 17 00:00:00 2001 From: ravinagill15 Date: Fri, 24 Jan 2025 10:13:58 -0800 Subject: [PATCH 2/2] re-extracted --- verification_artifacts/FiatTokenProxy.json | 200 +-- verification_artifacts/FiatTokenV2_2.json | 1471 +----------------- verification_artifacts/SignatureChecker.json | 81 +- 3 files changed, 3 insertions(+), 1749 deletions(-) diff --git a/verification_artifacts/FiatTokenProxy.json b/verification_artifacts/FiatTokenProxy.json index e19bffc4d..5177f1f93 100644 --- a/verification_artifacts/FiatTokenProxy.json +++ b/verification_artifacts/FiatTokenProxy.json @@ -1,199 +1 @@ -{ - "compiler": { "version": "0.6.12+commit.27d51765" }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [ - { - "internalType": "address", - "name": "implementationContract", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousAdmin", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newAdmin", - "type": "address" - } - ], - "name": "AdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "implementation", - "type": "address" - } - ], - "name": "Upgraded", - "type": "event" - }, - { "stateMutability": "payable", "type": "fallback" }, - { - "inputs": [], - "name": "admin", - "outputs": [ - { "internalType": "address", "name": "", "type": "address" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "newAdmin", "type": "address" } - ], - "name": "changeAdmin", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "implementation", - "outputs": [ - { "internalType": "address", "name": "", "type": "address" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - } - ], - "name": "upgradeTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "newImplementation", - "type": "address" - }, - { "internalType": "bytes", "name": "data", "type": "bytes" } - ], - "name": "upgradeToAndCall", - "outputs": [], - "stateMutability": "payable", - "type": "function" - } - ], - "devdoc": { - "details": "This contract proxies FiatToken calls and enables FiatToken upgrades", - "kind": "dev", - "methods": { - "admin()": { "returns": { "_0": "The address of the proxy admin." } }, - "changeAdmin(address)": { - "details": "Changes the admin of the proxy. Only the current admin can call this function.", - "params": { - "newAdmin": "Address to transfer proxy administration to." - } - }, - "implementation()": { - "returns": { "_0": "The address of the implementation." } - }, - "upgradeTo(address)": { - "details": "Upgrade the backing implementation of the proxy. Only the admin can call this function.", - "params": { - "newImplementation": "Address of the new implementation." - } - }, - "upgradeToAndCall(address,bytes)": { - "details": "Upgrade the backing implementation of the proxy and call a function on the new implementation. This is useful to initialize the proxied contract.", - "params": { - "data": "Data to send as msg.data in the low level call. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/develop/abi-spec.html#function-selector-and-argument-encoding.", - "newImplementation": "Address of the new implementation." - } - } - }, - "title": "FiatTokenProxy", - "version": 1 - }, - "userdoc": { "kind": "user", "methods": {}, "version": 1 } - }, - "settings": { - "compilationTarget": { - "contracts/v1/FiatTokenProxy.sol": "FiatTokenProxy" - }, - "evmVersion": "istanbul", - "libraries": {}, - "metadata": { "bytecodeHash": "ipfs" }, - "optimizer": { "enabled": true, "runs": 10000000 }, - "remappings": [ - ":@ensdomains/=node_modules/@ensdomains/", - ":@openzeppelin/=node_modules/@openzeppelin/", - ":@solidity-parser/=node_modules/prettier-plugin-solidity/node_modules/@solidity-parser/", - ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":eth-gas-reporter/=node_modules/eth-gas-reporter/", - ":forge-std/=lib/forge-std/src/", - ":hardhat/=node_modules/hardhat/" - ] - }, - "sources": { - "contracts/upgradeability/AdminUpgradeabilityProxy.sol": { - "keccak256": "0x55b58fa45bd1ebf255d2eabbd9257445fce2ae7486e8e683623d3375d2d93d1e", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://6ec18ce29bdd44706fce5cdaefb0a6ca4129c1c2f8375cb74d8c6790aaaddec4", - "dweb:/ipfs/QmXEVnvLp4xAPEgSAkotawcCcggsdDQjAvG4crPuWfA4U9" - ] - }, - "contracts/upgradeability/Proxy.sol": { - "keccak256": "0x2cfa23c03d22d153d41e3b4f2c68e46e4b207205b5d12345b43e575b1da8164a", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://3ff3a86ef54b3763b0ff3e7c3d27a3000d7d2e5ede7c269ab8f0123147cda179", - "dweb:/ipfs/QmVki2G1PsmuaS7npjuwikNUqvfBDgFrmYUkdkEJqaDwxK" - ] - }, - "contracts/upgradeability/UpgradeabilityProxy.sol": { - "keccak256": "0x7d1312c9090e5fb98d6ab676edcf0c64099e7a251a18091566816a6a2dece517", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://f86a893a20bdb283cec644ddeeb37b766e604ea136f6157341fad669d7ceedfe", - "dweb:/ipfs/QmQJKYTr2BmLNyTiYVXMYEJWE3JCsR1p7j3fWDacZ3V5vf" - ] - }, - "contracts/v1/FiatTokenProxy.sol": { - "keccak256": "0x7ee55764f74b2983880409ab3873ad6a7299231cd48cb4b9d40a10259d012424", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://95d2b6c3a7c76d2f88a6f3b3785a20460e58bac9d46c6db2bd62496dca06f65b", - "dweb:/ipfs/QmdX71TWN96ScnvEYHNVnmJfhgfJdF2pE1pgVcjLcbugrK" - ] - }, - "node_modules/@openzeppelin/contracts/utils/Address.sol": { - "keccak256": "0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea", - "license": "MIT", - "urls": [ - "bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c", - "dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN" - ] - } - }, - "version": 1 -} +{"compiler":{"version":"0.6.12+commit.27d51765"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"implementationContract","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousAdmin","type":"address"},{"indexed":false,"internalType":"address","name":"newAdmin","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"name":"changeAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"implementation","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"}],"name":"upgradeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"upgradeToAndCall","outputs":[],"stateMutability":"payable","type":"function"}],"devdoc":{"details":"This contract proxies FiatToken calls and enables FiatToken upgrades","kind":"dev","methods":{"admin()":{"returns":{"_0":"The address of the proxy admin."}},"changeAdmin(address)":{"details":"Changes the admin of the proxy. Only the current admin can call this function.","params":{"newAdmin":"Address to transfer proxy administration to."}},"implementation()":{"returns":{"_0":"The address of the implementation."}},"upgradeTo(address)":{"details":"Upgrade the backing implementation of the proxy. Only the admin can call this function.","params":{"newImplementation":"Address of the new implementation."}},"upgradeToAndCall(address,bytes)":{"details":"Upgrade the backing implementation of the proxy and call a function on the new implementation. This is useful to initialize the proxied contract.","params":{"data":"Data to send as msg.data in the low level call. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/develop/abi-spec.html#function-selector-and-argument-encoding.","newImplementation":"Address of the new implementation."}}},"title":"FiatTokenProxy","version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"contracts/v1/FiatTokenProxy.sol":"FiatTokenProxy"},"evmVersion":"istanbul","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":true,"runs":10000000},"remappings":[":@ensdomains/=node_modules/@ensdomains/",":@openzeppelin/=node_modules/@openzeppelin/",":@solidity-parser/=node_modules/prettier-plugin-solidity/node_modules/@solidity-parser/",":ds-test/=lib/forge-std/lib/ds-test/src/",":eth-gas-reporter/=node_modules/eth-gas-reporter/",":forge-std/=lib/forge-std/src/",":hardhat/=node_modules/hardhat/"]},"sources":{"contracts/upgradeability/AdminUpgradeabilityProxy.sol":{"keccak256":"0x55b58fa45bd1ebf255d2eabbd9257445fce2ae7486e8e683623d3375d2d93d1e","license":"Apache-2.0","urls":["bzz-raw://6ec18ce29bdd44706fce5cdaefb0a6ca4129c1c2f8375cb74d8c6790aaaddec4","dweb:/ipfs/QmXEVnvLp4xAPEgSAkotawcCcggsdDQjAvG4crPuWfA4U9"]},"contracts/upgradeability/Proxy.sol":{"keccak256":"0x2cfa23c03d22d153d41e3b4f2c68e46e4b207205b5d12345b43e575b1da8164a","license":"Apache-2.0","urls":["bzz-raw://3ff3a86ef54b3763b0ff3e7c3d27a3000d7d2e5ede7c269ab8f0123147cda179","dweb:/ipfs/QmVki2G1PsmuaS7npjuwikNUqvfBDgFrmYUkdkEJqaDwxK"]},"contracts/upgradeability/UpgradeabilityProxy.sol":{"keccak256":"0x7d1312c9090e5fb98d6ab676edcf0c64099e7a251a18091566816a6a2dece517","license":"Apache-2.0","urls":["bzz-raw://f86a893a20bdb283cec644ddeeb37b766e604ea136f6157341fad669d7ceedfe","dweb:/ipfs/QmQJKYTr2BmLNyTiYVXMYEJWE3JCsR1p7j3fWDacZ3V5vf"]},"contracts/v1/FiatTokenProxy.sol":{"keccak256":"0x7ee55764f74b2983880409ab3873ad6a7299231cd48cb4b9d40a10259d012424","license":"Apache-2.0","urls":["bzz-raw://95d2b6c3a7c76d2f88a6f3b3785a20460e58bac9d46c6db2bd62496dca06f65b","dweb:/ipfs/QmdX71TWN96ScnvEYHNVnmJfhgfJdF2pE1pgVcjLcbugrK"]},"node_modules/@openzeppelin/contracts/utils/Address.sol":{"keccak256":"0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea","license":"MIT","urls":["bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c","dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN"]}},"version":1} \ No newline at end of file diff --git a/verification_artifacts/FiatTokenV2_2.json b/verification_artifacts/FiatTokenV2_2.json index d21b5e9e0..0f745b59c 100644 --- a/verification_artifacts/FiatTokenV2_2.json +++ b/verification_artifacts/FiatTokenV2_2.json @@ -1,1470 +1 @@ -{ - "compiler": { "version": "0.6.12+commit.27d51765" }, - "language": "Solidity", - "output": { - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "authorizer", - "type": "address" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "nonce", - "type": "bytes32" - } - ], - "name": "AuthorizationCanceled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "authorizer", - "type": "address" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "nonce", - "type": "bytes32" - } - ], - "name": "AuthorizationUsed", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_account", - "type": "address" - } - ], - "name": "Blacklisted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "newBlacklister", - "type": "address" - } - ], - "name": "BlacklisterChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "burner", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "Burn", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "newMasterMinter", - "type": "address" - } - ], - "name": "MasterMinterChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "minter", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "Mint", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "minter", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "minterAllowedAmount", - "type": "uint256" - } - ], - "name": "MinterConfigured", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "oldMinter", - "type": "address" - } - ], - "name": "MinterRemoved", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "address", - "name": "previousOwner", - "type": "address" - }, - { - "indexed": false, - "internalType": "address", - "name": "newOwner", - "type": "address" - } - ], - "name": "OwnershipTransferred", - "type": "event" - }, - { "anonymous": false, "inputs": [], "name": "Pause", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "newAddress", - "type": "address" - } - ], - "name": "PauserChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "newRescuer", - "type": "address" - } - ], - "name": "RescuerChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "_account", - "type": "address" - } - ], - "name": "UnBlacklisted", - "type": "event" - }, - { "anonymous": false, "inputs": [], "name": "Unpause", "type": "event" }, - { - "inputs": [], - "name": "CANCEL_AUTHORIZATION_TYPEHASH", - "outputs": [ - { "internalType": "bytes32", "name": "", "type": "bytes32" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "DOMAIN_SEPARATOR", - "outputs": [ - { "internalType": "bytes32", "name": "", "type": "bytes32" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "PERMIT_TYPEHASH", - "outputs": [ - { "internalType": "bytes32", "name": "", "type": "bytes32" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "RECEIVE_WITH_AUTHORIZATION_TYPEHASH", - "outputs": [ - { "internalType": "bytes32", "name": "", "type": "bytes32" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "TRANSFER_WITH_AUTHORIZATION_TYPEHASH", - "outputs": [ - { "internalType": "bytes32", "name": "", "type": "bytes32" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "owner", "type": "address" }, - { "internalType": "address", "name": "spender", "type": "address" } - ], - "name": "allowance", - "outputs": [ - { "internalType": "uint256", "name": "", "type": "uint256" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "spender", "type": "address" }, - { "internalType": "uint256", "name": "value", "type": "uint256" } - ], - "name": "approve", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "authorizer", - "type": "address" - }, - { "internalType": "bytes32", "name": "nonce", "type": "bytes32" } - ], - "name": "authorizationState", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "account", "type": "address" } - ], - "name": "balanceOf", - "outputs": [ - { "internalType": "uint256", "name": "", "type": "uint256" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "_account", "type": "address" } - ], - "name": "blacklist", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "blacklister", - "outputs": [ - { "internalType": "address", "name": "", "type": "address" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "uint256", "name": "_amount", "type": "uint256" } - ], - "name": "burn", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "authorizer", - "type": "address" - }, - { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, - { "internalType": "uint8", "name": "v", "type": "uint8" }, - { "internalType": "bytes32", "name": "r", "type": "bytes32" }, - { "internalType": "bytes32", "name": "s", "type": "bytes32" } - ], - "name": "cancelAuthorization", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "authorizer", - "type": "address" - }, - { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, - { "internalType": "bytes", "name": "signature", "type": "bytes" } - ], - "name": "cancelAuthorization", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "minter", "type": "address" }, - { - "internalType": "uint256", - "name": "minterAllowedAmount", - "type": "uint256" - } - ], - "name": "configureMinter", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "currency", - "outputs": [{ "internalType": "string", "name": "", "type": "string" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "spender", "type": "address" }, - { "internalType": "uint256", "name": "decrement", "type": "uint256" } - ], - "name": "decreaseAllowance", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "spender", "type": "address" }, - { "internalType": "uint256", "name": "increment", "type": "uint256" } - ], - "name": "increaseAllowance", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "string", "name": "tokenName", "type": "string" }, - { "internalType": "string", "name": "tokenSymbol", "type": "string" }, - { - "internalType": "string", - "name": "tokenCurrency", - "type": "string" - }, - { "internalType": "uint8", "name": "tokenDecimals", "type": "uint8" }, - { - "internalType": "address", - "name": "newMasterMinter", - "type": "address" - }, - { "internalType": "address", "name": "newPauser", "type": "address" }, - { - "internalType": "address", - "name": "newBlacklister", - "type": "address" - }, - { "internalType": "address", "name": "newOwner", "type": "address" } - ], - "name": "initialize", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "string", "name": "newName", "type": "string" } - ], - "name": "initializeV2", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "lostAndFound", - "type": "address" - } - ], - "name": "initializeV2_1", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "accountsToBlacklist", - "type": "address[]" - }, - { "internalType": "string", "name": "newSymbol", "type": "string" } - ], - "name": "initializeV2_2", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "_account", "type": "address" } - ], - "name": "isBlacklisted", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "account", "type": "address" } - ], - "name": "isMinter", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "masterMinter", - "outputs": [ - { "internalType": "address", "name": "", "type": "address" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "_to", "type": "address" }, - { "internalType": "uint256", "name": "_amount", "type": "uint256" } - ], - "name": "mint", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "minter", "type": "address" } - ], - "name": "minterAllowance", - "outputs": [ - { "internalType": "uint256", "name": "", "type": "uint256" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [{ "internalType": "string", "name": "", "type": "string" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "owner", "type": "address" } - ], - "name": "nonces", - "outputs": [ - { "internalType": "uint256", "name": "", "type": "uint256" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "owner", - "outputs": [ - { "internalType": "address", "name": "", "type": "address" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pause", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "paused", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "pauser", - "outputs": [ - { "internalType": "address", "name": "", "type": "address" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "owner", "type": "address" }, - { "internalType": "address", "name": "spender", "type": "address" }, - { "internalType": "uint256", "name": "value", "type": "uint256" }, - { "internalType": "uint256", "name": "deadline", "type": "uint256" }, - { "internalType": "bytes", "name": "signature", "type": "bytes" } - ], - "name": "permit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "owner", "type": "address" }, - { "internalType": "address", "name": "spender", "type": "address" }, - { "internalType": "uint256", "name": "value", "type": "uint256" }, - { "internalType": "uint256", "name": "deadline", "type": "uint256" }, - { "internalType": "uint8", "name": "v", "type": "uint8" }, - { "internalType": "bytes32", "name": "r", "type": "bytes32" }, - { "internalType": "bytes32", "name": "s", "type": "bytes32" } - ], - "name": "permit", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "from", "type": "address" }, - { "internalType": "address", "name": "to", "type": "address" }, - { "internalType": "uint256", "name": "value", "type": "uint256" }, - { - "internalType": "uint256", - "name": "validAfter", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "validBefore", - "type": "uint256" - }, - { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, - { "internalType": "bytes", "name": "signature", "type": "bytes" } - ], - "name": "receiveWithAuthorization", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "from", "type": "address" }, - { "internalType": "address", "name": "to", "type": "address" }, - { "internalType": "uint256", "name": "value", "type": "uint256" }, - { - "internalType": "uint256", - "name": "validAfter", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "validBefore", - "type": "uint256" - }, - { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, - { "internalType": "uint8", "name": "v", "type": "uint8" }, - { "internalType": "bytes32", "name": "r", "type": "bytes32" }, - { "internalType": "bytes32", "name": "s", "type": "bytes32" } - ], - "name": "receiveWithAuthorization", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "minter", "type": "address" } - ], - "name": "removeMinter", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "contract IERC20", - "name": "tokenContract", - "type": "address" - }, - { "internalType": "address", "name": "to", "type": "address" }, - { "internalType": "uint256", "name": "amount", "type": "uint256" } - ], - "name": "rescueERC20", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "rescuer", - "outputs": [ - { "internalType": "address", "name": "", "type": "address" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [{ "internalType": "string", "name": "", "type": "string" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { "internalType": "uint256", "name": "", "type": "uint256" } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "to", "type": "address" }, - { "internalType": "uint256", "name": "value", "type": "uint256" } - ], - "name": "transfer", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "from", "type": "address" }, - { "internalType": "address", "name": "to", "type": "address" }, - { "internalType": "uint256", "name": "value", "type": "uint256" } - ], - "name": "transferFrom", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "newOwner", "type": "address" } - ], - "name": "transferOwnership", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "from", "type": "address" }, - { "internalType": "address", "name": "to", "type": "address" }, - { "internalType": "uint256", "name": "value", "type": "uint256" }, - { - "internalType": "uint256", - "name": "validAfter", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "validBefore", - "type": "uint256" - }, - { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, - { "internalType": "bytes", "name": "signature", "type": "bytes" } - ], - "name": "transferWithAuthorization", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "from", "type": "address" }, - { "internalType": "address", "name": "to", "type": "address" }, - { "internalType": "uint256", "name": "value", "type": "uint256" }, - { - "internalType": "uint256", - "name": "validAfter", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "validBefore", - "type": "uint256" - }, - { "internalType": "bytes32", "name": "nonce", "type": "bytes32" }, - { "internalType": "uint8", "name": "v", "type": "uint8" }, - { "internalType": "bytes32", "name": "r", "type": "bytes32" }, - { "internalType": "bytes32", "name": "s", "type": "bytes32" } - ], - "name": "transferWithAuthorization", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "_account", "type": "address" } - ], - "name": "unBlacklist", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "unpause", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_newBlacklister", - "type": "address" - } - ], - "name": "updateBlacklister", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_newMasterMinter", - "type": "address" - } - ], - "name": "updateMasterMinter", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "_newPauser", "type": "address" } - ], - "name": "updatePauser", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "newRescuer", "type": "address" } - ], - "name": "updateRescuer", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "version", - "outputs": [{ "internalType": "string", "name": "", "type": "string" }], - "stateMutability": "pure", - "type": "function" - } - ], - "devdoc": { - "kind": "dev", - "methods": { - "DOMAIN_SEPARATOR()": { - "returns": { "_0": "The bytes32 EIP712 domain separator." } - }, - "allowance(address,address)": { - "params": { - "owner": "The token owner's address.", - "spender": "The spender's address." - }, - "returns": { "_0": "The remaining allowance." } - }, - "approve(address,uint256)": { - "params": { - "spender": "The spender's address.", - "value": "The allowance amount." - }, - "returns": { "_0": "True if the operation was successful." } - }, - "authorizationState(address,bytes32)": { - "details": "Nonces are randomly generated 32-byte data unique to the authorizer's address", - "params": { - "authorizer": "Authorizer's address", - "nonce": "Nonce of the authorization" - }, - "returns": { "_0": "True if the nonce is used" } - }, - "balanceOf(address)": { - "params": { "account": "The address to check." }, - "returns": { "_0": "balance The fiat token balance of the account." } - }, - "blacklist(address)": { - "params": { "_account": "The address to blacklist." } - }, - "burn(uint256)": { - "details": "The caller must be a minter, must not be blacklisted, and the amount to burn should be less than or equal to the account's balance.", - "params": { "_amount": "the amount of tokens to be burned." } - }, - "cancelAuthorization(address,bytes32,bytes)": { - "details": "Works only if the authorization is not yet used. EOA wallet signatures should be packed in the order of r, s, v.", - "params": { - "authorizer": "Authorizer's address", - "nonce": "Nonce of the authorization", - "signature": "Signature bytes signed by an EOA wallet or a contract wallet" - } - }, - "cancelAuthorization(address,bytes32,uint8,bytes32,bytes32)": { - "details": "Works only if the authorization is not yet used.", - "params": { - "authorizer": "Authorizer's address", - "nonce": "Nonce of the authorization", - "r": "r of the signature", - "s": "s of the signature", - "v": "v of the signature" - } - }, - "configureMinter(address,uint256)": { - "params": { - "minter": "The address of the minter.", - "minterAllowedAmount": "The minting amount allowed for the minter." - }, - "returns": { "_0": "True if the operation was successful." } - }, - "decreaseAllowance(address,uint256)": { - "params": { - "decrement": "Amount of decrease in allowance", - "spender": "Spender's address" - }, - "returns": { "_0": "True if successful" } - }, - "increaseAllowance(address,uint256)": { - "params": { - "increment": "Amount of increase in allowance", - "spender": "Spender's address" - }, - "returns": { "_0": "True if successful" } - }, - "initialize(string,string,string,uint8,address,address,address,address)": { - "params": { - "newBlacklister": "The blacklister address for the fiat token.", - "newMasterMinter": "The masterMinter address for the fiat token.", - "newOwner": "The owner of the fiat token.", - "newPauser": "The pauser address for the fiat token.", - "tokenCurrency": "The fiat currency that the token represents.", - "tokenDecimals": "The number of decimals that the token uses.", - "tokenName": "The name of the fiat token.", - "tokenSymbol": "The symbol of the fiat token." - } - }, - "initializeV2(string)": { "params": { "newName": "New token name" } }, - "initializeV2_1(address)": { - "params": { - "lostAndFound": "The address to which the locked funds are sent" - } - }, - "initializeV2_2(address[],string)": { - "params": { - "accountsToBlacklist": "A list of accounts to migrate from the old blacklist", - "newSymbol": "New token symbol data structure to the new blacklist data structure." - } - }, - "isBlacklisted(address)": { - "params": { "_account": "The address to check." }, - "returns": { - "_0": "True if the account is blacklisted, false if the account is not blacklisted." - } - }, - "isMinter(address)": { - "params": { "account": "The address to check." }, - "returns": { - "_0": "True if the account is a minter, false if the account is not a minter." - } - }, - "mint(address,uint256)": { - "params": { - "_amount": "The amount of tokens to mint. Must be less than or equal to the minterAllowance of the caller.", - "_to": "The address that will receive the minted tokens." - }, - "returns": { "_0": "True if the operation was successful." } - }, - "minterAllowance(address)": { - "params": { "minter": "The address to check." }, - "returns": { "_0": "The remaining minter allowance for the account." } - }, - "nonces(address)": { - "params": { "owner": "Token owner's address (Authorizer)" }, - "returns": { "_0": "Next nonce" } - }, - "owner()": { - "details": "Tells the address of the owner", - "returns": { "_0": "the address of the owner" } - }, - "pause()": { - "details": "called by the owner to pause, triggers stopped state" - }, - "permit(address,address,uint256,uint256,bytes)": { - "details": "EOA wallet signatures should be packed in the order of r, s, v.", - "params": { - "deadline": "The time at which the signature expires (unix time), or max uint256 value to signal no expiration", - "owner": "Token owner's address (Authorizer)", - "signature": "Signature bytes signed by an EOA wallet or a contract wallet", - "spender": "Spender's address", - "value": "Amount of allowance" - } - }, - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": { - "params": { - "deadline": "The time at which the signature expires (unix time), or max uint256 value to signal no expiration", - "owner": "Token owner's address (Authorizer)", - "r": "r of the signature", - "s": "s of the signature", - "spender": "Spender's address", - "v": "v of the signature", - "value": "Amount of allowance" - } - }, - "receiveWithAuthorization(address,address,uint256,uint256,uint256,bytes32,bytes)": { - "details": "This has an additional check to ensure that the payee's address matches the caller of this function to prevent front-running attacks. EOA wallet signatures should be packed in the order of r, s, v.", - "params": { - "from": "Payer's address (Authorizer)", - "nonce": "Unique nonce", - "signature": "Signature bytes signed by an EOA wallet or a contract wallet", - "to": "Payee's address", - "validAfter": "The time after which this is valid (unix time)", - "validBefore": "The time before which this is valid (unix time)", - "value": "Amount to be transferred" - } - }, - "receiveWithAuthorization(address,address,uint256,uint256,uint256,bytes32,uint8,bytes32,bytes32)": { - "details": "This has an additional check to ensure that the payee's address matches the caller of this function to prevent front-running attacks.", - "params": { - "from": "Payer's address (Authorizer)", - "nonce": "Unique nonce", - "r": "r of the signature", - "s": "s of the signature", - "to": "Payee's address", - "v": "v of the signature", - "validAfter": "The time after which this is valid (unix time)", - "validBefore": "The time before which this is valid (unix time)", - "value": "Amount to be transferred" - } - }, - "removeMinter(address)": { - "params": { "minter": "The address of the minter to remove." }, - "returns": { "_0": "True if the operation was successful." } - }, - "rescueERC20(address,address,uint256)": { - "params": { - "amount": "Amount to withdraw", - "to": "Recipient address", - "tokenContract": "ERC20 token contract address" - } - }, - "rescuer()": { "returns": { "_0": "Rescuer's address" } }, - "totalSupply()": { - "returns": { "_0": "The totalSupply of the fiat token." } - }, - "transfer(address,uint256)": { - "params": { "to": "Payee's address.", "value": "Transfer amount." }, - "returns": { "_0": "True if the operation was successful." } - }, - "transferFrom(address,address,uint256)": { - "details": "The caller must have some fiat token allowance on the payer's tokens.", - "params": { - "from": "Payer's address.", - "to": "Payee's address.", - "value": "Transfer amount." - }, - "returns": { "_0": "True if the operation was successful." } - }, - "transferOwnership(address)": { - "details": "Allows the current owner to transfer control of the contract to a newOwner.", - "params": { "newOwner": "The address to transfer ownership to." } - }, - "transferWithAuthorization(address,address,uint256,uint256,uint256,bytes32,bytes)": { - "details": "EOA wallet signatures should be packed in the order of r, s, v.", - "params": { - "from": "Payer's address (Authorizer)", - "nonce": "Unique nonce", - "signature": "Signature bytes signed by an EOA wallet or a contract wallet", - "to": "Payee's address", - "validAfter": "The time after which this is valid (unix time)", - "validBefore": "The time before which this is valid (unix time)", - "value": "Amount to be transferred" - } - }, - "transferWithAuthorization(address,address,uint256,uint256,uint256,bytes32,uint8,bytes32,bytes32)": { - "params": { - "from": "Payer's address (Authorizer)", - "nonce": "Unique nonce", - "r": "r of the signature", - "s": "s of the signature", - "to": "Payee's address", - "v": "v of the signature", - "validAfter": "The time after which this is valid (unix time)", - "validBefore": "The time before which this is valid (unix time)", - "value": "Amount to be transferred" - } - }, - "unBlacklist(address)": { - "params": { "_account": "The address to remove from the blacklist." } - }, - "unpause()": { - "details": "called by the owner to unpause, returns to normal state" - }, - "updateBlacklister(address)": { - "params": { "_newBlacklister": "The address of the new blacklister." } - }, - "updateMasterMinter(address)": { - "params": { - "_newMasterMinter": "The address of the new master minter." - } - }, - "updatePauser(address)": { - "params": { "_newPauser": "The address of the new pauser." } - }, - "updateRescuer(address)": { - "params": { "newRescuer": "The address of the new rescuer." } - }, - "version()": { "returns": { "_0": "Version string" } } - }, - "title": "FiatToken V2.2", - "version": 1 - }, - "userdoc": { - "kind": "user", - "methods": { - "DOMAIN_SEPARATOR()": { "notice": "Get the EIP712 Domain Separator." }, - "allowance(address,address)": { - "notice": "Gets the remaining amount of fiat tokens a spender is allowed to transfer on behalf of the token owner." - }, - "approve(address,uint256)": { - "notice": "Sets a fiat token allowance for a spender to spend on behalf of the caller." - }, - "authorizationState(address,bytes32)": { - "notice": "Returns the state of an authorization" - }, - "balanceOf(address)": { - "notice": "Gets the fiat token balance of an account." - }, - "blacklist(address)": { "notice": "Adds account to blacklist." }, - "burn(uint256)": { - "notice": "Allows a minter to burn some of its own tokens." - }, - "cancelAuthorization(address,bytes32,bytes)": { - "notice": "Attempt to cancel an authorization" - }, - "cancelAuthorization(address,bytes32,uint8,bytes32,bytes32)": { - "notice": "Attempt to cancel an authorization" - }, - "configureMinter(address,uint256)": { - "notice": "Adds or updates a new minter with a mint allowance." - }, - "decreaseAllowance(address,uint256)": { - "notice": "Decrease the allowance by a given decrement" - }, - "increaseAllowance(address,uint256)": { - "notice": "Increase the allowance by a given increment" - }, - "initialize(string,string,string,uint8,address,address,address,address)": { - "notice": "Initializes the fiat token contract." - }, - "initializeV2(string)": { "notice": "Initialize v2" }, - "initializeV2_1(address)": { "notice": "Initialize v2.1" }, - "initializeV2_2(address[],string)": { "notice": "Initialize v2.2" }, - "isBlacklisted(address)": { - "notice": "Checks if account is blacklisted." - }, - "isMinter(address)": { "notice": "Checks if an account is a minter." }, - "mint(address,uint256)": { - "notice": "Mints fiat tokens to an address." - }, - "minterAllowance(address)": { - "notice": "Gets the minter allowance for an account." - }, - "nonces(address)": { "notice": "Nonces for permit" }, - "permit(address,address,uint256,uint256,bytes)": { - "notice": "Update allowance with a signed permit" - }, - "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": { - "notice": "Update allowance with a signed permit" - }, - "receiveWithAuthorization(address,address,uint256,uint256,uint256,bytes32,bytes)": { - "notice": "Receive a transfer with a signed authorization from the payer" - }, - "receiveWithAuthorization(address,address,uint256,uint256,uint256,bytes32,uint8,bytes32,bytes32)": { - "notice": "Receive a transfer with a signed authorization from the payer" - }, - "removeMinter(address)": { "notice": "Removes a minter." }, - "rescueERC20(address,address,uint256)": { - "notice": "Rescue ERC20 tokens locked up in this contract." - }, - "rescuer()": { "notice": "Returns current rescuer" }, - "totalSupply()": { - "notice": "Gets the totalSupply of the fiat token." - }, - "transfer(address,uint256)": { - "notice": "Transfers tokens from the caller." - }, - "transferFrom(address,address,uint256)": { - "notice": "Transfers tokens from an address to another by spending the caller's allowance." - }, - "transferWithAuthorization(address,address,uint256,uint256,uint256,bytes32,bytes)": { - "notice": "Execute a transfer with a signed authorization" - }, - "transferWithAuthorization(address,address,uint256,uint256,uint256,bytes32,uint8,bytes32,bytes32)": { - "notice": "Execute a transfer with a signed authorization" - }, - "unBlacklist(address)": { "notice": "Removes account from blacklist." }, - "updateBlacklister(address)": { - "notice": "Updates the blacklister address." - }, - "updateMasterMinter(address)": { - "notice": "Updates the master minter address." - }, - "updatePauser(address)": { "notice": "Updates the pauser address." }, - "updateRescuer(address)": { "notice": "Updates the rescuer address." }, - "version()": { - "notice": "Version string for the EIP712 domain separator" - } - }, - "notice": "ERC20 Token backed by fiat reserves, version 2.2", - "version": 1 - } - }, - "settings": { - "compilationTarget": { "contracts/v2/FiatTokenV2_2.sol": "FiatTokenV2_2" }, - "evmVersion": "istanbul", - "libraries": {}, - "metadata": { "bytecodeHash": "ipfs" }, - "optimizer": { "enabled": true, "runs": 10000000 }, - "remappings": [ - ":@ensdomains/=node_modules/@ensdomains/", - ":@openzeppelin/=node_modules/@openzeppelin/", - ":@solidity-parser/=node_modules/prettier-plugin-solidity/node_modules/@solidity-parser/", - ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":eth-gas-reporter/=node_modules/eth-gas-reporter/", - ":forge-std/=lib/forge-std/src/", - ":hardhat/=node_modules/hardhat/" - ] - }, - "sources": { - "contracts/interface/IERC1271.sol": { - "keccak256": "0x8755a3f5c92f746d1dff56c9389b5dfcba2630c7057b62da2531437871709f7e", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://a9aac28c347968ea5eaad87756f74be163411b5d55e338093c6c120d0b264616", - "dweb:/ipfs/Qmf2mfJF6dDxoNXYfyp7BqGhctC3YjKYGpzNUmipDfqHDf" - ] - }, - "contracts/util/ECRecover.sol": { - "keccak256": "0x7abfe3fc8384dbabe687b69f167653f9cfd9ffc89d954e852705ce3ba4379e0b", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://97891f5fa6e380ffc65f3f031a1efb300bdb63f510f1d20faf5bbb9586496033", - "dweb:/ipfs/QmbnQKEe9FwCFpisyJJQPAvYNo57EuRNT1UsBQYVc26FJX" - ] - }, - "contracts/util/EIP712.sol": { - "keccak256": "0x0bb667288d2164139244dcbe02eee3453dfcdbdd04017a6d6076ca8910be0d57", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://5cb904b9abf2a97fd864d483ae46c4868fd06e8f12a307e943b8d9c1f0b5a716", - "dweb:/ipfs/QmV6tWPVfm4amdb6xy4nHKb5rwfxAxM13b1ojBQ7FSJBP5" - ] - }, - "contracts/util/MessageHashUtils.sol": { - "keccak256": "0xc4b8586fc80806077670ac58d7cddd22708b0743a5d3507c4f64a01c40539bda", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://34b1e4db62aef82ae24bff074a4e333a6bbb0a0fe78be6064480526515048af4", - "dweb:/ipfs/QmS1TrXywfD2YiBMidEQTeVK9whxXvuN4b9qZ5uGUMKirh" - ] - }, - "contracts/util/SignatureChecker.sol": { - "keccak256": "0xdd897f22c2b24d14e6f6f5a0235664955fd70611e5e283dc5573aac8bfd7207f", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://fdcf4e52294e000226d216f5cdae3f4769d93ebcad22b540b2cb58141860114f", - "dweb:/ipfs/QmR9BGSCJ8WtmX6wMM62uqQuhRSVSmkifJZVxWZLMREozp" - ] - }, - "contracts/v1.1/FiatTokenV1_1.sol": { - "keccak256": "0x074eb0ccfae05bae37aff36fdfb694250a8fd7b0178caef0635507ab1344b918", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://082ed1324bf6219acf0a01d5bea0f9e07f972c7f6df403c13e721c7bb46a3a67", - "dweb:/ipfs/QmPu2XwF1hFxMexy1FAzHkE3LBt2NQ5YfoZycGZL4sQgTR" - ] - }, - "contracts/v1.1/Rescuable.sol": { - "keccak256": "0x79bb6ea6f45b58ad75c9c8cfe82825930cddc77d817607ddc61d3e1f78a74cfb", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://f6aa670e4d26932d143fd946077fc21c82c6e22ed66861faa42567b2684ecf01", - "dweb:/ipfs/QmQmWkmXDoR7Z8fyxfrRg6gUZTvKAi6sPmgyX1Jj9d1mAq" - ] - }, - "contracts/v1/AbstractFiatTokenV1.sol": { - "keccak256": "0x3ff009bf7a01e2bf600d320b8be0921014606c0c9643990ab5b1acc7bb5b14e0", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://7180e208d2ac06b8927eac72644ab00e7d03d2d93a57e41380c299147cdc4ea9", - "dweb:/ipfs/QmeNAWsejER9AuqeuLD6V42Pp1tGHYcXJ65LoAoP1EUrUs" - ] - }, - "contracts/v1/Blacklistable.sol": { - "keccak256": "0xd44b9f11d8fc1384f8261d4fd9c2fcd06893846d92605541d797c94e70e158d8", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://a184e8a647a516e23eac13d8743eece6f743424cda5034d8e8f8c05c75912181", - "dweb:/ipfs/Qmec8QpCBFUvXfwMxGG3zZf7nfWjhkDUK2ch6k1N5DoZHu" - ] - }, - "contracts/v1/FiatTokenV1.sol": { - "keccak256": "0xe5e2f197479f0595180384277345ca09c12e26ce57c4c427f4c8013a08b4a4de", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://5680d3b32215c8ddfda2d1bd9770e5b5957fb931139f5434c22cf883a516fe0a", - "dweb:/ipfs/Qmf8mLTfkfjbs97gWDHPJjMJGc6R44ok6WsCAkeaVQqpfh" - ] - }, - "contracts/v1/Ownable.sol": { - "keccak256": "0xdd51a06c4d6c38ef806c50463ade63123980334bf173c3301794e242228fc9e5", - "license": "MIT", - "urls": [ - "bzz-raw://46632a7280a569d30da08ae6c0559295fa1dd6917ba458785ac1f50736474741", - "dweb:/ipfs/QmYb5zXqzTHPaWegnn5NcmrbDHbVFYnpENXvtgjQxCrjMe" - ] - }, - "contracts/v1/Pausable.sol": { - "keccak256": "0xa1112323b001871746d971f9dd2c61d094ea856146071537dc9d92e18e8cc829", - "license": "MIT", - "urls": [ - "bzz-raw://9ba61133c7e0f552222d0d3f05d0bba65f29e1db5242a50a3ec16b55aa0e7cc9", - "dweb:/ipfs/QmZtJV2VVPp5Upi4siVuM1mYjfzHPfXY95XjepAo6MYVxc" - ] - }, - "contracts/v2/AbstractFiatTokenV2.sol": { - "keccak256": "0x1e9218de2ee11f0f1beabdadba445afcd849918490167bb1a4533d18ebe4d5b2", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://12b6fd3c3e51296d54361853f6003482b119e9fe1ca526702e2b060546cf96b3", - "dweb:/ipfs/QmbqgLouA4mGQt1BDs5srEMyu8jCa84j7fPUp5duN3T1PU" - ] - }, - "contracts/v2/EIP2612.sol": { - "keccak256": "0x16f5b3c4bb47369c28c13ee2d3370aeea576339ee81518ccbf939b9baa612106", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://b6647ec12c93233b374854af468ea8b5d50b9c16fb3defc8421cf8bb4dd80179", - "dweb:/ipfs/QmQVEq8vdYFxCtgJ9dNJWXd5VYDXLUiUrgsDL4fCXFUGxN" - ] - }, - "contracts/v2/EIP3009.sol": { - "keccak256": "0xc98927aa58d2f966468c15a22ef6527cf380292cacdc3457b8863b76507dfd94", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://965036cf068ff19ff247f8d82548966a5169c15d632af750f17f1f05259a89c8", - "dweb:/ipfs/QmZo1sMGRpe2BPzdr6Vr1tRFqurkacWd5roD3YHwKMwFKP" - ] - }, - "contracts/v2/EIP712Domain.sol": { - "keccak256": "0x4e03896c8853f071048927ca14231a448e6867e16d2551231e1be72c796c838d", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://0dbca6649b894a93688f69908c7ff4bf557a0ceefeca00c82d6104cfdb902903", - "dweb:/ipfs/QmbyQV5wHrXoC33RB6NpULYmRNd6oNd4tb72nyughJUAta" - ] - }, - "contracts/v2/FiatTokenV2.sol": { - "keccak256": "0xaa69bbb548a49984893ca49826fded938890c9fed3219c43a121f522957c1da5", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://3ad10dcef5d9610ca45ae2a8a4f977e16ad71d973fb4aa133b90374f3bd08f8e", - "dweb:/ipfs/QmbB54frYGoyaHMF85NA1AKuWXM63A24QpwbKHsbyM17Cm" - ] - }, - "contracts/v2/FiatTokenV2_1.sol": { - "keccak256": "0x7f26b9a3033844a8540834382090cd0b4485a74f04daa1452342cfc14f1a959a", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://9c58788073f0c6602057a6854431b5cba485871a57553e65cc913d0bea8567ff", - "dweb:/ipfs/Qmbis7mKgredEgMCNUB8ymkij6XeJ1svZQTjUiMejqnobN" - ] - }, - "contracts/v2/FiatTokenV2_2.sol": { - "keccak256": "0xbdacdfd386a04adaf337f31dc2720e37dbb008d92b81c3cc98324efc855dce5d", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://28d70ffbeb499aedaeb47f98ed9e0d5bbed0e83dc22e9d745fc0433824b0d452", - "dweb:/ipfs/Qmbt7B24ZpefvGsTt6a2aYgpDrbX6NCKNbHeTSctH3J7zg" - ] - }, - "node_modules/@openzeppelin/contracts/math/SafeMath.sol": { - "keccak256": "0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52", - "license": "MIT", - "urls": [ - "bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c", - "dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR" - ] - }, - "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": { - "keccak256": "0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5", - "license": "MIT", - "urls": [ - "bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08", - "dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC" - ] - }, - "node_modules/@openzeppelin/contracts/token/ERC20/SafeERC20.sol": { - "keccak256": "0xf12dfbe97e6276980b83d2830bb0eb75e0cf4f3e626c2471137f82158ae6a0fc", - "license": "MIT", - "urls": [ - "bzz-raw://b3a849c2d95e85463909e5b5c920b13e7a11216ca14127085e16d22b9379d52a", - "dweb:/ipfs/QmUg3CZDbCCcQdroEpexBy5ZFd5vD1UWijWQq9qHZjtJNQ" - ] - }, - "node_modules/@openzeppelin/contracts/utils/Address.sol": { - "keccak256": "0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea", - "license": "MIT", - "urls": [ - "bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c", - "dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN" - ] - } - }, - "version": 1 -} +{"compiler":{"version":"0.6.12+commit.27d51765"},"language":"Solidity","output":{"abi":[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"authorizer","type":"address"},{"indexed":true,"internalType":"bytes32","name":"nonce","type":"bytes32"}],"name":"AuthorizationCanceled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"authorizer","type":"address"},{"indexed":true,"internalType":"bytes32","name":"nonce","type":"bytes32"}],"name":"AuthorizationUsed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_account","type":"address"}],"name":"Blacklisted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newBlacklister","type":"address"}],"name":"BlacklisterChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"burner","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newMasterMinter","type":"address"}],"name":"MasterMinterChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"minter","type":"address"},{"indexed":false,"internalType":"uint256","name":"minterAllowedAmount","type":"uint256"}],"name":"MinterConfigured","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldMinter","type":"address"}],"name":"MinterRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":false,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"PauserChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newRescuer","type":"address"}],"name":"RescuerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_account","type":"address"}],"name":"UnBlacklisted","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"},{"inputs":[],"name":"CANCEL_AUTHORIZATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"RECEIVE_WITH_AUTHORIZATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TRANSFER_WITH_AUTHORIZATION_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"authorizer","type":"address"},{"internalType":"bytes32","name":"nonce","type":"bytes32"}],"name":"authorizationState","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"blacklister","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"authorizer","type":"address"},{"internalType":"bytes32","name":"nonce","type":"bytes32"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"cancelAuthorization","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"authorizer","type":"address"},{"internalType":"bytes32","name":"nonce","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"cancelAuthorization","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"},{"internalType":"uint256","name":"minterAllowedAmount","type":"uint256"}],"name":"configureMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"currency","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"decrement","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"increment","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"tokenName","type":"string"},{"internalType":"string","name":"tokenSymbol","type":"string"},{"internalType":"string","name":"tokenCurrency","type":"string"},{"internalType":"uint8","name":"tokenDecimals","type":"uint8"},{"internalType":"address","name":"newMasterMinter","type":"address"},{"internalType":"address","name":"newPauser","type":"address"},{"internalType":"address","name":"newBlacklister","type":"address"},{"internalType":"address","name":"newOwner","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"newName","type":"string"}],"name":"initializeV2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lostAndFound","type":"address"}],"name":"initializeV2_1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accountsToBlacklist","type":"address[]"},{"internalType":"string","name":"newSymbol","type":"string"}],"name":"initializeV2_2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"masterMinter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"minterAllowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pauser","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"validAfter","type":"uint256"},{"internalType":"uint256","name":"validBefore","type":"uint256"},{"internalType":"bytes32","name":"nonce","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"receiveWithAuthorization","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"validAfter","type":"uint256"},{"internalType":"uint256","name":"validBefore","type":"uint256"},{"internalType":"bytes32","name":"nonce","type":"bytes32"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"receiveWithAuthorization","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"minter","type":"address"}],"name":"removeMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"tokenContract","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescuer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"validAfter","type":"uint256"},{"internalType":"uint256","name":"validBefore","type":"uint256"},{"internalType":"bytes32","name":"nonce","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"transferWithAuthorization","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"validAfter","type":"uint256"},{"internalType":"uint256","name":"validBefore","type":"uint256"},{"internalType":"bytes32","name":"nonce","type":"bytes32"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"transferWithAuthorization","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"unBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newBlacklister","type":"address"}],"name":"updateBlacklister","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newMasterMinter","type":"address"}],"name":"updateMasterMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newPauser","type":"address"}],"name":"updatePauser","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRescuer","type":"address"}],"name":"updateRescuer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"}],"devdoc":{"kind":"dev","methods":{"DOMAIN_SEPARATOR()":{"returns":{"_0":"The bytes32 EIP712 domain separator."}},"allowance(address,address)":{"params":{"owner":"The token owner's address.","spender":"The spender's address."},"returns":{"_0":"The remaining allowance."}},"approve(address,uint256)":{"params":{"spender":"The spender's address.","value":"The allowance amount."},"returns":{"_0":"True if the operation was successful."}},"authorizationState(address,bytes32)":{"details":"Nonces are randomly generated 32-byte data unique to the authorizer's address","params":{"authorizer":"Authorizer's address","nonce":"Nonce of the authorization"},"returns":{"_0":"True if the nonce is used"}},"balanceOf(address)":{"params":{"account":"The address to check."},"returns":{"_0":"balance The fiat token balance of the account."}},"blacklist(address)":{"params":{"_account":"The address to blacklist."}},"burn(uint256)":{"details":"The caller must be a minter, must not be blacklisted, and the amount to burn should be less than or equal to the account's balance.","params":{"_amount":"the amount of tokens to be burned."}},"cancelAuthorization(address,bytes32,bytes)":{"details":"Works only if the authorization is not yet used. EOA wallet signatures should be packed in the order of r, s, v.","params":{"authorizer":"Authorizer's address","nonce":"Nonce of the authorization","signature":"Signature bytes signed by an EOA wallet or a contract wallet"}},"cancelAuthorization(address,bytes32,uint8,bytes32,bytes32)":{"details":"Works only if the authorization is not yet used.","params":{"authorizer":"Authorizer's address","nonce":"Nonce of the authorization","r":"r of the signature","s":"s of the signature","v":"v of the signature"}},"configureMinter(address,uint256)":{"params":{"minter":"The address of the minter.","minterAllowedAmount":"The minting amount allowed for the minter."},"returns":{"_0":"True if the operation was successful."}},"decreaseAllowance(address,uint256)":{"params":{"decrement":"Amount of decrease in allowance","spender":"Spender's address"},"returns":{"_0":"True if successful"}},"increaseAllowance(address,uint256)":{"params":{"increment":"Amount of increase in allowance","spender":"Spender's address"},"returns":{"_0":"True if successful"}},"initialize(string,string,string,uint8,address,address,address,address)":{"params":{"newBlacklister":"The blacklister address for the fiat token.","newMasterMinter":"The masterMinter address for the fiat token.","newOwner":"The owner of the fiat token.","newPauser":"The pauser address for the fiat token.","tokenCurrency":"The fiat currency that the token represents.","tokenDecimals":"The number of decimals that the token uses.","tokenName":"The name of the fiat token.","tokenSymbol":"The symbol of the fiat token."}},"initializeV2(string)":{"params":{"newName":"New token name"}},"initializeV2_1(address)":{"params":{"lostAndFound":"The address to which the locked funds are sent"}},"initializeV2_2(address[],string)":{"params":{"accountsToBlacklist":"A list of accounts to migrate from the old blacklist","newSymbol":"New token symbol data structure to the new blacklist data structure."}},"isBlacklisted(address)":{"params":{"_account":"The address to check."},"returns":{"_0":"True if the account is blacklisted, false if the account is not blacklisted."}},"isMinter(address)":{"params":{"account":"The address to check."},"returns":{"_0":"True if the account is a minter, false if the account is not a minter."}},"mint(address,uint256)":{"params":{"_amount":"The amount of tokens to mint. Must be less than or equal to the minterAllowance of the caller.","_to":"The address that will receive the minted tokens."},"returns":{"_0":"True if the operation was successful."}},"minterAllowance(address)":{"params":{"minter":"The address to check."},"returns":{"_0":"The remaining minter allowance for the account."}},"nonces(address)":{"params":{"owner":"Token owner's address (Authorizer)"},"returns":{"_0":"Next nonce"}},"owner()":{"details":"Tells the address of the owner","returns":{"_0":"the address of the owner"}},"pause()":{"details":"called by the owner to pause, triggers stopped state"},"permit(address,address,uint256,uint256,bytes)":{"details":"EOA wallet signatures should be packed in the order of r, s, v.","params":{"deadline":"The time at which the signature expires (unix time), or max uint256 value to signal no expiration","owner":"Token owner's address (Authorizer)","signature":"Signature bytes signed by an EOA wallet or a contract wallet","spender":"Spender's address","value":"Amount of allowance"}},"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":{"params":{"deadline":"The time at which the signature expires (unix time), or max uint256 value to signal no expiration","owner":"Token owner's address (Authorizer)","r":"r of the signature","s":"s of the signature","spender":"Spender's address","v":"v of the signature","value":"Amount of allowance"}},"receiveWithAuthorization(address,address,uint256,uint256,uint256,bytes32,bytes)":{"details":"This has an additional check to ensure that the payee's address matches the caller of this function to prevent front-running attacks. EOA wallet signatures should be packed in the order of r, s, v.","params":{"from":"Payer's address (Authorizer)","nonce":"Unique nonce","signature":"Signature bytes signed by an EOA wallet or a contract wallet","to":"Payee's address","validAfter":"The time after which this is valid (unix time)","validBefore":"The time before which this is valid (unix time)","value":"Amount to be transferred"}},"receiveWithAuthorization(address,address,uint256,uint256,uint256,bytes32,uint8,bytes32,bytes32)":{"details":"This has an additional check to ensure that the payee's address matches the caller of this function to prevent front-running attacks.","params":{"from":"Payer's address (Authorizer)","nonce":"Unique nonce","r":"r of the signature","s":"s of the signature","to":"Payee's address","v":"v of the signature","validAfter":"The time after which this is valid (unix time)","validBefore":"The time before which this is valid (unix time)","value":"Amount to be transferred"}},"removeMinter(address)":{"params":{"minter":"The address of the minter to remove."},"returns":{"_0":"True if the operation was successful."}},"rescueERC20(address,address,uint256)":{"params":{"amount":"Amount to withdraw","to":"Recipient address","tokenContract":"ERC20 token contract address"}},"rescuer()":{"returns":{"_0":"Rescuer's address"}},"totalSupply()":{"returns":{"_0":"The totalSupply of the fiat token."}},"transfer(address,uint256)":{"params":{"to":"Payee's address.","value":"Transfer amount."},"returns":{"_0":"True if the operation was successful."}},"transferFrom(address,address,uint256)":{"details":"The caller must have some fiat token allowance on the payer's tokens.","params":{"from":"Payer's address.","to":"Payee's address.","value":"Transfer amount."},"returns":{"_0":"True if the operation was successful."}},"transferOwnership(address)":{"details":"Allows the current owner to transfer control of the contract to a newOwner.","params":{"newOwner":"The address to transfer ownership to."}},"transferWithAuthorization(address,address,uint256,uint256,uint256,bytes32,bytes)":{"details":"EOA wallet signatures should be packed in the order of r, s, v.","params":{"from":"Payer's address (Authorizer)","nonce":"Unique nonce","signature":"Signature bytes signed by an EOA wallet or a contract wallet","to":"Payee's address","validAfter":"The time after which this is valid (unix time)","validBefore":"The time before which this is valid (unix time)","value":"Amount to be transferred"}},"transferWithAuthorization(address,address,uint256,uint256,uint256,bytes32,uint8,bytes32,bytes32)":{"params":{"from":"Payer's address (Authorizer)","nonce":"Unique nonce","r":"r of the signature","s":"s of the signature","to":"Payee's address","v":"v of the signature","validAfter":"The time after which this is valid (unix time)","validBefore":"The time before which this is valid (unix time)","value":"Amount to be transferred"}},"unBlacklist(address)":{"params":{"_account":"The address to remove from the blacklist."}},"unpause()":{"details":"called by the owner to unpause, returns to normal state"},"updateBlacklister(address)":{"params":{"_newBlacklister":"The address of the new blacklister."}},"updateMasterMinter(address)":{"params":{"_newMasterMinter":"The address of the new master minter."}},"updatePauser(address)":{"params":{"_newPauser":"The address of the new pauser."}},"updateRescuer(address)":{"params":{"newRescuer":"The address of the new rescuer."}},"version()":{"returns":{"_0":"Version string"}}},"title":"FiatToken V2.2","version":1},"userdoc":{"kind":"user","methods":{"DOMAIN_SEPARATOR()":{"notice":"Get the EIP712 Domain Separator."},"allowance(address,address)":{"notice":"Gets the remaining amount of fiat tokens a spender is allowed to transfer on behalf of the token owner."},"approve(address,uint256)":{"notice":"Sets a fiat token allowance for a spender to spend on behalf of the caller."},"authorizationState(address,bytes32)":{"notice":"Returns the state of an authorization"},"balanceOf(address)":{"notice":"Gets the fiat token balance of an account."},"blacklist(address)":{"notice":"Adds account to blacklist."},"burn(uint256)":{"notice":"Allows a minter to burn some of its own tokens."},"cancelAuthorization(address,bytes32,bytes)":{"notice":"Attempt to cancel an authorization"},"cancelAuthorization(address,bytes32,uint8,bytes32,bytes32)":{"notice":"Attempt to cancel an authorization"},"configureMinter(address,uint256)":{"notice":"Adds or updates a new minter with a mint allowance."},"decreaseAllowance(address,uint256)":{"notice":"Decrease the allowance by a given decrement"},"increaseAllowance(address,uint256)":{"notice":"Increase the allowance by a given increment"},"initialize(string,string,string,uint8,address,address,address,address)":{"notice":"Initializes the fiat token contract."},"initializeV2(string)":{"notice":"Initialize v2"},"initializeV2_1(address)":{"notice":"Initialize v2.1"},"initializeV2_2(address[],string)":{"notice":"Initialize v2.2"},"isBlacklisted(address)":{"notice":"Checks if account is blacklisted."},"isMinter(address)":{"notice":"Checks if an account is a minter."},"mint(address,uint256)":{"notice":"Mints fiat tokens to an address."},"minterAllowance(address)":{"notice":"Gets the minter allowance for an account."},"nonces(address)":{"notice":"Nonces for permit"},"permit(address,address,uint256,uint256,bytes)":{"notice":"Update allowance with a signed permit"},"permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":{"notice":"Update allowance with a signed permit"},"receiveWithAuthorization(address,address,uint256,uint256,uint256,bytes32,bytes)":{"notice":"Receive a transfer with a signed authorization from the payer"},"receiveWithAuthorization(address,address,uint256,uint256,uint256,bytes32,uint8,bytes32,bytes32)":{"notice":"Receive a transfer with a signed authorization from the payer"},"removeMinter(address)":{"notice":"Removes a minter."},"rescueERC20(address,address,uint256)":{"notice":"Rescue ERC20 tokens locked up in this contract."},"rescuer()":{"notice":"Returns current rescuer"},"totalSupply()":{"notice":"Gets the totalSupply of the fiat token."},"transfer(address,uint256)":{"notice":"Transfers tokens from the caller."},"transferFrom(address,address,uint256)":{"notice":"Transfers tokens from an address to another by spending the caller's allowance."},"transferWithAuthorization(address,address,uint256,uint256,uint256,bytes32,bytes)":{"notice":"Execute a transfer with a signed authorization"},"transferWithAuthorization(address,address,uint256,uint256,uint256,bytes32,uint8,bytes32,bytes32)":{"notice":"Execute a transfer with a signed authorization"},"unBlacklist(address)":{"notice":"Removes account from blacklist."},"updateBlacklister(address)":{"notice":"Updates the blacklister address."},"updateMasterMinter(address)":{"notice":"Updates the master minter address."},"updatePauser(address)":{"notice":"Updates the pauser address."},"updateRescuer(address)":{"notice":"Updates the rescuer address."},"version()":{"notice":"Version string for the EIP712 domain separator"}},"notice":"ERC20 Token backed by fiat reserves, version 2.2","version":1}},"settings":{"compilationTarget":{"contracts/v2/FiatTokenV2_2.sol":"FiatTokenV2_2"},"evmVersion":"istanbul","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":true,"runs":10000000},"remappings":[":@ensdomains/=node_modules/@ensdomains/",":@openzeppelin/=node_modules/@openzeppelin/",":@solidity-parser/=node_modules/prettier-plugin-solidity/node_modules/@solidity-parser/",":ds-test/=lib/forge-std/lib/ds-test/src/",":eth-gas-reporter/=node_modules/eth-gas-reporter/",":forge-std/=lib/forge-std/src/",":hardhat/=node_modules/hardhat/"]},"sources":{"contracts/interface/IERC1271.sol":{"keccak256":"0x8755a3f5c92f746d1dff56c9389b5dfcba2630c7057b62da2531437871709f7e","license":"Apache-2.0","urls":["bzz-raw://a9aac28c347968ea5eaad87756f74be163411b5d55e338093c6c120d0b264616","dweb:/ipfs/Qmf2mfJF6dDxoNXYfyp7BqGhctC3YjKYGpzNUmipDfqHDf"]},"contracts/util/ECRecover.sol":{"keccak256":"0x7abfe3fc8384dbabe687b69f167653f9cfd9ffc89d954e852705ce3ba4379e0b","license":"Apache-2.0","urls":["bzz-raw://97891f5fa6e380ffc65f3f031a1efb300bdb63f510f1d20faf5bbb9586496033","dweb:/ipfs/QmbnQKEe9FwCFpisyJJQPAvYNo57EuRNT1UsBQYVc26FJX"]},"contracts/util/EIP712.sol":{"keccak256":"0x0bb667288d2164139244dcbe02eee3453dfcdbdd04017a6d6076ca8910be0d57","license":"Apache-2.0","urls":["bzz-raw://5cb904b9abf2a97fd864d483ae46c4868fd06e8f12a307e943b8d9c1f0b5a716","dweb:/ipfs/QmV6tWPVfm4amdb6xy4nHKb5rwfxAxM13b1ojBQ7FSJBP5"]},"contracts/util/MessageHashUtils.sol":{"keccak256":"0xc4b8586fc80806077670ac58d7cddd22708b0743a5d3507c4f64a01c40539bda","license":"Apache-2.0","urls":["bzz-raw://34b1e4db62aef82ae24bff074a4e333a6bbb0a0fe78be6064480526515048af4","dweb:/ipfs/QmS1TrXywfD2YiBMidEQTeVK9whxXvuN4b9qZ5uGUMKirh"]},"contracts/util/SignatureChecker.sol":{"keccak256":"0xdd897f22c2b24d14e6f6f5a0235664955fd70611e5e283dc5573aac8bfd7207f","license":"Apache-2.0","urls":["bzz-raw://fdcf4e52294e000226d216f5cdae3f4769d93ebcad22b540b2cb58141860114f","dweb:/ipfs/QmR9BGSCJ8WtmX6wMM62uqQuhRSVSmkifJZVxWZLMREozp"]},"contracts/v1.1/FiatTokenV1_1.sol":{"keccak256":"0x074eb0ccfae05bae37aff36fdfb694250a8fd7b0178caef0635507ab1344b918","license":"Apache-2.0","urls":["bzz-raw://082ed1324bf6219acf0a01d5bea0f9e07f972c7f6df403c13e721c7bb46a3a67","dweb:/ipfs/QmPu2XwF1hFxMexy1FAzHkE3LBt2NQ5YfoZycGZL4sQgTR"]},"contracts/v1.1/Rescuable.sol":{"keccak256":"0x79bb6ea6f45b58ad75c9c8cfe82825930cddc77d817607ddc61d3e1f78a74cfb","license":"Apache-2.0","urls":["bzz-raw://f6aa670e4d26932d143fd946077fc21c82c6e22ed66861faa42567b2684ecf01","dweb:/ipfs/QmQmWkmXDoR7Z8fyxfrRg6gUZTvKAi6sPmgyX1Jj9d1mAq"]},"contracts/v1/AbstractFiatTokenV1.sol":{"keccak256":"0x3ff009bf7a01e2bf600d320b8be0921014606c0c9643990ab5b1acc7bb5b14e0","license":"Apache-2.0","urls":["bzz-raw://7180e208d2ac06b8927eac72644ab00e7d03d2d93a57e41380c299147cdc4ea9","dweb:/ipfs/QmeNAWsejER9AuqeuLD6V42Pp1tGHYcXJ65LoAoP1EUrUs"]},"contracts/v1/Blacklistable.sol":{"keccak256":"0xd44b9f11d8fc1384f8261d4fd9c2fcd06893846d92605541d797c94e70e158d8","license":"Apache-2.0","urls":["bzz-raw://a184e8a647a516e23eac13d8743eece6f743424cda5034d8e8f8c05c75912181","dweb:/ipfs/Qmec8QpCBFUvXfwMxGG3zZf7nfWjhkDUK2ch6k1N5DoZHu"]},"contracts/v1/FiatTokenV1.sol":{"keccak256":"0xe5e2f197479f0595180384277345ca09c12e26ce57c4c427f4c8013a08b4a4de","license":"Apache-2.0","urls":["bzz-raw://5680d3b32215c8ddfda2d1bd9770e5b5957fb931139f5434c22cf883a516fe0a","dweb:/ipfs/Qmf8mLTfkfjbs97gWDHPJjMJGc6R44ok6WsCAkeaVQqpfh"]},"contracts/v1/Ownable.sol":{"keccak256":"0xdd51a06c4d6c38ef806c50463ade63123980334bf173c3301794e242228fc9e5","license":"MIT","urls":["bzz-raw://46632a7280a569d30da08ae6c0559295fa1dd6917ba458785ac1f50736474741","dweb:/ipfs/QmYb5zXqzTHPaWegnn5NcmrbDHbVFYnpENXvtgjQxCrjMe"]},"contracts/v1/Pausable.sol":{"keccak256":"0xa1112323b001871746d971f9dd2c61d094ea856146071537dc9d92e18e8cc829","license":"MIT","urls":["bzz-raw://9ba61133c7e0f552222d0d3f05d0bba65f29e1db5242a50a3ec16b55aa0e7cc9","dweb:/ipfs/QmZtJV2VVPp5Upi4siVuM1mYjfzHPfXY95XjepAo6MYVxc"]},"contracts/v2/AbstractFiatTokenV2.sol":{"keccak256":"0x1e9218de2ee11f0f1beabdadba445afcd849918490167bb1a4533d18ebe4d5b2","license":"Apache-2.0","urls":["bzz-raw://12b6fd3c3e51296d54361853f6003482b119e9fe1ca526702e2b060546cf96b3","dweb:/ipfs/QmbqgLouA4mGQt1BDs5srEMyu8jCa84j7fPUp5duN3T1PU"]},"contracts/v2/EIP2612.sol":{"keccak256":"0x16f5b3c4bb47369c28c13ee2d3370aeea576339ee81518ccbf939b9baa612106","license":"Apache-2.0","urls":["bzz-raw://b6647ec12c93233b374854af468ea8b5d50b9c16fb3defc8421cf8bb4dd80179","dweb:/ipfs/QmQVEq8vdYFxCtgJ9dNJWXd5VYDXLUiUrgsDL4fCXFUGxN"]},"contracts/v2/EIP3009.sol":{"keccak256":"0xc98927aa58d2f966468c15a22ef6527cf380292cacdc3457b8863b76507dfd94","license":"Apache-2.0","urls":["bzz-raw://965036cf068ff19ff247f8d82548966a5169c15d632af750f17f1f05259a89c8","dweb:/ipfs/QmZo1sMGRpe2BPzdr6Vr1tRFqurkacWd5roD3YHwKMwFKP"]},"contracts/v2/EIP712Domain.sol":{"keccak256":"0x4e03896c8853f071048927ca14231a448e6867e16d2551231e1be72c796c838d","license":"Apache-2.0","urls":["bzz-raw://0dbca6649b894a93688f69908c7ff4bf557a0ceefeca00c82d6104cfdb902903","dweb:/ipfs/QmbyQV5wHrXoC33RB6NpULYmRNd6oNd4tb72nyughJUAta"]},"contracts/v2/FiatTokenV2.sol":{"keccak256":"0xaa69bbb548a49984893ca49826fded938890c9fed3219c43a121f522957c1da5","license":"Apache-2.0","urls":["bzz-raw://3ad10dcef5d9610ca45ae2a8a4f977e16ad71d973fb4aa133b90374f3bd08f8e","dweb:/ipfs/QmbB54frYGoyaHMF85NA1AKuWXM63A24QpwbKHsbyM17Cm"]},"contracts/v2/FiatTokenV2_1.sol":{"keccak256":"0x7f26b9a3033844a8540834382090cd0b4485a74f04daa1452342cfc14f1a959a","license":"Apache-2.0","urls":["bzz-raw://9c58788073f0c6602057a6854431b5cba485871a57553e65cc913d0bea8567ff","dweb:/ipfs/Qmbis7mKgredEgMCNUB8ymkij6XeJ1svZQTjUiMejqnobN"]},"contracts/v2/FiatTokenV2_2.sol":{"keccak256":"0xbdacdfd386a04adaf337f31dc2720e37dbb008d92b81c3cc98324efc855dce5d","license":"Apache-2.0","urls":["bzz-raw://28d70ffbeb499aedaeb47f98ed9e0d5bbed0e83dc22e9d745fc0433824b0d452","dweb:/ipfs/Qmbt7B24ZpefvGsTt6a2aYgpDrbX6NCKNbHeTSctH3J7zg"]},"node_modules/@openzeppelin/contracts/math/SafeMath.sol":{"keccak256":"0xcc78a17dd88fa5a2edc60c8489e2f405c0913b377216a5b26b35656b2d0dab52","license":"MIT","urls":["bzz-raw://526dc85e1f9b9b45830e202568d267d93dde7a4fcccf4ad7798dadcd92304d3c","dweb:/ipfs/QmaoXMB972J3cSDLtBq3xBo4jLwqD2uzXTwujtSPqkYVhR"]},"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5","license":"MIT","urls":["bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08","dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC"]},"node_modules/@openzeppelin/contracts/token/ERC20/SafeERC20.sol":{"keccak256":"0xf12dfbe97e6276980b83d2830bb0eb75e0cf4f3e626c2471137f82158ae6a0fc","license":"MIT","urls":["bzz-raw://b3a849c2d95e85463909e5b5c920b13e7a11216ca14127085e16d22b9379d52a","dweb:/ipfs/QmUg3CZDbCCcQdroEpexBy5ZFd5vD1UWijWQq9qHZjtJNQ"]},"node_modules/@openzeppelin/contracts/utils/Address.sol":{"keccak256":"0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea","license":"MIT","urls":["bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c","dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN"]}},"version":1} \ No newline at end of file diff --git a/verification_artifacts/SignatureChecker.json b/verification_artifacts/SignatureChecker.json index e08ca6dcc..02cf5b2a7 100644 --- a/verification_artifacts/SignatureChecker.json +++ b/verification_artifacts/SignatureChecker.json @@ -1,80 +1 @@ -{ - "compiler": { "version": "0.6.12+commit.27d51765" }, - "language": "Solidity", - "output": { - "abi": [ - { - "inputs": [ - { "internalType": "address", "name": "signer", "type": "address" }, - { "internalType": "bytes32", "name": "digest", "type": "bytes32" }, - { "internalType": "bytes", "name": "signature", "type": "bytes" } - ], - "name": "isValidSignatureNow", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "view", - "type": "function" - } - ], - "devdoc": { - "details": "Signature verification helper that can be used instead of `ECRecover.recover` to seamlessly support both ECDSA signatures from externally owned accounts (EOAs) as well as ERC1271 signatures from smart contract wallets. Adapted from https://github.com/OpenZeppelin/openzeppelin-contracts/blob/21bb89ef5bfc789b9333eb05e3ba2b7b284ac77c/contracts/utils/cryptography/SignatureChecker.sol", - "kind": "dev", - "methods": { - "isValidSignatureNow(address,bytes32,bytes)": { - "details": "Checks if a signature is valid for a given signer and data hash. If the signer is a smart contract, the signature is validated against that smart contract using ERC1271, otherwise it's validated using `ECRecover.recover`.", - "params": { - "digest": "Keccak-256 hash digest of the signed message", - "signature": "Signature byte array associated with hash", - "signer": "Address of the claimed signer" - } - } - }, - "version": 1 - }, - "userdoc": { "kind": "user", "methods": {}, "version": 1 } - }, - "settings": { - "compilationTarget": { - "contracts/util/SignatureChecker.sol": "SignatureChecker" - }, - "evmVersion": "istanbul", - "libraries": {}, - "metadata": { "bytecodeHash": "ipfs" }, - "optimizer": { "enabled": true, "runs": 10000000 }, - "remappings": [ - ":@ensdomains/=node_modules/@ensdomains/", - ":@openzeppelin/=node_modules/@openzeppelin/", - ":@solidity-parser/=node_modules/prettier-plugin-solidity/node_modules/@solidity-parser/", - ":ds-test/=lib/forge-std/lib/ds-test/src/", - ":eth-gas-reporter/=node_modules/eth-gas-reporter/", - ":forge-std/=lib/forge-std/src/", - ":hardhat/=node_modules/hardhat/" - ] - }, - "sources": { - "contracts/interface/IERC1271.sol": { - "keccak256": "0x8755a3f5c92f746d1dff56c9389b5dfcba2630c7057b62da2531437871709f7e", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://a9aac28c347968ea5eaad87756f74be163411b5d55e338093c6c120d0b264616", - "dweb:/ipfs/Qmf2mfJF6dDxoNXYfyp7BqGhctC3YjKYGpzNUmipDfqHDf" - ] - }, - "contracts/util/ECRecover.sol": { - "keccak256": "0x7abfe3fc8384dbabe687b69f167653f9cfd9ffc89d954e852705ce3ba4379e0b", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://97891f5fa6e380ffc65f3f031a1efb300bdb63f510f1d20faf5bbb9586496033", - "dweb:/ipfs/QmbnQKEe9FwCFpisyJJQPAvYNo57EuRNT1UsBQYVc26FJX" - ] - }, - "contracts/util/SignatureChecker.sol": { - "keccak256": "0xdd897f22c2b24d14e6f6f5a0235664955fd70611e5e283dc5573aac8bfd7207f", - "license": "Apache-2.0", - "urls": [ - "bzz-raw://fdcf4e52294e000226d216f5cdae3f4769d93ebcad22b540b2cb58141860114f", - "dweb:/ipfs/QmR9BGSCJ8WtmX6wMM62uqQuhRSVSmkifJZVxWZLMREozp" - ] - } - }, - "version": 1 -} +{"compiler":{"version":"0.6.12+commit.27d51765"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"bytes32","name":"digest","type":"bytes32"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"isValidSignatureNow","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"devdoc":{"details":"Signature verification helper that can be used instead of `ECRecover.recover` to seamlessly support both ECDSA signatures from externally owned accounts (EOAs) as well as ERC1271 signatures from smart contract wallets. Adapted from https://github.com/OpenZeppelin/openzeppelin-contracts/blob/21bb89ef5bfc789b9333eb05e3ba2b7b284ac77c/contracts/utils/cryptography/SignatureChecker.sol","kind":"dev","methods":{"isValidSignatureNow(address,bytes32,bytes)":{"details":"Checks if a signature is valid for a given signer and data hash. If the signer is a smart contract, the signature is validated against that smart contract using ERC1271, otherwise it's validated using `ECRecover.recover`.","params":{"digest":"Keccak-256 hash digest of the signed message","signature":"Signature byte array associated with hash","signer":"Address of the claimed signer"}}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"compilationTarget":{"contracts/util/SignatureChecker.sol":"SignatureChecker"},"evmVersion":"istanbul","libraries":{},"metadata":{"bytecodeHash":"ipfs"},"optimizer":{"enabled":true,"runs":10000000},"remappings":[":@ensdomains/=node_modules/@ensdomains/",":@openzeppelin/=node_modules/@openzeppelin/",":@solidity-parser/=node_modules/prettier-plugin-solidity/node_modules/@solidity-parser/",":ds-test/=lib/forge-std/lib/ds-test/src/",":eth-gas-reporter/=node_modules/eth-gas-reporter/",":forge-std/=lib/forge-std/src/",":hardhat/=node_modules/hardhat/"]},"sources":{"contracts/interface/IERC1271.sol":{"keccak256":"0x8755a3f5c92f746d1dff56c9389b5dfcba2630c7057b62da2531437871709f7e","license":"Apache-2.0","urls":["bzz-raw://a9aac28c347968ea5eaad87756f74be163411b5d55e338093c6c120d0b264616","dweb:/ipfs/Qmf2mfJF6dDxoNXYfyp7BqGhctC3YjKYGpzNUmipDfqHDf"]},"contracts/util/ECRecover.sol":{"keccak256":"0x7abfe3fc8384dbabe687b69f167653f9cfd9ffc89d954e852705ce3ba4379e0b","license":"Apache-2.0","urls":["bzz-raw://97891f5fa6e380ffc65f3f031a1efb300bdb63f510f1d20faf5bbb9586496033","dweb:/ipfs/QmbnQKEe9FwCFpisyJJQPAvYNo57EuRNT1UsBQYVc26FJX"]},"contracts/util/SignatureChecker.sol":{"keccak256":"0xdd897f22c2b24d14e6f6f5a0235664955fd70611e5e283dc5573aac8bfd7207f","license":"Apache-2.0","urls":["bzz-raw://fdcf4e52294e000226d216f5cdae3f4769d93ebcad22b540b2cb58141860114f","dweb:/ipfs/QmR9BGSCJ8WtmX6wMM62uqQuhRSVSmkifJZVxWZLMREozp"]}},"version":1} \ No newline at end of file