UNPKG

@gooddollar/goodcontracts

Version:
867 lines (866 loc) 59.7 kB
{ "contractName": "ERC20Mintable", "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": "account", "type": "address" } ], "name": "MinterAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "MinterRemoved", "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" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "addMinter", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isMinter", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [], "name": "renounceMinter", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": true, "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "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" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { "constant": false, "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "mint", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "payable": false, "stateMutability": "nonpayable", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.5.16+commit.9c3226ce\"},\"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\":\"account\",\"type\":\"address\"}],\"name\":\"MinterAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"MinterRemoved\",\"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\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"addMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"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\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"ERC20 minting logic\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Function to check the amount of tokens that an owner allowed to a spender.\",\"params\":{\"owner\":\"address The address which owns the funds.\",\"spender\":\"address The address which will spend the funds.\"},\"return\":\"A uint256 specifying the amount of tokens still available for the spender.\"},\"approve(address,uint256)\":{\"details\":\"Approve the passed address to spend the specified amount of tokens on behalf of msg.sender. Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\",\"params\":{\"spender\":\"The address which will spend the funds.\",\"value\":\"The amount of tokens to be spent.\"}},\"balanceOf(address)\":{\"details\":\"Gets the balance of the specified address.\",\"params\":{\"owner\":\"The address to query the balance of.\"},\"return\":\"An uint256 representing the amount owned by the passed address.\"},\"decreaseAllowance(address,uint256)\":{\"details\":\"Decrease the amount of tokens that an owner allowed to a spender. approve should be called when allowed_[_spender] == 0. To decrement allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol Emits an Approval event.\",\"params\":{\"spender\":\"The address which will spend the funds.\",\"subtractedValue\":\"The amount of tokens to decrease the allowance by.\"}},\"increaseAllowance(address,uint256)\":{\"details\":\"Increase the amount of tokens that an owner allowed to a spender. approve should be called when allowed_[_spender] == 0. To increment allowed value is better to use this function to avoid 2 calls (and wait until the first transaction is mined) From MonolithDAO Token.sol Emits an Approval event.\",\"params\":{\"addedValue\":\"The amount of tokens to increase the allowance by.\",\"spender\":\"The address which will spend the funds.\"}},\"mint(address,uint256)\":{\"details\":\"Function to mint tokens\",\"params\":{\"to\":\"The address that will receive the minted tokens.\",\"value\":\"The amount of tokens to mint.\"},\"return\":\"A boolean that indicates if the operation was successful.\"},\"totalSupply()\":{\"details\":\"Total number of tokens in existence\"},\"transfer(address,uint256)\":{\"details\":\"Transfer token for a specified address\",\"params\":{\"to\":\"The address to transfer to.\",\"value\":\"The amount to be transferred.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfer tokens from one address to another. Note that while this function emits an Approval event, this is not required as per the specification, and other compliant implementations may not emit the event.\",\"params\":{\"from\":\"address The address which you want to send tokens from\",\"to\":\"address The address which you want to transfer to\",\"value\":\"uint256 the amount of tokens to be transferred\"}}},\"title\":\"ERC20Mintable\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol\":\"ERC20Mintable\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"openzeppelin-solidity/contracts/access/Roles.sol\":{\"keccak256\":\"0x659ba0f9a3392cd50a8a5fafaf5dfd8c6a0878f6a4613bceff4e90dceddcd865\",\"urls\":[\"bzz-raw://4ca6617349a9b36fd82e9442a8e445ce9021a174e4399d1457ddc894ee3f5df3\",\"dweb:/ipfs/QmcmyB4cNazZ1sw963Afaijt67M9bDgwmGXCgQajGTD4tm\"]},\"openzeppelin-solidity/contracts/access/roles/MinterRole.sol\":{\"keccak256\":\"0x3199053db04cdae6c9b4380921a4a4ee720b568d6a9660883b29d25fbec31bc0\",\"urls\":[\"bzz-raw://1b0ff368e21d6007c06e4cfb286fe59d7d7d3ec06283300c9be2153ba11fa93a\",\"dweb:/ipfs/QmRPq2wZM4RAcbj31dP34GCr1CSy2qy3JqfXEkdVie4HLT\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x965012d27b4262d7a41f5028cbb30c51ebd9ecd4be8fb30380aaa7a3c64fbc8b\",\"urls\":[\"bzz-raw://1eb493553b27efd46c231a836a83ce50d215639feb97b4aac9f301d0fd034ff5\",\"dweb:/ipfs/QmbMdvSXcqGKxeeYvzF3VrWpoHQyVzMXBhzhAokF2Gdymv\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xba431353cb4fe70777ac026231eb5468e41aa1e81240a2b8136917acc5fff4dc\",\"urls\":[\"bzz-raw://f40c91ca270bdc9b156f339081a0fc2bbcf73cf5f62b8c73ba555df753ff6619\",\"dweb:/ipfs/QmT8y2VVjGaFdGphpcXrgvdPi2EgF9LuCDgJiJ89LvpFRV\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol\":{\"keccak256\":\"0xc4ca2883e0b0743604143952024c250bb13737ad54bb666b117efdcb766fe3a8\",\"urls\":[\"bzz-raw://bdaf72028f2dc29aa5191b2bfca315a9e3b1d58f900166bdb5ae5f500d569384\",\"dweb:/ipfs/QmZngPiWLXA9i2vp6XNPcGA23GHxT99V1Qma6iRivtbREy\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x079c4e23ee448f529e43bfa3c4e8fb4be52cd0318ee923a276835bedf45b93d8\",\"urls\":[\"bzz-raw://ee762ff5b7746e41d27dcbcea00c7a3034b58adb1b45ddadddb5b721aff450df\",\"dweb:/ipfs/QmdxqtgEFZjHCoiYyz6pUAQ5iBm7As25jcyEbZoTaAgyDa\"]}},\"version\":1}", "bytecode": "0x6080604052610016336001600160e01b0361001b16565b6100f4565b61003381600361006a60201b6108071790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b6001600160a01b03811661007d57600080fd5b61009082826001600160e01b036100bf16565b1561009a57600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b60006001600160a01b0382166100d457600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6108d0806101036000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c8063983b2d5611610071578063983b2d56146101c757806398650275146101ef578063a457c2d7146101f7578063a9059cbb14610223578063aa271e1a1461024f578063dd62ed3e14610275576100b4565b8063095ea7b3146100b957806318160ddd146100f957806323b872dd14610113578063395093511461014957806340c10f191461017557806370a08231146101a1575b600080fd5b6100e5600480360360408110156100cf57600080fd5b506001600160a01b0381351690602001356102a3565b604080519115158252519081900360200190f35b61010161031f565b60408051918252519081900360200190f35b6100e56004803603606081101561012957600080fd5b506001600160a01b03813581169160208101359091169060400135610325565b6100e56004803603604081101561015f57600080fd5b506001600160a01b0381351690602001356103ee565b6100e56004803603604081101561018b57600080fd5b506001600160a01b03813516906020013561049c565b610101600480360360208110156101b757600080fd5b50356001600160a01b03166104c3565b6101ed600480360360208110156101dd57600080fd5b50356001600160a01b03166104de565b005b6101ed6104fc565b6100e56004803603604081101561020d57600080fd5b506001600160a01b038135169060200135610507565b6100e56004803603604081101561023957600080fd5b506001600160a01b038135169060200135610550565b6100e56004803603602081101561026557600080fd5b50356001600160a01b031661055d565b6101016004803603604081101561028b57600080fd5b506001600160a01b0381358116916020013516610576565b60006001600160a01b0383166102b857600080fd5b3360008181526001602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b60025490565b6001600160a01b0383166000908152600160209081526040808320338452909152812054610359908363ffffffff6105a116565b6001600160a01b03851660009081526001602090815260408083203384529091529020556103888484846105b6565b6001600160a01b0384166000818152600160209081526040808320338085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b60006001600160a01b03831661040357600080fd5b3360009081526001602090815260408083206001600160a01b0387168452909152902054610437908363ffffffff61068116565b3360008181526001602090815260408083206001600160a01b0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b60006104a73361055d565b6104b057600080fd5b6104ba838361069a565b50600192915050565b6001600160a01b031660009081526020819052604090205490565b6104e73361055d565b6104f057600080fd5b6104f981610742565b50565b6105053361078a565b565b60006001600160a01b03831661051c57600080fd5b3360009081526001602090815260408083206001600160a01b0387168452909152902054610437908363ffffffff6105a116565b60006104ba3384846105b6565b600061057060038363ffffffff6107d216565b92915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6000828211156105b057600080fd5b50900390565b6001600160a01b0382166105c957600080fd5b6001600160a01b0383166000908152602081905260409020546105f2908263ffffffff6105a116565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610627908263ffffffff61068116565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282018381101561069357600080fd5b9392505050565b6001600160a01b0382166106ad57600080fd5b6002546106c0908263ffffffff61068116565b6002556001600160a01b0382166000908152602081905260409020546106ec908263ffffffff61068116565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b61075360038263ffffffff61080716565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b61079b60038263ffffffff61085316565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b0382166107e757600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6001600160a01b03811661081a57600080fd5b61082482826107d2565b1561082e57600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6001600160a01b03811661086657600080fd5b61087082826107d2565b61087957600080fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fea265627a7a72315820ddf0aa6d7e7f3141ec46ebf131e5389bf461e9c1362adde27108f5c8a55bb0a764736f6c63430005100032", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100b45760003560e01c8063983b2d5611610071578063983b2d56146101c757806398650275146101ef578063a457c2d7146101f7578063a9059cbb14610223578063aa271e1a1461024f578063dd62ed3e14610275576100b4565b8063095ea7b3146100b957806318160ddd146100f957806323b872dd14610113578063395093511461014957806340c10f191461017557806370a08231146101a1575b600080fd5b6100e5600480360360408110156100cf57600080fd5b506001600160a01b0381351690602001356102a3565b604080519115158252519081900360200190f35b61010161031f565b60408051918252519081900360200190f35b6100e56004803603606081101561012957600080fd5b506001600160a01b03813581169160208101359091169060400135610325565b6100e56004803603604081101561015f57600080fd5b506001600160a01b0381351690602001356103ee565b6100e56004803603604081101561018b57600080fd5b506001600160a01b03813516906020013561049c565b610101600480360360208110156101b757600080fd5b50356001600160a01b03166104c3565b6101ed600480360360208110156101dd57600080fd5b50356001600160a01b03166104de565b005b6101ed6104fc565b6100e56004803603604081101561020d57600080fd5b506001600160a01b038135169060200135610507565b6100e56004803603604081101561023957600080fd5b506001600160a01b038135169060200135610550565b6100e56004803603602081101561026557600080fd5b50356001600160a01b031661055d565b6101016004803603604081101561028b57600080fd5b506001600160a01b0381358116916020013516610576565b60006001600160a01b0383166102b857600080fd5b3360008181526001602090815260408083206001600160a01b03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600192915050565b60025490565b6001600160a01b0383166000908152600160209081526040808320338452909152812054610359908363ffffffff6105a116565b6001600160a01b03851660009081526001602090815260408083203384529091529020556103888484846105b6565b6001600160a01b0384166000818152600160209081526040808320338085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b60006001600160a01b03831661040357600080fd5b3360009081526001602090815260408083206001600160a01b0387168452909152902054610437908363ffffffff61068116565b3360008181526001602090815260408083206001600160a01b0389168085529083529281902085905580519485525191937f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929081900390910190a350600192915050565b60006104a73361055d565b6104b057600080fd5b6104ba838361069a565b50600192915050565b6001600160a01b031660009081526020819052604090205490565b6104e73361055d565b6104f057600080fd5b6104f981610742565b50565b6105053361078a565b565b60006001600160a01b03831661051c57600080fd5b3360009081526001602090815260408083206001600160a01b0387168452909152902054610437908363ffffffff6105a116565b60006104ba3384846105b6565b600061057060038363ffffffff6107d216565b92915050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6000828211156105b057600080fd5b50900390565b6001600160a01b0382166105c957600080fd5b6001600160a01b0383166000908152602081905260409020546105f2908263ffffffff6105a116565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610627908263ffffffff61068116565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008282018381101561069357600080fd5b9392505050565b6001600160a01b0382166106ad57600080fd5b6002546106c0908263ffffffff61068116565b6002556001600160a01b0382166000908152602081905260409020546106ec908263ffffffff61068116565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b61075360038263ffffffff61080716565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b61079b60038263ffffffff61085316565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b0382166107e757600080fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6001600160a01b03811661081a57600080fd5b61082482826107d2565b1561082e57600080fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6001600160a01b03811661086657600080fd5b61087082826107d2565b61087957600080fd5b6001600160a01b0316600090815260209190915260409020805460ff1916905556fea265627a7a72315820ddf0aa6d7e7f3141ec46ebf131e5389bf461e9c1362adde27108f5c8a55bb0a764736f6c63430005100032", "sourceMap": "152:421:74:-;;;275:22:64;286:10;-1:-1:-1;;;;;275:10:64;:22;:::i;:::-;152:421:74;;685:119:64;741:21;754:7;741:8;:12;;;;;;:21;;;;:::i;:::-;777:20;;-1:-1:-1;;;;;777:20:64;;;;;;;;685:119;:::o;259:181:63:-;-1:-1:-1;;;;;335:21:63;;327:30;;;;;;376:18;380:4;386:7;-1:-1:-1;;;;;376:3:63;:18;:::i;:::-;375:19;367:28;;;;;;-1:-1:-1;;;;;406:20:63;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;406:27:63;429:4;406:27;;;259:181::o;786:162::-;858:4;-1:-1:-1;;;;;882:21:63;;874:30;;;;;;-1:-1:-1;;;;;;921:20:63;:11;:20;;;;;;;;;;;;;;;786:162::o;152:421:74:-;;;;;;;", "deployedSourceMap": "152:421:74:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;152:421:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2735:238:71;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2735:238:71;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;936:89;;;:::i;:::-;;;;;;;;;;;;;;;;3436:294;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3436:294:71;;;;;;;;;;;;;;;;;:::i;4233:317::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4233:317:71;;;;;;;;:::i;443:128:74:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;443:128:74;;;;;;;;:::i;1234:104:71:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1234:104:71;-1:-1:-1;;;;;1234:104:71;;:::i;508:90:64:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;508:90:64;-1:-1:-1;;;;;508:90:64;;:::i;:::-;;604:75;;;:::i;5058:327:71:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5058:327:71;;;;;;;;:::i;1962:137::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1962:137:71;;;;;;;;:::i;395:107:64:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;395:107:64;-1:-1:-1;;;;;395:107:64;;:::i;1669:129:71:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1669:129:71;;;;;;;;;;:::i;2735:238::-;2800:4;-1:-1:-1;;;;;2824:21:71;;2816:30;;;;;;2866:10;2857:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;2857:29:71;;;;;;;;;;;;:37;;;2909:36;;;;;;;2857:29;;2866:10;2909:36;;;;;;;;;;;-1:-1:-1;2962:4:71;2735:238;;;;:::o;936:89::-;1006:12;;936:89;:::o;3436:294::-;-1:-1:-1;;;;;3560:14:71;;3515:4;3560:14;;;:8;:14;;;;;;;;3575:10;3560:26;;;;;;;;:37;;3591:5;3560:37;:30;:37;:::i;:::-;-1:-1:-1;;;;;3531:14:71;;;;;;:8;:14;;;;;;;;3546:10;3531:26;;;;;;;:66;3607:26;3540:4;3623:2;3627:5;3607:9;:26::i;:::-;-1:-1:-1;;;;;3648:54:71;;3675:14;;;;:8;:14;;;;;;;;3663:10;3675:26;;;;;;;;;;;3648:54;;;;;;;3663:10;;3648:54;;;;;;;;;;;;-1:-1:-1;3719:4:71;3436:294;;;;;:::o;4233:317::-;4313:4;-1:-1:-1;;;;;4337:21:71;;4329:30;;;;;;4411:10;4402:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;4402:29:71;;;;;;;;;;:45;;4436:10;4402:45;:33;:45;:::i;:::-;4379:10;4370:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;4370:29:71;;;;;;;;;;;;:77;;;4462:60;;;;;;4370:29;;4462:60;;;;;;;;;;;-1:-1:-1;4539:4:71;4233:317;;;;:::o;443:128:74:-;511:4;350:20:64;359:10;350:8;:20::i;:::-;342:29;;;;;;527:16:74;533:2;537:5;527;:16::i;:::-;-1:-1:-1;560:4:74;443:128;;;;:::o;1234:104:71:-;-1:-1:-1;;;;;1315:16:71;1289:7;1315:16;;;;;;;;;;;;1234:104::o;508:90:64:-;350:20;359:10;350:8;:20::i;:::-;342:29;;;;;;572:19;583:7;572:10;:19::i;:::-;508:90;:::o;604:75::-;647:25;661:10;647:13;:25::i;:::-;604:75::o;5058:327:71:-;5143:4;-1:-1:-1;;;;;5167:21:71;;5159:30;;;;;;5241:10;5232:20;;;;:8;:20;;;;;;;;-1:-1:-1;;;;;5232:29:71;;;;;;;;;;:50;;5266:15;5232:50;:33;:50;:::i;1962:137::-;2023:4;2039:32;2049:10;2061:2;2065:5;2039:9;:32::i;395:107:64:-;451:4;474:21;:8;487:7;474:21;:12;:21;:::i;:::-;467:28;395:107;-1:-1:-1;;395:107:64:o;1669:129:71:-;-1:-1:-1;;;;;1767:15:71;;;1741:7;1767:15;;;:8;:15;;;;;;;;:24;;;;;;;;;;;;;1669:129::o;1205:145:69:-;1263:7;1295:1;1290;:6;;1282:15;;;;;;-1:-1:-1;1319:5:69;;;1205:145::o;5599:256:71:-;-1:-1:-1;;;;;5686:16:71;;5678:25;;;;;;-1:-1:-1;;;;;5732:15:71;;:9;:15;;;;;;;;;;;:26;;5752:5;5732:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;5714:15:71;;;:9;:15;;;;;;;;;;;:44;;;;5784:13;;;;;;;:24;;5802:5;5784:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;5768:13:71;;;:9;:13;;;;;;;;;;;;:40;;;;5823:25;;;;;;;5768:13;;5823:25;;;;;;;;;;;;;5599:256;;;:::o;1431:145:69:-;1489:7;1520:5;;;1543:6;;;;1535:15;;;;;;1568:1;1431:145;-1:-1:-1;;;1431:145:69:o;6198:263:71:-;-1:-1:-1;;;;;6272:21:71;;6264:30;;;;;;6320:12;;:23;;6337:5;6320:23;:16;:23;:::i;:::-;6305:12;:38;-1:-1:-1;;;;;6374:18:71;;:9;:18;;;;;;;;;;;:29;;6397:5;6374:29;:22;:29;:::i;:::-;-1:-1:-1;;;;;6353:18:71;;:9;:18;;;;;;;;;;;:50;;;;6418:36;;;;;;;6353:18;;:9;;6418:36;;;;;;;;;;6198:263;;:::o;685:119:64:-;741:21;:8;754:7;741:21;:12;:21;:::i;:::-;777:20;;-1:-1:-1;;;;;777:20:64;;;;;;;;685:119;:::o;810:127::-;869:24;:8;885:7;869:24;:15;:24;:::i;:::-;908:22;;-1:-1:-1;;;;;908:22:64;;;;;;;;810:127;:::o;786:162:63:-;858:4;-1:-1:-1;;;;;882:21:63;;874:30;;;;;;-1:-1:-1;;;;;;921:20:63;:11;:20;;;;;;;;;;;;;;;786:162::o;259:181::-;-1:-1:-1;;;;;335:21:63;;327:30;;;;;;376:18;380:4;386:7;376:3;:18::i;:::-;375:19;367:28;;;;;;-1:-1:-1;;;;;406:20:63;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;406:27:63;429:4;406:27;;;259:181::o;514:184::-;-1:-1:-1;;;;;593:21:63;;585:30;;;;;;633:18;637:4;643:7;633:3;:18::i;:::-;625:27;;;;;;-1:-1:-1;;;;;663:20:63;686:5;663:20;;;;;;;;;;;:28;;-1:-1:-1;;663:28:63;;;514:184::o", "source": "pragma solidity ^0.5.0;\n\nimport \"./ERC20.sol\";\nimport \"../../access/roles/MinterRole.sol\";\n\n/**\n * @title ERC20Mintable\n * @dev ERC20 minting logic\n */\ncontract ERC20Mintable is ERC20, MinterRole {\n /**\n * @dev Function to mint tokens\n * @param to The address that will receive the minted tokens.\n * @param value The amount of tokens to mint.\n * @return A boolean that indicates if the operation was successful.\n */\n function mint(address to, uint256 value) public onlyMinter returns (bool) {\n _mint(to, value);\n return true;\n }\n}\n", "sourcePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol", "ast": { "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol", "exportedSymbols": { "ERC20Mintable": [ 16973 ] }, "id": 16974, "nodeType": "SourceUnit", "nodes": [ { "id": 16947, "literals": [ "solidity", "^", "0.5", ".0" ], "nodeType": "PragmaDirective", "src": "0:23:74" }, { "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", "file": "./ERC20.sol", "id": 16948, "nodeType": "ImportDirective", "scope": 16974, "sourceUnit": 16857, "src": "25:21:74", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "openzeppelin-solidity/contracts/access/roles/MinterRole.sol", "file": "../../access/roles/MinterRole.sol", "id": 16949, "nodeType": "ImportDirective", "scope": 16974, "sourceUnit": 15852, "src": "47:43:74", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 16950, "name": "ERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 16856, "src": "178:5:74", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20_$16856", "typeString": "contract ERC20" } }, "id": 16951, "nodeType": "InheritanceSpecifier", "src": "178:5:74" }, { "arguments": null, "baseName": { "contractScope": null, "id": 16952, "name": "MinterRole", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 15851, "src": "185:10:74", "typeDescriptions": { "typeIdentifier": "t_contract$_MinterRole_$15851", "typeString": "contract MinterRole" } }, "id": 16953, "nodeType": "InheritanceSpecifier", "src": "185:10:74" } ], "contractDependencies": [ 15851, 16856, 17144 ], "contractKind": "contract", "documentation": "@title ERC20Mintable\n@dev ERC20 minting logic", "fullyImplemented": true, "id": 16973, "linearizedBaseContracts": [ 16973, 15851, 16856, 17144 ], "name": "ERC20Mintable", "nodeType": "ContractDefinition", "nodes": [ { "body": { "id": 16971, "nodeType": "Block", "src": "517:54:74", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 16965, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16955, "src": "533:2:74", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 16966, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16957, "src": "537:5:74", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 16964, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16771, "src": "527:5:74", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 16967, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "527:16:74", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 16968, "nodeType": "ExpressionStatement", "src": "527:16:74" }, { "expression": { "argumentTypes": null, "hexValue": "74727565", "id": 16969, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "560:4:74", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "functionReturnParameters": 16963, "id": 16970, "nodeType": "Return", "src": "553:11:74" } ] }, "documentation": "@dev Function to mint tokens\n@param to The address that will receive the minted tokens.\n@param value The amount of tokens to mint.\n@return A boolean that indicates if the operation was successful.", "id": 16972, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 16960, "modifierName": { "argumentTypes": null, "id": 16959, "name": "onlyMinter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 15784, "src": "491:10:74", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "491:10:74" } ], "name": "mint", "nodeType": "FunctionDefinition", "parameters": { "id": 16958, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 16955, "name": "to", "nodeType": "VariableDeclaration", "scope": 16972, "src": "457:10:74", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 16954, "name": "address", "nodeType": "ElementaryTypeName", "src": "457:7:74", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 16957, "name": "value", "nodeType": "VariableDeclaration", "scope": 16972, "src": "469:13:74", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 16956, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "469:7:74", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "456:27:74" }, "returnParameters": { "id": 16963, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 16962, "name": "", "nodeType": "VariableDeclaration", "scope": 16972, "src": "511:4:74", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 16961, "name": "bool", "nodeType": "ElementaryTypeName", "src": "511:4:74", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "510:6:74" }, "scope": 16973, "src": "443:128:74", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], "scope": 16974, "src": "152:421:74" } ], "src": "0:574:74" }, "legacyAST": { "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20Mintable.sol", "exportedSymbols": { "ERC20Mintable": [ 16973 ] }, "id": 16974, "nodeType": "SourceUnit", "nodes": [ { "id": 16947, "literals": [ "solidity", "^", "0.5", ".0" ], "nodeType": "PragmaDirective", "src": "0:23:74" }, { "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", "file": "./ERC20.sol", "id": 16948, "nodeType": "ImportDirective", "scope": 16974, "sourceUnit": 16857, "src": "25:21:74", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "openzeppelin-solidity/contracts/access/roles/MinterRole.sol", "file": "../../access/roles/MinterRole.sol", "id": 16949, "nodeType": "ImportDirective", "scope": 16974, "sourceUnit": 15852, "src": "47:43:74", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 16950, "name": "ERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 16856, "src": "178:5:74", "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20_$16856", "typeString": "contract ERC20" } }, "id": 16951, "nodeType": "InheritanceSpecifier", "src": "178:5:74" }, { "arguments": null, "baseName": { "contractScope": null, "id": 16952, "name": "MinterRole", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 15851, "src": "185:10:74", "typeDescriptions": { "typeIdentifier": "t_contract$_MinterRole_$15851", "typeString": "contract MinterRole" } }, "id": 16953, "nodeType": "InheritanceSpecifier", "src": "185:10:74" } ], "contractDependencies": [ 15851, 16856, 17144 ], "contractKind": "contract", "documentation": "@title ERC20Mintable\n@dev ERC20 minting logic", "fullyImplemented": true, "id": 16973, "linearizedBaseContracts": [ 16973, 15851, 16856, 17144 ], "name": "ERC20Mintable", "nodeType": "ContractDefinition", "nodes": [ { "body": { "id": 16971, "nodeType": "Block", "src": "517:54:74", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 16965, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16955, "src": "533:2:74", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 16966, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16957, "src": "537:5:74", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 16964, "name": "_mint", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 16771, "src": "527:5:74", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 16967, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "527:16:74", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 16968, "nodeType": "ExpressionStatement",