ocean-subgraph/abis/DTFactory.json

4528 lines
200 KiB
JSON

{
"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": {}
}
}