UNPKG

@vporton/future-contracts

Version:

Ethereum accounts bid on future financing (essentially, transfer money from the future) - smart contracts

829 lines (828 loc) 63 kB
{ "contractName": "MockCoin", "abi": [ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "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": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "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": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.7.6+commit.7338295f\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"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\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"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\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"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\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"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\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. Requirements: - `spender` cannot be the zero address.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"decimals()\":{\"details\":\"Returns the number of decimals used to get its user representation. For example, if `decimals` equals `2`, a balance of `505` tokens should be displayed to a user as `5,05` (`505 / 10 ** 2`). Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is called. NOTE: This information is only used for _display_ purposes: it in no way affects any of the arithmetic of the contract, including {IERC20-balanceOf} and {IERC20-transfer}.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Atomically decreases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address. - `spender` must have allowance for the caller of at least `subtractedValue`.\"},\"increaseAllowance(address,uint256)\":{\"details\":\"Atomically increases the allowance granted to `spender` by the caller. This is an alternative to {approve} that can be used as a mitigation for problems described in {IERC20-approve}. Emits an {Approval} event indicating the updated allowance. Requirements: - `spender` cannot be the zero address.\"},\"name()\":{\"details\":\"Returns the name of the token.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"transfer(address,uint256)\":{\"details\":\"See {IERC20-transfer}. Requirements: - `recipient` cannot be the zero address. - the caller must have a balance of at least `amount`.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"See {IERC20-transferFrom}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. Requirements: - `sender` and `recipient` cannot be the zero address. - `sender` must have a balance of at least `amount`. - the caller must have allowance for ``sender``'s tokens of at least `amount`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/user/Projects/future-contracts/contracts/test/MockCoin.sol\":\"MockCoin\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[]},\"sources\":{\"/home/user/Projects/future-contracts/contracts/test/MockCoin.sol\":{\"keccak256\":\"0x527b221c586ec4f4348be9f36b57fb29f1527d10f89cdf2857ef681b83c2de37\",\"license\":\"LGPL-3.0-or-later\",\"urls\":[\"bzz-raw://a9a55ceb78882e750f71c138fc0e29b45157cb206c22af06eff2cf1f3e49a4fd\",\"dweb:/ipfs/QmevXPHriaDSZeye7PS9XgZxb8pficFqZQ9jaqAhkJECeA\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x3b21f2c8d626de3b9925ae33e972d8bf5c8b1bffb3f4ee94daeed7d0679036e6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7f8d45329fecbf0836ad7543330c3ecd0f8d0ffa42d4016278c3eb2215fdcdfe\",\"dweb:/ipfs/QmXWLT7GcnHtA5NiD6MFi2CV3EWJY4wv5mLNnypqYDrxL3\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xcbd85c86627a47fd939f1f4ee3ba626575ff2a182e1804b29f5136394449b538\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53c6a80c519bb9356aad28efa9a1ec31603860eb759d2dc57f545fcae1dd1aca\",\"dweb:/ipfs/QmfRS6TtMNUHhvgLHXK21qKNnpn2S7g2Yd1fKaHKyFiJsR\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5f02220344881ce43204ae4a6281145a67bc52c2bb1290a791857df3d19d78f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24427744bd3e6cb73c17010119af12a318289c0253a4d9acb8576c9fb3797b08\",\"dweb:/ipfs/QmTLDqpKRBuxGxRAmjgXt9AkXyACW3MtKzi7PYjm5iMfGC\"]}},\"version\":1}", "bytecode": "0x608060405234801561001057600080fd5b50604051806040016040528060048152602001634d6f636b60e01b815250604051806040016040528060038152602001624d434b60e81b8152508160039080519060200190610060929190610089565b508051610074906004906020840190610089565b50506005805460ff191660121790555061012a565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826100bf5760008555610105565b82601f106100d857805160ff1916838001178555610105565b82800160010185558215610105579182015b828111156101055782518255916020019190600101906100ea565b50610111929150610115565b5090565b5b808211156101115760008155600101610116565b610d7c806101396000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c806340c10f1911610081578063a457c2d71161005b578063a457c2d7146102cb578063a9059cbb14610304578063dd62ed3e1461033d576100d4565b806340c10f191461025757806370a082311461029057806395d89b41146102c3576100d4565b806323b872dd116100b257806323b872dd146101bd578063313ce56714610200578063395093511461021e576100d4565b806306fdde03146100d9578063095ea7b31461015657806318160ddd146101a3575b600080fd5b6100e1610378565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561011b578181015183820152602001610103565b50505050905090810190601f1680156101485780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61018f6004803603604081101561016c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561042c565b604080519115158252519081900360200190f35b6101ab610449565b60408051918252519081900360200190f35b61018f600480360360608110156101d357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561044f565b6102086104f0565b6040805160ff9092168252519081900360200190f35b61018f6004803603604081101561023457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104f9565b61018f6004803603604081101561026d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610554565b6101ab600480360360208110156102a657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610560565b6100e1610588565b61018f600480360360408110156102e157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610607565b61018f6004803603604081101561031a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561067c565b6101ab6004803603604081101561035357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610690565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104225780601f106103f757610100808354040283529160200191610422565b820191906000526020600020905b81548152906001019060200180831161040557829003601f168201915b5050505050905090565b60006104406104396106c8565b84846106cc565b50600192915050565b60025490565b600061045c848484610813565b6104e6846104686106c8565b6104e185604051806060016040528060288152602001610cb16028913973ffffffffffffffffffffffffffffffffffffffff8a166000908152600160205260408120906104b36106c8565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205491906109e3565b6106cc565b5060019392505050565b60055460ff1690565b60006104406105066106c8565b846104e185600160006105176106c8565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c168152925290205490610a94565b60006104408383610b0f565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104225780601f106103f757610100808354040283529160200191610422565b60006104406106146106c8565b846104e185604051806060016040528060258152602001610d22602591396001600061063e6106c8565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d168152925290205491906109e3565b60006104406106896106c8565b8484610813565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316610738576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610cfe6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166107a4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610c696022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff831661087f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610cd96025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166108eb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610c466023913960400191505060405180910390fd5b6108f6838383610c40565b61094081604051806060016040528060268152602001610c8b6026913973ffffffffffffffffffffffffffffffffffffffff861660009081526020819052604090205491906109e3565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220939093559084168152205461097c9082610a94565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610a8c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a51578181015183820152602001610a39565b50505050905090810190601f168015610a7e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610b0857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8216610b9157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610b9d60008383610c40565b600254610baa9082610a94565b60025573ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610bdd9082610a94565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202ce3204610742ce2075895da6e95896ac1ec51d05afe174ad3c82e32f5b2b8d864736f6c63430007060033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100d45760003560e01c806340c10f1911610081578063a457c2d71161005b578063a457c2d7146102cb578063a9059cbb14610304578063dd62ed3e1461033d576100d4565b806340c10f191461025757806370a082311461029057806395d89b41146102c3576100d4565b806323b872dd116100b257806323b872dd146101bd578063313ce56714610200578063395093511461021e576100d4565b806306fdde03146100d9578063095ea7b31461015657806318160ddd146101a3575b600080fd5b6100e1610378565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561011b578181015183820152602001610103565b50505050905090810190601f1680156101485780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61018f6004803603604081101561016c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561042c565b604080519115158252519081900360200190f35b6101ab610449565b60408051918252519081900360200190f35b61018f600480360360608110156101d357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135909116906040013561044f565b6102086104f0565b6040805160ff9092168252519081900360200190f35b61018f6004803603604081101561023457600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356104f9565b61018f6004803603604081101561026d57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610554565b6101ab600480360360208110156102a657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610560565b6100e1610588565b61018f600480360360408110156102e157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610607565b61018f6004803603604081101561031a57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561067c565b6101ab6004803603604081101561035357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610690565b60038054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104225780601f106103f757610100808354040283529160200191610422565b820191906000526020600020905b81548152906001019060200180831161040557829003601f168201915b5050505050905090565b60006104406104396106c8565b84846106cc565b50600192915050565b60025490565b600061045c848484610813565b6104e6846104686106c8565b6104e185604051806060016040528060288152602001610cb16028913973ffffffffffffffffffffffffffffffffffffffff8a166000908152600160205260408120906104b36106c8565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040016000205491906109e3565b6106cc565b5060019392505050565b60055460ff1690565b60006104406105066106c8565b846104e185600160006105176106c8565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918c168152925290205490610a94565b60006104408383610b0f565b73ffffffffffffffffffffffffffffffffffffffff1660009081526020819052604090205490565b60048054604080516020601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156104225780601f106103f757610100808354040283529160200191610422565b60006104406106146106c8565b846104e185604051806060016040528060258152602001610d22602591396001600061063e6106c8565b73ffffffffffffffffffffffffffffffffffffffff908116825260208083019390935260409182016000908120918d168152925290205491906109e3565b60006104406106896106c8565b8484610813565b73ffffffffffffffffffffffffffffffffffffffff918216600090815260016020908152604080832093909416825291909152205490565b3390565b73ffffffffffffffffffffffffffffffffffffffff8316610738576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180610cfe6024913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166107a4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180610c696022913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b73ffffffffffffffffffffffffffffffffffffffff831661087f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180610cd96025913960400191505060405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166108eb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180610c466023913960400191505060405180910390fd5b6108f6838383610c40565b61094081604051806060016040528060268152602001610c8b6026913973ffffffffffffffffffffffffffffffffffffffff861660009081526020819052604090205491906109e3565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260208190526040808220939093559084168152205461097c9082610a94565b73ffffffffffffffffffffffffffffffffffffffff8084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115610a8c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610a51578181015183820152602001610a39565b50505050905090810190601f168015610a7e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610b0857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8216610b9157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b610b9d60008383610c40565b600254610baa9082610a94565b60025573ffffffffffffffffffffffffffffffffffffffff8216600090815260208190526040902054610bdd9082610a94565b73ffffffffffffffffffffffffffffffffffffffff83166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b50505056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202ce3204610742ce2075895da6e95896ac1ec51d05afe174ad3c82e32f5b2b8d864736f6c63430007060033", "immutableReferences": {}, "generatedSources": [], "deployedGeneratedSources": [], "sourceMap": "128:209:16:-:0;;;161:39;;;;;;;;;;1956:145:26;;;;;;;;;;;;;-1:-1:-1;;;1956:145:26;;;;;;;;;;;;;;;;-1:-1:-1;;;1956:145:26;;;2038:5;2030;:13;;;;;;;;;;;;:::i;:::-;-1:-1:-1;2053:17:26;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;;2080:9:26;:14;;-1:-1:-1;;2080:14:26;2092:2;2080:14;;;-1:-1:-1;128:209:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;128:209:16;;;-1:-1:-1;128:209:16;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;", "deployedSourceMap": "128:209:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2166:81:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4202:166;;;;;;;;;;;;;;;;-1:-1:-1;4202:166:26;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3209:98;;;:::i;:::-;;;;;;;;;;;;;;;;4835:317;;;;;;;;;;;;;;;;-1:-1:-1;4835:317:26;;;;;;;;;;;;;;;;;;:::i;3068:81::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5547:215;;;;;;;;;;;;;;;;-1:-1:-1;5547:215:26;;;;;;;;;:::i;206:129:16:-;;;;;;;;;;;;;;;;-1:-1:-1;206:129:16;;;;;;;;;:::i;3365:117:26:-;;;;;;;;;;;;;;;;-1:-1:-1;3365:117:26;;;;:::i;2360:85::-;;;:::i;6249:266::-;;;;;;;;;;;;;;;;-1:-1:-1;6249:266:26;;;;;;;;;:::i;3685:172::-;;;;;;;;;;;;;;;;-1:-1:-1;3685:172:26;;;;;;;;;:::i;3915:149::-;;;;;;;;;;;;;;;;-1:-1:-1;3915:149:26;;;;;;;;;;;:::i;2166:81::-;2235:5;2228:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2203:13;;2228:12;;2235:5;;2228:12;;2235:5;2228:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2166:81;:::o;4202:166::-;4285:4;4301:39;4310:12;:10;:12::i;:::-;4324:7;4333:6;4301:8;:39::i;:::-;-1:-1:-1;4357:4:26;4202:166;;;;:::o;3209:98::-;3288:12;;3209:98;:::o;4835:317::-;4941:4;4957:36;4967:6;4975:9;4986:6;4957:9;:36::i;:::-;5003:121;5012:6;5020:12;:10;:12::i;:::-;5034:89;5072:6;5034:89;;;;;;;;;;;;;;;;;:19;;;;;;;:11;:19;;;;;;5054:12;:10;:12::i;:::-;5034:33;;;;;;;;;;;;;-1:-1:-1;5034:33:26;;;:89;:37;:89::i;:::-;5003:8;:121::i;:::-;-1:-1:-1;5141:4:26;4835:317;;;;;:::o;3068:81::-;3133:9;;;;3068:81;:::o;5547:215::-;5635:4;5651:83;5660:12;:10;:12::i;:::-;5674:7;5683:50;5722:10;5683:11;:25;5695:12;:10;:12::i;:::-;5683:25;;;;;;;;;;;;;;;;;;-1:-1:-1;5683:25:26;;;:34;;;;;;;;;;;:38;:50::i;206:129:16:-;269:4;285:22;291:7;300:6;285:5;:22::i;3365:117:26:-;3457:18;;3431:7;3457:18;;;;;;;;;;;;3365:117::o;2360:85::-;2431:7;2424:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2399:13;;2424:14;;2431:7;;2424:14;;2431:7;2424:14;;;;;;;;;;;;;;;;;;;;;;;;6249:266;6342:4;6358:129;6367:12;:10;:12::i;:::-;6381:7;6390:96;6429:15;6390:96;;;;;;;;;;;;;;;;;:11;:25;6402:12;:10;:12::i;:::-;6390:25;;;;;;;;;;;;;;;;;;-1:-1:-1;6390:25:26;;;:34;;;;;;;;;;;:96;:38;:96::i;3685:172::-;3771:4;3787:42;3797:12;:10;:12::i;:::-;3811:9;3822:6;3787:9;:42::i;3915:149::-;4030:18;;;;4004:7;4030:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;3915:149::o;598:104:17:-;685:10;598:104;:::o;9313:340:26:-;9414:19;;;9406:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9492:21;;;9484:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9563:18;;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;9614:32;;;;;;;;;;;;;;;;;9313:340;;;:::o;6989:530::-;7094:20;;;7086:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7174:23;;;7166:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7248:47;7269:6;7277:9;7288:6;7248:20;:47::i;:::-;7326:71;7348:6;7326:71;;;;;;;;;;;;;;;;;:17;;;:9;:17;;;;;;;;;;;;:71;:21;:71::i;:::-;7306:17;;;;:9;:17;;;;;;;;;;;:91;;;;7430:20;;;;;;;:32;;7455:6;7430:24;:32::i;:::-;7407:20;;;;:9;:20;;;;;;;;;;;;:55;;;;7477:35;;;;;;;7407:20;;7477:35;;;;;;;;;;;;;6989:530;;;:::o;1754:187:20:-;1840:7;1875:12;1867:6;;;;1859:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1910:5:20;;;1754:187::o;882:176::-;940:7;971:5;;;994:6;;;;986:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1050:1;882:176;-1:-1:-1;;;882:176:20:o;7790:370:26:-;7873:21;;;7865:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7941:49;7970:1;7974:7;7983:6;7941:20;:49::i;:::-;8016:12;;:24;;8033:6;8016:16;:24::i;:::-;8001:12;:39;8071:18;;;:9;:18;;;;;;;;;;;:30;;8094:6;8071:22;:30::i;:::-;8050:18;;;:9;:18;;;;;;;;;;;:51;;;;8116:37;;;;;;;8050:18;;:9;;8116:37;;;;;;;;;;7790:370;;:::o;10651:92::-;;;;:::o", "source": "// SPDX-License-Identifier: LGPL-3.0-or-later\npragma solidity ^0.7.1;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\n\ncontract MockCoin is ERC20 {\n constructor () ERC20(\"Mock\", \"MCK\") { }\n\n function mint(address account, uint256 amount) public returns (bool) {\n _mint(account, amount);\n return true;\n }\n}\n", "sourcePath": "/home/user/Projects/future-contracts/contracts/test/MockCoin.sol", "ast": { "absolutePath": "/home/user/Projects/future-contracts/contracts/test/MockCoin.sol", "exportedSymbols": { "Context": [ 4324 ], "ERC20": [ 5349 ], "IERC20": [ 5427 ], "MockCoin": [ 4301 ], "SafeMath": [ 4589 ] }, "id": 4302, "license": "LGPL-3.0-or-later", "nodeType": "SourceUnit", "nodes": [ { "id": 4272, "literals": [ "solidity", "^", "0.7", ".1" ], "nodeType": "PragmaDirective", "src": "46:23:16" }, { "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol", "id": 4273, "nodeType": "ImportDirective", "scope": 4302, "sourceUnit": 5350, "src": "71:55:16", "symbolAliases": [], "unitAlias": "" }, { "abstract": false, "baseContracts": [ { "baseName": { "id": 4274, "name": "ERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5349, "src": "149:5:16", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20_$5349", "typeString": "contract ERC20" } }, "id": 4275, "nodeType": "InheritanceSpecifier", "src": "149:5:16" } ], "contractDependencies": [ 4324, 5349, 5427 ], "contractKind": "contract", "fullyImplemented": true, "id": 4301, "linearizedBaseContracts": [ 4301, 5349, 5427, 4324 ], "name": "MockCoin", "nodeType": "ContractDefinition", "nodes": [ { "body": { "id": 4282, "nodeType": "Block", "src": "197:3:16", "statements": [] }, "id": 4283, "implemented": true, "kind": "constructor", "modifiers": [ { "arguments": [ { "hexValue": "4d6f636b", "id": 4278, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "182:6:16", "typeDescriptions": { "typeIdentifier": "t_stringliteral_b6719659e1320df3593ef1d62831d5830f1fdce720f856f4e26e013032b7e58c", "typeString": "literal_string \"Mock\"" }, "value": "Mock" }, { "hexValue": "4d434b", "id": 4279, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "190:5:16", "typeDescriptions": { "typeIdentifier": "t_stringliteral_9c3aa7d11ecb9affb5001de98d930d23db7380c6f51732a92986229c98447bc4", "typeString": "literal_string \"MCK\"" }, "value": "MCK" } ], "id": 4280, "modifierName": { "id": 4277, "name": "ERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5349, "src": "176:5:16", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ERC20_$5349_$", "typeString": "type(contract ERC20)" } }, "nodeType": "ModifierInvocation", "src": "176:20:16" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { "id": 4276, "nodeType": "ParameterList", "parameters": [], "src": "173:2:16" }, "returnParameters": { "id": 4281, "nodeType": "ParameterList", "parameters": [], "src": "197:0:16" }, "scope": 4301, "src": "161:39:16", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 4299, "nodeType": "Block", "src": "275:60:16", "statements": [ { "expression": { "arguments": [ { "id": 4293, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4285, "src": "291:7:16", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "id": 4294, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4287, "src": "300:6:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 4292, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 5225, "src": "285:5:16", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 4295, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "285:22:16", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 4296, "nodeType": "ExpressionStatement", "src": "285:22:16" }, { "expression": { "hexValue": "74727565", "id": 4297, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "324:4:16", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 4291, "id": 4298, "nodeType": "Return", "src": "317:11:16" } ] }, "functionSelector": "40c10f19", "id": 4300, "implemented": true, "kind": "function", "modifiers": [], "name": "mint", "nodeType": "FunctionDefinition", "parameters": { "id": 4288, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 4285, "mutability": "mutable", "name": "account", "nodeType": "VariableDeclaration", "scope": 4300, "src": "220:15:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 4284, "name": "address", "nodeType": "ElementaryTypeName", "src": "220:7:16", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "visibility": "internal" }, { "constant": false, "id": 4287, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "scope": 4300, "src": "237:14:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 4286, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "237:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "visibility": "internal" } ], "src": "219:33:16" }, "returnParameters": { "id": 4291, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 4290, "mutability": "mutable", "name": "", "nodeType": "VariableDeclaration", "scope": 4300, "src": "269:4:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 4289, "name": "bool", "nodeType": "ElementaryTypeName", "src": "269:4:16", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "visibility": "internal" } ], "src": "268:6:16" }, "scope": 4301, "src": "206:129:16", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" } ], "scope": 4302, "src": "128:209:16" } ], "src": "46:292:16" }, "legacyAST": { "attributes": { "absolutePath": "/home/user/Projects/future-contracts/contracts/test/MockCoin.sol", "exportedSymbols": { "Context": [ 4324 ], "ERC20": [ 5349 ], "IERC20": [ 5427 ], "MockCoin": [ 4301 ], "SafeMath": [ 4589 ] }, "license": "LGPL-3.0-or-later" }, "children": [ { "attributes": { "literals": [ "solidity", "^", "0.7", ".1" ] }, "id": 4272, "name": "PragmaDirective", "src": "46:23:16" }, { "attributes": { "SourceUnit": 5350, "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol", "scope": 4302, "symbolAliases": [ null ], "unitAlias": "" }, "id": 4273, "name": "ImportDirective", "src": "71:55:16" }, { "attributes": { "abstract": false, "contractDependencies": [ 4324, 5349, 5427 ], "contractKind": "contract", "fullyImplemented": true, "linearizedBaseContracts": [ 4301, 5349, 5427, 4324 ], "name": "MockCoin", "scope": 4302 }, "children": [ { "attributes": {}, "children": [ { "attributes": { "name": "ERC20", "referencedDeclaration": 5349, "type": "contract ERC20" }, "id": 4274, "name": "UserDefinedTypeName", "src": "149:5:16" } ], "id": 4275, "name": "InheritanceSpecifier", "src": "149:5:16" }, { "attributes": { "implemented": true, "isConstructor": true, "kind": "constructor", "name": "", "scope": 4301, "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, "children": [ { "attributes": { "parameters": [ null ] }, "children": [], "id": 4276, "name": "ParameterList", "src": "173:2:16" }, { "attributes": { "parameters": [ null ] }, "children": [], "id": 4281, "name": "ParameterList", "src": "197:0:16" }, { "children": [ { "attributes": { "overloadedDeclarations": [ null ], "referencedDeclaration": 5349, "type": "type(contract ERC20)", "value": "ERC20" }, "id": 4277, "name": "Identifier", "src": "176:5:16" },