diff --git a/abis/DTFactory.json b/abis/DTFactory.json new file mode 100644 index 0000000..15e80c8 --- /dev/null +++ b/abis/DTFactory.json @@ -0,0 +1,4577 @@ +{ + "contractName": "DTFactory", + "abi": [ + { + "inputs": [ + { + "name": "_template", + "type": "address" + }, + { + "name": "_collector", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "newTokenAddress", + "type": "address" + }, + { + "indexed": true, + "name": "templateAddress", + "type": "address" + }, + { + "indexed": true, + "name": "tokenName", + "type": "string" + } + ], + "name": "TokenCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "tokenAddress", + "type": "address" + }, + { + "indexed": false, + "name": "tokenName", + "type": "string" + }, + { + "indexed": false, + "name": "tokenSymbol", + "type": "string" + }, + { + "indexed": false, + "name": "tokenCap", + "type": "uint256" + }, + { + "indexed": true, + "name": "registeredBy", + "type": "address" + }, + { + "indexed": true, + "name": "blob", + "type": "string" + } + ], + "name": "TokenRegistered", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "instance", + "type": "address" + } + ], + "name": "InstanceDeployed", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "name": "blob", + "type": "string" + }, + { + "name": "name", + "type": "string" + }, + { + "name": "symbol", + "type": "string" + }, + { + "name": "cap", + "type": "uint256" + } + ], + "name": "createToken", + "outputs": [ + { + "name": "token", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getCurrentTokenCount", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getTokenTemplate", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.5.7+commit.6da8b019\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"getTokenTemplate\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getCurrentTokenCount\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"blob\",\"type\":\"string\"},{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"symbol\",\"type\":\"string\"},{\"name\":\"cap\",\"type\":\"uint256\"}],\"name\":\"createToken\",\"outputs\":[{\"name\":\"token\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"_template\",\"type\":\"address\"},{\"name\":\"_collector\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"newTokenAddress\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"templateAddress\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"tokenName\",\"type\":\"string\"}],\"name\":\"TokenCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"tokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"tokenName\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"tokenSymbol\",\"type\":\"string\"},{\"indexed\":false,\"name\":\"tokenCap\",\"type\":\"uint256\"},{\"indexed\":true,\"name\":\"registeredBy\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"blob\",\"type\":\"string\"}],\"name\":\"TokenRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"instance\",\"type\":\"address\"}],\"name\":\"InstanceDeployed\",\"type\":\"event\"}],\"devdoc\":{\"author\":\"Ocean Protocol Team\",\"details\":\"Implementation of Ocean DataTokens Factory * DTFactory deploys DataToken proxy contracts. New DataToken proxy contracts are links to the template contract's bytecode. Proxy contract functionality is based on Ocean Protocol custom implementation of ERC1167 standard.\",\"methods\":{\"constructor\":{\"details\":\"constructor Called on contract deployment. Could not be called with zero address parameters.\",\"params\":{\"_collector\":\"refers to the community fee collector address\",\"_template\":\"refers to the address of a deployed DataToken contract.\"}},\"createToken(string,string,string,uint256)\":{\"details\":\"Deploys new DataToken proxy contract. Template contract address could not be a zero address.\",\"params\":{\"blob\":\"any string that hold data/metadata for the new token\",\"cap\":\"the maximum total supply\",\"name\":\"token name\",\"symbol\":\"token symbol\"},\"return\":\"address of a new proxy DataToken contract\"},\"getCurrentTokenCount()\":{\"details\":\"get the current token count.\",\"return\":\"the current token count\"},\"getTokenTemplate()\":{\"details\":\"get the token template address\",\"return\":\"the template address\"}},\"title\":\"DTFactory contract\"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/travis/build/oceanprotocol/ocean-contracts/contracts/DTFactory.sol\":\"DTFactory\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/travis/build/oceanprotocol/ocean-contracts/contracts/DTFactory.sol\":{\"keccak256\":\"0x8cf30689a380ec195de52dcee8a0263de862a457ee218d46a3fcb996edc48d89\",\"urls\":[\"bzzr://fb1f26c6ff8246dc38c4ce651fe17c85c8f9e64b3b1344b13c9ec9253202af1f\"]},\"/home/travis/build/oceanprotocol/ocean-contracts/contracts/interfaces/IERC20Template.sol\":{\"keccak256\":\"0x022ebed2ba4949e96a05cc394cf690d8fd3190a4733cebe8cbe930ac25cfde18\",\"urls\":[\"bzzr://2fa3d5cae14f0af7d78f6e1d13bc41854082c03ab2f86462ebb09afda88ee6e9\"]},\"/home/travis/build/oceanprotocol/ocean-contracts/contracts/utils/Deployer.sol\":{\"keccak256\":\"0x60ebf25d36c0ee9d310c74eda954a474b0d867f23f57d3b8923d9ee7cc313dcc\",\"urls\":[\"bzzr://81ebb3c5acb99bc74b4bd7ee9897282cb2c983344195645cec8bc2e642680c53\"]}},\"version\":1}", + "bytecode": "0x6080604052600160025534801561001557600080fd5b50604051604080610a278339810180604052604081101561003557600080fd5b508051602090910151600160a060020a0382161580159061005e5750600160a060020a03811615155b6100b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260418152602001806109e66041913960600191505060405180910390fd5b60008054600160a060020a03938416600160a060020a031991821617909155600180549290931691161790556108f8806100ee6000396000f3fe608060405234801561001057600080fd5b506004361061005d577c01000000000000000000000000000000000000000000000000000000006000350463490aad768114610062578063c6cf868a14610086578063efbe8fd1146100a0575b600080fd5b61006a610256565b60408051600160a060020a039092168252519081900360200190f35b61008e610265565b60408051918252519081900360200190f35b61006a600480360360808110156100b657600080fd5b8101906020810181356401000000008111156100d157600080fd5b8201836020820111156100e357600080fd5b8035906020019184600183028401116401000000008311171561010557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561015857600080fd5b82018360208201111561016a57600080fd5b8035906020019184600183028401116401000000008311171561018c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156101df57600080fd5b8201836020820111156101f157600080fd5b8035906020019184600183028401116401000000008311171561021357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925061026b915050565b600054600160a060020a031690565b60025490565b6000816102c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806108716022913960400191505060405180910390fd5b6000546102d890600160a060020a0316610791565b9050600160a060020a038116610339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180610893603a913960400191505060405180910390fd5b6001546040517f9070d2f8000000000000000000000000000000000000000000000000000000008152336044820181905260648201859052600160a060020a0392831660a4830181905260c060048401908152885160c485015288518695861694639070d2f8948b948b9491938b938f939182916024810191608482019160e4019060208c019080838360005b838110156103de5781810151838201526020016103c6565b50505050905090810190601f16801561040b5780820380516001836020036101000a031916815260200191505b5084810383528951815289516020918201918b019080838360005b8381101561043e578181015183820152602001610426565b50505050905090810190601f16801561046b5780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b8381101561049e578181015183820152602001610486565b50505050905090810190601f1680156104cb5780820380516001836020036101000a031916815260200191505b509950505050505050505050602060405180830381600087803b1580156104f157600080fd5b505af1158015610505573d6000803e3d6000fd5b505050506040513d602081101561051b57600080fd5b5051610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180610843602e913960400191505060405180910390fd5b846040518082805190602001908083835b602083106105a25780518252601f199092019160209182019101610583565b5181516020939093036101000a60001901801990911692169190911790526040519201829003822060008054919550600160a060020a039182169450908716927fb51c8cbe199ffe8b0d1d39b62d473569750653cb18b165f77ae423b3900180ad9250a4856040518082805190602001908083835b602083106106365780518252601f199092019160209182019101610617565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902033600160a060020a031683600160a060020a03167f437e99a69c634128e67a85656b80d03b028ba37525b15070606e5c28e846984a888888604051808060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156106e25781810151838201526020016106ca565b50505050905090810190601f16801561070f5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561074257818101518382015260200161072a565b50505050905090810190601f16801561076f5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a450600280546001019055949350505050565b6040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081526c010000000000000000000000008202601482018190527f5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000602883015260009160378184f060408051600160a060020a038316815290519194507f117c72e6c25f0a072e36e148df71468ce2f3dbe7defec5b2c257a6e3eb65278c925081900360200190a15091905056fe4454466163746f72793a20556e61626c6520746f20696e697469616c697a6520746f6b656e20696e7374616e63654454466163746f72793a207a65726f20636170206973206e6f7420616c6c6f7765644454466163746f72793a204661696c656420746f20706572666f726d206d696e696d616c206465706c6f79206f662061206e657720746f6b656ea165627a7a723058207fab3b4520813dad84cc05df6fc8f694d4a0cbcd831c90ebd338ba1ec484046700294454466163746f72793a20496e76616c69642074656d706c61746520746f6b656e2f636f6d6d756e6974792066656520636f6c6c6563746f722061646472657373", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061005d577c01000000000000000000000000000000000000000000000000000000006000350463490aad768114610062578063c6cf868a14610086578063efbe8fd1146100a0575b600080fd5b61006a610256565b60408051600160a060020a039092168252519081900360200190f35b61008e610265565b60408051918252519081900360200190f35b61006a600480360360808110156100b657600080fd5b8101906020810181356401000000008111156100d157600080fd5b8201836020820111156100e357600080fd5b8035906020019184600183028401116401000000008311171561010557600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929594936020810193503591505064010000000081111561015857600080fd5b82018360208201111561016a57600080fd5b8035906020019184600183028401116401000000008311171561018c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156101df57600080fd5b8201836020820111156101f157600080fd5b8035906020019184600183028401116401000000008311171561021357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550509135925061026b915050565b600054600160a060020a031690565b60025490565b6000816102c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806108716022913960400191505060405180910390fd5b6000546102d890600160a060020a0316610791565b9050600160a060020a038116610339576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603a815260200180610893603a913960400191505060405180910390fd5b6001546040517f9070d2f8000000000000000000000000000000000000000000000000000000008152336044820181905260648201859052600160a060020a0392831660a4830181905260c060048401908152885160c485015288518695861694639070d2f8948b948b9491938b938f939182916024810191608482019160e4019060208c019080838360005b838110156103de5781810151838201526020016103c6565b50505050905090810190601f16801561040b5780820380516001836020036101000a031916815260200191505b5084810383528951815289516020918201918b019080838360005b8381101561043e578181015183820152602001610426565b50505050905090810190601f16801561046b5780820380516001836020036101000a031916815260200191505b50848103825286518152865160209182019188019080838360005b8381101561049e578181015183820152602001610486565b50505050905090810190601f1680156104cb5780820380516001836020036101000a031916815260200191505b509950505050505050505050602060405180830381600087803b1580156104f157600080fd5b505af1158015610505573d6000803e3d6000fd5b505050506040513d602081101561051b57600080fd5b5051610572576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180610843602e913960400191505060405180910390fd5b846040518082805190602001908083835b602083106105a25780518252601f199092019160209182019101610583565b5181516020939093036101000a60001901801990911692169190911790526040519201829003822060008054919550600160a060020a039182169450908716927fb51c8cbe199ffe8b0d1d39b62d473569750653cb18b165f77ae423b3900180ad9250a4856040518082805190602001908083835b602083106106365780518252601f199092019160209182019101610617565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902033600160a060020a031683600160a060020a03167f437e99a69c634128e67a85656b80d03b028ba37525b15070606e5c28e846984a888888604051808060200180602001848152602001838103835286818151815260200191508051906020019080838360005b838110156106e25781810151838201526020016106ca565b50505050905090810190601f16801561070f5780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561074257818101518382015260200161072a565b50505050905090810190601f16801561076f5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a450600280546001019055949350505050565b6040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081526c010000000000000000000000008202601482018190527f5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000602883015260009160378184f060408051600160a060020a038316815290519194507f117c72e6c25f0a072e36e148df71468ce2f3dbe7defec5b2c257a6e3eb65278c925081900360200190a15091905056fe4454466163746f72793a20556e61626c6520746f20696e697469616c697a6520746f6b656e20696e7374616e63654454466163746f72793a207a65726f20636170206973206e6f7420616c6c6f7765644454466163746f72793a204661696c656420746f20706572666f726d206d696e696d616c206465706c6f79206f662061206e657720746f6b656ea165627a7a723058207fab3b4520813dad84cc05df6fc8f694d4a0cbcd831c90ebd338ba1ec48404670029", + "sourceMap": "629:3010:0:-;;;780:1;744:37;;1438:351;8:9:-1;5:2;;;30:1;27;20:12;5:2;1438:351:0;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1438:351:0;;;;;;;-1:-1:-1;;;;;1549:23:0;;;;;;:63;;-1:-1:-1;;;;;;1588:24:0;;;;1549:63;1528:175;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1713:13;:25;;-1:-1:-1;;;;;1713:25:0;;;-1:-1:-1;;;;;;1713:25:0;;;;;;;;1748:34;;;;;;;;;;;629:3010;;;;;;", + "deployedSourceMap": "629:3010:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;629:3010:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3540:97;;;:::i;:::-;;;;-1:-1:-1;;;;;3540:97:0;;;;;;;;;;;;;;3334:105;;;:::i;:::-;;;;;;;;;;;;;;;;2164:1068;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;2164:1068:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;2164:1068:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2164:1068:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2164:1068:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2164:1068:0;;;;;;;;-1:-1:-1;2164:1068:0;;-1:-1:-1;;21:11;5:28;;2:2;;;46:1;43;36:12;2:2;2164:1068:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2164:1068:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2164:1068:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2164:1068:0;;;;;;;;-1:-1:-1;2164:1068:0;;-1:-1:-1;;21:11;5:28;;2:2;;;46:1;43;36:12;2:2;2164:1068:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2164:1068:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;2164:1068:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;2164:1068:0;;-1:-1:-1;;2164:1068:0;;;-1:-1:-1;2164:1068:0;;-1:-1:-1;;2164:1068:0:i;3540:97::-;3591:7;3617:13;-1:-1:-1;;;;;3617:13:0;3540:97;:::o;3334:105::-;3415:17;;3334:105;:::o;2164:1068::-;2330:13;2380:8;2359:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2474:13;;2467:21;;-1:-1:-1;;;;;2474:13:0;2467:6;:21::i;:::-;2459:29;-1:-1:-1;;;;;;2520:19:0;;2499:124;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2875:21;;2716:194;;;;;2804:10;2716:194;;;;;;;;;;;;-1:-1:-1;;;;;2875:21:0;;;2716:194;;;;;;;;;;;;;;;;;;;;;2679:5;;2716:24;;;;;2758:4;;2780:6;;2804:10;;2832:3;;2853:4;;2716:194;;;;;;;;;;;;;;;;;;;;;2633:28;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2716:194:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2716:194:0;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2716:194:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2716:194:0;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2716:194:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2716:194:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2716:194:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2716:194:0;2695:287;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3032:4;2997:40;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;;;;365:33;;2997:40:0;;;;;;;;;-1:-1:-1;3017:13:0;;2997:40;;-1:-1:-1;;;;;;3017:13:0;;;;-1:-1:-1;2997:40:0;;;;;;-1:-1:-1;2997:40:0;3179:4;3052:141;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3052:141:0;;;;;;;;;;;;;;;;3155:10;-1:-1:-1;;;;;3052:141:0;3081:5;-1:-1:-1;;;;;3052:141:0;;3100:4;3118:6;3138:3;3052:141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3052:141:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3052:141:0;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3052:141:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3203:17:0;:22;;3224:1;3203:22;;;2164:1068;;-1:-1:-1;;;;2164:1068:0:o;811:963:13:-;1415:4;1409:11;1445:66;1431:81;;944:15;;;1541:4;1530:16;;1523:37;;;1596:66;1589:4;1578:16;;1571:92;889:16;;1703:4;1409:11;889:16;1686:22;1732:35;;;-1:-1:-1;;;;;1732:35:13;;;;;;1674:34;;-1:-1:-1;1732:35:13;;-1:-1:-1;1732:35:13;;;;;;;811:963;;;;:::o", + "source": "pragma solidity 0.5.7;\n// Copyright BigchainDB GmbH and Ocean Protocol contributors\n// SPDX-License-Identifier: (Apache-2.0 AND CC-BY-4.0)\n// Code is Apache-2.0 and docs are CC-BY-4.0\n\nimport './utils/Deployer.sol';\nimport './interfaces/IERC20Template.sol';\n\n/**\n * @title DTFactory contract\n * @author Ocean Protocol Team\n *\n * @dev Implementation of Ocean DataTokens Factory\n *\n * DTFactory deploys DataToken proxy contracts.\n * New DataToken proxy contracts are links to the template contract's bytecode.\n * Proxy contract functionality is based on Ocean Protocol custom implementation of ERC1167 standard.\n */\ncontract DTFactory is Deployer {\n address private tokenTemplate;\n address private communityFeeCollector;\n uint256 private currentTokenCount = 1;\n\n event TokenCreated(\n address indexed newTokenAddress,\n address indexed templateAddress,\n string indexed tokenName\n );\n\n event TokenRegistered(\n address indexed tokenAddress,\n string tokenName,\n string tokenSymbol,\n uint256 tokenCap,\n address indexed registeredBy,\n string indexed blob\n );\n\n /**\n * @dev constructor\n * Called on contract deployment. Could not be called with zero address parameters.\n * @param _template refers to the address of a deployed DataToken contract.\n * @param _collector refers to the community fee collector address\n */\n constructor(\n address _template,\n address _collector\n ) public {\n require(\n _template != address(0) &&\n _collector != address(0),\n 'DTFactory: Invalid template token/community fee collector address'\n );\n tokenTemplate = _template;\n communityFeeCollector = _collector;\n }\n\n /**\n * @dev Deploys new DataToken proxy contract.\n * Template contract address could not be a zero address.\n * @param blob any string that hold data/metadata for the new token\n * @param name token name\n * @param symbol token symbol\n * @param cap the maximum total supply\n * @return address of a new proxy DataToken contract\n */\n function createToken(\n string memory blob,\n string memory name,\n string memory symbol,\n uint256 cap\n )\n public\n returns (address token)\n {\n require(\n cap != 0,\n 'DTFactory: zero cap is not allowed'\n );\n\n token = deploy(tokenTemplate);\n\n require(\n token != address(0),\n 'DTFactory: Failed to perform minimal deploy of a new token'\n );\n IERC20Template tokenInstance = IERC20Template(token);\n require(\n tokenInstance.initialize(\n name,\n symbol,\n msg.sender,\n cap,\n blob,\n communityFeeCollector\n ),\n 'DTFactory: Unable to initialize token instance'\n );\n emit TokenCreated(token, tokenTemplate, name);\n emit TokenRegistered(\n token,\n name,\n symbol,\n cap,\n msg.sender,\n blob\n );\n currentTokenCount += 1;\n }\n\n /**\n * @dev get the current token count.\n * @return the current token count\n */\n function getCurrentTokenCount() external view returns (uint256) {\n return currentTokenCount;\n }\n\n /**\n * @dev get the token template address\n * @return the template address\n */\n function getTokenTemplate() external view returns (address) {\n return tokenTemplate;\n }\n}\n", + "sourcePath": "/home/travis/build/oceanprotocol/ocean-contracts/contracts/DTFactory.sol", + "ast": { + "absolutePath": "/home/travis/build/oceanprotocol/ocean-contracts/contracts/DTFactory.sol", + "exportedSymbols": { + "DTFactory": [ + 158 + ] + }, + "id": 159, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "0.5", + ".7" + ], + "nodeType": "PragmaDirective", + "src": "0:22:0" + }, + { + "absolutePath": "/home/travis/build/oceanprotocol/ocean-contracts/contracts/utils/Deployer.sol", + "file": "./utils/Deployer.sol", + "id": 2, + "nodeType": "ImportDirective", + "scope": 159, + "sourceUnit": 5732, + "src": "185:30:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/travis/build/oceanprotocol/ocean-contracts/contracts/interfaces/IERC20Template.sol", + "file": "./interfaces/IERC20Template.sol", + "id": 3, + "nodeType": "ImportDirective", + "scope": 159, + "sourceUnit": 5090, + "src": "216:41:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4, + "name": "Deployer", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5731, + "src": "651:8:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Deployer_$5731", + "typeString": "contract Deployer" + } + }, + "id": 5, + "nodeType": "InheritanceSpecifier", + "src": "651:8:0" + } + ], + "contractDependencies": [ + 5731 + ], + "contractKind": "contract", + "documentation": "@title DTFactory contract\n@author Ocean Protocol Team\n * @dev Implementation of Ocean DataTokens Factory\n * DTFactory deploys DataToken proxy contracts.\n New DataToken proxy contracts are links to the template contract's bytecode.\n Proxy contract functionality is based on Ocean Protocol custom implementation of ERC1167 standard.", + "fullyImplemented": true, + "id": 158, + "linearizedBaseContracts": [ + 158, + 5731 + ], + "name": "DTFactory", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 7, + "name": "tokenTemplate", + "nodeType": "VariableDeclaration", + "scope": 158, + "src": "666:29:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "666:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 9, + "name": "communityFeeCollector", + "nodeType": "VariableDeclaration", + "scope": 158, + "src": "701:37:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "701:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 12, + "name": "currentTokenCount", + "nodeType": "VariableDeclaration", + "scope": 158, + "src": "744:37:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "744:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "31", + "id": 11, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "780:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": null, + "id": 20, + "name": "TokenCreated", + "nodeType": "EventDefinition", + "parameters": { + "id": 19, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14, + "indexed": true, + "name": "newTokenAddress", + "nodeType": "VariableDeclaration", + "scope": 20, + "src": "816:31:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "816:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 16, + "indexed": true, + "name": "templateAddress", + "nodeType": "VariableDeclaration", + "scope": 20, + "src": "857:31:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 15, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "857:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 18, + "indexed": true, + "name": "tokenName", + "nodeType": "VariableDeclaration", + "scope": 20, + "src": "898:24:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 17, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "898:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "806:122:0" + }, + "src": "788:141:0" + }, + { + "anonymous": false, + "documentation": null, + "id": 34, + "name": "TokenRegistered", + "nodeType": "EventDefinition", + "parameters": { + "id": 33, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 22, + "indexed": true, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 34, + "src": "966:28:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 21, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "966:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 24, + "indexed": false, + "name": "tokenName", + "nodeType": "VariableDeclaration", + "scope": 34, + "src": "1004:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 23, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1004:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 26, + "indexed": false, + "name": "tokenSymbol", + "nodeType": "VariableDeclaration", + "scope": 34, + "src": "1030:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 25, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1030:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 28, + "indexed": false, + "name": "tokenCap", + "nodeType": "VariableDeclaration", + "scope": 34, + "src": "1058:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 27, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1058:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 30, + "indexed": true, + "name": "registeredBy", + "nodeType": "VariableDeclaration", + "scope": 34, + "src": "1084:28:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 29, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1084:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32, + "indexed": true, + "name": "blob", + "nodeType": "VariableDeclaration", + "scope": 34, + "src": "1122:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 31, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1122:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "956:191:0" + }, + "src": "935:213:0" + }, + { + "body": { + "id": 64, + "nodeType": "Block", + "src": "1518:271:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 52, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 46, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 42, + "name": "_template", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36, + "src": "1549:9:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 44, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1570:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 43, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1562:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 45, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1562:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1549:23:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 51, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 47, + "name": "_collector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38, + "src": "1588:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 49, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1610:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 48, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1602:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 50, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1602:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1588:24:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1549:63:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4454466163746f72793a20496e76616c69642074656d706c61746520746f6b656e2f636f6d6d756e6974792066656520636f6c6c6563746f722061646472657373", + "id": 53, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1626:67:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4ad3e5f7655ba83235e545811343b3f1c7739bd2f1b726cbd7686d420baf2813", + "typeString": "literal_string \"DTFactory: Invalid template token/community fee collector address\"" + }, + "value": "DTFactory: Invalid template token/community fee collector address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4ad3e5f7655ba83235e545811343b3f1c7739bd2f1b726cbd7686d420baf2813", + "typeString": "literal_string \"DTFactory: Invalid template token/community fee collector address\"" + } + ], + "id": 41, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6555, + 6556 + ], + "referencedDeclaration": 6556, + "src": "1528:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 54, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1528:175:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 55, + "nodeType": "ExpressionStatement", + "src": "1528:175:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 58, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 56, + "name": "tokenTemplate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "1713:13:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 57, + "name": "_template", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36, + "src": "1729:9:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1713:25:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 59, + "nodeType": "ExpressionStatement", + "src": "1713:25:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 62, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 60, + "name": "communityFeeCollector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9, + "src": "1748:21:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 61, + "name": "_collector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38, + "src": "1772:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1748:34:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 63, + "nodeType": "ExpressionStatement", + "src": "1748:34:0" + } + ] + }, + "documentation": "@dev constructor\n Called on contract deployment. Could not be called with zero address parameters.\n@param _template refers to the address of a deployed DataToken contract.\n@param _collector refers to the community fee collector address", + "id": 65, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 39, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 36, + "name": "_template", + "nodeType": "VariableDeclaration", + "scope": 65, + "src": "1459:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 35, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1459:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 38, + "name": "_collector", + "nodeType": "VariableDeclaration", + "scope": 65, + "src": "1486:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 37, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1486:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1449:61:0" + }, + "returnParameters": { + "id": 40, + "nodeType": "ParameterList", + "parameters": [], + "src": "1518:0:0" + }, + "scope": 158, + "src": "1438:351:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 140, + "nodeType": "Block", + "src": "2349:883:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 81, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 79, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "2380:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 80, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2387:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2380:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4454466163746f72793a207a65726f20636170206973206e6f7420616c6c6f776564", + "id": 82, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2402:36:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_275103c39c8e014c8efbcc9e9b88606200c5ae2f95e8ff4229101e5d34ee3597", + "typeString": "literal_string \"DTFactory: zero cap is not allowed\"" + }, + "value": "DTFactory: zero cap is not allowed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_275103c39c8e014c8efbcc9e9b88606200c5ae2f95e8ff4229101e5d34ee3597", + "typeString": "literal_string \"DTFactory: zero cap is not allowed\"" + } + ], + "id": 78, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6555, + 6556 + ], + "referencedDeclaration": 6556, + "src": "2359:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 83, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2359:89:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 84, + "nodeType": "ExpressionStatement", + "src": "2359:89:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 89, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 85, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 76, + "src": "2459:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 87, + "name": "tokenTemplate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "2474:13:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 86, + "name": "deploy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5730, + "src": "2467:6:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_address_$", + "typeString": "function (address) returns (address)" + } + }, + "id": 88, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2467:21:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2459:29:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 90, + "nodeType": "ExpressionStatement", + "src": "2459:29:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 96, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 92, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 76, + "src": "2520:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 94, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2537:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 93, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2529:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 95, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2529:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2520:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4454466163746f72793a204661696c656420746f20706572666f726d206d696e696d616c206465706c6f79206f662061206e657720746f6b656e", + "id": 97, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2553:60:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_864bea267bbab0e2823533999ec879a0c10c7f940117c7fd1687efd3993a56e3", + "typeString": "literal_string \"DTFactory: Failed to perform minimal deploy of a new token\"" + }, + "value": "DTFactory: Failed to perform minimal deploy of a new token" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_864bea267bbab0e2823533999ec879a0c10c7f940117c7fd1687efd3993a56e3", + "typeString": "literal_string \"DTFactory: Failed to perform minimal deploy of a new token\"" + } + ], + "id": 91, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6555, + 6556 + ], + "referencedDeclaration": 6556, + "src": "2499:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 98, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2499:124:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 99, + "nodeType": "ExpressionStatement", + "src": "2499:124:0" + }, + { + "assignments": [ + 101 + ], + "declarations": [ + { + "constant": false, + "id": 101, + "name": "tokenInstance", + "nodeType": "VariableDeclaration", + "scope": 140, + "src": "2633:28:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20Template_$5089", + "typeString": "contract IERC20Template" + }, + "typeName": { + "contractScope": null, + "id": 100, + "name": "IERC20Template", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5089, + "src": "2633:14:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20Template_$5089", + "typeString": "contract IERC20Template" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 105, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 103, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 76, + "src": "2679:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 102, + "name": "IERC20Template", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5089, + "src": "2664:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20Template_$5089_$", + "typeString": "type(contract IERC20Template)" + } + }, + "id": 104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2664:21:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20Template_$5089", + "typeString": "contract IERC20Template" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2633:52:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 109, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "2758:4:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 110, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 71, + "src": "2780:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 111, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6552, + "src": "2804:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 112, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2804:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 113, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "2832:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 114, + "name": "blob", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 67, + "src": "2853:4:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 115, + "name": "communityFeeCollector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9, + "src": "2875:21:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 107, + "name": "tokenInstance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2716:13:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20Template_$5089", + "typeString": "contract IERC20Template" + } + }, + "id": 108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "initialize", + "nodeType": "MemberAccess", + "referencedDeclaration": 5000, + "src": "2716:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (string memory,string memory,address,uint256,string memory,address) external returns (bool)" + } + }, + "id": 116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2716:194:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4454466163746f72793a20556e61626c6520746f20696e697469616c697a6520746f6b656e20696e7374616e6365", + "id": 117, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2924:48:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0d4ad5d97b72e5d205f3629b55676990eb71b941b9757afabcf7e9a4e3e2cbe3", + "typeString": "literal_string \"DTFactory: Unable to initialize token instance\"" + }, + "value": "DTFactory: Unable to initialize token instance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0d4ad5d97b72e5d205f3629b55676990eb71b941b9757afabcf7e9a4e3e2cbe3", + "typeString": "literal_string \"DTFactory: Unable to initialize token instance\"" + } + ], + "id": 106, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6555, + 6556 + ], + "referencedDeclaration": 6556, + "src": "2695:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2695:287:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 119, + "nodeType": "ExpressionStatement", + "src": "2695:287:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 121, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 76, + "src": "3010:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 122, + "name": "tokenTemplate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "3017:13:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 123, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "3032:4:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 120, + "name": "TokenCreated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 20, + "src": "2997:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (address,address,string memory)" + } + }, + "id": 124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2997:40:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 125, + "nodeType": "EmitStatement", + "src": "2992:45:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 127, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 76, + "src": "3081:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 128, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "3100:4:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 129, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 71, + "src": "3118:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 130, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "3138:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 131, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6552, + "src": "3155:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3155:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 133, + "name": "blob", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 67, + "src": "3179:4:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 126, + "name": "TokenRegistered", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34, + "src": "3052:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_address_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (address,string memory,string memory,uint256,address,string memory)" + } + }, + "id": 134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3052:141:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 135, + "nodeType": "EmitStatement", + "src": "3047:146:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 136, + "name": "currentTokenCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12, + "src": "3203:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 137, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3224:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3203:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 139, + "nodeType": "ExpressionStatement", + "src": "3203:22:0" + } + ] + }, + "documentation": "@dev Deploys new DataToken proxy contract.\n Template contract address could not be a zero address.\n@param blob any string that hold data/metadata for the new token\n@param name token name\n@param symbol token symbol\n@param cap the maximum total supply\n@return address of a new proxy DataToken contract", + "id": 141, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createToken", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 74, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 67, + "name": "blob", + "nodeType": "VariableDeclaration", + "scope": 141, + "src": "2194:18:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 66, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2194:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 69, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 141, + "src": "2222:18:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 68, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2222:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 71, + "name": "symbol", + "nodeType": "VariableDeclaration", + "scope": 141, + "src": "2250:20:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 70, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2250:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 73, + "name": "cap", + "nodeType": "VariableDeclaration", + "scope": 141, + "src": "2280:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 72, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2280:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2184:113:0" + }, + "returnParameters": { + "id": 77, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 76, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 141, + "src": "2330:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 75, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2330:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2329:15:0" + }, + "scope": 158, + "src": "2164:1068:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 148, + "nodeType": "Block", + "src": "3398:41:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 146, + "name": "currentTokenCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12, + "src": "3415:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 145, + "id": 147, + "nodeType": "Return", + "src": "3408:24:0" + } + ] + }, + "documentation": "@dev get the current token count.\n@return the current token count", + "id": 149, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getCurrentTokenCount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 142, + "nodeType": "ParameterList", + "parameters": [], + "src": "3363:2:0" + }, + "returnParameters": { + "id": 145, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 144, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 149, + "src": "3389:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 143, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3389:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3388:9:0" + }, + "scope": 158, + "src": "3334:105:0", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 156, + "nodeType": "Block", + "src": "3600:37:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 154, + "name": "tokenTemplate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "3617:13:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 153, + "id": 155, + "nodeType": "Return", + "src": "3610:20:0" + } + ] + }, + "documentation": "@dev get the token template address\n@return the template address", + "id": 157, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getTokenTemplate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 150, + "nodeType": "ParameterList", + "parameters": [], + "src": "3565:2:0" + }, + "returnParameters": { + "id": 153, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 152, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 157, + "src": "3591:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 151, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3591:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3590:9:0" + }, + "scope": 158, + "src": "3540:97:0", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + } + ], + "scope": 159, + "src": "629:3010:0" + } + ], + "src": "0:3640:0" + }, + "legacyAST": { + "absolutePath": "/home/travis/build/oceanprotocol/ocean-contracts/contracts/DTFactory.sol", + "exportedSymbols": { + "DTFactory": [ + 158 + ] + }, + "id": 159, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "0.5", + ".7" + ], + "nodeType": "PragmaDirective", + "src": "0:22:0" + }, + { + "absolutePath": "/home/travis/build/oceanprotocol/ocean-contracts/contracts/utils/Deployer.sol", + "file": "./utils/Deployer.sol", + "id": 2, + "nodeType": "ImportDirective", + "scope": 159, + "sourceUnit": 5732, + "src": "185:30:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/home/travis/build/oceanprotocol/ocean-contracts/contracts/interfaces/IERC20Template.sol", + "file": "./interfaces/IERC20Template.sol", + "id": 3, + "nodeType": "ImportDirective", + "scope": 159, + "sourceUnit": 5090, + "src": "216:41:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4, + "name": "Deployer", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5731, + "src": "651:8:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Deployer_$5731", + "typeString": "contract Deployer" + } + }, + "id": 5, + "nodeType": "InheritanceSpecifier", + "src": "651:8:0" + } + ], + "contractDependencies": [ + 5731 + ], + "contractKind": "contract", + "documentation": "@title DTFactory contract\n@author Ocean Protocol Team\n * @dev Implementation of Ocean DataTokens Factory\n * DTFactory deploys DataToken proxy contracts.\n New DataToken proxy contracts are links to the template contract's bytecode.\n Proxy contract functionality is based on Ocean Protocol custom implementation of ERC1167 standard.", + "fullyImplemented": true, + "id": 158, + "linearizedBaseContracts": [ + 158, + 5731 + ], + "name": "DTFactory", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 7, + "name": "tokenTemplate", + "nodeType": "VariableDeclaration", + "scope": 158, + "src": "666:29:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "666:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 9, + "name": "communityFeeCollector", + "nodeType": "VariableDeclaration", + "scope": 158, + "src": "701:37:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "701:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 12, + "name": "currentTokenCount", + "nodeType": "VariableDeclaration", + "scope": 158, + "src": "744:37:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "744:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "31", + "id": 11, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "780:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": null, + "id": 20, + "name": "TokenCreated", + "nodeType": "EventDefinition", + "parameters": { + "id": 19, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 14, + "indexed": true, + "name": "newTokenAddress", + "nodeType": "VariableDeclaration", + "scope": 20, + "src": "816:31:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "816:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 16, + "indexed": true, + "name": "templateAddress", + "nodeType": "VariableDeclaration", + "scope": 20, + "src": "857:31:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 15, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "857:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 18, + "indexed": true, + "name": "tokenName", + "nodeType": "VariableDeclaration", + "scope": 20, + "src": "898:24:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 17, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "898:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "806:122:0" + }, + "src": "788:141:0" + }, + { + "anonymous": false, + "documentation": null, + "id": 34, + "name": "TokenRegistered", + "nodeType": "EventDefinition", + "parameters": { + "id": 33, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 22, + "indexed": true, + "name": "tokenAddress", + "nodeType": "VariableDeclaration", + "scope": 34, + "src": "966:28:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 21, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "966:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 24, + "indexed": false, + "name": "tokenName", + "nodeType": "VariableDeclaration", + "scope": 34, + "src": "1004:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 23, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1004:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 26, + "indexed": false, + "name": "tokenSymbol", + "nodeType": "VariableDeclaration", + "scope": 34, + "src": "1030:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 25, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1030:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 28, + "indexed": false, + "name": "tokenCap", + "nodeType": "VariableDeclaration", + "scope": 34, + "src": "1058:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 27, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1058:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 30, + "indexed": true, + "name": "registeredBy", + "nodeType": "VariableDeclaration", + "scope": 34, + "src": "1084:28:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 29, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1084:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 32, + "indexed": true, + "name": "blob", + "nodeType": "VariableDeclaration", + "scope": 34, + "src": "1122:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 31, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1122:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "956:191:0" + }, + "src": "935:213:0" + }, + { + "body": { + "id": 64, + "nodeType": "Block", + "src": "1518:271:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 52, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 46, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 42, + "name": "_template", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36, + "src": "1549:9:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 44, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1570:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 43, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1562:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 45, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1562:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1549:23:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 51, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 47, + "name": "_collector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38, + "src": "1588:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 49, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1610:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 48, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1602:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 50, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1602:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1588:24:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1549:63:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4454466163746f72793a20496e76616c69642074656d706c61746520746f6b656e2f636f6d6d756e6974792066656520636f6c6c6563746f722061646472657373", + "id": 53, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1626:67:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4ad3e5f7655ba83235e545811343b3f1c7739bd2f1b726cbd7686d420baf2813", + "typeString": "literal_string \"DTFactory: Invalid template token/community fee collector address\"" + }, + "value": "DTFactory: Invalid template token/community fee collector address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4ad3e5f7655ba83235e545811343b3f1c7739bd2f1b726cbd7686d420baf2813", + "typeString": "literal_string \"DTFactory: Invalid template token/community fee collector address\"" + } + ], + "id": 41, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6555, + 6556 + ], + "referencedDeclaration": 6556, + "src": "1528:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 54, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1528:175:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 55, + "nodeType": "ExpressionStatement", + "src": "1528:175:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 58, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 56, + "name": "tokenTemplate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "1713:13:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 57, + "name": "_template", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 36, + "src": "1729:9:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1713:25:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 59, + "nodeType": "ExpressionStatement", + "src": "1713:25:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 62, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 60, + "name": "communityFeeCollector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9, + "src": "1748:21:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 61, + "name": "_collector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38, + "src": "1772:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1748:34:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 63, + "nodeType": "ExpressionStatement", + "src": "1748:34:0" + } + ] + }, + "documentation": "@dev constructor\n Called on contract deployment. Could not be called with zero address parameters.\n@param _template refers to the address of a deployed DataToken contract.\n@param _collector refers to the community fee collector address", + "id": 65, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 39, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 36, + "name": "_template", + "nodeType": "VariableDeclaration", + "scope": 65, + "src": "1459:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 35, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1459:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 38, + "name": "_collector", + "nodeType": "VariableDeclaration", + "scope": 65, + "src": "1486:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 37, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1486:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1449:61:0" + }, + "returnParameters": { + "id": 40, + "nodeType": "ParameterList", + "parameters": [], + "src": "1518:0:0" + }, + "scope": 158, + "src": "1438:351:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 140, + "nodeType": "Block", + "src": "2349:883:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 81, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 79, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "2380:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 80, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2387:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2380:8:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4454466163746f72793a207a65726f20636170206973206e6f7420616c6c6f776564", + "id": 82, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2402:36:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_275103c39c8e014c8efbcc9e9b88606200c5ae2f95e8ff4229101e5d34ee3597", + "typeString": "literal_string \"DTFactory: zero cap is not allowed\"" + }, + "value": "DTFactory: zero cap is not allowed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_275103c39c8e014c8efbcc9e9b88606200c5ae2f95e8ff4229101e5d34ee3597", + "typeString": "literal_string \"DTFactory: zero cap is not allowed\"" + } + ], + "id": 78, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6555, + 6556 + ], + "referencedDeclaration": 6556, + "src": "2359:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 83, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2359:89:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 84, + "nodeType": "ExpressionStatement", + "src": "2359:89:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 89, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 85, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 76, + "src": "2459:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 87, + "name": "tokenTemplate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "2474:13:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 86, + "name": "deploy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5730, + "src": "2467:6:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$_t_address_$", + "typeString": "function (address) returns (address)" + } + }, + "id": 88, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2467:21:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2459:29:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 90, + "nodeType": "ExpressionStatement", + "src": "2459:29:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 96, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 92, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 76, + "src": "2520:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 94, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2537:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 93, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2529:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 95, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2529:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2520:19:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4454466163746f72793a204661696c656420746f20706572666f726d206d696e696d616c206465706c6f79206f662061206e657720746f6b656e", + "id": 97, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2553:60:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_864bea267bbab0e2823533999ec879a0c10c7f940117c7fd1687efd3993a56e3", + "typeString": "literal_string \"DTFactory: Failed to perform minimal deploy of a new token\"" + }, + "value": "DTFactory: Failed to perform minimal deploy of a new token" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_864bea267bbab0e2823533999ec879a0c10c7f940117c7fd1687efd3993a56e3", + "typeString": "literal_string \"DTFactory: Failed to perform minimal deploy of a new token\"" + } + ], + "id": 91, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6555, + 6556 + ], + "referencedDeclaration": 6556, + "src": "2499:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 98, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2499:124:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 99, + "nodeType": "ExpressionStatement", + "src": "2499:124:0" + }, + { + "assignments": [ + 101 + ], + "declarations": [ + { + "constant": false, + "id": 101, + "name": "tokenInstance", + "nodeType": "VariableDeclaration", + "scope": 140, + "src": "2633:28:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20Template_$5089", + "typeString": "contract IERC20Template" + }, + "typeName": { + "contractScope": null, + "id": 100, + "name": "IERC20Template", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5089, + "src": "2633:14:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20Template_$5089", + "typeString": "contract IERC20Template" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 105, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 103, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 76, + "src": "2679:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 102, + "name": "IERC20Template", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5089, + "src": "2664:14:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20Template_$5089_$", + "typeString": "type(contract IERC20Template)" + } + }, + "id": 104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2664:21:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20Template_$5089", + "typeString": "contract IERC20Template" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2633:52:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 109, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "2758:4:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 110, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 71, + "src": "2780:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 111, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6552, + "src": "2804:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 112, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2804:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 113, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "2832:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 114, + "name": "blob", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 67, + "src": "2853:4:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 115, + "name": "communityFeeCollector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 9, + "src": "2875:21:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 107, + "name": "tokenInstance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2716:13:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20Template_$5089", + "typeString": "contract IERC20Template" + } + }, + "id": 108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "initialize", + "nodeType": "MemberAccess", + "referencedDeclaration": 5000, + "src": "2716:24:0", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (string memory,string memory,address,uint256,string memory,address) external returns (bool)" + } + }, + "id": 116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2716:194:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4454466163746f72793a20556e61626c6520746f20696e697469616c697a6520746f6b656e20696e7374616e6365", + "id": 117, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2924:48:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0d4ad5d97b72e5d205f3629b55676990eb71b941b9757afabcf7e9a4e3e2cbe3", + "typeString": "literal_string \"DTFactory: Unable to initialize token instance\"" + }, + "value": "DTFactory: Unable to initialize token instance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0d4ad5d97b72e5d205f3629b55676990eb71b941b9757afabcf7e9a4e3e2cbe3", + "typeString": "literal_string \"DTFactory: Unable to initialize token instance\"" + } + ], + "id": 106, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6555, + 6556 + ], + "referencedDeclaration": 6556, + "src": "2695:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2695:287:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 119, + "nodeType": "ExpressionStatement", + "src": "2695:287:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 121, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 76, + "src": "3010:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 122, + "name": "tokenTemplate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "3017:13:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 123, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "3032:4:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 120, + "name": "TokenCreated", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 20, + "src": "2997:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (address,address,string memory)" + } + }, + "id": 124, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2997:40:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 125, + "nodeType": "EmitStatement", + "src": "2992:45:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 127, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 76, + "src": "3081:5:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 128, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "3100:4:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 129, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 71, + "src": "3118:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 130, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 73, + "src": "3138:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 131, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6552, + "src": "3155:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3155:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 133, + "name": "blob", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 67, + "src": "3179:4:0", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 126, + "name": "TokenRegistered", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 34, + "src": "3052:15:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_uint256_$_t_address_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (address,string memory,string memory,uint256,address,string memory)" + } + }, + "id": 134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3052:141:0", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 135, + "nodeType": "EmitStatement", + "src": "3047:146:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 136, + "name": "currentTokenCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12, + "src": "3203:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 137, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3224:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3203:22:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 139, + "nodeType": "ExpressionStatement", + "src": "3203:22:0" + } + ] + }, + "documentation": "@dev Deploys new DataToken proxy contract.\n Template contract address could not be a zero address.\n@param blob any string that hold data/metadata for the new token\n@param name token name\n@param symbol token symbol\n@param cap the maximum total supply\n@return address of a new proxy DataToken contract", + "id": 141, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "createToken", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 74, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 67, + "name": "blob", + "nodeType": "VariableDeclaration", + "scope": 141, + "src": "2194:18:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 66, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2194:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 69, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 141, + "src": "2222:18:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 68, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2222:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 71, + "name": "symbol", + "nodeType": "VariableDeclaration", + "scope": 141, + "src": "2250:20:0", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 70, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2250:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 73, + "name": "cap", + "nodeType": "VariableDeclaration", + "scope": 141, + "src": "2280:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 72, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2280:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2184:113:0" + }, + "returnParameters": { + "id": 77, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 76, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 141, + "src": "2330:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 75, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2330:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2329:15:0" + }, + "scope": 158, + "src": "2164:1068:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 148, + "nodeType": "Block", + "src": "3398:41:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 146, + "name": "currentTokenCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 12, + "src": "3415:17:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 145, + "id": 147, + "nodeType": "Return", + "src": "3408:24:0" + } + ] + }, + "documentation": "@dev get the current token count.\n@return the current token count", + "id": 149, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getCurrentTokenCount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 142, + "nodeType": "ParameterList", + "parameters": [], + "src": "3363:2:0" + }, + "returnParameters": { + "id": 145, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 144, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 149, + "src": "3389:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 143, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3389:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3388:9:0" + }, + "scope": 158, + "src": "3334:105:0", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 156, + "nodeType": "Block", + "src": "3600:37:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 154, + "name": "tokenTemplate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "3617:13:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 153, + "id": 155, + "nodeType": "Return", + "src": "3610:20:0" + } + ] + }, + "documentation": "@dev get the token template address\n@return the template address", + "id": 157, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getTokenTemplate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 150, + "nodeType": "ParameterList", + "parameters": [], + "src": "3565:2:0" + }, + "returnParameters": { + "id": 153, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 152, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 157, + "src": "3591:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 151, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3591:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3590:9:0" + }, + "scope": 158, + "src": "3540:97:0", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + } + ], + "scope": 159, + "src": "629:3010:0" + } + ], + "src": "0:3640:0" + }, + "compiler": { + "name": "solc", + "version": "0.5.7+commit.6da8b019.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.2.4", + "updatedAt": "2020-10-22T12:03:05.061Z", + "devdoc": { + "author": "Ocean Protocol Team", + "details": "Implementation of Ocean DataTokens Factory * DTFactory deploys DataToken proxy contracts. New DataToken proxy contracts are links to the template contract's bytecode. Proxy contract functionality is based on Ocean Protocol custom implementation of ERC1167 standard.", + "methods": { + "constructor": { + "details": "constructor Called on contract deployment. Could not be called with zero address parameters.", + "params": { + "_collector": "refers to the community fee collector address", + "_template": "refers to the address of a deployed DataToken contract." + } + }, + "createToken(string,string,string,uint256)": { + "details": "Deploys new DataToken proxy contract. Template contract address could not be a zero address.", + "params": { + "blob": "any string that hold data/metadata for the new token", + "cap": "the maximum total supply", + "name": "token name", + "symbol": "token symbol" + }, + "return": "address of a new proxy DataToken contract" + }, + "getCurrentTokenCount()": { + "details": "get the current token count.", + "return": "the current token count" + }, + "getTokenTemplate()": { + "details": "get the token template address", + "return": "the template address" + } + }, + "title": "DTFactory contract" + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/abis/DataTokenTemplate.json b/abis/DataTokenTemplate.json new file mode 100644 index 0000000..b365527 --- /dev/null +++ b/abis/DataTokenTemplate.json @@ -0,0 +1,14594 @@ +{ + "contractName": "DataTokenTemplate", + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "sender", + "type": "address" + }, + { + "name": "recipient", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "BASE_MARKET_FEE_PERCENTAGE", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "addedValue", + "type": "uint256" + } + ], + "name": "increaseAllowance", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "spender", + "type": "address" + }, + { + "name": "subtractedValue", + "type": "uint256" + } + ], + "name": "decreaseAllowance", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "recipient", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "BASE_COMMUNITY_FEE_PERCENTAGE", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "BASE", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "name": "name", + "type": "string" + }, + { + "name": "symbol", + "type": "string" + }, + { + "name": "minterAddress", + "type": "address" + }, + { + "name": "cap", + "type": "uint256" + }, + { + "name": "blob", + "type": "string" + }, + { + "name": "feeCollector", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "consumer", + "type": "address" + }, + { + "indexed": true, + "name": "payer", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "serviceId", + "type": "uint256" + }, + { + "indexed": false, + "name": "timestamp", + "type": "uint256" + }, + { + "indexed": true, + "name": "mrktFeeCollector", + "type": "address" + }, + { + "indexed": false, + "name": "marketFee", + "type": "uint256" + } + ], + "name": "OrderStarted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "orderTxId", + "type": "bytes32" + }, + { + "indexed": true, + "name": "consumer", + "type": "address" + }, + { + "indexed": false, + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "name": "serviceId", + "type": "uint256" + }, + { + "indexed": true, + "name": "provider", + "type": "address" + }, + { + "indexed": false, + "name": "timestamp", + "type": "uint256" + } + ], + "name": "OrderFinished", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "currentMinter", + "type": "address" + }, + { + "indexed": false, + "name": "newMinter", + "type": "address" + } + ], + "name": "MinterProposed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "currentMinter", + "type": "address" + }, + { + "indexed": false, + "name": "newMinter", + "type": "address" + } + ], + "name": "MinterApproved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "from", + "type": "address" + }, + { + "indexed": true, + "name": "to", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "name": "name", + "type": "string" + }, + { + "name": "symbol", + "type": "string" + }, + { + "name": "minterAddress", + "type": "address" + }, + { + "name": "cap", + "type": "uint256" + }, + { + "name": "blob", + "type": "string" + }, + { + "name": "feeCollector", + "type": "address" + } + ], + "name": "initialize", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + } + ], + "name": "mint", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "consumer", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + }, + { + "name": "serviceId", + "type": "uint256" + }, + { + "name": "mrktFeeCollector", + "type": "address" + } + ], + "name": "startOrder", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "orderTxId", + "type": "bytes32" + }, + { + "name": "consumer", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + }, + { + "name": "serviceId", + "type": "uint256" + } + ], + "name": "finishOrder", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "newMinter", + "type": "address" + } + ], + "name": "proposeMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [], + "name": "approveMinter", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "name", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "symbol", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "blob", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "decimals", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "cap", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "isMinter", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "minter", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "isInitialized", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "amount", + "type": "uint256" + }, + { + "name": "feePercentage", + "type": "uint256" + } + ], + "name": "calculateFee", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + } + ], + "metadata": "{\"compiler\":{\"version\":\"0.5.7+commit.6da8b019\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"minter\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"sender\",\"type\":\"address\"},{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"BASE_MARKET_FEE_PERCENTAGE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"name\":\"\",\"type\":\"uint8\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\"},{\"name\":\"feePercentage\",\"type\":\"uint256\"}],\"name\":\"calculateFee\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"cap\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isInitialized\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"mint\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"newMinter\",\"type\":\"address\"}],\"name\":\"proposeMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"orderTxId\",\"type\":\"bytes32\"},{\"name\":\"consumer\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"},{\"name\":\"serviceId\",\"type\":\"uint256\"}],\"name\":\"finishOrder\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"symbol\",\"type\":\"string\"},{\"name\":\"minterAddress\",\"type\":\"address\"},{\"name\":\"cap\",\"type\":\"uint256\"},{\"name\":\"blob\",\"type\":\"string\"},{\"name\":\"feeCollector\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"spender\",\"type\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"recipient\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"account\",\"type\":\"address\"}],\"name\":\"isMinter\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"consumer\",\"type\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\"},{\"name\":\"serviceId\",\"type\":\"uint256\"},{\"name\":\"mrktFeeCollector\",\"type\":\"address\"}],\"name\":\"startOrder\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"BASE_COMMUNITY_FEE_PERCENTAGE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"owner\",\"type\":\"address\"},{\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"approveMinter\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"BASE\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"blob\",\"outputs\":[{\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"name\":\"name\",\"type\":\"string\"},{\"name\":\"symbol\",\"type\":\"string\"},{\"name\":\"minterAddress\",\"type\":\"address\"},{\"name\":\"cap\",\"type\":\"uint256\"},{\"name\":\"blob\",\"type\":\"string\"},{\"name\":\"feeCollector\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"consumer\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"payer\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"serviceId\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"timestamp\",\"type\":\"uint256\"},{\"indexed\":true,\"name\":\"mrktFeeCollector\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"marketFee\",\"type\":\"uint256\"}],\"name\":\"OrderStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"orderTxId\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"consumer\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"serviceId\",\"type\":\"uint256\"},{\"indexed\":true,\"name\":\"provider\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"OrderFinished\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"currentMinter\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"newMinter\",\"type\":\"address\"}],\"name\":\"MinterProposed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"name\":\"currentMinter\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"newMinter\",\"type\":\"address\"}],\"name\":\"MinterApproved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"}],\"devdoc\":{\"details\":\"DataTokenTemplate is an ERC20 compliant token template Used by the factory contract as a bytecode reference to deploy new DataTokens.\",\"methods\":{\"allowance(address,address)\":{\"details\":\"See {IERC20-allowance}.\"},\"approve(address,uint256)\":{\"details\":\"See {IERC20-approve}. * Requirements: * - `spender` cannot be the zero address.\"},\"approveMinter()\":{\"details\":\"approveMinter It approves a new token minter address. Only the current minter can call it.\"},\"balanceOf(address)\":{\"details\":\"See {IERC20-balanceOf}.\"},\"blob()\":{\"details\":\"blob It returns the blob (e.g https://123.com).\",\"return\":\"DataToken blob.\"},\"calculateFee(uint256,uint256)\":{\"details\":\"calculateFee giving a fee percentage, and amount it calculates the actual fee\",\"params\":{\"amount\":\"the amount of token\",\"feePercentage\":\"the fee percentage \"},\"return\":\"the token fee.\"},\"cap()\":{\"details\":\"cap it returns the capital.\",\"return\":\"DataToken cap.\"},\"constructor\":{\"details\":\"constructor Called prior contract deployment\",\"params\":{\"blob\":\"data string refering to the resolver for the metadata\",\"cap\":\"the total ERC20 cap\",\"feeCollector\":\"it is the community fee collector address\",\"minterAddress\":\"refers to an address that has minter role\",\"name\":\"refers to a template DataToken name\",\"symbol\":\"refers to a template DataToken symbol\"}},\"decimals()\":{\"details\":\"decimals It returns the token decimals. how many supported decimal points\",\"return\":\"DataToken decimals.\"},\"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`.\"},\"finishOrder(bytes32,address,uint256,uint256)\":{\"details\":\"finishOrder called by provider prior completing service delivery only if there is a partial or full refund.\",\"params\":{\"amount\":\"refers to amount of tokens that is going to be transfered.\",\"consumer\":\"refers to an address that has consumed that service.\",\"orderTxId\":\"refers to the transaction Id of startOrder acts as a payment reference.\",\"serviceId\":\"service index in the metadata.\"}},\"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.\"},\"initialize(string,string,address,uint256,string,address)\":{\"details\":\"initialize Called prior contract initialization (e.g creating new DataToken instance) Calls private _initialize function. Only if contract is not initialized.\",\"params\":{\"blob\":\"data string refering to the resolver for the metadata\",\"cap\":\"the total ERC20 cap\",\"feeCollector\":\"it is the community fee collector address\",\"minterAddress\":\"refers to an address that has minter rights\",\"name\":\"refers to a new DataToken name\",\"symbol\":\"refers to a nea DataToken symbol\"}},\"isInitialized()\":{\"details\":\"isInitialized It checks whether the contract is initialized.\",\"return\":\"true if the contract is initialized.\"},\"isMinter(address)\":{\"details\":\"isMinter It takes the address and checks whether it has a minter role.\",\"params\":{\"account\":\"refers to the address.\"},\"return\":\"true if account has a minter role.\"},\"mint(address,uint256)\":{\"details\":\"mint Only the minter address can call it. msg.value should be higher than zero and gt or eq minting fee\",\"params\":{\"account\":\"refers to an address that token is going to be minted to.\",\"value\":\"refers to amount of tokens that is going to be minted.\"}},\"minter()\":{\"details\":\"minter\",\"return\":\"minter's address.\"},\"name()\":{\"details\":\"name It returns the token name.\",\"return\":\"DataToken name.\"},\"proposeMinter(address)\":{\"details\":\"proposeMinter It proposes a new token minter address. Only the current minter can call it.\",\"params\":{\"newMinter\":\"refers to a new token minter address.\"}},\"startOrder(address,uint256,uint256,address)\":{\"details\":\"startOrder called by payer or consumer prior ordering a service consume on a marketplace.\",\"params\":{\"amount\":\"refers to amount of tokens that is going to be transfered.\",\"consumer\":\"is the consumer address (payer could be different address)\",\"mrktFeeCollector\":\"marketplace fee collector\",\"serviceId\":\"service index in the metadata\"}},\"symbol()\":{\"details\":\"symbol It returns the token symbol.\",\"return\":\"DataToken symbol.\"},\"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`.\"}},\"title\":\"DataTokenTemplate \"},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/travis/build/oceanprotocol/ocean-contracts/contracts/templates/DataTokenTemplate.sol\":\"DataTokenTemplate\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/travis/build/oceanprotocol/ocean-contracts/contracts/interfaces/IERC20Template.sol\":{\"keccak256\":\"0x022ebed2ba4949e96a05cc394cf690d8fd3190a4733cebe8cbe930ac25cfde18\",\"urls\":[\"bzzr://2fa3d5cae14f0af7d78f6e1d13bc41854082c03ab2f86462ebb09afda88ee6e9\"]},\"/home/travis/build/oceanprotocol/ocean-contracts/contracts/templates/DataTokenTemplate.sol\":{\"keccak256\":\"0x732470be7c02504d17c4aec8a2c50dc1830de309d72ded427bb12fd006ae66a8\",\"urls\":[\"bzzr://be77bb3f4e346c7234cb55d82d984dafade99886ad28af99e3be69d5115fa9f4\"]},\"openzeppelin-solidity/contracts/GSN/Context.sol\":{\"keccak256\":\"0x90a3995645af7562d84b9d69363ffa5ae7217714ab61e951bf7bc450f40e4061\",\"urls\":[\"bzzr://51482c01bddf23793bddee43b60ab9578a62948a4f2082def24ea792a553b055\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x640b6dee7a4b830bdfd52b5031a07fc2b12209f5b2e29e5d364a7d37f69d8076\",\"urls\":[\"bzzr://292843005e754e752644f767477ec5ad7a1ffc91ddb18c38b8079c62f3993cad\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xb15af804e2bc97db51e4e103f13de9fe13f87e6b835d7a88c897966c0e58506e\",\"urls\":[\"bzzr://6200c125af376381ae6c5415b8f3c1cb83889be20a7a51d67ac607487a10313b\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe5bb0f57cff3e299f360052ba50f1ea0fff046df2be070b6943e0e3c3fdad8a9\",\"urls\":[\"bzzr://cf2d583b8dce38d0617fdcd65f2fd9f126fe17b7f683b5a515ea9d2762d8b062\"]}},\"version\":1}", + "bytecode": "0x60806040526007805460a060020a60ff02191690553480156200002157600080fd5b5060405162001f0738038062001f07833981018060405260c08110156200004757600080fd5b8101908080516401000000008111156200006057600080fd5b820160208101848111156200007457600080fd5b81516401000000008111828201871017156200008f57600080fd5b50509291906020018051640100000000811115620000ac57600080fd5b82016020810184811115620000c057600080fd5b8151640100000000811182820187101715620000db57600080fd5b505060208201516040830151606090930180519295919491926401000000008111156200010757600080fd5b820160208101848111156200011b57600080fd5b81516401000000008111828201871017156200013657600080fd5b505060209091015190925090506200015c86868686868664010000000062000169810204565b5050505050505062000439565b6000600160a060020a038516620001cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018062001e446030913960400191505060405180910390fd5b600854600160a060020a03161562000230576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602f81526020018062001ed8602f913960400191505060405180910390fd5b600160a060020a03821662000291576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604081526020018062001e746040913960400191505060405180910390fd5b83620002e9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018062001eb46024913960400191505060405180910390fd5b60068490558651620003039060039060208a019062000394565b5082516200031990600590602086019062000394565b5085516200032f90600490602089019062000394565b505060088054600160a060020a0319908116600160a060020a039687161790915560078054740100000000000000000000000000000000000000009216929095169190911760a060020a60ff02191681179384905560ff930492909216949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003d757805160ff191683800117855562000407565b8280016001018555821562000407579182015b8281111562000407578251825591602001919060010190620003ea565b506200041592915062000419565b5090565b6200043691905b8082111562000415576000815560010162000420565b90565b6119fb80620004496000396000f3fe608060405234801561001057600080fd5b50600436106101ab576000357c01000000000000000000000000000000000000000000000000000000009004806370a08231116100fb578063aa271e1a116100b4578063dd62ed3e1161008e578063dd62ed3e1461060a578063eb40024b14610638578063ec342ad014610640578063fde0e7a814610648576101ab565b8063aa271e1a146105aa578063ab63d2b2146105d0578063b2263a5d146102e1576101ab565b806370a08231146103ba5780638ca0c059146103e05780639070d2f81461041857806395d89b411461054a578063a457c2d714610552578063a9059cbb1461057e576101ab565b8063313ce56711610168578063392e53cd11610142578063392e53cd14610332578063395093511461033a57806340c10f191461036657806350d2fcc414610394576101ab565b8063313ce567146102e957806334e7312214610307578063355274ea1461032a576101ab565b806306fdde03146101b0578063075461721461022d578063095ea7b31461025157806318160ddd1461029157806323b872dd146102ab578063294541c7146102e1575b600080fd5b6101b8610650565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f25781810151838201526020016101da565b50505050905090810190601f16801561021f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102356106e7565b60408051600160a060020a039092168252519081900360200190f35b61027d6004803603604081101561026757600080fd5b50600160a060020a0381351690602001356106f6565b604080519115158252519081900360200190f35b610299610714565b60408051918252519081900360200190f35b61027d600480360360608110156102c157600080fd5b50600160a060020a0381358116916020810135909116906040013561071a565b6102996107a7565b6102f16107b2565b6040805160ff9092168252519081900360200190f35b6102996004803603604081101561031d57600080fd5b50803590602001356107b7565b610299610802565b61027d610808565b61027d6004803603604081101561035057600080fd5b50600160a060020a038135169060200135610829565b6103926004803603604081101561037c57600080fd5b50600160a060020a03813516906020013561087d565b005b610392600480360360208110156103aa57600080fd5b5035600160a060020a0316610948565b610299600480360360208110156103d057600080fd5b5035600160a060020a0316610a01565b610392600480360360808110156103f657600080fd5b50803590600160a060020a036020820135169060408101359060600135610a1c565b61027d600480360360c081101561042e57600080fd5b81019060208101813564010000000081111561044957600080fd5b82018360208201111561045b57600080fd5b8035906020019184600183028401116401000000008311171561047d57600080fd5b91939092909160208101903564010000000081111561049b57600080fd5b8201836020820111156104ad57600080fd5b803590602001918460018302840111640100000000831117156104cf57600080fd5b91939092600160a060020a0383351692602081013592919060608101906040013564010000000081111561050257600080fd5b82018360208201111561051457600080fd5b8035906020019184600183028401116401000000008311171561053657600080fd5b919350915035600160a060020a0316610ac3565b6101b8610bde565b61027d6004803603604081101561056857600080fd5b50600160a060020a038135169060200135610c3f565b61027d6004803603604081101561059457600080fd5b50600160a060020a038135169060200135610cad565b61027d600480360360208110156105c057600080fd5b5035600160a060020a0316610cc1565b610392600480360360808110156105e657600080fd5b50600160a060020a0381358116916020810135916040820135916060013516610cd5565b6102996004803603604081101561062057600080fd5b50600160a060020a0381358116916020013516610dd7565b610392610e02565b610299610ece565b6101b8610eda565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106dc5780601f106106b1576101008083540402835291602001916106dc565b820191906000526020600020905b8154815290600101906020018083116106bf57829003601f168201915b505050505090505b90565b600854600160a060020a031690565b600061070a610703610f3b565b8484610f3f565b5060015b92915050565b60025490565b6000610727848484611031565b61079d84610733610f3b565b6107988560405180606001604052806028815260200161190b60289139600160a060020a038a16600090815260016020526040812090610771610f3b565b600160a060020a03168152602081019190915260400160002054919063ffffffff61119316565b610f3f565b5060019392505050565b66038d7ea4c6800081565b601290565b6000826107c65750600061070e565b816107d35750600061070e565b6107fb670de0b6b3a76400006107ef858563ffffffff61122d16565b9063ffffffff61128916565b9392505050565b60065490565b60075474010000000000000000000000000000000000000000900460ff1690565b600061070a610836610f3b565b846107988560016000610847610f3b565b600160a060020a03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6112cb16565b600854600160a060020a031633146108c95760405160e560020a62461bcd0281526004018080602001828103825260218152602001806117b46021913960400191505060405180910390fd5b6006546108e4826108d8610714565b9063ffffffff6112cb16565b111561093a576040805160e560020a62461bcd02815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a2063617020657863656564656400604482015290519081900360640190fd5b6109448282611328565b5050565b600854600160a060020a031633146109945760405160e560020a62461bcd0281526004018080602001828103825260218152602001806117b46021913960400191505060405180910390fd5b6009805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383811691909117918290556040805133815292909116602083015280517fa24c529cc8b2d85b7dfb2ed0b4d7e9a816546212138b5d223bee13481e21be6b9281900390910190a150565b600160a060020a031660009081526020819052604090205490565b8115610a6a57610a2c8383610cad565b610a6a5760405160e560020a62461bcd0281526004018080602001828103825260298152602001806117fb6029913960400191505060405180910390fd5b604080518581526020810184905280820183905242606082015290513391600160a060020a038616917f46872661d5d7765097d3a97ca99b7cbfa68b54b6d51904168974901ee607a26d9181900360800190a350505050565b60075460009074010000000000000000000000000000000000000000900460ff1615610b235760405160e560020a62461bcd02815260040180806020018281038252603581526020018061177f6035913960400191505060405180910390fd5b610bd08a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b908190840183828082843760009201919091525050604080516020601f8b018190048102820181019092528981528c93508b9250908a908a90819084018382808284376000920191909152508a925061141b915050565b9a9950505050505050505050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106dc5780601f106106b1576101008083540402835291602001916106dc565b600061070a610c4c610f3b565b84610798856040518060600160405280602581526020016119ab6025913960016000610c76610f3b565b600160a060020a03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61119316565b600061070a610cba610f3b565b8484611031565b600854600160a060020a0391821691161490565b600080610cef856103e8670de0b6b3a76400005b046107b7565b600754909150610d0890600160a060020a031682610cad565b50600160a060020a03831615610d3b57610d2d856103e8670de0b6b3a7640000610ce9565b9150610d398383610cad565b505b6000610d4d828463ffffffff6112cb16565b600854909150610d7590600160a060020a0316610d70888463ffffffff6115f716565b610cad565b5060408051878152602081018790524281830152606081018590529051600160a060020a03808716923392918b16917fe1c4fa794edfa8f619b8257a077398950357b9c6398528f94480307352f9afcc9181900360800190a450505050505050565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b600954600160a060020a03163314610e4e5760405160e560020a62461bcd0281526004018080602001828103825260328152602001806118946032913960400191505060405180910390fd5b60085460095460408051600160a060020a03938416815292909116602083015280517f96ab0400119a548d3cc4c74e857d0d9c427fe9df20d3d0d99af10cc292e6c8869281900390910190a1600980546008805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b670de0b6b3a764000081565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106dc5780601f106106b1576101008083540402835291602001916106dc565b3390565b600160a060020a038316610f875760405160e560020a62461bcd0281526004018080602001828103825260248152602001806119876024913960400191505060405180910390fd5b600160a060020a038216610fcf5760405160e560020a62461bcd02815260040180806020018281038252602281526020018061175d6022913960400191505060405180910390fd5b600160a060020a03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600160a060020a0383166110795760405160e560020a62461bcd0281526004018080602001828103825260258152602001806119626025913960400191505060405180910390fd5b600160a060020a0382166110c15760405160e560020a62461bcd02815260040180806020018281038252602381526020018061173a6023913960400191505060405180910390fd5b611104816040518060600160405280602681526020016117d560269139600160a060020a038616600090815260208190526040902054919063ffffffff61119316565b600160a060020a038085166000908152602081905260408082209390935590841681522054611139908263ffffffff6112cb16565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156112255760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111ea5781810151838201526020016111d2565b50505050905090810190601f1680156112175780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008261123c5750600061070e565b8282028284828161124957fe5b04146107fb5760405160e560020a62461bcd0281526004018080602001828103825260218152602001806118c66021913960400191505060405180910390fd5b60006107fb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611639565b6000828201838110156107fb576040805160e560020a62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600160a060020a038216611386576040805160e560020a62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254611399908263ffffffff6112cb16565b600255600160a060020a0382166000908152602081905260409020546113c5908263ffffffff6112cb16565b600160a060020a0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000600160a060020a0385166114655760405160e560020a62461bcd0281526004018080602001828103825260308152602001806118246030913960400191505060405180910390fd5b600854600160a060020a0316156114b05760405160e560020a62461bcd02815260040180806020018281038252602f815260200180611933602f913960400191505060405180910390fd5b600160a060020a0382166114f85760405160e560020a62461bcd0281526004018080602001828103825260408152602001806118546040913960400191505060405180910390fd5b836115375760405160e560020a62461bcd0281526004018080602001828103825260248152602001806118e76024913960400191505060405180910390fd5b6006849055865161154f9060039060208a01906116a1565b5082516115639060059060208601906116a1565b5085516115779060049060208901906116a1565b50506008805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a039687161790915560078054740100000000000000000000000000000000000000009216929095169190911774ff0000000000000000000000000000000000000000191681179384905560ff930492909216949350505050565b60006107fb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611193565b6000818361168b5760405160e560020a62461bcd0281526020600482018181528351602484015283519092839260449091019190850190808383600083156111ea5781810151838201526020016111d2565b50600083858161169757fe5b0495945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106116e257805160ff191683800117855561170f565b8280016001018555821561170f579182015b8281111561170f5782518255916020019190600101906116f4565b5061171b92915061171f565b5090565b6106e491905b8082111561171b576000815560010161172556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737344617461546f6b656e54656d706c6174653a20746f6b656e20696e7374616e636520616c726561647920696e697469616c697a656444617461546f6b656e54656d706c6174653a20696e76616c6964206d696e74657245524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636544617461546f6b656e54656d706c6174653a206661696c656420746f2066696e697368206f7264657244617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c20207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c696420636f6d6d756e6974792066656520636f6c6c6563746f722c207a65726f206164647265737344617461546f6b656e54656d706c6174653a20696e76616c69642070726f706f736564206d696e7465722061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7744617461546f6b656e54656d706c6174653a20496e76616c6964206361702076616c756545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636544617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a72305820eba0bc78149b6d1ffe40fbc64e2eba565a7b83a86bb20e444ee47c3f23c66de6002944617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c20207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c696420636f6d6d756e6974792066656520636f6c6c6563746f722c207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c6964206361702076616c756544617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c207a65726f2061646472657373", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101ab576000357c01000000000000000000000000000000000000000000000000000000009004806370a08231116100fb578063aa271e1a116100b4578063dd62ed3e1161008e578063dd62ed3e1461060a578063eb40024b14610638578063ec342ad014610640578063fde0e7a814610648576101ab565b8063aa271e1a146105aa578063ab63d2b2146105d0578063b2263a5d146102e1576101ab565b806370a08231146103ba5780638ca0c059146103e05780639070d2f81461041857806395d89b411461054a578063a457c2d714610552578063a9059cbb1461057e576101ab565b8063313ce56711610168578063392e53cd11610142578063392e53cd14610332578063395093511461033a57806340c10f191461036657806350d2fcc414610394576101ab565b8063313ce567146102e957806334e7312214610307578063355274ea1461032a576101ab565b806306fdde03146101b0578063075461721461022d578063095ea7b31461025157806318160ddd1461029157806323b872dd146102ab578063294541c7146102e1575b600080fd5b6101b8610650565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f25781810151838201526020016101da565b50505050905090810190601f16801561021f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102356106e7565b60408051600160a060020a039092168252519081900360200190f35b61027d6004803603604081101561026757600080fd5b50600160a060020a0381351690602001356106f6565b604080519115158252519081900360200190f35b610299610714565b60408051918252519081900360200190f35b61027d600480360360608110156102c157600080fd5b50600160a060020a0381358116916020810135909116906040013561071a565b6102996107a7565b6102f16107b2565b6040805160ff9092168252519081900360200190f35b6102996004803603604081101561031d57600080fd5b50803590602001356107b7565b610299610802565b61027d610808565b61027d6004803603604081101561035057600080fd5b50600160a060020a038135169060200135610829565b6103926004803603604081101561037c57600080fd5b50600160a060020a03813516906020013561087d565b005b610392600480360360208110156103aa57600080fd5b5035600160a060020a0316610948565b610299600480360360208110156103d057600080fd5b5035600160a060020a0316610a01565b610392600480360360808110156103f657600080fd5b50803590600160a060020a036020820135169060408101359060600135610a1c565b61027d600480360360c081101561042e57600080fd5b81019060208101813564010000000081111561044957600080fd5b82018360208201111561045b57600080fd5b8035906020019184600183028401116401000000008311171561047d57600080fd5b91939092909160208101903564010000000081111561049b57600080fd5b8201836020820111156104ad57600080fd5b803590602001918460018302840111640100000000831117156104cf57600080fd5b91939092600160a060020a0383351692602081013592919060608101906040013564010000000081111561050257600080fd5b82018360208201111561051457600080fd5b8035906020019184600183028401116401000000008311171561053657600080fd5b919350915035600160a060020a0316610ac3565b6101b8610bde565b61027d6004803603604081101561056857600080fd5b50600160a060020a038135169060200135610c3f565b61027d6004803603604081101561059457600080fd5b50600160a060020a038135169060200135610cad565b61027d600480360360208110156105c057600080fd5b5035600160a060020a0316610cc1565b610392600480360360808110156105e657600080fd5b50600160a060020a0381358116916020810135916040820135916060013516610cd5565b6102996004803603604081101561062057600080fd5b50600160a060020a0381358116916020013516610dd7565b610392610e02565b610299610ece565b6101b8610eda565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106dc5780601f106106b1576101008083540402835291602001916106dc565b820191906000526020600020905b8154815290600101906020018083116106bf57829003601f168201915b505050505090505b90565b600854600160a060020a031690565b600061070a610703610f3b565b8484610f3f565b5060015b92915050565b60025490565b6000610727848484611031565b61079d84610733610f3b565b6107988560405180606001604052806028815260200161190b60289139600160a060020a038a16600090815260016020526040812090610771610f3b565b600160a060020a03168152602081019190915260400160002054919063ffffffff61119316565b610f3f565b5060019392505050565b66038d7ea4c6800081565b601290565b6000826107c65750600061070e565b816107d35750600061070e565b6107fb670de0b6b3a76400006107ef858563ffffffff61122d16565b9063ffffffff61128916565b9392505050565b60065490565b60075474010000000000000000000000000000000000000000900460ff1690565b600061070a610836610f3b565b846107988560016000610847610f3b565b600160a060020a03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff6112cb16565b600854600160a060020a031633146108c95760405160e560020a62461bcd0281526004018080602001828103825260218152602001806117b46021913960400191505060405180910390fd5b6006546108e4826108d8610714565b9063ffffffff6112cb16565b111561093a576040805160e560020a62461bcd02815260206004820152601f60248201527f44617461546f6b656e54656d706c6174653a2063617020657863656564656400604482015290519081900360640190fd5b6109448282611328565b5050565b600854600160a060020a031633146109945760405160e560020a62461bcd0281526004018080602001828103825260218152602001806117b46021913960400191505060405180910390fd5b6009805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383811691909117918290556040805133815292909116602083015280517fa24c529cc8b2d85b7dfb2ed0b4d7e9a816546212138b5d223bee13481e21be6b9281900390910190a150565b600160a060020a031660009081526020819052604090205490565b8115610a6a57610a2c8383610cad565b610a6a5760405160e560020a62461bcd0281526004018080602001828103825260298152602001806117fb6029913960400191505060405180910390fd5b604080518581526020810184905280820183905242606082015290513391600160a060020a038616917f46872661d5d7765097d3a97ca99b7cbfa68b54b6d51904168974901ee607a26d9181900360800190a350505050565b60075460009074010000000000000000000000000000000000000000900460ff1615610b235760405160e560020a62461bcd02815260040180806020018281038252603581526020018061177f6035913960400191505060405180910390fd5b610bd08a8a8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8e018190048102820181019092528c815292508c91508b908190840183828082843760009201919091525050604080516020601f8b018190048102820181019092528981528c93508b9250908a908a90819084018382808284376000920191909152508a925061141b915050565b9a9950505050505050505050565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106dc5780601f106106b1576101008083540402835291602001916106dc565b600061070a610c4c610f3b565b84610798856040518060600160405280602581526020016119ab6025913960016000610c76610f3b565b600160a060020a03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff61119316565b600061070a610cba610f3b565b8484611031565b600854600160a060020a0391821691161490565b600080610cef856103e8670de0b6b3a76400005b046107b7565b600754909150610d0890600160a060020a031682610cad565b50600160a060020a03831615610d3b57610d2d856103e8670de0b6b3a7640000610ce9565b9150610d398383610cad565b505b6000610d4d828463ffffffff6112cb16565b600854909150610d7590600160a060020a0316610d70888463ffffffff6115f716565b610cad565b5060408051878152602081018790524281830152606081018590529051600160a060020a03808716923392918b16917fe1c4fa794edfa8f619b8257a077398950357b9c6398528f94480307352f9afcc9181900360800190a450505050505050565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b600954600160a060020a03163314610e4e5760405160e560020a62461bcd0281526004018080602001828103825260328152602001806118946032913960400191505060405180910390fd5b60085460095460408051600160a060020a03938416815292909116602083015280517f96ab0400119a548d3cc4c74e857d0d9c427fe9df20d3d0d99af10cc292e6c8869281900390910190a1600980546008805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b670de0b6b3a764000081565b60058054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106dc5780601f106106b1576101008083540402835291602001916106dc565b3390565b600160a060020a038316610f875760405160e560020a62461bcd0281526004018080602001828103825260248152602001806119876024913960400191505060405180910390fd5b600160a060020a038216610fcf5760405160e560020a62461bcd02815260040180806020018281038252602281526020018061175d6022913960400191505060405180910390fd5b600160a060020a03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600160a060020a0383166110795760405160e560020a62461bcd0281526004018080602001828103825260258152602001806119626025913960400191505060405180910390fd5b600160a060020a0382166110c15760405160e560020a62461bcd02815260040180806020018281038252602381526020018061173a6023913960400191505060405180910390fd5b611104816040518060600160405280602681526020016117d560269139600160a060020a038616600090815260208190526040902054919063ffffffff61119316565b600160a060020a038085166000908152602081905260408082209390935590841681522054611139908263ffffffff6112cb16565b600160a060020a038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600081848411156112255760405160e560020a62461bcd0281526004018080602001828103825283818151815260200191508051906020019080838360005b838110156111ea5781810151838201526020016111d2565b50505050905090810190601f1680156112175780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008261123c5750600061070e565b8282028284828161124957fe5b04146107fb5760405160e560020a62461bcd0281526004018080602001828103825260218152602001806118c66021913960400191505060405180910390fd5b60006107fb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611639565b6000828201838110156107fb576040805160e560020a62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600160a060020a038216611386576040805160e560020a62461bcd02815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254611399908263ffffffff6112cb16565b600255600160a060020a0382166000908152602081905260409020546113c5908263ffffffff6112cb16565b600160a060020a0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000600160a060020a0385166114655760405160e560020a62461bcd0281526004018080602001828103825260308152602001806118246030913960400191505060405180910390fd5b600854600160a060020a0316156114b05760405160e560020a62461bcd02815260040180806020018281038252602f815260200180611933602f913960400191505060405180910390fd5b600160a060020a0382166114f85760405160e560020a62461bcd0281526004018080602001828103825260408152602001806118546040913960400191505060405180910390fd5b836115375760405160e560020a62461bcd0281526004018080602001828103825260248152602001806118e76024913960400191505060405180910390fd5b6006849055865161154f9060039060208a01906116a1565b5082516115639060059060208601906116a1565b5085516115779060049060208901906116a1565b50506008805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a039687161790915560078054740100000000000000000000000000000000000000009216929095169190911774ff0000000000000000000000000000000000000000191681179384905560ff930492909216949350505050565b60006107fb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611193565b6000818361168b5760405160e560020a62461bcd0281526020600482018181528351602484015283519092839260449091019190850190808383600083156111ea5781810151838201526020016111d2565b50600083858161169757fe5b0495945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106116e257805160ff191683800117855561170f565b8280016001018555821561170f579182015b8281111561170f5782518255916020019190600101906116f4565b5061171b92915061171f565b5090565b6106e491905b8082111561171b576000815560010161172556fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f206164647265737344617461546f6b656e54656d706c6174653a20746f6b656e20696e7374616e636520616c726561647920696e697469616c697a656444617461546f6b656e54656d706c6174653a20696e76616c6964206d696e74657245524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636544617461546f6b656e54656d706c6174653a206661696c656420746f2066696e697368206f7264657244617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c20207a65726f206164647265737344617461546f6b656e54656d706c6174653a20496e76616c696420636f6d6d756e6974792066656520636f6c6c6563746f722c207a65726f206164647265737344617461546f6b656e54656d706c6174653a20696e76616c69642070726f706f736564206d696e7465722061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7744617461546f6b656e54656d706c6174653a20496e76616c6964206361702076616c756545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636544617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa165627a7a72305820eba0bc78149b6d1ffe40fbc64e2eba565a7b83a86bb20e444ee47c3f23c66de60029", + "sourceMap": "488:11040:12:-;;;775:35;;;-1:-1:-1;;;;;;775:35:12;;;2543:369;5:2:-1;;;;30:1;27;20:12;5:2;2543:369:12;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;2543:369:12;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;0:372;;2543:369:12;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;-1:-1;;2543:369:12;;;;;;;;;;;;;;;;;;;;19:11:-1;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;-1:-1;;2543:369:12;;;;;;;-1:-1:-1;2543:369:12;-1:-1:-1;2758:147:12;2783:4;2801:6;2821:13;2848:3;2543:369;;2758:11;;;;:147;:::i;:::-;;2543:369;;;;;;488:11040;;4397:980;4624:4;-1:-1:-1;;;;;4665:27:12;;4644:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4799:7;;-1:-1:-1;;;;;4799:7:12;:21;4778:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4926:26:12;;4905:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5074:8;5053:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5154:4;:10;;;5174:12;;;;:5;;:12;;;;;:::i;:::-;-1:-1:-1;5196:12:12;;;;:5;;:12;;;;;:::i;:::-;-1:-1:-1;5218:16:12;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;;5244:7:12;:23;;-1:-1:-1;;;;;;5244:23:12;;;-1:-1:-1;;;;;5244:23:12;;;;;;;5277:22;:37;;5324:18;5277:37;;;;;;;;;;-1:-1:-1;;;;;;5324:18:12;;;;;;;;5359:11;;;;;;;4397:980;-1:-1:-1;;;;4397:980:12:o;488:11040::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;488:11040:12;;;-1:-1:-1;488:11040:12;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "488:11040:12:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;488:11040:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9339:82;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;9339:82:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10651:109;;;:::i;:::-;;;;-1:-1:-1;;;;;10651:109:12;;;;;;;;;;;;;;2500:149:17;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2500:149:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1559:89;;;:::i;:::-;;;;;;;;;;;;;;;;3107:300;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3107:300:17;;;;;;;;;;;;;;;;;:::i;998:64:12:-;;;:::i;9996:82::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11252:274;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11252:274:12;;;;;;;:::i;10182:75::-;;;:::i;10920:88::-;;;:::i;3802:207:17:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3802:207:17;;;;;;;;:::i;5694:271:12:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5694:271:12;;;;;;;;:::i;:::-;;8509:221;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8509:221:12;-1:-1:-1;;;;;8509:221:12;;:::i;1706:108:17:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1706:108:17;-1:-1:-1;;;;;1706:108:17;;:::i;7784:514:12:-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;7784:514:12;;;-1:-1:-1;;;;;7784:514:12;;;;;;;;;;;;;;;:::i;3489:442::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;3489:442:12;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;3489:442:12;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3489:442:12;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3489:442:12;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;3489:442:12;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3489:442:12;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3489:442:12;;;;-1:-1:-1;;;;;3489:442:12;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;3489:442:12;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3489:442:12;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3489:442:12;;-1:-1:-1;3489:442:12;-1:-1:-1;3489:442:12;-1:-1:-1;;;;;3489:442:12;;:::i;9536:86::-;;;:::i;4496:258:17:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4496:258:17;;;;;;;;:::i;2017:155::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2017:155:17;;;;;;;;:::i;10469:107:12:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10469:107:12;-1:-1:-1;;;;;10469:107:12;;:::i;6374:911::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;;6374:911:12;;;;;;;;;;;;;;;;;;;;:::i;2230:132:17:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2230:132:17;;;;;;;;;;:::i;8879:351:12:-;;;:::i;882:37::-;;;:::i;9747:82::-;;;:::i;9339:::-;9409:5;9402:12;;;;;;;;-1:-1:-1;;9402:12:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9377:13;;9402:12;;9409:5;;9402:12;;9409:5;9402:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9339:82;;:::o;10651:109::-;10746:7;;-1:-1:-1;;;;;10746:7:12;10651:109;:::o;2500:149:17:-;2566:4;2582:39;2591:12;:10;:12::i;:::-;2605:7;2614:6;2582:8;:39::i;:::-;-1:-1:-1;2638:4:17;2500:149;;;;;:::o;1559:89::-;1629:12;;1559:89;:::o;3107:300::-;3196:4;3212:36;3222:6;3230:9;3241:6;3212:9;:36::i;:::-;3258:121;3267:6;3275:12;:10;:12::i;:::-;3289:89;3327:6;3289:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3289:19:17;;;;;;:11;:19;;;;;;3309:12;:10;:12::i;:::-;-1:-1:-1;;;;;3289:33:17;;;;;;;;;;;;-1:-1:-1;3289:33:17;;;:89;;:37;:89;:::i;:::-;3258:8;:121::i;:::-;-1:-1:-1;3396:4:17;3107:300;;;;;:::o;998:64:12:-;1051:11;998:64;:::o;9996:82::-;723:2;9996:82;:::o;11252:274::-;11379:7;11405:11;11402:24;;-1:-1:-1;11425:1:12;11418:8;;11402:24;11439:18;11436:31;;-1:-1:-1;11466:1:12;11459:8;;11436:31;11484:35;913:6;11484:25;:6;11495:13;11484:25;:10;:25;:::i;:::-;:29;:35;:29;:35;:::i;:::-;11477:42;11252:274;-1:-1:-1;;;11252:274:12:o;10182:75::-;10246:4;;10182:75;:::o;10920:88::-;10990:11;;;;;;;;10920:88::o;3802:207:17:-;3882:4;3898:83;3907:12;:10;:12::i;:::-;3921:7;3930:50;3969:10;3930:11;:25;3942:12;:10;:12::i;:::-;-1:-1:-1;;;;;3930:25:17;;;;;;;;;;;;;;;;;-1:-1:-1;3930:25:17;;;:34;;;;;;;;;;;:50;:38;:50;:::i;5694:271:12:-;2003:7;;-1:-1:-1;;;;;2003:7:12;1989:10;:21;1968:102;;;;-1:-1:-1;;;;;1968:102:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5865:4;;5837:24;5855:5;5837:13;:11;:13::i;:::-;:17;:24;:17;:24;:::i;:::-;:32;;5816:111;;;;;-1:-1:-1;;;;;5816:111:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;5937:21;5943:7;5952:5;5937;:21::i;:::-;5694:271;;:::o;8509:221::-;2003:7;;-1:-1:-1;;;;;2003:7:12;1989:10;:21;1968:102;;;;-1:-1:-1;;;;;1968:102:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8604:15;:27;;-1:-1:-1;;8604:27:12;-1:-1:-1;;;;;8604:27:12;;;;;;;;;;;8646:77;;;8674:10;8646:77;;8698:15;;;;8646:77;;;;;;;;;;;;;;;;8509:221;:::o;1706:108:17:-;-1:-1:-1;;;;;1789:18:17;1763:7;1789:18;;;;;;;;;;;;1706:108::o;7784:514:12:-;7953:11;;7948:159;;8006:26;8015:8;8025:6;8006:8;:26::i;:::-;7981:126;;;;-1:-1:-1;;;;;7981:126:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8123:168;;;;;;;;;;;;;;;;;;8266:15;8123:168;;;;;;8242:10;;-1:-1:-1;;;;;8123:168:12;;;;;;;;;;;;7784:514;;;;:::o;3489:442::-;1818:11;;3750:4;;1818:11;;;;;1817:12;1796:112;;;;-1:-1:-1;;;;;1796:112:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3777:147;3802:4;;3777:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;3777:147:12;;;;137:4:-1;3777:147:12;;;;;;;;;;;;;;;;;;-1:-1:-1;3820:6:12;;-1:-1:-1;3820:6:12;;;;3777:147;;3820:6;;;;3777:147;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;;3777:147:12;;;;137:4:-1;3777:147:12;;;;;;;;;;;;;;;;;3840:13;;-1:-1:-1;3867:3:12;;-1:-1:-1;3777:147:12;3884:4;;;;;;3777:147;;3884:4;;;;3777:147;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;3902:12:12;;-1:-1:-1;3777:11:12;;-1:-1:-1;;3777:147:12:i;:::-;3770:154;3489:442;-1:-1:-1;;;;;;;;;;3489:442:12:o;9536:86::-;9608:7;9601:14;;;;;;;;-1:-1:-1;;9601:14:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9576:13;;9601:14;;9608:7;;9601:14;;9608:7;9601:14;;;;;;;;;;;;;;;;;;;;;;;;4496:258:17;4581:4;4597:129;4606:12;:10;:12::i;:::-;4620:7;4629:96;4668:15;4629:96;;;;;;;;;;;;;;;;;:11;:25;4641:12;:10;:12::i;:::-;-1:-1:-1;;;;;4629:25:17;;;;;;;;;;;;;;;;;-1:-1:-1;4629:25:17;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;2017:155::-;2086:4;2102:42;2112:12;:10;:12::i;:::-;2126:9;2137:6;2102:9;:42::i;10469:107:12:-;10550:7;;-1:-1:-1;;;;;10550:18:12;;;:7;;:18;;10469:107::o;6374:911::-;6542:17;;6596:86;6622:6;988:4;913:6;981:11;;6596:12;:86::i;:::-;6701:22;;6573:109;;-1:-1:-1;6692:46:12;;-1:-1:-1;;;;;6701:22:12;6573:109;6692:8;:46::i;:::-;-1:-1:-1;;;;;;6751:30:12;;;6748:217;;6808:95;6838:6;1058:4;913:6;1051:11;;6808:95;6796:107;;6917:37;6926:16;6944:9;6917:8;:37::i;:::-;;6748:217;6974:16;6993:27;:12;7010:9;6993:27;:16;:27;:::i;:::-;7039:7;;6974:46;;-1:-1:-1;7030:39:12;;-1:-1:-1;;;;;7039:7:12;7048:20;:6;6974:46;7048:20;:10;:20;:::i;:::-;7030:8;:39::i;:::-;-1:-1:-1;7085:193:12;;;;;;;;;;;;7200:15;7085:193;;;;;;;;;;;;-1:-1:-1;;;;;7085:193:12;;;;7133:10;;7085:193;;;;;;;;;;;;;6374:911;;;;;;;:::o;2230:132:17:-;-1:-1:-1;;;;;2328:18:17;;;2302:7;2328:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2230:132::o;8879:351:12:-;8970:15;;-1:-1:-1;;;;;8970:15:12;8956:10;:29;8935:126;;;;-1:-1:-1;;;;;8935:126:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9104:7;;9125:15;;9076:74;;;-1:-1:-1;;;;;9104:7:12;;;9076:74;;9125:15;;;;9076:74;;;;;;;;;;;;;;;;9170:15;;;9160:7;:25;;-1:-1:-1;;9160:25:12;;;-1:-1:-1;;;;;9170:15:12;;9160:25;;;;9195:28;;;8879:351::o;882:37::-;913:6;882:37;:::o;9747:82::-;9817:5;9810:12;;;;;;;;-1:-1:-1;;9810:12:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9785:13;;9810:12;;9817:5;;9810:12;;9817:5;9810:12;;;;;;;;;;;;;;;;;;;;;;;;788:96:14;867:10;788:96;:::o;7350:332:17:-;-1:-1:-1;;;;;7443:19:17;;7435:68;;;;-1:-1:-1;;;;;7435:68:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7521:21:17;;7513:68;;;;-1:-1:-1;;;;;7513:68:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7592:18:17;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;7643:32;;;;;;;;;;;;;;;;;7350:332;;;:::o;5228:464::-;-1:-1:-1;;;;;5325:20:17;;5317:70;;;;-1:-1:-1;;;;;5317:70:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5405:23:17;;5397:71;;;;-1:-1:-1;;;;;5397:71:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5499;5521:6;5499:71;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5499:17:17;;:9;:17;;;;;;;;;;;;:71;;:21;:71;:::i;:::-;-1:-1:-1;;;;;5479:17:17;;;:9;:17;;;;;;;;;;;:91;;;;5603:20;;;;;;;:32;;5628:6;5603:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;5580:20:17;;;:9;:20;;;;;;;;;;;;:55;;;;5650:35;;;;;;;5580:20;;5650:35;;;;;;;;;;;;;5228:464;;;:::o;1732:187:15:-;1818:7;1853:12;1845:6;;;;1837:29;;;;-1:-1:-1;;;;;1837:29:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1837:29:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1888:5:15;;;1732:187::o;2159:459::-;2217:7;2458:6;2454:45;;-1:-1:-1;2487:1:15;2480:8;;2454:45;2521:5;;;2525:1;2521;:5;:1;2544:5;;;;;:10;2536:56;;;;-1:-1:-1;;;;;2536:56:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3073:130;3131:7;3157:39;3161:1;3164;3157:39;;;;;;;;;;;;;;;;;:3;:39::i;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;;;938:46:15;;;;;;;;;;;;;;;;;;;;;;;;;;;5962:302:17;-1:-1:-1;;;;;6037:21:17;;6029:65;;;;;-1:-1:-1;;;;;6029:65:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;6120:12;;:24;;6137:6;6120:24;:16;:24;:::i;:::-;6105:12;:39;-1:-1:-1;;;;;6175:18:17;;:9;:18;;;;;;;;;;;:30;;6198:6;6175:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;6154:18:17;;:9;:18;;;;;;;;;;;:51;;;;6220:37;;;;;;;6154:18;;:9;;6220:37;;;;;;;;;;5962:302;;:::o;4397:980:12:-;4624:4;-1:-1:-1;;;;;4665:27:12;;4644:123;;;;-1:-1:-1;;;;;4644:123:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4799:7;;-1:-1:-1;;;;;4799:7:12;:21;4778:116;;;;-1:-1:-1;;;;;4778:116:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4926:26:12;;4905:137;;;;-1:-1:-1;;;;;4905:137:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5074:8;5053:91;;;;-1:-1:-1;;;;;5053:91:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5154:4;:10;;;5174:12;;;;:5;;:12;;;;;:::i;:::-;-1:-1:-1;5196:12:12;;;;:5;;:12;;;;;:::i;:::-;-1:-1:-1;5218:16:12;;;;:7;;:16;;;;;:::i;:::-;-1:-1:-1;;5244:7:12;:23;;-1:-1:-1;;5244:23:12;;;-1:-1:-1;;;;;5244:23:12;;;;;;;5277:22;:37;;5324:18;5277:37;;;;;;;;;;-1:-1:-1;;5324:18:12;;;;;;;;5359:11;;;;;;;4397:980;-1:-1:-1;;;;4397:980:12:o;1274:134:15:-;1332:7;1358:43;1362:1;1365;1358:43;;;;;;;;;;;;;;;;;:3;:43::i;3718:338::-;3804:7;3904:12;3897:5;3889:28;;;;-1:-1:-1;;;;;3889:28:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;3889:28:15;;3927:9;3943:1;3939;:5;;;;;;;3718:338;-1:-1:-1;;;;;3718:338:15:o;488:11040:12:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;488:11040:12;;;-1:-1:-1;488:11040:12;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;", + "source": "pragma solidity 0.5.7;\n// Copyright BigchainDB GmbH and Ocean Protocol contributors\n// SPDX-License-Identifier: (Apache-2.0 AND CC-BY-4.0)\n// Code is Apache-2.0 and docs are CC-BY-4.0\n\nimport '../interfaces/IERC20Template.sol';\nimport 'openzeppelin-solidity/contracts/token/ERC20/ERC20.sol';\n\n\n/**\n* @title DataTokenTemplate\n* \n* @dev DataTokenTemplate is an ERC20 compliant token template\n* Used by the factory contract as a bytecode reference to \n* deploy new DataTokens.\n*/\ncontract DataTokenTemplate is IERC20Template, ERC20 {\n using SafeMath for uint256;\n\n string private _name;\n string private _symbol;\n string private _blob;\n uint256 private _cap;\n uint8 private constant _decimals = 18;\n address private _communityFeeCollector;\n bool private initialized = false;\n address private _minter;\n address private _proposedMinter;\n uint256 public constant BASE = 10**18;\n uint256 public constant BASE_COMMUNITY_FEE_PERCENTAGE = BASE / 1000;\n uint256 public constant BASE_MARKET_FEE_PERCENTAGE = BASE / 1000;\n\n event OrderStarted(\n address indexed consumer,\n address indexed payer,\n uint256 amount, \n uint256 serviceId, \n uint256 timestamp,\n address indexed mrktFeeCollector,\n uint256 marketFee\n );\n\n event OrderFinished(\n bytes32 orderTxId, \n address indexed consumer,\n uint256 amount, \n uint256 serviceId, \n address indexed provider,\n uint256 timestamp\n );\n\n event MinterProposed(\n address currentMinter,\n address newMinter\n );\n\n event MinterApproved(\n address currentMinter,\n address newMinter\n );\n\n modifier onlyNotInitialized() {\n require(\n !initialized,\n 'DataTokenTemplate: token instance already initialized'\n );\n _;\n }\n \n modifier onlyMinter() {\n require(\n msg.sender == _minter,\n 'DataTokenTemplate: invalid minter' \n );\n _;\n }\n\n /**\n * @dev constructor\n * Called prior contract deployment\n * @param name refers to a template DataToken name\n * @param symbol refers to a template DataToken symbol\n * @param minterAddress refers to an address that has minter role\n * @param cap the total ERC20 cap\n * @param blob data string refering to the resolver for the metadata\n * @param feeCollector it is the community fee collector address\n */\n constructor(\n string memory name,\n string memory symbol,\n address minterAddress,\n uint256 cap,\n string memory blob,\n address feeCollector\n )\n public\n {\n _initialize(\n name,\n symbol,\n minterAddress,\n cap,\n blob,\n feeCollector\n );\n }\n \n /**\n * @dev initialize\n * Called prior contract initialization (e.g creating new DataToken instance)\n * Calls private _initialize function. Only if contract is not initialized.\n * @param name refers to a new DataToken name\n * @param symbol refers to a nea DataToken symbol\n * @param minterAddress refers to an address that has minter rights\n * @param cap the total ERC20 cap\n * @param blob data string refering to the resolver for the metadata\n * @param feeCollector it is the community fee collector address\n */\n function initialize(\n string calldata name,\n string calldata symbol,\n address minterAddress,\n uint256 cap,\n string calldata blob,\n address feeCollector\n ) \n external\n onlyNotInitialized\n returns(bool)\n {\n return _initialize(\n name,\n symbol,\n minterAddress,\n cap,\n blob,\n feeCollector\n );\n }\n\n /**\n * @dev _initialize\n * Private function called on contract initialization.\n * @param name refers to a new DataToken name\n * @param symbol refers to a nea DataToken symbol\n * @param minterAddress refers to an address that has minter rights\n * @param cap the total ERC20 cap\n * @param blob data string refering to the resolver for the metadata\n * @param feeCollector it is the community fee collector address\n */\n function _initialize(\n string memory name,\n string memory symbol,\n address minterAddress,\n uint256 cap,\n string memory blob,\n address feeCollector\n )\n private\n returns(bool)\n {\n require(\n minterAddress != address(0), \n 'DataTokenTemplate: Invalid minter, zero address'\n );\n\n require(\n _minter == address(0), \n 'DataTokenTemplate: Invalid minter, zero address'\n );\n\n require(\n feeCollector != address(0),\n 'DataTokenTemplate: Invalid community fee collector, zero address'\n );\n\n require(\n cap != 0,\n 'DataTokenTemplate: Invalid cap value'\n );\n _cap = cap;\n _name = name;\n _blob = blob;\n _symbol = symbol;\n _minter = minterAddress;\n _communityFeeCollector = feeCollector;\n initialized = true;\n return initialized;\n }\n\n /**\n * @dev mint\n * Only the minter address can call it.\n * msg.value should be higher than zero and gt or eq minting fee\n * @param account refers to an address that token is going to be minted to.\n * @param value refers to amount of tokens that is going to be minted.\n */\n function mint(\n address account,\n uint256 value\n ) \n external \n onlyMinter \n {\n require(\n totalSupply().add(value) <= _cap, \n 'DataTokenTemplate: cap exceeded'\n );\n _mint(account, value);\n }\n\n /**\n * @dev startOrder\n * called by payer or consumer prior ordering a service consume on a marketplace.\n * @param consumer is the consumer address (payer could be different address)\n * @param amount refers to amount of tokens that is going to be transfered.\n * @param serviceId service index in the metadata\n * @param mrktFeeCollector marketplace fee collector\n */\n function startOrder(\n address consumer,\n uint256 amount,\n uint256 serviceId,\n address mrktFeeCollector\n )\n external\n {\n uint256 marketFee = 0;\n uint256 communityFee = calculateFee(\n amount, \n BASE_COMMUNITY_FEE_PERCENTAGE\n );\n transfer(_communityFeeCollector, communityFee);\n if(mrktFeeCollector != address(0)){\n marketFee = calculateFee(\n amount, \n BASE_MARKET_FEE_PERCENTAGE\n );\n transfer(mrktFeeCollector, marketFee);\n }\n uint256 totalFee = communityFee.add(marketFee);\n transfer(_minter, amount.sub(totalFee));\n\n emit OrderStarted(\n consumer,\n msg.sender,\n amount,\n serviceId,\n block.timestamp,\n mrktFeeCollector,\n marketFee\n );\n }\n\n /**\n * @dev finishOrder\n * called by provider prior completing service delivery only\n * if there is a partial or full refund.\n * @param orderTxId refers to the transaction Id of startOrder acts \n * as a payment reference.\n * @param consumer refers to an address that has consumed that service.\n * @param amount refers to amount of tokens that is going to be transfered.\n * @param serviceId service index in the metadata.\n */\n function finishOrder(\n bytes32 orderTxId, \n address consumer, \n uint256 amount,\n uint256 serviceId\n )\n external\n {\n if ( amount != 0 ) \n require(\n transfer(consumer, amount),\n 'DataTokenTemplate: failed to finish order'\n );\n\n emit OrderFinished(\n orderTxId, \n consumer, \n amount, \n serviceId, \n msg.sender,\n block.timestamp\n );\n }\n\n /**\n * @dev proposeMinter\n * It proposes a new token minter address.\n * Only the current minter can call it.\n * @param newMinter refers to a new token minter address.\n */\n function proposeMinter(address newMinter) \n external \n onlyMinter \n {\n _proposedMinter = newMinter;\n emit MinterProposed(\n msg.sender,\n _proposedMinter\n );\n }\n\n /**\n * @dev approveMinter\n * It approves a new token minter address.\n * Only the current minter can call it.\n */\n function approveMinter()\n external\n {\n require(\n msg.sender == _proposedMinter,\n 'DataTokenTemplate: invalid proposed minter address'\n );\n emit MinterApproved(\n _minter,\n _proposedMinter\n );\n _minter = _proposedMinter;\n _proposedMinter = address(0);\n }\n\n /**\n * @dev name\n * It returns the token name.\n * @return DataToken name.\n */\n function name() external view returns(string memory) {\n return _name;\n }\n\n /**\n * @dev symbol\n * It returns the token symbol.\n * @return DataToken symbol.\n */\n function symbol() external view returns(string memory) {\n return _symbol;\n }\n\n /**\n * @dev blob\n * It returns the blob (e.g https://123.com).\n * @return DataToken blob.\n */\n function blob() external view returns(string memory) {\n return _blob;\n }\n\n /**\n * @dev decimals\n * It returns the token decimals.\n * how many supported decimal points\n * @return DataToken decimals.\n */\n function decimals() external view returns(uint8) {\n return _decimals;\n }\n\n /**\n * @dev cap\n * it returns the capital.\n * @return DataToken cap.\n */\n function cap() external view returns (uint256) {\n return _cap;\n }\n\n /**\n * @dev isMinter\n * It takes the address and checks whether it has a minter role.\n * @param account refers to the address.\n * @return true if account has a minter role.\n */\n function isMinter(address account) external view returns(bool) {\n return (_minter == account);\n } \n\n /**\n * @dev minter\n * @return minter's address.\n */\n function minter()\n external\n view \n returns(address)\n {\n return _minter;\n }\n\n /**\n * @dev isInitialized\n * It checks whether the contract is initialized.\n * @return true if the contract is initialized.\n */ \n function isInitialized() external view returns(bool) {\n return initialized;\n }\n\n /**\n * @dev calculateFee\n * giving a fee percentage, and amount it calculates the actual fee\n * @param amount the amount of token\n * @param feePercentage the fee percentage \n * @return the token fee.\n */ \n function calculateFee(\n uint256 amount,\n uint256 feePercentage\n )\n public\n pure\n returns(uint256)\n {\n if(amount == 0) return 0;\n if(feePercentage == 0) return 0;\n return amount.mul(feePercentage).div(BASE);\n }\n}\n", + "sourcePath": "/home/travis/build/oceanprotocol/ocean-contracts/contracts/templates/DataTokenTemplate.sol", + "ast": { + "absolutePath": "/home/travis/build/oceanprotocol/ocean-contracts/contracts/templates/DataTokenTemplate.sol", + "exportedSymbols": { + "DataTokenTemplate": [ + 5703 + ] + }, + "id": 5704, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5179, + "literals": [ + "solidity", + "0.5", + ".7" + ], + "nodeType": "PragmaDirective", + "src": "0:22:12" + }, + { + "absolutePath": "/home/travis/build/oceanprotocol/ocean-contracts/contracts/interfaces/IERC20Template.sol", + "file": "../interfaces/IERC20Template.sol", + "id": 5180, + "nodeType": "ImportDirective", + "scope": 5704, + "sourceUnit": 5090, + "src": "185:42:12", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", + "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", + "id": 5181, + "nodeType": "ImportDirective", + "scope": 5704, + "sourceUnit": 6469, + "src": "228:63:12", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5182, + "name": "IERC20Template", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5089, + "src": "518:14:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20Template_$5089", + "typeString": "contract IERC20Template" + } + }, + "id": 5183, + "nodeType": "InheritanceSpecifier", + "src": "518:14:12" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5184, + "name": "ERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6468, + "src": "534:5:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$6468", + "typeString": "contract ERC20" + } + }, + "id": 5185, + "nodeType": "InheritanceSpecifier", + "src": "534:5:12" + } + ], + "contractDependencies": [ + 5089, + 5758, + 6468, + 6537 + ], + "contractKind": "contract", + "documentation": "@title DataTokenTemplate\n \n@dev DataTokenTemplate is an ERC20 compliant token template\n Used by the factory contract as a bytecode reference to \n deploy new DataTokens.", + "fullyImplemented": true, + "id": 5703, + "linearizedBaseContracts": [ + 5703, + 6468, + 6537, + 5758, + 5089 + ], + "name": "DataTokenTemplate", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 5188, + "libraryName": { + "contractScope": null, + "id": 5186, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5945, + "src": "552:8:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$5945", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "546:27:12", + "typeName": { + "id": 5187, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "565:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 5190, + "name": "_name", + "nodeType": "VariableDeclaration", + "scope": 5703, + "src": "579:21:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 5189, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "579:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5192, + "name": "_symbol", + "nodeType": "VariableDeclaration", + "scope": 5703, + "src": "606:23:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 5191, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "606:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5194, + "name": "_blob", + "nodeType": "VariableDeclaration", + "scope": 5703, + "src": "635:21:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 5193, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "635:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5196, + "name": "_cap", + "nodeType": "VariableDeclaration", + "scope": 5703, + "src": "662:20:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5195, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "662:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": true, + "id": 5199, + "name": "_decimals", + "nodeType": "VariableDeclaration", + "scope": 5703, + "src": "688:37:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 5197, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "688:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3138", + "id": 5198, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "723:2:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "visibility": "private" + }, + { + "constant": false, + "id": 5201, + "name": "_communityFeeCollector", + "nodeType": "VariableDeclaration", + "scope": 5703, + "src": "731:38:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5200, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "731:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5204, + "name": "initialized", + "nodeType": "VariableDeclaration", + "scope": 5703, + "src": "775:35:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5202, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "775:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 5203, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "805:5:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "visibility": "private" + }, + { + "constant": false, + "id": 5206, + "name": "_minter", + "nodeType": "VariableDeclaration", + "scope": 5703, + "src": "816:23:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5205, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "816:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5208, + "name": "_proposedMinter", + "nodeType": "VariableDeclaration", + "scope": 5703, + "src": "845:31:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5207, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "845:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": true, + "id": 5213, + "name": "BASE", + "nodeType": "VariableDeclaration", + "scope": 5703, + "src": "882:37:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5209, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "882:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_1000000000000000000_by_1", + "typeString": "int_const 1000000000000000000" + }, + "id": 5212, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 5210, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "913:2:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3138", + "id": 5211, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "917:2:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "src": "913:6:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000000000000000_by_1", + "typeString": "int_const 1000000000000000000" + } + }, + "visibility": "public" + }, + { + "constant": true, + "id": 5218, + "name": "BASE_COMMUNITY_FEE_PERCENTAGE", + "nodeType": "VariableDeclaration", + "scope": 5703, + "src": "925:67:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5214, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "925:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5217, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5215, + "name": "BASE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5213, + "src": "981:4:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31303030", + "id": 5216, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "988:4:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + }, + "value": "1000" + }, + "src": "981:11:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": true, + "id": 5223, + "name": "BASE_MARKET_FEE_PERCENTAGE", + "nodeType": "VariableDeclaration", + "scope": 5703, + "src": "998:64:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5219, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "998:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5222, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5220, + "name": "BASE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5213, + "src": "1051:4:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31303030", + "id": 5221, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1058:4:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + }, + "value": "1000" + }, + "src": "1051:11:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 5239, + "name": "OrderStarted", + "nodeType": "EventDefinition", + "parameters": { + "id": 5238, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5225, + "indexed": true, + "name": "consumer", + "nodeType": "VariableDeclaration", + "scope": 5239, + "src": "1101:24:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5224, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1101:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5227, + "indexed": true, + "name": "payer", + "nodeType": "VariableDeclaration", + "scope": 5239, + "src": "1139:21:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5226, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1139:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5229, + "indexed": false, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 5239, + "src": "1174:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5228, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1174:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5231, + "indexed": false, + "name": "serviceId", + "nodeType": "VariableDeclaration", + "scope": 5239, + "src": "1203:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5230, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1203:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5233, + "indexed": false, + "name": "timestamp", + "nodeType": "VariableDeclaration", + "scope": 5239, + "src": "1235:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5232, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1235:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5235, + "indexed": true, + "name": "mrktFeeCollector", + "nodeType": "VariableDeclaration", + "scope": 5239, + "src": "1266:32:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5234, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1266:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5237, + "indexed": false, + "name": "marketFee", + "nodeType": "VariableDeclaration", + "scope": 5239, + "src": "1312:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5236, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1312:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1087:248:12" + }, + "src": "1069:267:12" + }, + { + "anonymous": false, + "documentation": null, + "id": 5253, + "name": "OrderFinished", + "nodeType": "EventDefinition", + "parameters": { + "id": 5252, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5241, + "indexed": false, + "name": "orderTxId", + "nodeType": "VariableDeclaration", + "scope": 5253, + "src": "1375:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5240, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1375:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5243, + "indexed": true, + "name": "consumer", + "nodeType": "VariableDeclaration", + "scope": 5253, + "src": "1407:24:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5242, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1407:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5245, + "indexed": false, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 5253, + "src": "1445:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5244, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1445:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5247, + "indexed": false, + "name": "serviceId", + "nodeType": "VariableDeclaration", + "scope": 5253, + "src": "1474:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5246, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1474:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5249, + "indexed": true, + "name": "provider", + "nodeType": "VariableDeclaration", + "scope": 5253, + "src": "1506:24:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5248, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1506:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5251, + "indexed": false, + "name": "timestamp", + "nodeType": "VariableDeclaration", + "scope": 5253, + "src": "1544:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5250, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1544:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1361:206:12" + }, + "src": "1342:226:12" + }, + { + "anonymous": false, + "documentation": null, + "id": 5259, + "name": "MinterProposed", + "nodeType": "EventDefinition", + "parameters": { + "id": 5258, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5255, + "indexed": false, + "name": "currentMinter", + "nodeType": "VariableDeclaration", + "scope": 5259, + "src": "1604:21:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5254, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1604:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5257, + "indexed": false, + "name": "newMinter", + "nodeType": "VariableDeclaration", + "scope": 5259, + "src": "1635:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5256, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1635:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1594:64:12" + }, + "src": "1574:85:12" + }, + { + "anonymous": false, + "documentation": null, + "id": 5265, + "name": "MinterApproved", + "nodeType": "EventDefinition", + "parameters": { + "id": 5264, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5261, + "indexed": false, + "name": "currentMinter", + "nodeType": "VariableDeclaration", + "scope": 5265, + "src": "1695:21:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5260, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1695:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5263, + "indexed": false, + "name": "newMinter", + "nodeType": "VariableDeclaration", + "scope": 5265, + "src": "1726:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5262, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1726:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1685:64:12" + }, + "src": "1665:85:12" + }, + { + "body": { + "id": 5274, + "nodeType": "Block", + "src": "1786:140:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1817:12:12", + "subExpression": { + "argumentTypes": null, + "id": 5268, + "name": "initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5204, + "src": "1818:11:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "44617461546f6b656e54656d706c6174653a20746f6b656e20696e7374616e636520616c726561647920696e697469616c697a6564", + "id": 5270, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1843:55:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3fbe4c86a4c4d9736fd0d2a9400f74e8d124de74cfedc7affa27132fa840428d", + "typeString": "literal_string \"DataTokenTemplate: token instance already initialized\"" + }, + "value": "DataTokenTemplate: token instance already initialized" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3fbe4c86a4c4d9736fd0d2a9400f74e8d124de74cfedc7affa27132fa840428d", + "typeString": "literal_string \"DataTokenTemplate: token instance already initialized\"" + } + ], + "id": 5267, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6555, + 6556 + ], + "referencedDeclaration": 6556, + "src": "1796:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1796:112:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5272, + "nodeType": "ExpressionStatement", + "src": "1796:112:12" + }, + { + "id": 5273, + "nodeType": "PlaceholderStatement", + "src": "1918:1:12" + } + ] + }, + "documentation": null, + "id": 5275, + "name": "onlyNotInitialized", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 5266, + "nodeType": "ParameterList", + "parameters": [], + "src": "1783:2:12" + }, + "src": "1756:170:12", + "visibility": "internal" + }, + { + "body": { + "id": 5286, + "nodeType": "Block", + "src": "1958:130:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5278, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6552, + "src": "1989:3:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5279, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1989:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 5280, + "name": "_minter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5206, + "src": "2003:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1989:21:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "44617461546f6b656e54656d706c6174653a20696e76616c6964206d696e746572", + "id": 5282, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2024:35:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_40e35c5de830427b1e8c63a3538e0f1b39d02b02870d69ff7c4ee4488565fe71", + "typeString": "literal_string \"DataTokenTemplate: invalid minter\"" + }, + "value": "DataTokenTemplate: invalid minter" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_40e35c5de830427b1e8c63a3538e0f1b39d02b02870d69ff7c4ee4488565fe71", + "typeString": "literal_string \"DataTokenTemplate: invalid minter\"" + } + ], + "id": 5277, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6555, + 6556 + ], + "referencedDeclaration": 6556, + "src": "1968:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1968:102:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5284, + "nodeType": "ExpressionStatement", + "src": "1968:102:12" + }, + { + "id": 5285, + "nodeType": "PlaceholderStatement", + "src": "2080:1:12" + } + ] + }, + "documentation": null, + "id": 5287, + "name": "onlyMinter", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 5276, + "nodeType": "ParameterList", + "parameters": [], + "src": "1955:2:12" + }, + "src": "1936:152:12", + "visibility": "internal" + }, + { + "body": { + "id": 5311, + "nodeType": "Block", + "src": "2748:164:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5303, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5289, + "src": "2783:4:12", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 5304, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5291, + "src": "2801:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 5305, + "name": "minterAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5293, + "src": "2821:13:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5306, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5295, + "src": "2848:3:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5307, + "name": "blob", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5297, + "src": "2865:4:12", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 5308, + "name": "feeCollector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5299, + "src": "2883:12:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5302, + "name": "_initialize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5423, + "src": "2758:11:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (string memory,string memory,address,uint256,string memory,address) returns (bool)" + } + }, + "id": 5309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2758:147:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5310, + "nodeType": "ExpressionStatement", + "src": "2758:147:12" + } + ] + }, + "documentation": "@dev constructor\n Called prior contract deployment\n@param name refers to a template DataToken name\n@param symbol refers to a template DataToken symbol\n@param minterAddress refers to an address that has minter role\n@param cap the total ERC20 cap\n@param blob data string refering to the resolver for the metadata\n@param feeCollector it is the community fee collector address", + "id": 5312, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5300, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5289, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 5312, + "src": "2564:18:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5288, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2564:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5291, + "name": "symbol", + "nodeType": "VariableDeclaration", + "scope": 5312, + "src": "2592:20:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5290, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2592:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5293, + "name": "minterAddress", + "nodeType": "VariableDeclaration", + "scope": 5312, + "src": "2622:21:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5292, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2622:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5295, + "name": "cap", + "nodeType": "VariableDeclaration", + "scope": 5312, + "src": "2653:11:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5294, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2653:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5297, + "name": "blob", + "nodeType": "VariableDeclaration", + "scope": 5312, + "src": "2674:18:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5296, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2674:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5299, + "name": "feeCollector", + "nodeType": "VariableDeclaration", + "scope": 5312, + "src": "2702:20:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5298, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2702:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2554:174:12" + }, + "returnParameters": { + "id": 5301, + "nodeType": "ParameterList", + "parameters": [], + "src": "2748:0:12" + }, + "scope": 5703, + "src": "2543:369:12", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 5340, + "nodeType": "Block", + "src": "3760:171:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5332, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5314, + "src": "3802:4:12", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + }, + { + "argumentTypes": null, + "id": 5333, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5316, + "src": "3820:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + }, + { + "argumentTypes": null, + "id": 5334, + "name": "minterAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5318, + "src": "3840:13:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5335, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5320, + "src": "3867:3:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5336, + "name": "blob", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5322, + "src": "3884:4:12", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + }, + { + "argumentTypes": null, + "id": 5337, + "name": "feeCollector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5324, + "src": "3902:12:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + }, + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5331, + "name": "_initialize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5423, + "src": "3777:11:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (string memory,string memory,address,uint256,string memory,address) returns (bool)" + } + }, + "id": 5338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3777:147:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 5330, + "id": 5339, + "nodeType": "Return", + "src": "3770:154:12" + } + ] + }, + "documentation": "@dev initialize\n Called prior contract initialization (e.g creating new DataToken instance)\n Calls private _initialize function. Only if contract is not initialized.\n@param name refers to a new DataToken name\n@param symbol refers to a nea DataToken symbol\n@param minterAddress refers to an address that has minter rights\n@param cap the total ERC20 cap\n@param blob data string refering to the resolver for the metadata\n@param feeCollector it is the community fee collector address", + "id": 5341, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 5327, + "modifierName": { + "argumentTypes": null, + "id": 5326, + "name": "onlyNotInitialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5275, + "src": "3715:18:12", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3715:18:12" + } + ], + "name": "initialize", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5325, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5314, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 5341, + "src": "3518:20:12", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5313, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3518:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5316, + "name": "symbol", + "nodeType": "VariableDeclaration", + "scope": 5341, + "src": "3548:22:12", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5315, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3548:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5318, + "name": "minterAddress", + "nodeType": "VariableDeclaration", + "scope": 5341, + "src": "3580:21:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5317, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3580:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5320, + "name": "cap", + "nodeType": "VariableDeclaration", + "scope": 5341, + "src": "3611:11:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5319, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3611:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5322, + "name": "blob", + "nodeType": "VariableDeclaration", + "scope": 5341, + "src": "3632:20:12", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5321, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3632:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5324, + "name": "feeCollector", + "nodeType": "VariableDeclaration", + "scope": 5341, + "src": "3662:20:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5323, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3662:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3508:180:12" + }, + "returnParameters": { + "id": 5330, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5329, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5341, + "src": "3750:4:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5328, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3750:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3749:6:12" + }, + "scope": 5703, + "src": "3489:442:12", + "stateMutability": "nonpayable", + "superFunction": 5000, + "visibility": "external" + }, + { + "body": { + "id": 5422, + "nodeType": "Block", + "src": "4634:743:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5359, + "name": "minterAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5347, + "src": "4665:13:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5361, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4690:1:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5360, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4682:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5362, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4682:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4665:27:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "44617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c20207a65726f2061646472657373", + "id": 5364, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4707:50:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_79b023297db239e06df0b00bacc5eecb1d80c9686a2e70ed8293de6723d3cfa6", + "typeString": "literal_string \"DataTokenTemplate: Invalid minter, zero address\"" + }, + "value": "DataTokenTemplate: Invalid minter, zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_79b023297db239e06df0b00bacc5eecb1d80c9686a2e70ed8293de6723d3cfa6", + "typeString": "literal_string \"DataTokenTemplate: Invalid minter, zero address\"" + } + ], + "id": 5358, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6555, + 6556 + ], + "referencedDeclaration": 6556, + "src": "4644:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4644:123:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5366, + "nodeType": "ExpressionStatement", + "src": "4644:123:12" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5368, + "name": "_minter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5206, + "src": "4799:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5370, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4818:1:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5369, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4810:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5371, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4810:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4799:21:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "44617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c207a65726f2061646472657373", + "id": 5373, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4835:49:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b9b9e16289fbb5851262a16209ee436929da92a7a333eeb45338a6bda1fc88b5", + "typeString": "literal_string \"DataTokenTemplate: Invalid minter, zero address\"" + }, + "value": "DataTokenTemplate: Invalid minter, zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b9b9e16289fbb5851262a16209ee436929da92a7a333eeb45338a6bda1fc88b5", + "typeString": "literal_string \"DataTokenTemplate: Invalid minter, zero address\"" + } + ], + "id": 5367, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6555, + 6556 + ], + "referencedDeclaration": 6556, + "src": "4778:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4778:116:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5375, + "nodeType": "ExpressionStatement", + "src": "4778:116:12" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5377, + "name": "feeCollector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5353, + "src": "4926:12:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5379, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4950:1:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5378, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4942:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5380, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4942:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4926:26:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "44617461546f6b656e54656d706c6174653a20496e76616c696420636f6d6d756e6974792066656520636f6c6c6563746f722c207a65726f2061646472657373", + "id": 5382, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4966:66:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_79b4d95ff9378609f77ba871e4eb20868d893b58fb0b84eff9a61c2168cec2e8", + "typeString": "literal_string \"DataTokenTemplate: Invalid community fee collector, zero address\"" + }, + "value": "DataTokenTemplate: Invalid community fee collector, zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_79b4d95ff9378609f77ba871e4eb20868d893b58fb0b84eff9a61c2168cec2e8", + "typeString": "literal_string \"DataTokenTemplate: Invalid community fee collector, zero address\"" + } + ], + "id": 5376, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6555, + 6556 + ], + "referencedDeclaration": 6556, + "src": "4905:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4905:137:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5384, + "nodeType": "ExpressionStatement", + "src": "4905:137:12" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5386, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5349, + "src": "5074:3:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 5387, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5081:1:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5074:8:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076616c7565", + "id": 5389, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5096:38:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_931eb4f9c6ddf66acc5bb36f4acf3bb199deea0451b189ecfb6b4e252da29b03", + "typeString": "literal_string \"DataTokenTemplate: Invalid cap value\"" + }, + "value": "DataTokenTemplate: Invalid cap value" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_931eb4f9c6ddf66acc5bb36f4acf3bb199deea0451b189ecfb6b4e252da29b03", + "typeString": "literal_string \"DataTokenTemplate: Invalid cap value\"" + } + ], + "id": 5385, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6555, + 6556 + ], + "referencedDeclaration": 6556, + "src": "5053:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5390, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5053:91:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5391, + "nodeType": "ExpressionStatement", + "src": "5053:91:12" + }, + { + "expression": { + "argumentTypes": null, + "id": 5394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5392, + "name": "_cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5196, + "src": "5154:4:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5393, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5349, + "src": "5161:3:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5154:10:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5395, + "nodeType": "ExpressionStatement", + "src": "5154:10:12" + }, + { + "expression": { + "argumentTypes": null, + "id": 5398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5396, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5190, + "src": "5174:5:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5397, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5343, + "src": "5182:4:12", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "5174:12:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 5399, + "nodeType": "ExpressionStatement", + "src": "5174:12:12" + }, + { + "expression": { + "argumentTypes": null, + "id": 5402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5400, + "name": "_blob", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5194, + "src": "5196:5:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5401, + "name": "blob", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5351, + "src": "5204:4:12", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "5196:12:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 5403, + "nodeType": "ExpressionStatement", + "src": "5196:12:12" + }, + { + "expression": { + "argumentTypes": null, + "id": 5406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5404, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5192, + "src": "5218:7:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5405, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5345, + "src": "5228:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "5218:16:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 5407, + "nodeType": "ExpressionStatement", + "src": "5218:16:12" + }, + { + "expression": { + "argumentTypes": null, + "id": 5410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5408, + "name": "_minter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5206, + "src": "5244:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5409, + "name": "minterAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5347, + "src": "5254:13:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5244:23:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5411, + "nodeType": "ExpressionStatement", + "src": "5244:23:12" + }, + { + "expression": { + "argumentTypes": null, + "id": 5414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5412, + "name": "_communityFeeCollector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5201, + "src": "5277:22:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5413, + "name": "feeCollector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5353, + "src": "5302:12:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5277:37:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5415, + "nodeType": "ExpressionStatement", + "src": "5277:37:12" + }, + { + "expression": { + "argumentTypes": null, + "id": 5418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5416, + "name": "initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5204, + "src": "5324:11:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 5417, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5338:4:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "5324:18:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5419, + "nodeType": "ExpressionStatement", + "src": "5324:18:12" + }, + { + "expression": { + "argumentTypes": null, + "id": 5420, + "name": "initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5204, + "src": "5359:11:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 5357, + "id": 5421, + "nodeType": "Return", + "src": "5352:18:12" + } + ] + }, + "documentation": "@dev _initialize\n Private function called on contract initialization.\n@param name refers to a new DataToken name\n@param symbol refers to a nea DataToken symbol\n@param minterAddress refers to an address that has minter rights\n@param cap the total ERC20 cap\n@param blob data string refering to the resolver for the metadata\n@param feeCollector it is the community fee collector address", + "id": 5423, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_initialize", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5354, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5343, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 5423, + "src": "4427:18:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5342, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4427:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5345, + "name": "symbol", + "nodeType": "VariableDeclaration", + "scope": 5423, + "src": "4455:20:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5344, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4455:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5347, + "name": "minterAddress", + "nodeType": "VariableDeclaration", + "scope": 5423, + "src": "4485:21:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5346, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4485:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5349, + "name": "cap", + "nodeType": "VariableDeclaration", + "scope": 5423, + "src": "4516:11:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5348, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4516:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5351, + "name": "blob", + "nodeType": "VariableDeclaration", + "scope": 5423, + "src": "4537:18:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5350, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4537:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5353, + "name": "feeCollector", + "nodeType": "VariableDeclaration", + "scope": 5423, + "src": "4565:20:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5352, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4565:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4417:174:12" + }, + "returnParameters": { + "id": 5357, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5356, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5423, + "src": "4624:4:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5355, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4624:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4623:6:12" + }, + "scope": 5703, + "src": "4397:980:12", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 5448, + "nodeType": "Block", + "src": "5806:159:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5436, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5427, + "src": "5855:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5433, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6095, + "src": "5837:11:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 5434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5837:13:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 5785, + "src": "5837:17:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 5437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5837:24:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 5438, + "name": "_cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5196, + "src": "5865:4:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5837:32:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "44617461546f6b656e54656d706c6174653a20636170206578636565646564", + "id": 5440, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5884:33:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_db37e28d4a1d757900849adc30f19972d8f520005ecc78e1ba1f3c9b13636ae7", + "typeString": "literal_string \"DataTokenTemplate: cap exceeded\"" + }, + "value": "DataTokenTemplate: cap exceeded" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_db37e28d4a1d757900849adc30f19972d8f520005ecc78e1ba1f3c9b13636ae7", + "typeString": "literal_string \"DataTokenTemplate: cap exceeded\"" + } + ], + "id": 5432, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6555, + 6556 + ], + "referencedDeclaration": 6556, + "src": "5816:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5816:111:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5442, + "nodeType": "ExpressionStatement", + "src": "5816:111:12" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5444, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5425, + "src": "5943:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5445, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5427, + "src": "5952:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5443, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6352, + "src": "5937:5:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 5446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5937:21:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5447, + "nodeType": "ExpressionStatement", + "src": "5937:21:12" + } + ] + }, + "documentation": "@dev mint\n Only the minter address can call it.\n msg.value should be higher than zero and gt or eq minting fee\n@param account refers to an address that token is going to be minted to.\n@param value refers to amount of tokens that is going to be minted.", + "id": 5449, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 5430, + "modifierName": { + "argumentTypes": null, + "id": 5429, + "name": "onlyMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5287, + "src": "5790:10:12", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "5790:10:12" + } + ], + "name": "mint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5428, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5425, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 5449, + "src": "5717:15:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5424, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5717:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5427, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 5449, + "src": "5742:13:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5426, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5742:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5707:54:12" + }, + "returnParameters": { + "id": 5431, + "nodeType": "ParameterList", + "parameters": [], + "src": "5806:0:12" + }, + "scope": 5703, + "src": "5694:271:12", + "stateMutability": "nonpayable", + "superFunction": 5007, + "visibility": "external" + }, + { + "body": { + "id": 5522, + "nodeType": "Block", + "src": "6532:753:12", + "statements": [ + { + "assignments": [ + 5461 + ], + "declarations": [ + { + "constant": false, + "id": 5461, + "name": "marketFee", + "nodeType": "VariableDeclaration", + "scope": 5522, + "src": "6542:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5460, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6542:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5463, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 5462, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6562:1:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "6542:21:12" + }, + { + "assignments": [ + 5465 + ], + "declarations": [ + { + "constant": false, + "id": 5465, + "name": "communityFee", + "nodeType": "VariableDeclaration", + "scope": 5522, + "src": "6573:20:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5464, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6573:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5470, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5467, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5453, + "src": "6622:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5468, + "name": "BASE_COMMUNITY_FEE_PERCENTAGE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5218, + "src": "6643:29:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5466, + "name": "calculateFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5702, + "src": "6596:12:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 5469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6596:86:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6573:109:12" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5472, + "name": "_communityFeeCollector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5201, + "src": "6701:22:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5473, + "name": "communityFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5465, + "src": "6725:12:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5471, + "name": "transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6126, + "src": "6692:8:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 5474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6692:46:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5475, + "nodeType": "ExpressionStatement", + "src": "6692:46:12" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5476, + "name": "mrktFeeCollector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5457, + "src": "6751:16:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5478, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6779:1:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5477, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6771:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5479, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6771:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "6751:30:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 5494, + "nodeType": "IfStatement", + "src": "6748:217:12", + "trueBody": { + "id": 5493, + "nodeType": "Block", + "src": "6782:183:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5486, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5481, + "name": "marketFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5461, + "src": "6796:9:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5483, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5453, + "src": "6838:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5484, + "name": "BASE_MARKET_FEE_PERCENTAGE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5223, + "src": "6863:26:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5482, + "name": "calculateFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5702, + "src": "6808:12:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 5485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6808:95:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6796:107:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5487, + "nodeType": "ExpressionStatement", + "src": "6796:107:12" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5489, + "name": "mrktFeeCollector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5457, + "src": "6926:16:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5490, + "name": "marketFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5461, + "src": "6944:9:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5488, + "name": "transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6126, + "src": "6917:8:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 5491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6917:37:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5492, + "nodeType": "ExpressionStatement", + "src": "6917:37:12" + } + ] + } + }, + { + "assignments": [ + 5496 + ], + "declarations": [ + { + "constant": false, + "id": 5496, + "name": "totalFee", + "nodeType": "VariableDeclaration", + "scope": 5522, + "src": "6974:16:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5495, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6974:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5501, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5499, + "name": "marketFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5461, + "src": "7010:9:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5497, + "name": "communityFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5465, + "src": "6993:12:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 5785, + "src": "6993:16:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 5500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6993:27:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6974:46:12" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5503, + "name": "_minter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5206, + "src": "7039:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5506, + "name": "totalFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5496, + "src": "7059:8:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5504, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5453, + "src": "7048:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 5801, + "src": "7048:10:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 5507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7048:20:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5502, + "name": "transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6126, + "src": "7030:8:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 5508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7030:39:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5509, + "nodeType": "ExpressionStatement", + "src": "7030:39:12" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5511, + "name": "consumer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5451, + "src": "7111:8:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5512, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6552, + "src": "7133:3:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7133:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5514, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5453, + "src": "7157:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5515, + "name": "serviceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5455, + "src": "7177:9:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5516, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6542, + "src": "7200:5:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 5517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7200:15:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5518, + "name": "mrktFeeCollector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5457, + "src": "7229:16:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5519, + "name": "marketFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5461, + "src": "7259:9:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5510, + "name": "OrderStarted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5239, + "src": "7085:12:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256,uint256,uint256,address,uint256)" + } + }, + "id": 5520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7085:193:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5521, + "nodeType": "EmitStatement", + "src": "7080:198:12" + } + ] + }, + "documentation": "@dev startOrder\n called by payer or consumer prior ordering a service consume on a marketplace.\n@param consumer is the consumer address (payer could be different address)\n@param amount refers to amount of tokens that is going to be transfered.\n@param serviceId service index in the metadata\n@param mrktFeeCollector marketplace fee collector", + "id": 5523, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "startOrder", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5458, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5451, + "name": "consumer", + "nodeType": "VariableDeclaration", + "scope": 5523, + "src": "6403:16:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5450, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6403:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5453, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 5523, + "src": "6429:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5452, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6429:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5455, + "name": "serviceId", + "nodeType": "VariableDeclaration", + "scope": 5523, + "src": "6453:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5454, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6453:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5457, + "name": "mrktFeeCollector", + "nodeType": "VariableDeclaration", + "scope": 5523, + "src": "6480:24:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5456, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6480:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6393:117:12" + }, + "returnParameters": { + "id": 5459, + "nodeType": "ParameterList", + "parameters": [], + "src": "6532:0:12" + }, + "scope": 5703, + "src": "6374:911:12", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 5557, + "nodeType": "Block", + "src": "7938:360:12", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5534, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5529, + "src": "7953:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 5535, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7963:1:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7953:11:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 5545, + "nodeType": "IfStatement", + "src": "7948:159:12", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5539, + "name": "consumer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5527, + "src": "8015:8:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5540, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5529, + "src": "8025:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5538, + "name": "transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6126, + "src": "8006:8:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 5541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8006:26:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "44617461546f6b656e54656d706c6174653a206661696c656420746f2066696e697368206f72646572", + "id": 5542, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8050:43:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5beb845327406b92f3857bb14436e4b6862cb87998aca33ed8309c1bf98b5e76", + "typeString": "literal_string \"DataTokenTemplate: failed to finish order\"" + }, + "value": "DataTokenTemplate: failed to finish order" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5beb845327406b92f3857bb14436e4b6862cb87998aca33ed8309c1bf98b5e76", + "typeString": "literal_string \"DataTokenTemplate: failed to finish order\"" + } + ], + "id": 5537, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6555, + 6556 + ], + "referencedDeclaration": 6556, + "src": "7981:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7981:126:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5544, + "nodeType": "ExpressionStatement", + "src": "7981:126:12" + } + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5547, + "name": "orderTxId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5525, + "src": "8150:9:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 5548, + "name": "consumer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5527, + "src": "8174:8:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5549, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5529, + "src": "8197:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5550, + "name": "serviceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5531, + "src": "8218:9:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5551, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6552, + "src": "8242:3:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8242:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5553, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6542, + "src": "8266:5:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 5554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8266:15:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5546, + "name": "OrderFinished", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5253, + "src": "8123:13:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (bytes32,address,uint256,uint256,address,uint256)" + } + }, + "id": 5555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8123:168:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5556, + "nodeType": "EmitStatement", + "src": "8118:173:12" + } + ] + }, + "documentation": "@dev finishOrder\n called by provider prior completing service delivery only\n if there is a partial or full refund.\n@param orderTxId refers to the transaction Id of startOrder acts \n as a payment reference.\n@param consumer refers to an address that has consumed that service.\n@param amount refers to amount of tokens that is going to be transfered.\n@param serviceId service index in the metadata.", + "id": 5558, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "finishOrder", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5532, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5525, + "name": "orderTxId", + "nodeType": "VariableDeclaration", + "scope": 5558, + "src": "7814:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5524, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7814:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5527, + "name": "consumer", + "nodeType": "VariableDeclaration", + "scope": 5558, + "src": "7842:16:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5526, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7842:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5529, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 5558, + "src": "7869:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5528, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7869:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5531, + "name": "serviceId", + "nodeType": "VariableDeclaration", + "scope": 5558, + "src": "7893:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5530, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7893:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7804:112:12" + }, + "returnParameters": { + "id": 5533, + "nodeType": "ParameterList", + "parameters": [], + "src": "7938:0:12" + }, + "scope": 5703, + "src": "7784:514:12", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 5575, + "nodeType": "Block", + "src": "8594:136:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5565, + "name": "_proposedMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5208, + "src": "8604:15:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5566, + "name": "newMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5560, + "src": "8622:9:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8604:27:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5568, + "nodeType": "ExpressionStatement", + "src": "8604:27:12" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5570, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6552, + "src": "8674:3:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5571, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8674:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5572, + "name": "_proposedMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5208, + "src": "8698:15:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5569, + "name": "MinterProposed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5259, + "src": "8646:14:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 5573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8646:77:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5574, + "nodeType": "EmitStatement", + "src": "8641:82:12" + } + ] + }, + "documentation": "@dev proposeMinter\n It proposes a new token minter address.\n Only the current minter can call it.\n@param newMinter refers to a new token minter address.", + "id": 5576, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 5563, + "modifierName": { + "argumentTypes": null, + "id": 5562, + "name": "onlyMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5287, + "src": "8578:10:12", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "8578:10:12" + } + ], + "name": "proposeMinter", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5561, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5560, + "name": "newMinter", + "nodeType": "VariableDeclaration", + "scope": 5576, + "src": "8532:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5559, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8532:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8531:19:12" + }, + "returnParameters": { + "id": 5564, + "nodeType": "ParameterList", + "parameters": [], + "src": "8594:0:12" + }, + "scope": 5703, + "src": "8509:221:12", + "stateMutability": "nonpayable", + "superFunction": 5085, + "visibility": "external" + }, + { + "body": { + "id": 5602, + "nodeType": "Block", + "src": "8925:305:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5580, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6552, + "src": "8956:3:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8956:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 5582, + "name": "_proposedMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5208, + "src": "8970:15:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8956:29:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "44617461546f6b656e54656d706c6174653a20696e76616c69642070726f706f736564206d696e7465722061646472657373", + "id": 5584, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8999:52:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7af8769e1ae364fd1070260138caf964484121753b4fb103f09e0f3de065c059", + "typeString": "literal_string \"DataTokenTemplate: invalid proposed minter address\"" + }, + "value": "DataTokenTemplate: invalid proposed minter address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7af8769e1ae364fd1070260138caf964484121753b4fb103f09e0f3de065c059", + "typeString": "literal_string \"DataTokenTemplate: invalid proposed minter address\"" + } + ], + "id": 5579, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6555, + 6556 + ], + "referencedDeclaration": 6556, + "src": "8935:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8935:126:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5586, + "nodeType": "ExpressionStatement", + "src": "8935:126:12" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5588, + "name": "_minter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5206, + "src": "9104:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5589, + "name": "_proposedMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5208, + "src": "9125:15:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5587, + "name": "MinterApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5265, + "src": "9076:14:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 5590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9076:74:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5591, + "nodeType": "EmitStatement", + "src": "9071:79:12" + }, + { + "expression": { + "argumentTypes": null, + "id": 5594, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5592, + "name": "_minter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5206, + "src": "9160:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5593, + "name": "_proposedMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5208, + "src": "9170:15:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9160:25:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5595, + "nodeType": "ExpressionStatement", + "src": "9160:25:12" + }, + { + "expression": { + "argumentTypes": null, + "id": 5600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5596, + "name": "_proposedMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5208, + "src": "9195:15:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5598, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9221:1:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5597, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9213:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5599, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9213:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "9195:28:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5601, + "nodeType": "ExpressionStatement", + "src": "9195:28:12" + } + ] + }, + "documentation": "@dev approveMinter\n It approves a new token minter address.\n Only the current minter can call it.", + "id": 5603, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approveMinter", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5577, + "nodeType": "ParameterList", + "parameters": [], + "src": "8901:2:12" + }, + "returnParameters": { + "id": 5578, + "nodeType": "ParameterList", + "parameters": [], + "src": "8925:0:12" + }, + "scope": 5703, + "src": "8879:351:12", + "stateMutability": "nonpayable", + "superFunction": 5088, + "visibility": "external" + }, + { + "body": { + "id": 5610, + "nodeType": "Block", + "src": "9392:29:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5608, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5190, + "src": "9409:5:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 5607, + "id": 5609, + "nodeType": "Return", + "src": "9402:12:12" + } + ] + }, + "documentation": "@dev name\n It returns the token name.\n@return DataToken name.", + "id": 5611, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "name", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5604, + "nodeType": "ParameterList", + "parameters": [], + "src": "9352:2:12" + }, + "returnParameters": { + "id": 5607, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5606, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5611, + "src": "9377:13:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5605, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "9377:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9376:15:12" + }, + "scope": 5703, + "src": "9339:82:12", + "stateMutability": "view", + "superFunction": 5017, + "visibility": "external" + }, + { + "body": { + "id": 5618, + "nodeType": "Block", + "src": "9591:31:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5616, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5192, + "src": "9608:7:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 5615, + "id": 5617, + "nodeType": "Return", + "src": "9601:14:12" + } + ] + }, + "documentation": "@dev symbol\n It returns the token symbol.\n@return DataToken symbol.", + "id": 5619, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5612, + "nodeType": "ParameterList", + "parameters": [], + "src": "9551:2:12" + }, + "returnParameters": { + "id": 5615, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5614, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5619, + "src": "9576:13:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5613, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "9576:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9575:15:12" + }, + "scope": 5703, + "src": "9536:86:12", + "stateMutability": "view", + "superFunction": 5022, + "visibility": "external" + }, + { + "body": { + "id": 5626, + "nodeType": "Block", + "src": "9800:29:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5624, + "name": "_blob", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5194, + "src": "9817:5:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 5623, + "id": 5625, + "nodeType": "Return", + "src": "9810:12:12" + } + ] + }, + "documentation": "@dev blob\n It returns the blob (e.g https://123.com).\n@return DataToken blob.", + "id": 5627, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "blob", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5620, + "nodeType": "ParameterList", + "parameters": [], + "src": "9760:2:12" + }, + "returnParameters": { + "id": 5623, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5622, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5627, + "src": "9785:13:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5621, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "9785:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9784:15:12" + }, + "scope": 5703, + "src": "9747:82:12", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 5634, + "nodeType": "Block", + "src": "10045:33:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5632, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5199, + "src": "10062:9:12", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 5631, + "id": 5633, + "nodeType": "Return", + "src": "10055:16:12" + } + ] + }, + "documentation": "@dev decimals\n It returns the token decimals.\n how many supported decimal points\n@return DataToken decimals.", + "id": 5635, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5628, + "nodeType": "ParameterList", + "parameters": [], + "src": "10013:2:12" + }, + "returnParameters": { + "id": 5631, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5630, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5635, + "src": "10038:5:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 5629, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "10038:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10037:7:12" + }, + "scope": 5703, + "src": "9996:82:12", + "stateMutability": "view", + "superFunction": 5027, + "visibility": "external" + }, + { + "body": { + "id": 5642, + "nodeType": "Block", + "src": "10229:28:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5640, + "name": "_cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5196, + "src": "10246:4:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5639, + "id": 5641, + "nodeType": "Return", + "src": "10239:11:12" + } + ] + }, + "documentation": "@dev cap\n it returns the capital.\n@return DataToken cap.", + "id": 5643, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cap", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5636, + "nodeType": "ParameterList", + "parameters": [], + "src": "10194:2:12" + }, + "returnParameters": { + "id": 5639, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5638, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5643, + "src": "10220:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5637, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10220:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10219:9:12" + }, + "scope": 5703, + "src": "10182:75:12", + "stateMutability": "view", + "superFunction": 5032, + "visibility": "external" + }, + { + "body": { + "id": 5655, + "nodeType": "Block", + "src": "10532:44:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5650, + "name": "_minter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5206, + "src": "10550:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 5651, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5645, + "src": "10561:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10550:18:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 5653, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10549:20:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 5649, + "id": 5654, + "nodeType": "Return", + "src": "10542:27:12" + } + ] + }, + "documentation": "@dev isMinter\n It takes the address and checks whether it has a minter role.\n@param account refers to the address.\n@return true if account has a minter role.", + "id": 5656, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isMinter", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5646, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5645, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 5656, + "src": "10487:15:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5644, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10487:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10486:17:12" + }, + "returnParameters": { + "id": 5649, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5648, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5656, + "src": "10526:4:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5647, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10526:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10525:6:12" + }, + "scope": 5703, + "src": "10469:107:12", + "stateMutability": "view", + "superFunction": 5039, + "visibility": "external" + }, + { + "body": { + "id": 5663, + "nodeType": "Block", + "src": "10729:31:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5661, + "name": "_minter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5206, + "src": "10746:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 5660, + "id": 5662, + "nodeType": "Return", + "src": "10739:14:12" + } + ] + }, + "documentation": "@dev minter\n@return minter's address.", + "id": 5664, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "minter", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5657, + "nodeType": "ParameterList", + "parameters": [], + "src": "10666:2:12" + }, + "returnParameters": { + "id": 5660, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5659, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5664, + "src": "10716:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5658, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10716:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10715:9:12" + }, + "scope": 5703, + "src": "10651:109:12", + "stateMutability": "view", + "superFunction": 5012, + "visibility": "external" + }, + { + "body": { + "id": 5671, + "nodeType": "Block", + "src": "10973:35:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5669, + "name": "initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5204, + "src": "10990:11:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 5668, + "id": 5670, + "nodeType": "Return", + "src": "10983:18:12" + } + ] + }, + "documentation": "@dev isInitialized\n It checks whether the contract is initialized.\n@return true if the contract is initialized.", + "id": 5672, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isInitialized", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5665, + "nodeType": "ParameterList", + "parameters": [], + "src": "10942:2:12" + }, + "returnParameters": { + "id": 5668, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5667, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5672, + "src": "10967:4:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5666, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10967:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10966:6:12" + }, + "scope": 5703, + "src": "10920:88:12", + "stateMutability": "view", + "superFunction": 5044, + "visibility": "external" + }, + { + "body": { + "id": 5701, + "nodeType": "Block", + "src": "11392:134:12", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5681, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5674, + "src": "11405:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 5682, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11415:1:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11405:11:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 5686, + "nodeType": "IfStatement", + "src": "11402:24:12", + "trueBody": { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 5684, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11425:1:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 5680, + "id": 5685, + "nodeType": "Return", + "src": "11418:8:12" + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5687, + "name": "feePercentage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5676, + "src": "11439:13:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 5688, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11456:1:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11439:18:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 5692, + "nodeType": "IfStatement", + "src": "11436:31:12", + "trueBody": { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 5690, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11466:1:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 5680, + "id": 5691, + "nodeType": "Return", + "src": "11459:8:12" + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5698, + "name": "BASE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5213, + "src": "11514:4:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5695, + "name": "feePercentage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5676, + "src": "11495:13:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5693, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5674, + "src": "11484:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 5862, + "src": "11484:10:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 5696, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11484:25:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5697, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 5878, + "src": "11484:29:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 5699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11484:35:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5680, + "id": 5700, + "nodeType": "Return", + "src": "11477:42:12" + } + ] + }, + "documentation": "@dev calculateFee\n giving a fee percentage, and amount it calculates the actual fee\n@param amount the amount of token\n@param feePercentage the fee percentage \n@return the token fee.", + "id": 5702, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "calculateFee", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5677, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5674, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 5702, + "src": "11283:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5673, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11283:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5676, + "name": "feePercentage", + "nodeType": "VariableDeclaration", + "scope": 5702, + "src": "11307:21:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5675, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11307:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11273:61:12" + }, + "returnParameters": { + "id": 5680, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5679, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5702, + "src": "11379:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5678, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11379:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11378:9:12" + }, + "scope": 5703, + "src": "11252:274:12", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 5704, + "src": "488:11040:12" + } + ], + "src": "0:11529:12" + }, + "legacyAST": { + "absolutePath": "/home/travis/build/oceanprotocol/ocean-contracts/contracts/templates/DataTokenTemplate.sol", + "exportedSymbols": { + "DataTokenTemplate": [ + 5703 + ] + }, + "id": 5704, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5179, + "literals": [ + "solidity", + "0.5", + ".7" + ], + "nodeType": "PragmaDirective", + "src": "0:22:12" + }, + { + "absolutePath": "/home/travis/build/oceanprotocol/ocean-contracts/contracts/interfaces/IERC20Template.sol", + "file": "../interfaces/IERC20Template.sol", + "id": 5180, + "nodeType": "ImportDirective", + "scope": 5704, + "sourceUnit": 5090, + "src": "185:42:12", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", + "file": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol", + "id": 5181, + "nodeType": "ImportDirective", + "scope": 5704, + "sourceUnit": 6469, + "src": "228:63:12", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5182, + "name": "IERC20Template", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5089, + "src": "518:14:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20Template_$5089", + "typeString": "contract IERC20Template" + } + }, + "id": 5183, + "nodeType": "InheritanceSpecifier", + "src": "518:14:12" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5184, + "name": "ERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 6468, + "src": "534:5:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20_$6468", + "typeString": "contract ERC20" + } + }, + "id": 5185, + "nodeType": "InheritanceSpecifier", + "src": "534:5:12" + } + ], + "contractDependencies": [ + 5089, + 5758, + 6468, + 6537 + ], + "contractKind": "contract", + "documentation": "@title DataTokenTemplate\n \n@dev DataTokenTemplate is an ERC20 compliant token template\n Used by the factory contract as a bytecode reference to \n deploy new DataTokens.", + "fullyImplemented": true, + "id": 5703, + "linearizedBaseContracts": [ + 5703, + 6468, + 6537, + 5758, + 5089 + ], + "name": "DataTokenTemplate", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 5188, + "libraryName": { + "contractScope": null, + "id": 5186, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5945, + "src": "552:8:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$5945", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "546:27:12", + "typeName": { + "id": 5187, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "565:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": false, + "id": 5190, + "name": "_name", + "nodeType": "VariableDeclaration", + "scope": 5703, + "src": "579:21:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 5189, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "579:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5192, + "name": "_symbol", + "nodeType": "VariableDeclaration", + "scope": 5703, + "src": "606:23:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 5191, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "606:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5194, + "name": "_blob", + "nodeType": "VariableDeclaration", + "scope": 5703, + "src": "635:21:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 5193, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "635:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5196, + "name": "_cap", + "nodeType": "VariableDeclaration", + "scope": 5703, + "src": "662:20:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5195, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "662:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": true, + "id": 5199, + "name": "_decimals", + "nodeType": "VariableDeclaration", + "scope": 5703, + "src": "688:37:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 5197, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "688:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3138", + "id": 5198, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "723:2:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "visibility": "private" + }, + { + "constant": false, + "id": 5201, + "name": "_communityFeeCollector", + "nodeType": "VariableDeclaration", + "scope": 5703, + "src": "731:38:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5200, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "731:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5204, + "name": "initialized", + "nodeType": "VariableDeclaration", + "scope": 5703, + "src": "775:35:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5202, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "775:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 5203, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "805:5:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "visibility": "private" + }, + { + "constant": false, + "id": 5206, + "name": "_minter", + "nodeType": "VariableDeclaration", + "scope": 5703, + "src": "816:23:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5205, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "816:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 5208, + "name": "_proposedMinter", + "nodeType": "VariableDeclaration", + "scope": 5703, + "src": "845:31:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5207, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "845:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": true, + "id": 5213, + "name": "BASE", + "nodeType": "VariableDeclaration", + "scope": 5703, + "src": "882:37:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5209, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "882:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_rational_1000000000000000000_by_1", + "typeString": "int_const 1000000000000000000" + }, + "id": 5212, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 5210, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "913:2:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "nodeType": "BinaryOperation", + "operator": "**", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3138", + "id": 5211, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "917:2:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "src": "913:6:12", + "typeDescriptions": { + "typeIdentifier": "t_rational_1000000000000000000_by_1", + "typeString": "int_const 1000000000000000000" + } + }, + "visibility": "public" + }, + { + "constant": true, + "id": 5218, + "name": "BASE_COMMUNITY_FEE_PERCENTAGE", + "nodeType": "VariableDeclaration", + "scope": 5703, + "src": "925:67:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5214, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "925:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5217, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5215, + "name": "BASE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5213, + "src": "981:4:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31303030", + "id": 5216, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "988:4:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + }, + "value": "1000" + }, + "src": "981:11:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "constant": true, + "id": 5223, + "name": "BASE_MARKET_FEE_PERCENTAGE", + "nodeType": "VariableDeclaration", + "scope": 5703, + "src": "998:64:12", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5219, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "998:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5222, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5220, + "name": "BASE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5213, + "src": "1051:4:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31303030", + "id": 5221, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1058:4:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1000_by_1", + "typeString": "int_const 1000" + }, + "value": "1000" + }, + "src": "1051:11:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 5239, + "name": "OrderStarted", + "nodeType": "EventDefinition", + "parameters": { + "id": 5238, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5225, + "indexed": true, + "name": "consumer", + "nodeType": "VariableDeclaration", + "scope": 5239, + "src": "1101:24:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5224, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1101:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5227, + "indexed": true, + "name": "payer", + "nodeType": "VariableDeclaration", + "scope": 5239, + "src": "1139:21:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5226, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1139:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5229, + "indexed": false, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 5239, + "src": "1174:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5228, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1174:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5231, + "indexed": false, + "name": "serviceId", + "nodeType": "VariableDeclaration", + "scope": 5239, + "src": "1203:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5230, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1203:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5233, + "indexed": false, + "name": "timestamp", + "nodeType": "VariableDeclaration", + "scope": 5239, + "src": "1235:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5232, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1235:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5235, + "indexed": true, + "name": "mrktFeeCollector", + "nodeType": "VariableDeclaration", + "scope": 5239, + "src": "1266:32:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5234, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1266:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5237, + "indexed": false, + "name": "marketFee", + "nodeType": "VariableDeclaration", + "scope": 5239, + "src": "1312:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5236, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1312:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1087:248:12" + }, + "src": "1069:267:12" + }, + { + "anonymous": false, + "documentation": null, + "id": 5253, + "name": "OrderFinished", + "nodeType": "EventDefinition", + "parameters": { + "id": 5252, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5241, + "indexed": false, + "name": "orderTxId", + "nodeType": "VariableDeclaration", + "scope": 5253, + "src": "1375:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5240, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1375:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5243, + "indexed": true, + "name": "consumer", + "nodeType": "VariableDeclaration", + "scope": 5253, + "src": "1407:24:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5242, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1407:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5245, + "indexed": false, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 5253, + "src": "1445:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5244, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1445:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5247, + "indexed": false, + "name": "serviceId", + "nodeType": "VariableDeclaration", + "scope": 5253, + "src": "1474:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5246, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1474:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5249, + "indexed": true, + "name": "provider", + "nodeType": "VariableDeclaration", + "scope": 5253, + "src": "1506:24:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5248, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1506:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5251, + "indexed": false, + "name": "timestamp", + "nodeType": "VariableDeclaration", + "scope": 5253, + "src": "1544:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5250, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1544:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1361:206:12" + }, + "src": "1342:226:12" + }, + { + "anonymous": false, + "documentation": null, + "id": 5259, + "name": "MinterProposed", + "nodeType": "EventDefinition", + "parameters": { + "id": 5258, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5255, + "indexed": false, + "name": "currentMinter", + "nodeType": "VariableDeclaration", + "scope": 5259, + "src": "1604:21:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5254, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1604:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5257, + "indexed": false, + "name": "newMinter", + "nodeType": "VariableDeclaration", + "scope": 5259, + "src": "1635:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5256, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1635:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1594:64:12" + }, + "src": "1574:85:12" + }, + { + "anonymous": false, + "documentation": null, + "id": 5265, + "name": "MinterApproved", + "nodeType": "EventDefinition", + "parameters": { + "id": 5264, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5261, + "indexed": false, + "name": "currentMinter", + "nodeType": "VariableDeclaration", + "scope": 5265, + "src": "1695:21:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5260, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1695:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5263, + "indexed": false, + "name": "newMinter", + "nodeType": "VariableDeclaration", + "scope": 5265, + "src": "1726:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5262, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1726:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1685:64:12" + }, + "src": "1665:85:12" + }, + { + "body": { + "id": 5274, + "nodeType": "Block", + "src": "1786:140:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1817:12:12", + "subExpression": { + "argumentTypes": null, + "id": 5268, + "name": "initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5204, + "src": "1818:11:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "44617461546f6b656e54656d706c6174653a20746f6b656e20696e7374616e636520616c726561647920696e697469616c697a6564", + "id": 5270, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1843:55:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3fbe4c86a4c4d9736fd0d2a9400f74e8d124de74cfedc7affa27132fa840428d", + "typeString": "literal_string \"DataTokenTemplate: token instance already initialized\"" + }, + "value": "DataTokenTemplate: token instance already initialized" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3fbe4c86a4c4d9736fd0d2a9400f74e8d124de74cfedc7affa27132fa840428d", + "typeString": "literal_string \"DataTokenTemplate: token instance already initialized\"" + } + ], + "id": 5267, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6555, + 6556 + ], + "referencedDeclaration": 6556, + "src": "1796:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1796:112:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5272, + "nodeType": "ExpressionStatement", + "src": "1796:112:12" + }, + { + "id": 5273, + "nodeType": "PlaceholderStatement", + "src": "1918:1:12" + } + ] + }, + "documentation": null, + "id": 5275, + "name": "onlyNotInitialized", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 5266, + "nodeType": "ParameterList", + "parameters": [], + "src": "1783:2:12" + }, + "src": "1756:170:12", + "visibility": "internal" + }, + { + "body": { + "id": 5286, + "nodeType": "Block", + "src": "1958:130:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5281, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5278, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6552, + "src": "1989:3:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5279, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1989:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 5280, + "name": "_minter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5206, + "src": "2003:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1989:21:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "44617461546f6b656e54656d706c6174653a20696e76616c6964206d696e746572", + "id": 5282, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2024:35:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_40e35c5de830427b1e8c63a3538e0f1b39d02b02870d69ff7c4ee4488565fe71", + "typeString": "literal_string \"DataTokenTemplate: invalid minter\"" + }, + "value": "DataTokenTemplate: invalid minter" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_40e35c5de830427b1e8c63a3538e0f1b39d02b02870d69ff7c4ee4488565fe71", + "typeString": "literal_string \"DataTokenTemplate: invalid minter\"" + } + ], + "id": 5277, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6555, + 6556 + ], + "referencedDeclaration": 6556, + "src": "1968:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1968:102:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5284, + "nodeType": "ExpressionStatement", + "src": "1968:102:12" + }, + { + "id": 5285, + "nodeType": "PlaceholderStatement", + "src": "2080:1:12" + } + ] + }, + "documentation": null, + "id": 5287, + "name": "onlyMinter", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 5276, + "nodeType": "ParameterList", + "parameters": [], + "src": "1955:2:12" + }, + "src": "1936:152:12", + "visibility": "internal" + }, + { + "body": { + "id": 5311, + "nodeType": "Block", + "src": "2748:164:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5303, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5289, + "src": "2783:4:12", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 5304, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5291, + "src": "2801:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 5305, + "name": "minterAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5293, + "src": "2821:13:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5306, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5295, + "src": "2848:3:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5307, + "name": "blob", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5297, + "src": "2865:4:12", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 5308, + "name": "feeCollector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5299, + "src": "2883:12:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5302, + "name": "_initialize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5423, + "src": "2758:11:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (string memory,string memory,address,uint256,string memory,address) returns (bool)" + } + }, + "id": 5309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2758:147:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5310, + "nodeType": "ExpressionStatement", + "src": "2758:147:12" + } + ] + }, + "documentation": "@dev constructor\n Called prior contract deployment\n@param name refers to a template DataToken name\n@param symbol refers to a template DataToken symbol\n@param minterAddress refers to an address that has minter role\n@param cap the total ERC20 cap\n@param blob data string refering to the resolver for the metadata\n@param feeCollector it is the community fee collector address", + "id": 5312, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5300, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5289, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 5312, + "src": "2564:18:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5288, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2564:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5291, + "name": "symbol", + "nodeType": "VariableDeclaration", + "scope": 5312, + "src": "2592:20:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5290, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2592:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5293, + "name": "minterAddress", + "nodeType": "VariableDeclaration", + "scope": 5312, + "src": "2622:21:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5292, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2622:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5295, + "name": "cap", + "nodeType": "VariableDeclaration", + "scope": 5312, + "src": "2653:11:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5294, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2653:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5297, + "name": "blob", + "nodeType": "VariableDeclaration", + "scope": 5312, + "src": "2674:18:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5296, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2674:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5299, + "name": "feeCollector", + "nodeType": "VariableDeclaration", + "scope": 5312, + "src": "2702:20:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5298, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2702:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2554:174:12" + }, + "returnParameters": { + "id": 5301, + "nodeType": "ParameterList", + "parameters": [], + "src": "2748:0:12" + }, + "scope": 5703, + "src": "2543:369:12", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 5340, + "nodeType": "Block", + "src": "3760:171:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5332, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5314, + "src": "3802:4:12", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + }, + { + "argumentTypes": null, + "id": 5333, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5316, + "src": "3820:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + }, + { + "argumentTypes": null, + "id": 5334, + "name": "minterAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5318, + "src": "3840:13:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5335, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5320, + "src": "3867:3:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5336, + "name": "blob", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5322, + "src": "3884:4:12", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + }, + { + "argumentTypes": null, + "id": 5337, + "name": "feeCollector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5324, + "src": "3902:12:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + }, + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5331, + "name": "_initialize", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5423, + "src": "3777:11:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_address_$returns$_t_bool_$", + "typeString": "function (string memory,string memory,address,uint256,string memory,address) returns (bool)" + } + }, + "id": 5338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3777:147:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 5330, + "id": 5339, + "nodeType": "Return", + "src": "3770:154:12" + } + ] + }, + "documentation": "@dev initialize\n Called prior contract initialization (e.g creating new DataToken instance)\n Calls private _initialize function. Only if contract is not initialized.\n@param name refers to a new DataToken name\n@param symbol refers to a nea DataToken symbol\n@param minterAddress refers to an address that has minter rights\n@param cap the total ERC20 cap\n@param blob data string refering to the resolver for the metadata\n@param feeCollector it is the community fee collector address", + "id": 5341, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 5327, + "modifierName": { + "argumentTypes": null, + "id": 5326, + "name": "onlyNotInitialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5275, + "src": "3715:18:12", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3715:18:12" + } + ], + "name": "initialize", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5325, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5314, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 5341, + "src": "3518:20:12", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5313, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3518:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5316, + "name": "symbol", + "nodeType": "VariableDeclaration", + "scope": 5341, + "src": "3548:22:12", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5315, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3548:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5318, + "name": "minterAddress", + "nodeType": "VariableDeclaration", + "scope": 5341, + "src": "3580:21:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5317, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3580:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5320, + "name": "cap", + "nodeType": "VariableDeclaration", + "scope": 5341, + "src": "3611:11:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5319, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3611:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5322, + "name": "blob", + "nodeType": "VariableDeclaration", + "scope": 5341, + "src": "3632:20:12", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5321, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3632:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5324, + "name": "feeCollector", + "nodeType": "VariableDeclaration", + "scope": 5341, + "src": "3662:20:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5323, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3662:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3508:180:12" + }, + "returnParameters": { + "id": 5330, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5329, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5341, + "src": "3750:4:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5328, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3750:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3749:6:12" + }, + "scope": 5703, + "src": "3489:442:12", + "stateMutability": "nonpayable", + "superFunction": 5000, + "visibility": "external" + }, + { + "body": { + "id": 5422, + "nodeType": "Block", + "src": "4634:743:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5359, + "name": "minterAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5347, + "src": "4665:13:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5361, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4690:1:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5360, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4682:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5362, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4682:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4665:27:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "44617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c20207a65726f2061646472657373", + "id": 5364, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4707:50:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_79b023297db239e06df0b00bacc5eecb1d80c9686a2e70ed8293de6723d3cfa6", + "typeString": "literal_string \"DataTokenTemplate: Invalid minter, zero address\"" + }, + "value": "DataTokenTemplate: Invalid minter, zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_79b023297db239e06df0b00bacc5eecb1d80c9686a2e70ed8293de6723d3cfa6", + "typeString": "literal_string \"DataTokenTemplate: Invalid minter, zero address\"" + } + ], + "id": 5358, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6555, + 6556 + ], + "referencedDeclaration": 6556, + "src": "4644:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4644:123:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5366, + "nodeType": "ExpressionStatement", + "src": "4644:123:12" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5368, + "name": "_minter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5206, + "src": "4799:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5370, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4818:1:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5369, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4810:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5371, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4810:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4799:21:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "44617461546f6b656e54656d706c6174653a20496e76616c6964206d696e7465722c207a65726f2061646472657373", + "id": 5373, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4835:49:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b9b9e16289fbb5851262a16209ee436929da92a7a333eeb45338a6bda1fc88b5", + "typeString": "literal_string \"DataTokenTemplate: Invalid minter, zero address\"" + }, + "value": "DataTokenTemplate: Invalid minter, zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b9b9e16289fbb5851262a16209ee436929da92a7a333eeb45338a6bda1fc88b5", + "typeString": "literal_string \"DataTokenTemplate: Invalid minter, zero address\"" + } + ], + "id": 5367, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6555, + 6556 + ], + "referencedDeclaration": 6556, + "src": "4778:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4778:116:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5375, + "nodeType": "ExpressionStatement", + "src": "4778:116:12" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5377, + "name": "feeCollector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5353, + "src": "4926:12:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5379, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4950:1:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5378, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4942:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5380, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4942:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4926:26:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "44617461546f6b656e54656d706c6174653a20496e76616c696420636f6d6d756e6974792066656520636f6c6c6563746f722c207a65726f2061646472657373", + "id": 5382, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4966:66:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_79b4d95ff9378609f77ba871e4eb20868d893b58fb0b84eff9a61c2168cec2e8", + "typeString": "literal_string \"DataTokenTemplate: Invalid community fee collector, zero address\"" + }, + "value": "DataTokenTemplate: Invalid community fee collector, zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_79b4d95ff9378609f77ba871e4eb20868d893b58fb0b84eff9a61c2168cec2e8", + "typeString": "literal_string \"DataTokenTemplate: Invalid community fee collector, zero address\"" + } + ], + "id": 5376, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6555, + 6556 + ], + "referencedDeclaration": 6556, + "src": "4905:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4905:137:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5384, + "nodeType": "ExpressionStatement", + "src": "4905:137:12" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5386, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5349, + "src": "5074:3:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 5387, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5081:1:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5074:8:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "44617461546f6b656e54656d706c6174653a20496e76616c6964206361702076616c7565", + "id": 5389, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5096:38:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_931eb4f9c6ddf66acc5bb36f4acf3bb199deea0451b189ecfb6b4e252da29b03", + "typeString": "literal_string \"DataTokenTemplate: Invalid cap value\"" + }, + "value": "DataTokenTemplate: Invalid cap value" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_931eb4f9c6ddf66acc5bb36f4acf3bb199deea0451b189ecfb6b4e252da29b03", + "typeString": "literal_string \"DataTokenTemplate: Invalid cap value\"" + } + ], + "id": 5385, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6555, + 6556 + ], + "referencedDeclaration": 6556, + "src": "5053:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5390, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5053:91:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5391, + "nodeType": "ExpressionStatement", + "src": "5053:91:12" + }, + { + "expression": { + "argumentTypes": null, + "id": 5394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5392, + "name": "_cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5196, + "src": "5154:4:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5393, + "name": "cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5349, + "src": "5161:3:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5154:10:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5395, + "nodeType": "ExpressionStatement", + "src": "5154:10:12" + }, + { + "expression": { + "argumentTypes": null, + "id": 5398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5396, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5190, + "src": "5174:5:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5397, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5343, + "src": "5182:4:12", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "5174:12:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 5399, + "nodeType": "ExpressionStatement", + "src": "5174:12:12" + }, + { + "expression": { + "argumentTypes": null, + "id": 5402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5400, + "name": "_blob", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5194, + "src": "5196:5:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5401, + "name": "blob", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5351, + "src": "5204:4:12", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "5196:12:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 5403, + "nodeType": "ExpressionStatement", + "src": "5196:12:12" + }, + { + "expression": { + "argumentTypes": null, + "id": 5406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5404, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5192, + "src": "5218:7:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5405, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5345, + "src": "5228:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "5218:16:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 5407, + "nodeType": "ExpressionStatement", + "src": "5218:16:12" + }, + { + "expression": { + "argumentTypes": null, + "id": 5410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5408, + "name": "_minter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5206, + "src": "5244:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5409, + "name": "minterAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5347, + "src": "5254:13:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5244:23:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5411, + "nodeType": "ExpressionStatement", + "src": "5244:23:12" + }, + { + "expression": { + "argumentTypes": null, + "id": 5414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5412, + "name": "_communityFeeCollector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5201, + "src": "5277:22:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5413, + "name": "feeCollector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5353, + "src": "5302:12:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5277:37:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5415, + "nodeType": "ExpressionStatement", + "src": "5277:37:12" + }, + { + "expression": { + "argumentTypes": null, + "id": 5418, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5416, + "name": "initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5204, + "src": "5324:11:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 5417, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5338:4:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "5324:18:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5419, + "nodeType": "ExpressionStatement", + "src": "5324:18:12" + }, + { + "expression": { + "argumentTypes": null, + "id": 5420, + "name": "initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5204, + "src": "5359:11:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 5357, + "id": 5421, + "nodeType": "Return", + "src": "5352:18:12" + } + ] + }, + "documentation": "@dev _initialize\n Private function called on contract initialization.\n@param name refers to a new DataToken name\n@param symbol refers to a nea DataToken symbol\n@param minterAddress refers to an address that has minter rights\n@param cap the total ERC20 cap\n@param blob data string refering to the resolver for the metadata\n@param feeCollector it is the community fee collector address", + "id": 5423, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_initialize", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5354, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5343, + "name": "name", + "nodeType": "VariableDeclaration", + "scope": 5423, + "src": "4427:18:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5342, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4427:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5345, + "name": "symbol", + "nodeType": "VariableDeclaration", + "scope": 5423, + "src": "4455:20:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5344, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4455:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5347, + "name": "minterAddress", + "nodeType": "VariableDeclaration", + "scope": 5423, + "src": "4485:21:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5346, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4485:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5349, + "name": "cap", + "nodeType": "VariableDeclaration", + "scope": 5423, + "src": "4516:11:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5348, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4516:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5351, + "name": "blob", + "nodeType": "VariableDeclaration", + "scope": 5423, + "src": "4537:18:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5350, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4537:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5353, + "name": "feeCollector", + "nodeType": "VariableDeclaration", + "scope": 5423, + "src": "4565:20:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5352, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4565:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4417:174:12" + }, + "returnParameters": { + "id": 5357, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5356, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5423, + "src": "4624:4:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5355, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4624:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4623:6:12" + }, + "scope": 5703, + "src": "4397:980:12", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "private" + }, + { + "body": { + "id": 5448, + "nodeType": "Block", + "src": "5806:159:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5436, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5427, + "src": "5855:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5433, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6095, + "src": "5837:11:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 5434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5837:13:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 5785, + "src": "5837:17:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 5437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5837:24:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 5438, + "name": "_cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5196, + "src": "5865:4:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5837:32:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "44617461546f6b656e54656d706c6174653a20636170206578636565646564", + "id": 5440, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5884:33:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_db37e28d4a1d757900849adc30f19972d8f520005ecc78e1ba1f3c9b13636ae7", + "typeString": "literal_string \"DataTokenTemplate: cap exceeded\"" + }, + "value": "DataTokenTemplate: cap exceeded" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_db37e28d4a1d757900849adc30f19972d8f520005ecc78e1ba1f3c9b13636ae7", + "typeString": "literal_string \"DataTokenTemplate: cap exceeded\"" + } + ], + "id": 5432, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6555, + 6556 + ], + "referencedDeclaration": 6556, + "src": "5816:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5816:111:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5442, + "nodeType": "ExpressionStatement", + "src": "5816:111:12" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5444, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5425, + "src": "5943:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5445, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5427, + "src": "5952:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5443, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6352, + "src": "5937:5:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 5446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5937:21:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5447, + "nodeType": "ExpressionStatement", + "src": "5937:21:12" + } + ] + }, + "documentation": "@dev mint\n Only the minter address can call it.\n msg.value should be higher than zero and gt or eq minting fee\n@param account refers to an address that token is going to be minted to.\n@param value refers to amount of tokens that is going to be minted.", + "id": 5449, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 5430, + "modifierName": { + "argumentTypes": null, + "id": 5429, + "name": "onlyMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5287, + "src": "5790:10:12", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "5790:10:12" + } + ], + "name": "mint", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5428, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5425, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 5449, + "src": "5717:15:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5424, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5717:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5427, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 5449, + "src": "5742:13:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5426, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5742:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5707:54:12" + }, + "returnParameters": { + "id": 5431, + "nodeType": "ParameterList", + "parameters": [], + "src": "5806:0:12" + }, + "scope": 5703, + "src": "5694:271:12", + "stateMutability": "nonpayable", + "superFunction": 5007, + "visibility": "external" + }, + { + "body": { + "id": 5522, + "nodeType": "Block", + "src": "6532:753:12", + "statements": [ + { + "assignments": [ + 5461 + ], + "declarations": [ + { + "constant": false, + "id": 5461, + "name": "marketFee", + "nodeType": "VariableDeclaration", + "scope": 5522, + "src": "6542:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5460, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6542:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5463, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 5462, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6562:1:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "6542:21:12" + }, + { + "assignments": [ + 5465 + ], + "declarations": [ + { + "constant": false, + "id": 5465, + "name": "communityFee", + "nodeType": "VariableDeclaration", + "scope": 5522, + "src": "6573:20:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5464, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6573:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5470, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5467, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5453, + "src": "6622:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5468, + "name": "BASE_COMMUNITY_FEE_PERCENTAGE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5218, + "src": "6643:29:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5466, + "name": "calculateFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5702, + "src": "6596:12:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 5469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6596:86:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6573:109:12" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5472, + "name": "_communityFeeCollector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5201, + "src": "6701:22:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5473, + "name": "communityFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5465, + "src": "6725:12:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5471, + "name": "transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6126, + "src": "6692:8:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 5474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6692:46:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5475, + "nodeType": "ExpressionStatement", + "src": "6692:46:12" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5476, + "name": "mrktFeeCollector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5457, + "src": "6751:16:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5478, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6779:1:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5477, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6771:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5479, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6771:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "6751:30:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 5494, + "nodeType": "IfStatement", + "src": "6748:217:12", + "trueBody": { + "id": 5493, + "nodeType": "Block", + "src": "6782:183:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5486, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5481, + "name": "marketFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5461, + "src": "6796:9:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5483, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5453, + "src": "6838:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5484, + "name": "BASE_MARKET_FEE_PERCENTAGE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5223, + "src": "6863:26:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5482, + "name": "calculateFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5702, + "src": "6808:12:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 5485, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6808:95:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6796:107:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5487, + "nodeType": "ExpressionStatement", + "src": "6796:107:12" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5489, + "name": "mrktFeeCollector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5457, + "src": "6926:16:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5490, + "name": "marketFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5461, + "src": "6944:9:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5488, + "name": "transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6126, + "src": "6917:8:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 5491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6917:37:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5492, + "nodeType": "ExpressionStatement", + "src": "6917:37:12" + } + ] + } + }, + { + "assignments": [ + 5496 + ], + "declarations": [ + { + "constant": false, + "id": 5496, + "name": "totalFee", + "nodeType": "VariableDeclaration", + "scope": 5522, + "src": "6974:16:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5495, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6974:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5501, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5499, + "name": "marketFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5461, + "src": "7010:9:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5497, + "name": "communityFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5465, + "src": "6993:12:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 5785, + "src": "6993:16:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 5500, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6993:27:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6974:46:12" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5503, + "name": "_minter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5206, + "src": "7039:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5506, + "name": "totalFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5496, + "src": "7059:8:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5504, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5453, + "src": "7048:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 5801, + "src": "7048:10:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 5507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7048:20:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5502, + "name": "transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6126, + "src": "7030:8:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 5508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7030:39:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5509, + "nodeType": "ExpressionStatement", + "src": "7030:39:12" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5511, + "name": "consumer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5451, + "src": "7111:8:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5512, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6552, + "src": "7133:3:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7133:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5514, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5453, + "src": "7157:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5515, + "name": "serviceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5455, + "src": "7177:9:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5516, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6542, + "src": "7200:5:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 5517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7200:15:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5518, + "name": "mrktFeeCollector", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5457, + "src": "7229:16:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5519, + "name": "marketFee", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5461, + "src": "7259:9:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5510, + "name": "OrderStarted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5239, + "src": "7085:12:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256,uint256,uint256,address,uint256)" + } + }, + "id": 5520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7085:193:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5521, + "nodeType": "EmitStatement", + "src": "7080:198:12" + } + ] + }, + "documentation": "@dev startOrder\n called by payer or consumer prior ordering a service consume on a marketplace.\n@param consumer is the consumer address (payer could be different address)\n@param amount refers to amount of tokens that is going to be transfered.\n@param serviceId service index in the metadata\n@param mrktFeeCollector marketplace fee collector", + "id": 5523, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "startOrder", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5458, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5451, + "name": "consumer", + "nodeType": "VariableDeclaration", + "scope": 5523, + "src": "6403:16:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5450, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6403:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5453, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 5523, + "src": "6429:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5452, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6429:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5455, + "name": "serviceId", + "nodeType": "VariableDeclaration", + "scope": 5523, + "src": "6453:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5454, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6453:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5457, + "name": "mrktFeeCollector", + "nodeType": "VariableDeclaration", + "scope": 5523, + "src": "6480:24:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5456, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6480:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6393:117:12" + }, + "returnParameters": { + "id": 5459, + "nodeType": "ParameterList", + "parameters": [], + "src": "6532:0:12" + }, + "scope": 5703, + "src": "6374:911:12", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 5557, + "nodeType": "Block", + "src": "7938:360:12", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5534, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5529, + "src": "7953:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 5535, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7963:1:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7953:11:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 5545, + "nodeType": "IfStatement", + "src": "7948:159:12", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5539, + "name": "consumer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5527, + "src": "8015:8:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5540, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5529, + "src": "8025:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5538, + "name": "transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6126, + "src": "8006:8:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 5541, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8006:26:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "44617461546f6b656e54656d706c6174653a206661696c656420746f2066696e697368206f72646572", + "id": 5542, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8050:43:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5beb845327406b92f3857bb14436e4b6862cb87998aca33ed8309c1bf98b5e76", + "typeString": "literal_string \"DataTokenTemplate: failed to finish order\"" + }, + "value": "DataTokenTemplate: failed to finish order" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5beb845327406b92f3857bb14436e4b6862cb87998aca33ed8309c1bf98b5e76", + "typeString": "literal_string \"DataTokenTemplate: failed to finish order\"" + } + ], + "id": 5537, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6555, + 6556 + ], + "referencedDeclaration": 6556, + "src": "7981:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7981:126:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5544, + "nodeType": "ExpressionStatement", + "src": "7981:126:12" + } + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5547, + "name": "orderTxId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5525, + "src": "8150:9:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 5548, + "name": "consumer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5527, + "src": "8174:8:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5549, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5529, + "src": "8197:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5550, + "name": "serviceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5531, + "src": "8218:9:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5551, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6552, + "src": "8242:3:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8242:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5553, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6542, + "src": "8266:5:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 5554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8266:15:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5546, + "name": "OrderFinished", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5253, + "src": "8123:13:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (bytes32,address,uint256,uint256,address,uint256)" + } + }, + "id": 5555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8123:168:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5556, + "nodeType": "EmitStatement", + "src": "8118:173:12" + } + ] + }, + "documentation": "@dev finishOrder\n called by provider prior completing service delivery only\n if there is a partial or full refund.\n@param orderTxId refers to the transaction Id of startOrder acts \n as a payment reference.\n@param consumer refers to an address that has consumed that service.\n@param amount refers to amount of tokens that is going to be transfered.\n@param serviceId service index in the metadata.", + "id": 5558, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "finishOrder", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5532, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5525, + "name": "orderTxId", + "nodeType": "VariableDeclaration", + "scope": 5558, + "src": "7814:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5524, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7814:7:12", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5527, + "name": "consumer", + "nodeType": "VariableDeclaration", + "scope": 5558, + "src": "7842:16:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5526, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7842:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5529, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 5558, + "src": "7869:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5528, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7869:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5531, + "name": "serviceId", + "nodeType": "VariableDeclaration", + "scope": 5558, + "src": "7893:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5530, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7893:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7804:112:12" + }, + "returnParameters": { + "id": 5533, + "nodeType": "ParameterList", + "parameters": [], + "src": "7938:0:12" + }, + "scope": 5703, + "src": "7784:514:12", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 5575, + "nodeType": "Block", + "src": "8594:136:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5567, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5565, + "name": "_proposedMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5208, + "src": "8604:15:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5566, + "name": "newMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5560, + "src": "8622:9:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8604:27:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5568, + "nodeType": "ExpressionStatement", + "src": "8604:27:12" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5570, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6552, + "src": "8674:3:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5571, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8674:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5572, + "name": "_proposedMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5208, + "src": "8698:15:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5569, + "name": "MinterProposed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5259, + "src": "8646:14:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 5573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8646:77:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5574, + "nodeType": "EmitStatement", + "src": "8641:82:12" + } + ] + }, + "documentation": "@dev proposeMinter\n It proposes a new token minter address.\n Only the current minter can call it.\n@param newMinter refers to a new token minter address.", + "id": 5576, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 5563, + "modifierName": { + "argumentTypes": null, + "id": 5562, + "name": "onlyMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5287, + "src": "8578:10:12", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "8578:10:12" + } + ], + "name": "proposeMinter", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5561, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5560, + "name": "newMinter", + "nodeType": "VariableDeclaration", + "scope": 5576, + "src": "8532:17:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5559, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8532:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8531:19:12" + }, + "returnParameters": { + "id": 5564, + "nodeType": "ParameterList", + "parameters": [], + "src": "8594:0:12" + }, + "scope": 5703, + "src": "8509:221:12", + "stateMutability": "nonpayable", + "superFunction": 5085, + "visibility": "external" + }, + { + "body": { + "id": 5602, + "nodeType": "Block", + "src": "8925:305:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5580, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6552, + "src": "8956:3:12", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8956:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 5582, + "name": "_proposedMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5208, + "src": "8970:15:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "8956:29:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "44617461546f6b656e54656d706c6174653a20696e76616c69642070726f706f736564206d696e7465722061646472657373", + "id": 5584, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8999:52:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7af8769e1ae364fd1070260138caf964484121753b4fb103f09e0f3de065c059", + "typeString": "literal_string \"DataTokenTemplate: invalid proposed minter address\"" + }, + "value": "DataTokenTemplate: invalid proposed minter address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7af8769e1ae364fd1070260138caf964484121753b4fb103f09e0f3de065c059", + "typeString": "literal_string \"DataTokenTemplate: invalid proposed minter address\"" + } + ], + "id": 5579, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 6555, + 6556 + ], + "referencedDeclaration": 6556, + "src": "8935:7:12", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8935:126:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5586, + "nodeType": "ExpressionStatement", + "src": "8935:126:12" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5588, + "name": "_minter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5206, + "src": "9104:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5589, + "name": "_proposedMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5208, + "src": "9125:15:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5587, + "name": "MinterApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5265, + "src": "9076:14:12", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 5590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9076:74:12", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5591, + "nodeType": "EmitStatement", + "src": "9071:79:12" + }, + { + "expression": { + "argumentTypes": null, + "id": 5594, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5592, + "name": "_minter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5206, + "src": "9160:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 5593, + "name": "_proposedMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5208, + "src": "9170:15:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9160:25:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5595, + "nodeType": "ExpressionStatement", + "src": "9160:25:12" + }, + { + "expression": { + "argumentTypes": null, + "id": 5600, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5596, + "name": "_proposedMinter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5208, + "src": "9195:15:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5598, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9221:1:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5597, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9213:7:12", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 5599, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9213:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "9195:28:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 5601, + "nodeType": "ExpressionStatement", + "src": "9195:28:12" + } + ] + }, + "documentation": "@dev approveMinter\n It approves a new token minter address.\n Only the current minter can call it.", + "id": 5603, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approveMinter", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5577, + "nodeType": "ParameterList", + "parameters": [], + "src": "8901:2:12" + }, + "returnParameters": { + "id": 5578, + "nodeType": "ParameterList", + "parameters": [], + "src": "8925:0:12" + }, + "scope": 5703, + "src": "8879:351:12", + "stateMutability": "nonpayable", + "superFunction": 5088, + "visibility": "external" + }, + { + "body": { + "id": 5610, + "nodeType": "Block", + "src": "9392:29:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5608, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5190, + "src": "9409:5:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 5607, + "id": 5609, + "nodeType": "Return", + "src": "9402:12:12" + } + ] + }, + "documentation": "@dev name\n It returns the token name.\n@return DataToken name.", + "id": 5611, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "name", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5604, + "nodeType": "ParameterList", + "parameters": [], + "src": "9352:2:12" + }, + "returnParameters": { + "id": 5607, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5606, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5611, + "src": "9377:13:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5605, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "9377:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9376:15:12" + }, + "scope": 5703, + "src": "9339:82:12", + "stateMutability": "view", + "superFunction": 5017, + "visibility": "external" + }, + { + "body": { + "id": 5618, + "nodeType": "Block", + "src": "9591:31:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5616, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5192, + "src": "9608:7:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 5615, + "id": 5617, + "nodeType": "Return", + "src": "9601:14:12" + } + ] + }, + "documentation": "@dev symbol\n It returns the token symbol.\n@return DataToken symbol.", + "id": 5619, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5612, + "nodeType": "ParameterList", + "parameters": [], + "src": "9551:2:12" + }, + "returnParameters": { + "id": 5615, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5614, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5619, + "src": "9576:13:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5613, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "9576:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9575:15:12" + }, + "scope": 5703, + "src": "9536:86:12", + "stateMutability": "view", + "superFunction": 5022, + "visibility": "external" + }, + { + "body": { + "id": 5626, + "nodeType": "Block", + "src": "9800:29:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5624, + "name": "_blob", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5194, + "src": "9817:5:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 5623, + "id": 5625, + "nodeType": "Return", + "src": "9810:12:12" + } + ] + }, + "documentation": "@dev blob\n It returns the blob (e.g https://123.com).\n@return DataToken blob.", + "id": 5627, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "blob", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5620, + "nodeType": "ParameterList", + "parameters": [], + "src": "9760:2:12" + }, + "returnParameters": { + "id": 5623, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5622, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5627, + "src": "9785:13:12", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5621, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "9785:6:12", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9784:15:12" + }, + "scope": 5703, + "src": "9747:82:12", + "stateMutability": "view", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 5634, + "nodeType": "Block", + "src": "10045:33:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5632, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5199, + "src": "10062:9:12", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 5631, + "id": 5633, + "nodeType": "Return", + "src": "10055:16:12" + } + ] + }, + "documentation": "@dev decimals\n It returns the token decimals.\n how many supported decimal points\n@return DataToken decimals.", + "id": 5635, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "decimals", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5628, + "nodeType": "ParameterList", + "parameters": [], + "src": "10013:2:12" + }, + "returnParameters": { + "id": 5631, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5630, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5635, + "src": "10038:5:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 5629, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "10038:5:12", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10037:7:12" + }, + "scope": 5703, + "src": "9996:82:12", + "stateMutability": "view", + "superFunction": 5027, + "visibility": "external" + }, + { + "body": { + "id": 5642, + "nodeType": "Block", + "src": "10229:28:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5640, + "name": "_cap", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5196, + "src": "10246:4:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5639, + "id": 5641, + "nodeType": "Return", + "src": "10239:11:12" + } + ] + }, + "documentation": "@dev cap\n it returns the capital.\n@return DataToken cap.", + "id": 5643, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "cap", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5636, + "nodeType": "ParameterList", + "parameters": [], + "src": "10194:2:12" + }, + "returnParameters": { + "id": 5639, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5638, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5643, + "src": "10220:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5637, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10220:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10219:9:12" + }, + "scope": 5703, + "src": "10182:75:12", + "stateMutability": "view", + "superFunction": 5032, + "visibility": "external" + }, + { + "body": { + "id": 5655, + "nodeType": "Block", + "src": "10532:44:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5650, + "name": "_minter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5206, + "src": "10550:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 5651, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5645, + "src": "10561:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10550:18:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 5653, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10549:20:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 5649, + "id": 5654, + "nodeType": "Return", + "src": "10542:27:12" + } + ] + }, + "documentation": "@dev isMinter\n It takes the address and checks whether it has a minter role.\n@param account refers to the address.\n@return true if account has a minter role.", + "id": 5656, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isMinter", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5646, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5645, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 5656, + "src": "10487:15:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5644, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10487:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10486:17:12" + }, + "returnParameters": { + "id": 5649, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5648, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5656, + "src": "10526:4:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5647, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10526:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10525:6:12" + }, + "scope": 5703, + "src": "10469:107:12", + "stateMutability": "view", + "superFunction": 5039, + "visibility": "external" + }, + { + "body": { + "id": 5663, + "nodeType": "Block", + "src": "10729:31:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5661, + "name": "_minter", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5206, + "src": "10746:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 5660, + "id": 5662, + "nodeType": "Return", + "src": "10739:14:12" + } + ] + }, + "documentation": "@dev minter\n@return minter's address.", + "id": 5664, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "minter", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5657, + "nodeType": "ParameterList", + "parameters": [], + "src": "10666:2:12" + }, + "returnParameters": { + "id": 5660, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5659, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5664, + "src": "10716:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5658, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10716:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10715:9:12" + }, + "scope": 5703, + "src": "10651:109:12", + "stateMutability": "view", + "superFunction": 5012, + "visibility": "external" + }, + { + "body": { + "id": 5671, + "nodeType": "Block", + "src": "10973:35:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5669, + "name": "initialized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5204, + "src": "10990:11:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 5668, + "id": 5670, + "nodeType": "Return", + "src": "10983:18:12" + } + ] + }, + "documentation": "@dev isInitialized\n It checks whether the contract is initialized.\n@return true if the contract is initialized.", + "id": 5672, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isInitialized", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5665, + "nodeType": "ParameterList", + "parameters": [], + "src": "10942:2:12" + }, + "returnParameters": { + "id": 5668, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5667, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5672, + "src": "10967:4:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 5666, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10967:4:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10966:6:12" + }, + "scope": 5703, + "src": "10920:88:12", + "stateMutability": "view", + "superFunction": 5044, + "visibility": "external" + }, + { + "body": { + "id": 5701, + "nodeType": "Block", + "src": "11392:134:12", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5681, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5674, + "src": "11405:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 5682, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11415:1:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11405:11:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 5686, + "nodeType": "IfStatement", + "src": "11402:24:12", + "trueBody": { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 5684, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11425:1:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 5680, + "id": 5685, + "nodeType": "Return", + "src": "11418:8:12" + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5687, + "name": "feePercentage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5676, + "src": "11439:13:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 5688, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11456:1:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "11439:18:12", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 5692, + "nodeType": "IfStatement", + "src": "11436:31:12", + "trueBody": { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 5690, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11466:1:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 5680, + "id": 5691, + "nodeType": "Return", + "src": "11459:8:12" + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5698, + "name": "BASE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5213, + "src": "11514:4:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5695, + "name": "feePercentage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5676, + "src": "11495:13:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5693, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5674, + "src": "11484:6:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "mul", + "nodeType": "MemberAccess", + "referencedDeclaration": 5862, + "src": "11484:10:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 5696, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11484:25:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5697, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "div", + "nodeType": "MemberAccess", + "referencedDeclaration": 5878, + "src": "11484:29:12", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 5699, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11484:35:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 5680, + "id": 5700, + "nodeType": "Return", + "src": "11477:42:12" + } + ] + }, + "documentation": "@dev calculateFee\n giving a fee percentage, and amount it calculates the actual fee\n@param amount the amount of token\n@param feePercentage the fee percentage \n@return the token fee.", + "id": 5702, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "calculateFee", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 5677, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5674, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 5702, + "src": "11283:14:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5673, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11283:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5676, + "name": "feePercentage", + "nodeType": "VariableDeclaration", + "scope": 5702, + "src": "11307:21:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5675, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11307:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11273:61:12" + }, + "returnParameters": { + "id": 5680, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5679, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 5702, + "src": "11379:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5678, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11379:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11378:9:12" + }, + "scope": 5703, + "src": "11252:274:12", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 5704, + "src": "488:11040:12" + } + ], + "src": "0:11529:12" + }, + "compiler": { + "name": "solc", + "version": "0.5.7+commit.6da8b019.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "3.2.4", + "updatedAt": "2020-10-22T12:03:05.114Z", + "devdoc": { + "details": "DataTokenTemplate is an ERC20 compliant token template Used by the factory contract as a bytecode reference to deploy new DataTokens.", + "methods": { + "allowance(address,address)": { + "details": "See {IERC20-allowance}." + }, + "approve(address,uint256)": { + "details": "See {IERC20-approve}. * Requirements: * - `spender` cannot be the zero address." + }, + "approveMinter()": { + "details": "approveMinter It approves a new token minter address. Only the current minter can call it." + }, + "balanceOf(address)": { + "details": "See {IERC20-balanceOf}." + }, + "blob()": { + "details": "blob It returns the blob (e.g https://123.com).", + "return": "DataToken blob." + }, + "calculateFee(uint256,uint256)": { + "details": "calculateFee giving a fee percentage, and amount it calculates the actual fee", + "params": { + "amount": "the amount of token", + "feePercentage": "the fee percentage " + }, + "return": "the token fee." + }, + "cap()": { + "details": "cap it returns the capital.", + "return": "DataToken cap." + }, + "constructor": { + "details": "constructor Called prior contract deployment", + "params": { + "blob": "data string refering to the resolver for the metadata", + "cap": "the total ERC20 cap", + "feeCollector": "it is the community fee collector address", + "minterAddress": "refers to an address that has minter role", + "name": "refers to a template DataToken name", + "symbol": "refers to a template DataToken symbol" + } + }, + "decimals()": { + "details": "decimals It returns the token decimals. how many supported decimal points", + "return": "DataToken decimals." + }, + "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`." + }, + "finishOrder(bytes32,address,uint256,uint256)": { + "details": "finishOrder called by provider prior completing service delivery only if there is a partial or full refund.", + "params": { + "amount": "refers to amount of tokens that is going to be transfered.", + "consumer": "refers to an address that has consumed that service.", + "orderTxId": "refers to the transaction Id of startOrder acts as a payment reference.", + "serviceId": "service index in the metadata." + } + }, + "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." + }, + "initialize(string,string,address,uint256,string,address)": { + "details": "initialize Called prior contract initialization (e.g creating new DataToken instance) Calls private _initialize function. Only if contract is not initialized.", + "params": { + "blob": "data string refering to the resolver for the metadata", + "cap": "the total ERC20 cap", + "feeCollector": "it is the community fee collector address", + "minterAddress": "refers to an address that has minter rights", + "name": "refers to a new DataToken name", + "symbol": "refers to a nea DataToken symbol" + } + }, + "isInitialized()": { + "details": "isInitialized It checks whether the contract is initialized.", + "return": "true if the contract is initialized." + }, + "isMinter(address)": { + "details": "isMinter It takes the address and checks whether it has a minter role.", + "params": { + "account": "refers to the address." + }, + "return": "true if account has a minter role." + }, + "mint(address,uint256)": { + "details": "mint Only the minter address can call it. msg.value should be higher than zero and gt or eq minting fee", + "params": { + "account": "refers to an address that token is going to be minted to.", + "value": "refers to amount of tokens that is going to be minted." + } + }, + "minter()": { + "details": "minter", + "return": "minter's address." + }, + "name()": { + "details": "name It returns the token name.", + "return": "DataToken name." + }, + "proposeMinter(address)": { + "details": "proposeMinter It proposes a new token minter address. Only the current minter can call it.", + "params": { + "newMinter": "refers to a new token minter address." + } + }, + "startOrder(address,uint256,uint256,address)": { + "details": "startOrder called by payer or consumer prior ordering a service consume on a marketplace.", + "params": { + "amount": "refers to amount of tokens that is going to be transfered.", + "consumer": "is the consumer address (payer could be different address)", + "mrktFeeCollector": "marketplace fee collector", + "serviceId": "service index in the metadata" + } + }, + "symbol()": { + "details": "symbol It returns the token symbol.", + "return": "DataToken symbol." + }, + "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`." + } + }, + "title": "DataTokenTemplate " + }, + "userdoc": { + "methods": {} + } +} \ No newline at end of file diff --git a/schema.graphql b/schema.graphql index 202e68b..4ce8a91 100644 --- a/schema.graphql +++ b/schema.graphql @@ -42,10 +42,8 @@ type Pool @entity { type PoolToken @entity { id: ID! # poolId + token address poolId: Pool! - symbol: String - name: String - decimals: Int! - address: String! + tokenId: Datatoken + address: String balance: BigDecimal! denormWeight: BigDecimal! } @@ -60,8 +58,12 @@ type PoolShare @entity { type User @entity { id: ID! sharesOwned: [PoolShare!] @derivedFrom(field: "userAddress") - txs: [Transaction!] @derivedFrom(field: "userAddress") + tokenBalancesOwned: [TokenBalance!] @derivedFrom(field: "userAddress") + tokensOwned: [Datatoken!] @derivedFrom(field: "minter") + poolTxs: [PoolTransaction!] @derivedFrom(field: "userAddress") + tokenTxs: [TokenTransaction!] @derivedFrom(field: "userAddress") swaps: [Swap!] @derivedFrom(field: "userAddress") + } type Swap @entity { @@ -83,7 +85,7 @@ type Swap @entity { timestamp: Int! } -type Transaction @entity { +type PoolTransaction @entity { id: ID! # Log ID tx: Bytes! event: String @@ -107,6 +109,51 @@ type TokenPrice @entity { poolTokenId: String } +type OceanDatatokens @entity { + id: ID! + tokenCount: Int! # Number of datatokens + datatokens: [Datatoken!] @derivedFrom(field: "factoryID") + txCount: BigInt! # Number of txs +} + +type Datatoken @entity { + id: ID! # token address + factoryID: OceanDatatokens! + symbol: String + name: String + decimals: Int! + address: String! + cap: BigDecimal! + supply: BigDecimal! + minter: User! + publisher: User! + balances: [TokenBalance!] @derivedFrom(field: "datatokenId") + createTime: Int! # Block time datatoken was created + holdersCount: BigInt! # Number of addresses holding a balance of datatoken + tx: Bytes # Datatoken creation transaction id +} + +type TokenBalance @entity { + id: ID! # datatokenId + userAddress + userAddress: User! + datatokenId: Datatoken! + balance: BigDecimal! +} + +type TokenTransaction @entity { + id: ID! # Log ID + tx: Bytes! + event: String + block: Int! + timestamp: Int! + gasUsed: BigDecimal! + gasPrice: BigDecimal! + datatokenAddress: Datatoken + userAddress: User + sender: Bytes + +} + enum SwapType { swapExactAmountIn, swapExactAmountOut, diff --git a/src/mappings/datatoken.ts b/src/mappings/datatoken.ts new file mode 100644 index 0000000..fd38fb8 --- /dev/null +++ b/src/mappings/datatoken.ts @@ -0,0 +1,99 @@ + +import { BigInt, Address, Bytes, store, BigDecimal } from '@graphprotocol/graph-ts' +import { OrderStarted, Transfer } from '../types/templates/Datatoken/Datatoken' +import { Datatoken as DatatokenTemplate } from '../types/templates/Datatoken/Datatoken' +import { log } from '@graphprotocol/graph-ts' + +import { + OceanDatatokens, + Datatoken, PoolShare, Pool, User, TokenBalance +} from '../types/schema' +import { + hexToDecimal, + bigIntToDecimal, + tokenToDecimal, + createTokenBalanceEntity, + updateDatatokenBalance, + saveTransaction, + ZERO_BD, createPoolShareEntity, createUserEntity +} from './helpers' + +/************************************ + ********** Pool Controls *********** + ************************************/ + +export function handleTransfer(event: Transfer): void { + let tokenId = event.address.toHex() + + let ZERO_ADDRESS = '0x0000000000000000000000000000000000000000' + + let isMint = event.params.from.toHex() == ZERO_ADDRESS + let isBurn = event.params.to.toHex() == ZERO_ADDRESS + + let amount = tokenToDecimal(event.params.value.toBigDecimal(), 18) + let tokenShareFrom = event.params.from.toHex() + let tokenShareTo = event.params.to.toHex() + let tokenBalanceFromId = tokenId.concat('-').concat(event.params.from.toHex()) + let tokenBalanceToId = tokenId.concat('-').concat(event.params.to.toHex()) + let tokenBalanceFrom = TokenBalance.load(tokenBalanceFromId) + let tokenBalanceTo = TokenBalance.load(tokenBalanceToId) + let oldBalanceFrom = 0 + let oldBalanceTo = 0 + + let datatoken = Datatoken.load(tokenId) + + if (isMint) { + createTokenBalanceEntity(tokenBalanceToId, tokenId, tokenShareTo) + tokenBalanceTo = TokenBalance.load(tokenBalanceToId) + let user = User.load(tokenShareTo) + oldBalanceTo = tokenBalanceTo.balance + tokenBalanceTo.balance += amount + tokenBalanceTo.save() + datatoken.supply += amount + } else if (isBurn) { + createTokenBalanceEntity(tokenBalanceFromId, tokenId, tokenShareFrom) + tokenBalanceFrom = TokenBalance.load(tokenBalanceFromId) + let user = User.load(tokenShareFrom) + oldBalanceFrom = tokenBalanceFrom.balance + tokenBalanceFrom.balance -= amount + tokenBalanceFrom.save() + datatoken.supply -= amount + } else { + + createTokenBalanceEntity(tokenBalanceFromId, tokenId, tokenShareFrom) + let userFrom = User.load(tokenShareFrom) + tokenBalanceFrom = TokenBalance.load(tokenBalanceFromId) + oldBalanceFrom = tokenBalanceFrom.balance + tokenBalanceFrom.balance -= amount + tokenBalanceFrom.save() + + createTokenBalanceEntity(tokenBalanceToId, tokenId, tokenShareTo) + let userTo = User.load(tokenShareTo) + tokenBalanceTo = TokenBalance.load(tokenBalanceToId) + oldBalanceTo = tokenBalanceTo.balance + tokenBalanceTo.balance += amount + tokenBalanceTo.save() + } + + if ( + tokenBalanceTo !== null + && tokenBalanceTo.balance.notEqual(ZERO_BD) + && oldBalanceTo.equals(ZERO_BD) + ) { + datatoken.holdersCount += BigInt.fromI32(1) + } + + if ( + tokenBalanceFrom !== null + && tokenBalanceFrom.balance.equals(ZERO_BD) + && oldBalanceFrom.notEqual(ZERO_BD) + ) { + datatoken.holdersCount -= BigInt.fromI32(1) + } + + datatoken.save() +} + +export function handleOrderStarted(event: OrderStarted): void { + +} diff --git a/src/mappings/dtfactory.ts b/src/mappings/dtfactory.ts new file mode 100644 index 0000000..1d60608 --- /dev/null +++ b/src/mappings/dtfactory.ts @@ -0,0 +1,35 @@ +import { Address, BigInt, BigDecimal } from '@graphprotocol/graph-ts' +import { TokenRegistered } from '../types/DTFactory/DTFactory' +import { OceanDatatokens, Datatoken } from '../types/schema' +import { Datatoken as DatatokenContract } from '../types/templates' +import { + ZERO_BD, +} from './helpers' +import { log } from '@graphprotocol/graph-ts' + +export function handleNewToken(event: TokenRegistered): void { + let factory = OceanDatatokens.load('1') + + // if no factory yet, set up blank initial + if (factory == null) { + factory = new OceanDatatokens('1') + factory.tokenCount = 0 + factory.txCount = BigInt.fromI32(0) + } + + let datatoken = new Datatoken(event.params.tokenAddress.toHexString()) + log.error('************************ handleNewToken: datatokenId {}', [datatoken.id.toString()]) + datatoken.minter = event.params.registeredBy + datatoken.publisher = event.params.registeredBy + datatoken.supply = ZERO_BD + datatoken.createTime = event.block.timestamp.toI32() + datatoken.holdersCount = BigInt.fromI32(0) + datatoken.factoryID = event.address.toHexString() + datatoken.tx = event.transaction.hash + datatoken.save() + + factory.tokenCount = factory.tokenCount + 1 + factory.save() + + DatatokenContract.create(event.params.tokenAddress) +} \ No newline at end of file diff --git a/src/mappings/helpers.ts b/src/mappings/helpers.ts index 65e2c86..f31c837 100644 --- a/src/mappings/helpers.ts +++ b/src/mappings/helpers.ts @@ -7,13 +7,13 @@ import { ethereum } from '@graphprotocol/graph-ts' import { - Pool, - User, - PoolToken, - PoolShare, - TokenPrice, - Transaction, - OceanPools + Pool, + User, + PoolToken, + PoolShare, + TokenPrice, + Transaction, + OceanPools, Datatoken, TokenBalance } from '../types/schema' import { BToken } from '../types/templates/Pool/BToken' import { log } from '@graphprotocol/graph-ts' @@ -55,51 +55,12 @@ export function createPoolShareEntity(id: string, pool: string, user: string): v } export function createPoolTokenEntity(id: string, pool: string, address: string): void { - let token = BToken.bind(Address.fromString(address)) - let symbol = '' - let name = '' - let decimals = 18 - - // COMMENT THE LINES BELOW OUT FOR LOCAL DEV ON KOVAN - let symbolCall = token.try_symbol() - let nameCall = token.try_name() - - if (!symbolCall.reverted) { - symbol = symbolCall.value - } - - if (!nameCall.reverted) { - name = nameCall.value - } - - // COMMENT THE LINES ABOVE OUT FOR LOCAL DEV ON KOVAN - - // !!! COMMENT THE LINES BELOW OUT FOR NON-LOCAL DEPLOYMENT - // This code allows Symbols to be added when testing on local Kovan - /* - if(address == '0xd0a1e359811322d97991e03f863a0c30c2cf029c') - symbol = 'WETH'; - else if(address == '0x1528f3fcc26d13f7079325fb78d9442607781c8c') - symbol = 'DAI' - else if(address == '0xef13c0c8abcaf5767160018d268f9697ae4f5375') - symbol = 'MKR' - else if(address == '0x2f375e94fc336cdec2dc0ccb5277fe59cbf1cae5') - symbol = 'USDC' - else if(address == '0x1f1f156e0317167c11aa412e3d1435ea29dc3cce') - symbol = 'BAT' - else if(address == '0x86436bce20258a6dcfe48c9512d4d49a30c4d8c4') - symbol = 'SNX' - else if(address == '0x8c9e6c40d3402480ace624730524facc5482798c') - symbol = 'REP' - */ - // !!! COMMENT THE LINES ABOVE OUT FOR NON-LOCAL DEPLOYMENT + let datatoken = Datatoken.load(address) let poolToken = new PoolToken(id) poolToken.poolId = pool + poolToken.tokenId = datatoken ? datatoken.id: null poolToken.address = address - poolToken.name = name - poolToken.symbol = symbol - poolToken.decimals = decimals poolToken.balance = ZERO_BD poolToken.denormWeight = ZERO_BD poolToken.save() @@ -110,30 +71,27 @@ export function updatePoolLiquidity(id: string): void { let tokensList: Array = pool.tokensList if (!tokensList || pool.tokensCount.lt(BigInt.fromI32(2)) || !pool.publicSwap) return + if (tokensList[0] != Address.fromString(OCEAN)) return // Find pool liquidity let hasPrice = false let hasOceanPrice = false - let poolLiquidity = ZERO_BD + let poolOcnLiquidity = ZERO_BD + let poolDTLiquidity = ZERO_BD + + let oceanPoolTokenId = id.concat('-').concat(OCEAN) + let oceanPoolToken = PoolToken.load(oceanPoolTokenId) + poolOcnLiquidity = oceanPoolToken.balance.div(oceanPoolToken.denormWeight).times(pool.totalWeight) + let DT = tokensList[1].toHexString() + let dtTokenPrice = TokenPrice.load(DT) + if (dtTokenPrice !== null) { + let poolTokenId = id.concat('-').concat(DT) + let poolToken = PoolToken.load(poolTokenId) + poolDTLiquidity = wethTokenPrice.price.times(poolToken.balance).div(poolToken.denormWeight).times(pool.totalWeight) + hasPrice = true + } - // if (tokensList.includes(Address.fromString(OCEAN))) { - // let oceanPoolTokenId = id.concat('-').concat(OCEAN) - // let oceanPoolToken = PoolToken.load(oceanPoolTokenId) - // poolLiquidity = oceanPoolToken.balance.div(oceanPoolToken.denormWeight).times(pool.totalWeight) - // hasPrice = true - // hasOceanPrice = true - // } else { - // let DT = tokensList[1].toHexString() - // let dtTokenPrice = TokenPrice.load(DT) - // if (dtTokenPrice !== null) { - // let poolTokenId = id.concat('-').concat(DT) - // let poolToken = PoolToken.load(poolTokenId) - // poolLiquidity = wethTokenPrice.price.times(poolToken.balance).div(poolToken.denormWeight).times(pool.totalWeight) - // hasPrice = true - // } - // } - // // // Create or update token price // // if (hasPrice) { @@ -228,3 +186,18 @@ export function createUserEntity(address: string): void { user.save() } } + +export function createTokenBalanceEntity(id: string, token: string, user: string): void { + if (TokenBalance.load(id) != null) return + + let tokenBalance = new TokenBalance(id) + createUserEntity(user) + tokenBalance.userAddress = user + tokenBalance.datatokenId = token + tokenBalance.balance = ZERO_BD + tokenBalance.save() +} + +export function updateDatatokenBalance(): void { + +} \ No newline at end of file diff --git a/src/mappings/pool.ts b/src/mappings/pool.ts index fefbaf3..de9eccf 100644 --- a/src/mappings/pool.ts +++ b/src/mappings/pool.ts @@ -1,16 +1,16 @@ import { BigInt, Address, Bytes, store, BigDecimal } from '@graphprotocol/graph-ts' -import { LOG_CALL, LOG_JOIN, LOG_EXIT, LOG_SWAP, Transfer, GulpCall } from '../types/templates/Pool/Pool' +import { LOG_CALL, LOG_JOIN, LOG_EXIT, LOG_SWAP, Transfer } from '../types/templates/Pool/Pool' import { Pool as BPool } from '../types/templates/Pool/Pool' import { log } from '@graphprotocol/graph-ts' import { - OceanPools, - Pool, - PoolToken, - PoolShare, - Swap, - TokenPrice + OceanPools, + Pool, + PoolToken, + PoolShare, + Swap, + TokenPrice, Datatoken } from '../types/schema' import { hexToDecimal, @@ -136,7 +136,9 @@ export function _handleRebind(event: LOG_CALL, poolId: string, tokenAddress: str } } - let balance = hexToDecimal(balanceStr, poolToken.decimals) + let datatoken = poolToken.tokenId != null ? Datatoken.load(poolToken.tokenId) : null + let decimals = datatoken == null ? BigInt.fromI32(18).toI32() : datatoken.decimals + let balance = hexToDecimal(balanceStr, decimals) poolToken.balance = balance poolToken.denormWeight = denormWeight @@ -182,8 +184,9 @@ export function handleJoinPool(event: LOG_JOIN): void { if (!poolToken) { return } - poolToken.decimals = BigInt.fromI32(18).toI32() - let tokenAmountIn = tokenToDecimal(event.params.tokenAmountIn.toBigDecimal(), poolToken.decimals) + let datatoken = poolToken.tokenId != null ? Datatoken.load(poolToken.tokenId) : null + let decimals = datatoken == null ? BigInt.fromI32(18).toI32() : datatoken.decimals + let tokenAmountIn = tokenToDecimal(event.params.tokenAmountIn.toBigDecimal(), decimals) poolToken.balance = poolToken.balance.plus(tokenAmountIn) poolToken.save() @@ -200,7 +203,9 @@ export function handleExitPool(event: LOG_EXIT): void { if (!poolToken) { return } - let tokenAmountOut = tokenToDecimal(event.params.tokenAmountOut.toBigDecimal(), poolToken.decimals) + let datatoken = poolToken.tokenId != null ? Datatoken.load(poolToken.tokenId) : null + let decimals = datatoken == null ? BigInt.fromI32(18).toI32() : datatoken.decimals + let tokenAmountOut = tokenToDecimal(event.params.tokenAmountOut.toBigDecimal(), decimals) let newAmount = poolToken.balance.minus(tokenAmountOut) poolToken.balance = newAmount poolToken.save() diff --git a/subgraph.yaml b/subgraph.yaml index a7c2834..c6bec21 100644 --- a/subgraph.yaml +++ b/subgraph.yaml @@ -24,6 +24,26 @@ dataSources: eventHandlers: - event: BPoolRegistered(address,indexed address) handler: handleNewPool + - kind: ethereum/contract + name: DTFactory + network: mainnet + source: + address: "0x57317f97E9EA49eBd19f7c9bB7c180b8cDcbDeB9" + abi: DTFactory + startBlock: 11105560 + mapping: + kind: ethereum/events + apiVersion: 0.0.4 + language: wasm/assemblyscript + file: ./src/mappings/dtfactory.ts + entities: + - OceanDatatokens + abis: + - name: DTFactory + file: ./abis/DTFactory.json + eventHandlers: + - event: TokenRegistered(indexed address,string,string,uint256,indexed address,indexed string) + handler: handleNewToken templates: - kind: ethereum/contract name: Pool @@ -73,4 +93,26 @@ templates: - event: LOG_SWAP(indexed address,indexed address,indexed address,uint256,uint256) handler: handleSwap - event: Transfer(indexed address,indexed address,uint256) - handler: handleTransfer \ No newline at end of file + handler: handleTransfer + + - kind: ethereum/contract + name: Datatoken + network: mainnet + source: + abi: Datatoken + mapping: + kind: ethereum/events + apiVersion: 0.0.4 + language: wasm/assemblyscript + file: ./src/mappings/datatoken.ts + entities: + - Datatoken + - OceanDatatokens + abis: + - name: Datatoken + file: ./abis/DataTokenTemplate.json + eventHandlers: + - event: Transfer(indexed address,indexed address,uint256) + handler: handleTransfer + - event: OrderStarted(indexed address,indexed address,uint256,uint256,uint256,indexed address,uint256) + handler: handleOrderStarted