diff --git a/verification_artifacts/FiatTokenProxy.json b/verification_artifacts/FiatTokenProxy.json new file mode 100644 index 000000000..0aef7b6f3 --- /dev/null +++ b/verification_artifacts/FiatTokenProxy.json @@ -0,0 +1,235 @@ +{ + "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 new file mode 100644 index 000000000..1989fc4c9 --- /dev/null +++ b/verification_artifacts/FiatTokenV2_2.json @@ -0,0 +1,2070 @@ +{ + "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": { + "contracts/util/SignatureChecker.sol:SignatureChecker": "0x85834ad2b2792b6724fd4e50d1b515156637445b" + }, + "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 new file mode 100644 index 000000000..35449215d --- /dev/null +++ b/verification_artifacts/SignatureChecker.json @@ -0,0 +1,109 @@ +{ + "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 diff --git a/verification_artifacts/input.json b/verification_artifacts/input.json new file mode 100644 index 000000000..128bfe3d3 --- /dev/null +++ b/verification_artifacts/input.json @@ -0,0 +1,15 @@ +{ + "SignatureChecker": { + "contractAddress": "0x85834aD2B2792b6724fD4e50D1B515156637445b", + "contractCreationTxHash": "0x49e4a7a624951ae350183d5f6fbe744f9feb07d5ba0a47888eb3290d5089bf1b" + }, + "FiatTokenV2_2": { + "contractAddress": "0x19510BBBDAcc162a5579AD60862B1f2A41AE21b1", + "contractCreationTxHash": "0xefdb1f7110739e51a3dd0b2eae7b0d1194edeefa98e22f671c298d01cb0ed0c0" + }, + "FiatTokenProxy": { + "contractAddress": "0x46A8Eba2aCf7b5Bb37b5fe25fFb9D3023Af7A409", + "contractCreationTxHash": "0x2e1c4a96d612c322abd111ba8a70d3c2159cd2b2bc0656fbdba2511a3b94b53d" + }, + "rpcUrl": "https://api.wemixscan.com/api" +} \ No newline at end of file diff --git a/verification_artifacts/input.template.json b/verification_artifacts/input.template.json deleted file mode 100644 index bc61264bd..000000000 --- a/verification_artifacts/input.template.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "SignatureChecker": { - "contractAddress": "", - "contractCreationTxHash": "" - }, - "FiatTokenV2_2": { - "contractAddress": "", - "contractCreationTxHash": "" - }, - "FiatTokenProxy": { - "contractAddress": "", - "contractCreationTxHash": "" - }, - "rpcUrl": "" -}