2725 lines
110 KiB
JSON
2725 lines
110 KiB
JSON
{
|
|
"contractName": "RBAC",
|
|
"abi": [
|
|
{
|
|
"anonymous": false,
|
|
"inputs": [
|
|
{
|
|
"indexed": false,
|
|
"name": "addr",
|
|
"type": "address"
|
|
},
|
|
{
|
|
"indexed": false,
|
|
"name": "roleName",
|
|
"type": "string"
|
|
}
|
|
],
|
|
"name": "RoleAdded",
|
|
"type": "event"
|
|
},
|
|
{
|
|
"anonymous": false,
|
|
"inputs": [
|
|
{
|
|
"indexed": false,
|
|
"name": "addr",
|
|
"type": "address"
|
|
},
|
|
{
|
|
"indexed": false,
|
|
"name": "roleName",
|
|
"type": "string"
|
|
}
|
|
],
|
|
"name": "RoleRemoved",
|
|
"type": "event"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{
|
|
"name": "addr",
|
|
"type": "address"
|
|
},
|
|
{
|
|
"name": "roleName",
|
|
"type": "string"
|
|
}
|
|
],
|
|
"name": "checkRole",
|
|
"outputs": [],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [
|
|
{
|
|
"name": "addr",
|
|
"type": "address"
|
|
},
|
|
{
|
|
"name": "roleName",
|
|
"type": "string"
|
|
}
|
|
],
|
|
"name": "hasRole",
|
|
"outputs": [
|
|
{
|
|
"name": "",
|
|
"type": "bool"
|
|
}
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
}
|
|
],
|
|
"bytecode": "0x608060405234801561001057600080fd5b50610321806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630988ca8c14610051578063217fe6c6146100da575b600080fd5b34801561005d57600080fd5b506100d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061017b565b005b3480156100e657600080fd5b50610161600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506101fc565b604051808215151515815260200191505060405180910390f35b6101f8826000836040518082805190602001908083835b6020831015156101b75780518252602082019150602081019050602083039250610192565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902061028390919063ffffffff16565b5050565b600061027b836000846040518082805190602001908083835b60208310151561023a5780518252602082019150602081019050602083039250610215565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902061029c90919063ffffffff16565b905092915050565b61028d828261029c565b151561029857600080fd5b5050565b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050929150505600a165627a7a72305820dcb30cdb6200f124a4b0d91e3a8f8f8efa36df91917a18805ae38ab15f85ce940029",
|
|
"deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630988ca8c14610051578063217fe6c6146100da575b600080fd5b34801561005d57600080fd5b506100d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061017b565b005b3480156100e657600080fd5b50610161600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506101fc565b604051808215151515815260200191505060405180910390f35b6101f8826000836040518082805190602001908083835b6020831015156101b75780518252602082019150602081019050602083039250610192565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902061028390919063ffffffff16565b5050565b600061027b836000846040518082805190602001908083835b60208310151561023a5780518252602082019150602081019050602083039250610215565b6001836020036101000a038019825116818451168082178552505050505050905001915050908152602001604051809103902061029c90919063ffffffff16565b905092915050565b61028d828261029c565b151561029857600080fd5b5050565b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050929150505600a165627a7a72305820dcb30cdb6200f124a4b0d91e3a8f8f8efa36df91917a18805ae38ab15f85ce940029",
|
|
"sourceMap": "600:2135:26:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;600:2135:26;;;;;;;",
|
|
"deployedSourceMap": "600:2135:26:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;941:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;941:110:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1189:132;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1189:132:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;941:110;1019:27;1041:4;1019:5;1025:8;1019:15;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;1019:15:26;;;;;;;;;;;;;;;;;;;;;:21;;:27;;;;:::i;:::-;941:110;;:::o;1189:132::-;1270:4;1291:25;1311:4;1291:5;1297:8;1291:15;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;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;;;1291:15:26;;;;;;;;;;;;;;;;;;;;;:19;;:25;;;;:::i;:::-;1284:32;;1189:132;;;;:::o;663:107:28:-;749:15;753:4;759;749:3;:15::i;:::-;741:24;;;;;;;;663:107;;:::o;848:124::-;929:4;950;:11;;:17;962:4;950:17;;;;;;;;;;;;;;;;;;;;;;;;;943:24;;848:124;;;;:::o",
|
|
"source": "pragma solidity ^0.4.21;\n\nimport \"./Roles.sol\";\n\n\n/**\n * @title RBAC (Role-Based Access Control)\n * @author Matt Condon (@Shrugs)\n * @dev Stores and provides setters and getters for roles and addresses.\n * @dev Supports unlimited numbers of roles and addresses.\n * @dev See //contracts/mocks/RBACMock.sol for an example of usage.\n * This RBAC method uses strings to key roles. It may be beneficial\n * for you to write your own implementation of this interface using Enums or similar.\n * It's also recommended that you define constants in the contract, like ROLE_ADMIN below,\n * to avoid typos.\n */\ncontract RBAC {\n using Roles for Roles.Role;\n\n mapping (string => Roles.Role) private roles;\n\n event RoleAdded(address addr, string roleName);\n event RoleRemoved(address addr, string roleName);\n\n /**\n * @dev reverts if addr does not have role\n * @param addr address\n * @param roleName the name of the role\n * // reverts\n */\n function checkRole(address addr, string roleName)\n view\n public\n {\n roles[roleName].check(addr);\n }\n\n /**\n * @dev determine if addr has role\n * @param addr address\n * @param roleName the name of the role\n * @return bool\n */\n function hasRole(address addr, string roleName)\n view\n public\n returns (bool)\n {\n return roles[roleName].has(addr);\n }\n\n /**\n * @dev add a role to an address\n * @param addr address\n * @param roleName the name of the role\n */\n function addRole(address addr, string roleName)\n internal\n {\n roles[roleName].add(addr);\n emit RoleAdded(addr, roleName);\n }\n\n /**\n * @dev remove a role from an address\n * @param addr address\n * @param roleName the name of the role\n */\n function removeRole(address addr, string roleName)\n internal\n {\n roles[roleName].remove(addr);\n emit RoleRemoved(addr, roleName);\n }\n\n /**\n * @dev modifier to scope access to a single role (uses msg.sender as addr)\n * @param roleName the name of the role\n * // reverts\n */\n modifier onlyRole(string roleName)\n {\n checkRole(msg.sender, roleName);\n _;\n }\n\n /**\n * @dev modifier to scope access to a set of roles (uses msg.sender as addr)\n * @param roleNames the names of the roles to scope access to\n * // reverts\n *\n * @TODO - when solidity supports dynamic arrays as arguments to modifiers, provide this\n * see: https://github.com/ethereum/solidity/issues/2467\n */\n // modifier onlyRoles(string[] roleNames) {\n // bool hasAnyRole = false;\n // for (uint8 i = 0; i < roleNames.length; i++) {\n // if (hasRole(msg.sender, roleNames[i])) {\n // hasAnyRole = true;\n // break;\n // }\n // }\n\n // require(hasAnyRole);\n\n // _;\n // }\n}\n",
|
|
"sourcePath": "/home/spalladino/Projects/openzeppelin-zos/contracts/ownership/rbac/RBAC.sol",
|
|
"ast": {
|
|
"absolutePath": "/home/spalladino/Projects/openzeppelin-zos/contracts/ownership/rbac/RBAC.sol",
|
|
"exportedSymbols": {
|
|
"RBAC": [
|
|
1687
|
|
]
|
|
},
|
|
"id": 1688,
|
|
"nodeType": "SourceUnit",
|
|
"nodes": [
|
|
{
|
|
"id": 1582,
|
|
"literals": [
|
|
"solidity",
|
|
"^",
|
|
"0.4",
|
|
".21"
|
|
],
|
|
"nodeType": "PragmaDirective",
|
|
"src": "0:24:26"
|
|
},
|
|
{
|
|
"absolutePath": "/home/spalladino/Projects/openzeppelin-zos/contracts/ownership/rbac/Roles.sol",
|
|
"file": "./Roles.sol",
|
|
"id": 1583,
|
|
"nodeType": "ImportDirective",
|
|
"scope": 1688,
|
|
"sourceUnit": 1825,
|
|
"src": "26:21:26",
|
|
"symbolAliases": [],
|
|
"unitAlias": ""
|
|
},
|
|
{
|
|
"baseContracts": [],
|
|
"contractDependencies": [],
|
|
"contractKind": "contract",
|
|
"documentation": "@title RBAC (Role-Based Access Control)\n@author Matt Condon (@Shrugs)\n@dev Stores and provides setters and getters for roles and addresses.\n@dev Supports unlimited numbers of roles and addresses.\n@dev See //contracts/mocks/RBACMock.sol for an example of usage.\nThis RBAC method uses strings to key roles. It may be beneficial\n for you to write your own implementation of this interface using Enums or similar.\nIt's also recommended that you define constants in the contract, like ROLE_ADMIN below,\n to avoid typos.",
|
|
"fullyImplemented": true,
|
|
"id": 1687,
|
|
"linearizedBaseContracts": [
|
|
1687
|
|
],
|
|
"name": "RBAC",
|
|
"nodeType": "ContractDefinition",
|
|
"nodes": [
|
|
{
|
|
"id": 1586,
|
|
"libraryName": {
|
|
"contractScope": null,
|
|
"id": 1584,
|
|
"name": "Roles",
|
|
"nodeType": "UserDefinedTypeName",
|
|
"referencedDeclaration": 1824,
|
|
"src": "624:5:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_contract$_Roles_$1824",
|
|
"typeString": "library Roles"
|
|
}
|
|
},
|
|
"nodeType": "UsingForDirective",
|
|
"src": "618:27:26",
|
|
"typeName": {
|
|
"contractScope": null,
|
|
"id": 1585,
|
|
"name": "Roles.Role",
|
|
"nodeType": "UserDefinedTypeName",
|
|
"referencedDeclaration": 1761,
|
|
"src": "634:10:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_struct$_Role_$1761_storage_ptr",
|
|
"typeString": "struct Roles.Role"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"constant": false,
|
|
"id": 1590,
|
|
"name": "roles",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1687,
|
|
"src": "649:44:26",
|
|
"stateVariable": true,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Role_$1761_storage_$",
|
|
"typeString": "mapping(string => struct Roles.Role)"
|
|
},
|
|
"typeName": {
|
|
"id": 1589,
|
|
"keyType": {
|
|
"id": 1587,
|
|
"name": "string",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "658:6:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_storage_ptr",
|
|
"typeString": "string"
|
|
}
|
|
},
|
|
"nodeType": "Mapping",
|
|
"src": "649:30:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Role_$1761_storage_$",
|
|
"typeString": "mapping(string => struct Roles.Role)"
|
|
},
|
|
"valueType": {
|
|
"contractScope": null,
|
|
"id": 1588,
|
|
"name": "Roles.Role",
|
|
"nodeType": "UserDefinedTypeName",
|
|
"referencedDeclaration": 1761,
|
|
"src": "668:10:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_struct$_Role_$1761_storage_ptr",
|
|
"typeString": "struct Roles.Role"
|
|
}
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "private"
|
|
},
|
|
{
|
|
"anonymous": false,
|
|
"documentation": null,
|
|
"id": 1596,
|
|
"name": "RoleAdded",
|
|
"nodeType": "EventDefinition",
|
|
"parameters": {
|
|
"id": 1595,
|
|
"nodeType": "ParameterList",
|
|
"parameters": [
|
|
{
|
|
"constant": false,
|
|
"id": 1592,
|
|
"indexed": false,
|
|
"name": "addr",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1596,
|
|
"src": "714:12:26",
|
|
"stateVariable": false,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
},
|
|
"typeName": {
|
|
"id": 1591,
|
|
"name": "address",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "714:7:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "internal"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"id": 1594,
|
|
"indexed": false,
|
|
"name": "roleName",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1596,
|
|
"src": "728:15:26",
|
|
"stateVariable": false,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string"
|
|
},
|
|
"typeName": {
|
|
"id": 1593,
|
|
"name": "string",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "728:6:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_storage_ptr",
|
|
"typeString": "string"
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "internal"
|
|
}
|
|
],
|
|
"src": "713:31:26"
|
|
},
|
|
"src": "698:47:26"
|
|
},
|
|
{
|
|
"anonymous": false,
|
|
"documentation": null,
|
|
"id": 1602,
|
|
"name": "RoleRemoved",
|
|
"nodeType": "EventDefinition",
|
|
"parameters": {
|
|
"id": 1601,
|
|
"nodeType": "ParameterList",
|
|
"parameters": [
|
|
{
|
|
"constant": false,
|
|
"id": 1598,
|
|
"indexed": false,
|
|
"name": "addr",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1602,
|
|
"src": "766:12:26",
|
|
"stateVariable": false,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
},
|
|
"typeName": {
|
|
"id": 1597,
|
|
"name": "address",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "766:7:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "internal"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"id": 1600,
|
|
"indexed": false,
|
|
"name": "roleName",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1602,
|
|
"src": "780:15:26",
|
|
"stateVariable": false,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string"
|
|
},
|
|
"typeName": {
|
|
"id": 1599,
|
|
"name": "string",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "780:6:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_storage_ptr",
|
|
"typeString": "string"
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "internal"
|
|
}
|
|
],
|
|
"src": "765:31:26"
|
|
},
|
|
"src": "748:49:26"
|
|
},
|
|
{
|
|
"body": {
|
|
"id": 1616,
|
|
"nodeType": "Block",
|
|
"src": "1013:38:26",
|
|
"statements": [
|
|
{
|
|
"expression": {
|
|
"argumentTypes": null,
|
|
"arguments": [
|
|
{
|
|
"argumentTypes": null,
|
|
"id": 1613,
|
|
"name": "addr",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1604,
|
|
"src": "1041:4:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
}
|
|
],
|
|
"expression": {
|
|
"argumentTypes": [
|
|
{
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
],
|
|
"expression": {
|
|
"argumentTypes": null,
|
|
"baseExpression": {
|
|
"argumentTypes": null,
|
|
"id": 1609,
|
|
"name": "roles",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1590,
|
|
"src": "1019:5:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Role_$1761_storage_$",
|
|
"typeString": "mapping(string memory => struct Roles.Role storage ref)"
|
|
}
|
|
},
|
|
"id": 1611,
|
|
"indexExpression": {
|
|
"argumentTypes": null,
|
|
"id": 1610,
|
|
"name": "roleName",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1606,
|
|
"src": "1025:8:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string memory"
|
|
}
|
|
},
|
|
"isConstant": false,
|
|
"isLValue": true,
|
|
"isPure": false,
|
|
"lValueRequested": false,
|
|
"nodeType": "IndexAccess",
|
|
"src": "1019:15:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_struct$_Role_$1761_storage",
|
|
"typeString": "struct Roles.Role storage ref"
|
|
}
|
|
},
|
|
"id": 1612,
|
|
"isConstant": false,
|
|
"isLValue": true,
|
|
"isPure": false,
|
|
"lValueRequested": false,
|
|
"memberName": "check",
|
|
"nodeType": "MemberAccess",
|
|
"referencedDeclaration": 1808,
|
|
"src": "1019:21:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1761_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1761_storage_ptr_$",
|
|
"typeString": "function (struct Roles.Role storage pointer,address) view"
|
|
}
|
|
},
|
|
"id": 1614,
|
|
"isConstant": false,
|
|
"isLValue": false,
|
|
"isPure": false,
|
|
"kind": "functionCall",
|
|
"lValueRequested": false,
|
|
"names": [],
|
|
"nodeType": "FunctionCall",
|
|
"src": "1019:27:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_tuple$__$",
|
|
"typeString": "tuple()"
|
|
}
|
|
},
|
|
"id": 1615,
|
|
"nodeType": "ExpressionStatement",
|
|
"src": "1019:27:26"
|
|
}
|
|
]
|
|
},
|
|
"documentation": "@dev reverts if addr does not have role\n@param addr address\n@param roleName the name of the role\n// reverts",
|
|
"id": 1617,
|
|
"implemented": true,
|
|
"isConstructor": false,
|
|
"isDeclaredConst": true,
|
|
"modifiers": [],
|
|
"name": "checkRole",
|
|
"nodeType": "FunctionDefinition",
|
|
"parameters": {
|
|
"id": 1607,
|
|
"nodeType": "ParameterList",
|
|
"parameters": [
|
|
{
|
|
"constant": false,
|
|
"id": 1604,
|
|
"name": "addr",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1617,
|
|
"src": "960:12:26",
|
|
"stateVariable": false,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
},
|
|
"typeName": {
|
|
"id": 1603,
|
|
"name": "address",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "960:7:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "internal"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"id": 1606,
|
|
"name": "roleName",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1617,
|
|
"src": "974:15:26",
|
|
"stateVariable": false,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string"
|
|
},
|
|
"typeName": {
|
|
"id": 1605,
|
|
"name": "string",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "974:6:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_storage_ptr",
|
|
"typeString": "string"
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "internal"
|
|
}
|
|
],
|
|
"src": "959:31:26"
|
|
},
|
|
"payable": false,
|
|
"returnParameters": {
|
|
"id": 1608,
|
|
"nodeType": "ParameterList",
|
|
"parameters": [],
|
|
"src": "1013:0:26"
|
|
},
|
|
"scope": 1687,
|
|
"src": "941:110:26",
|
|
"stateMutability": "view",
|
|
"superFunction": null,
|
|
"visibility": "public"
|
|
},
|
|
{
|
|
"body": {
|
|
"id": 1633,
|
|
"nodeType": "Block",
|
|
"src": "1278:43:26",
|
|
"statements": [
|
|
{
|
|
"expression": {
|
|
"argumentTypes": null,
|
|
"arguments": [
|
|
{
|
|
"argumentTypes": null,
|
|
"id": 1630,
|
|
"name": "addr",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1619,
|
|
"src": "1311:4:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
}
|
|
],
|
|
"expression": {
|
|
"argumentTypes": [
|
|
{
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
],
|
|
"expression": {
|
|
"argumentTypes": null,
|
|
"baseExpression": {
|
|
"argumentTypes": null,
|
|
"id": 1626,
|
|
"name": "roles",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1590,
|
|
"src": "1291:5:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Role_$1761_storage_$",
|
|
"typeString": "mapping(string memory => struct Roles.Role storage ref)"
|
|
}
|
|
},
|
|
"id": 1628,
|
|
"indexExpression": {
|
|
"argumentTypes": null,
|
|
"id": 1627,
|
|
"name": "roleName",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1621,
|
|
"src": "1297:8:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string memory"
|
|
}
|
|
},
|
|
"isConstant": false,
|
|
"isLValue": true,
|
|
"isPure": false,
|
|
"lValueRequested": false,
|
|
"nodeType": "IndexAccess",
|
|
"src": "1291:15:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_struct$_Role_$1761_storage",
|
|
"typeString": "struct Roles.Role storage ref"
|
|
}
|
|
},
|
|
"id": 1629,
|
|
"isConstant": false,
|
|
"isLValue": true,
|
|
"isPure": false,
|
|
"lValueRequested": false,
|
|
"memberName": "has",
|
|
"nodeType": "MemberAccess",
|
|
"referencedDeclaration": 1823,
|
|
"src": "1291:19:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1761_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1761_storage_ptr_$",
|
|
"typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)"
|
|
}
|
|
},
|
|
"id": 1631,
|
|
"isConstant": false,
|
|
"isLValue": false,
|
|
"isPure": false,
|
|
"kind": "functionCall",
|
|
"lValueRequested": false,
|
|
"names": [],
|
|
"nodeType": "FunctionCall",
|
|
"src": "1291:25:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_bool",
|
|
"typeString": "bool"
|
|
}
|
|
},
|
|
"functionReturnParameters": 1625,
|
|
"id": 1632,
|
|
"nodeType": "Return",
|
|
"src": "1284:32:26"
|
|
}
|
|
]
|
|
},
|
|
"documentation": "@dev determine if addr has role\n@param addr address\n@param roleName the name of the role\n@return bool",
|
|
"id": 1634,
|
|
"implemented": true,
|
|
"isConstructor": false,
|
|
"isDeclaredConst": true,
|
|
"modifiers": [],
|
|
"name": "hasRole",
|
|
"nodeType": "FunctionDefinition",
|
|
"parameters": {
|
|
"id": 1622,
|
|
"nodeType": "ParameterList",
|
|
"parameters": [
|
|
{
|
|
"constant": false,
|
|
"id": 1619,
|
|
"name": "addr",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1634,
|
|
"src": "1206:12:26",
|
|
"stateVariable": false,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
},
|
|
"typeName": {
|
|
"id": 1618,
|
|
"name": "address",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "1206:7:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "internal"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"id": 1621,
|
|
"name": "roleName",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1634,
|
|
"src": "1220:15:26",
|
|
"stateVariable": false,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string"
|
|
},
|
|
"typeName": {
|
|
"id": 1620,
|
|
"name": "string",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "1220:6:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_storage_ptr",
|
|
"typeString": "string"
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "internal"
|
|
}
|
|
],
|
|
"src": "1205:31:26"
|
|
},
|
|
"payable": false,
|
|
"returnParameters": {
|
|
"id": 1625,
|
|
"nodeType": "ParameterList",
|
|
"parameters": [
|
|
{
|
|
"constant": false,
|
|
"id": 1624,
|
|
"name": "",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1634,
|
|
"src": "1270:4:26",
|
|
"stateVariable": false,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_bool",
|
|
"typeString": "bool"
|
|
},
|
|
"typeName": {
|
|
"id": 1623,
|
|
"name": "bool",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "1270:4:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_bool",
|
|
"typeString": "bool"
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "internal"
|
|
}
|
|
],
|
|
"src": "1269:6:26"
|
|
},
|
|
"scope": 1687,
|
|
"src": "1189:132:26",
|
|
"stateMutability": "view",
|
|
"superFunction": null,
|
|
"visibility": "public"
|
|
},
|
|
{
|
|
"body": {
|
|
"id": 1653,
|
|
"nodeType": "Block",
|
|
"src": "1502:72:26",
|
|
"statements": [
|
|
{
|
|
"expression": {
|
|
"argumentTypes": null,
|
|
"arguments": [
|
|
{
|
|
"argumentTypes": null,
|
|
"id": 1645,
|
|
"name": "addr",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1636,
|
|
"src": "1528:4:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
}
|
|
],
|
|
"expression": {
|
|
"argumentTypes": [
|
|
{
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
],
|
|
"expression": {
|
|
"argumentTypes": null,
|
|
"baseExpression": {
|
|
"argumentTypes": null,
|
|
"id": 1641,
|
|
"name": "roles",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1590,
|
|
"src": "1508:5:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Role_$1761_storage_$",
|
|
"typeString": "mapping(string memory => struct Roles.Role storage ref)"
|
|
}
|
|
},
|
|
"id": 1643,
|
|
"indexExpression": {
|
|
"argumentTypes": null,
|
|
"id": 1642,
|
|
"name": "roleName",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1638,
|
|
"src": "1514:8:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string memory"
|
|
}
|
|
},
|
|
"isConstant": false,
|
|
"isLValue": true,
|
|
"isPure": false,
|
|
"lValueRequested": false,
|
|
"nodeType": "IndexAccess",
|
|
"src": "1508:15:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_struct$_Role_$1761_storage",
|
|
"typeString": "struct Roles.Role storage ref"
|
|
}
|
|
},
|
|
"id": 1644,
|
|
"isConstant": false,
|
|
"isLValue": true,
|
|
"isPure": false,
|
|
"lValueRequested": false,
|
|
"memberName": "add",
|
|
"nodeType": "MemberAccess",
|
|
"referencedDeclaration": 1777,
|
|
"src": "1508:19:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1761_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1761_storage_ptr_$",
|
|
"typeString": "function (struct Roles.Role storage pointer,address)"
|
|
}
|
|
},
|
|
"id": 1646,
|
|
"isConstant": false,
|
|
"isLValue": false,
|
|
"isPure": false,
|
|
"kind": "functionCall",
|
|
"lValueRequested": false,
|
|
"names": [],
|
|
"nodeType": "FunctionCall",
|
|
"src": "1508:25:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_tuple$__$",
|
|
"typeString": "tuple()"
|
|
}
|
|
},
|
|
"id": 1647,
|
|
"nodeType": "ExpressionStatement",
|
|
"src": "1508:25:26"
|
|
},
|
|
{
|
|
"eventCall": {
|
|
"argumentTypes": null,
|
|
"arguments": [
|
|
{
|
|
"argumentTypes": null,
|
|
"id": 1649,
|
|
"name": "addr",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1636,
|
|
"src": "1554:4:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
},
|
|
{
|
|
"argumentTypes": null,
|
|
"id": 1650,
|
|
"name": "roleName",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1638,
|
|
"src": "1560:8:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string memory"
|
|
}
|
|
}
|
|
],
|
|
"expression": {
|
|
"argumentTypes": [
|
|
{
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
},
|
|
{
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string memory"
|
|
}
|
|
],
|
|
"id": 1648,
|
|
"name": "RoleAdded",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1596,
|
|
"src": "1544:9:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$",
|
|
"typeString": "function (address,string memory)"
|
|
}
|
|
},
|
|
"id": 1651,
|
|
"isConstant": false,
|
|
"isLValue": false,
|
|
"isPure": false,
|
|
"kind": "functionCall",
|
|
"lValueRequested": false,
|
|
"names": [],
|
|
"nodeType": "FunctionCall",
|
|
"src": "1544:25:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_tuple$__$",
|
|
"typeString": "tuple()"
|
|
}
|
|
},
|
|
"id": 1652,
|
|
"nodeType": "EmitStatement",
|
|
"src": "1539:30:26"
|
|
}
|
|
]
|
|
},
|
|
"documentation": "@dev add a role to an address\n@param addr address\n@param roleName the name of the role",
|
|
"id": 1654,
|
|
"implemented": true,
|
|
"isConstructor": false,
|
|
"isDeclaredConst": false,
|
|
"modifiers": [],
|
|
"name": "addRole",
|
|
"nodeType": "FunctionDefinition",
|
|
"parameters": {
|
|
"id": 1639,
|
|
"nodeType": "ParameterList",
|
|
"parameters": [
|
|
{
|
|
"constant": false,
|
|
"id": 1636,
|
|
"name": "addr",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1654,
|
|
"src": "1456:12:26",
|
|
"stateVariable": false,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
},
|
|
"typeName": {
|
|
"id": 1635,
|
|
"name": "address",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "1456:7:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "internal"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"id": 1638,
|
|
"name": "roleName",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1654,
|
|
"src": "1470:15:26",
|
|
"stateVariable": false,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string"
|
|
},
|
|
"typeName": {
|
|
"id": 1637,
|
|
"name": "string",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "1470:6:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_storage_ptr",
|
|
"typeString": "string"
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "internal"
|
|
}
|
|
],
|
|
"src": "1455:31:26"
|
|
},
|
|
"payable": false,
|
|
"returnParameters": {
|
|
"id": 1640,
|
|
"nodeType": "ParameterList",
|
|
"parameters": [],
|
|
"src": "1502:0:26"
|
|
},
|
|
"scope": 1687,
|
|
"src": "1439:135:26",
|
|
"stateMutability": "nonpayable",
|
|
"superFunction": null,
|
|
"visibility": "internal"
|
|
},
|
|
{
|
|
"body": {
|
|
"id": 1673,
|
|
"nodeType": "Block",
|
|
"src": "1763:77:26",
|
|
"statements": [
|
|
{
|
|
"expression": {
|
|
"argumentTypes": null,
|
|
"arguments": [
|
|
{
|
|
"argumentTypes": null,
|
|
"id": 1665,
|
|
"name": "addr",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1656,
|
|
"src": "1792:4:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
}
|
|
],
|
|
"expression": {
|
|
"argumentTypes": [
|
|
{
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
],
|
|
"expression": {
|
|
"argumentTypes": null,
|
|
"baseExpression": {
|
|
"argumentTypes": null,
|
|
"id": 1661,
|
|
"name": "roles",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1590,
|
|
"src": "1769:5:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Role_$1761_storage_$",
|
|
"typeString": "mapping(string memory => struct Roles.Role storage ref)"
|
|
}
|
|
},
|
|
"id": 1663,
|
|
"indexExpression": {
|
|
"argumentTypes": null,
|
|
"id": 1662,
|
|
"name": "roleName",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1658,
|
|
"src": "1775:8:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string memory"
|
|
}
|
|
},
|
|
"isConstant": false,
|
|
"isLValue": true,
|
|
"isPure": false,
|
|
"lValueRequested": false,
|
|
"nodeType": "IndexAccess",
|
|
"src": "1769:15:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_struct$_Role_$1761_storage",
|
|
"typeString": "struct Roles.Role storage ref"
|
|
}
|
|
},
|
|
"id": 1664,
|
|
"isConstant": false,
|
|
"isLValue": true,
|
|
"isPure": false,
|
|
"lValueRequested": false,
|
|
"memberName": "remove",
|
|
"nodeType": "MemberAccess",
|
|
"referencedDeclaration": 1793,
|
|
"src": "1769:22:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1761_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1761_storage_ptr_$",
|
|
"typeString": "function (struct Roles.Role storage pointer,address)"
|
|
}
|
|
},
|
|
"id": 1666,
|
|
"isConstant": false,
|
|
"isLValue": false,
|
|
"isPure": false,
|
|
"kind": "functionCall",
|
|
"lValueRequested": false,
|
|
"names": [],
|
|
"nodeType": "FunctionCall",
|
|
"src": "1769:28:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_tuple$__$",
|
|
"typeString": "tuple()"
|
|
}
|
|
},
|
|
"id": 1667,
|
|
"nodeType": "ExpressionStatement",
|
|
"src": "1769:28:26"
|
|
},
|
|
{
|
|
"eventCall": {
|
|
"argumentTypes": null,
|
|
"arguments": [
|
|
{
|
|
"argumentTypes": null,
|
|
"id": 1669,
|
|
"name": "addr",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1656,
|
|
"src": "1820:4:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
},
|
|
{
|
|
"argumentTypes": null,
|
|
"id": 1670,
|
|
"name": "roleName",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1658,
|
|
"src": "1826:8:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string memory"
|
|
}
|
|
}
|
|
],
|
|
"expression": {
|
|
"argumentTypes": [
|
|
{
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
},
|
|
{
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string memory"
|
|
}
|
|
],
|
|
"id": 1668,
|
|
"name": "RoleRemoved",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1602,
|
|
"src": "1808:11:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$",
|
|
"typeString": "function (address,string memory)"
|
|
}
|
|
},
|
|
"id": 1671,
|
|
"isConstant": false,
|
|
"isLValue": false,
|
|
"isPure": false,
|
|
"kind": "functionCall",
|
|
"lValueRequested": false,
|
|
"names": [],
|
|
"nodeType": "FunctionCall",
|
|
"src": "1808:27:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_tuple$__$",
|
|
"typeString": "tuple()"
|
|
}
|
|
},
|
|
"id": 1672,
|
|
"nodeType": "EmitStatement",
|
|
"src": "1803:32:26"
|
|
}
|
|
]
|
|
},
|
|
"documentation": "@dev remove a role from an address\n@param addr address\n@param roleName the name of the role",
|
|
"id": 1674,
|
|
"implemented": true,
|
|
"isConstructor": false,
|
|
"isDeclaredConst": false,
|
|
"modifiers": [],
|
|
"name": "removeRole",
|
|
"nodeType": "FunctionDefinition",
|
|
"parameters": {
|
|
"id": 1659,
|
|
"nodeType": "ParameterList",
|
|
"parameters": [
|
|
{
|
|
"constant": false,
|
|
"id": 1656,
|
|
"name": "addr",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1674,
|
|
"src": "1717:12:26",
|
|
"stateVariable": false,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
},
|
|
"typeName": {
|
|
"id": 1655,
|
|
"name": "address",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "1717:7:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "internal"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"id": 1658,
|
|
"name": "roleName",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1674,
|
|
"src": "1731:15:26",
|
|
"stateVariable": false,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string"
|
|
},
|
|
"typeName": {
|
|
"id": 1657,
|
|
"name": "string",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "1731:6:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_storage_ptr",
|
|
"typeString": "string"
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "internal"
|
|
}
|
|
],
|
|
"src": "1716:31:26"
|
|
},
|
|
"payable": false,
|
|
"returnParameters": {
|
|
"id": 1660,
|
|
"nodeType": "ParameterList",
|
|
"parameters": [],
|
|
"src": "1763:0:26"
|
|
},
|
|
"scope": 1687,
|
|
"src": "1697:143:26",
|
|
"stateMutability": "nonpayable",
|
|
"superFunction": null,
|
|
"visibility": "internal"
|
|
},
|
|
{
|
|
"body": {
|
|
"id": 1685,
|
|
"nodeType": "Block",
|
|
"src": "2029:49:26",
|
|
"statements": [
|
|
{
|
|
"expression": {
|
|
"argumentTypes": null,
|
|
"arguments": [
|
|
{
|
|
"argumentTypes": null,
|
|
"expression": {
|
|
"argumentTypes": null,
|
|
"id": 1679,
|
|
"name": "msg",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 4784,
|
|
"src": "2045:3:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_magic_message",
|
|
"typeString": "msg"
|
|
}
|
|
},
|
|
"id": 1680,
|
|
"isConstant": false,
|
|
"isLValue": false,
|
|
"isPure": false,
|
|
"lValueRequested": false,
|
|
"memberName": "sender",
|
|
"nodeType": "MemberAccess",
|
|
"referencedDeclaration": null,
|
|
"src": "2045:10:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
},
|
|
{
|
|
"argumentTypes": null,
|
|
"id": 1681,
|
|
"name": "roleName",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1676,
|
|
"src": "2057:8:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string memory"
|
|
}
|
|
}
|
|
],
|
|
"expression": {
|
|
"argumentTypes": [
|
|
{
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
},
|
|
{
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string memory"
|
|
}
|
|
],
|
|
"id": 1678,
|
|
"name": "checkRole",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1617,
|
|
"src": "2035:9:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_function_internal_view$_t_address_$_t_string_memory_ptr_$returns$__$",
|
|
"typeString": "function (address,string memory) view"
|
|
}
|
|
},
|
|
"id": 1682,
|
|
"isConstant": false,
|
|
"isLValue": false,
|
|
"isPure": false,
|
|
"kind": "functionCall",
|
|
"lValueRequested": false,
|
|
"names": [],
|
|
"nodeType": "FunctionCall",
|
|
"src": "2035:31:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_tuple$__$",
|
|
"typeString": "tuple()"
|
|
}
|
|
},
|
|
"id": 1683,
|
|
"nodeType": "ExpressionStatement",
|
|
"src": "2035:31:26"
|
|
},
|
|
{
|
|
"id": 1684,
|
|
"nodeType": "PlaceholderStatement",
|
|
"src": "2072:1:26"
|
|
}
|
|
]
|
|
},
|
|
"documentation": "@dev modifier to scope access to a single role (uses msg.sender as addr)\n@param roleName the name of the role\n// reverts",
|
|
"id": 1686,
|
|
"name": "onlyRole",
|
|
"nodeType": "ModifierDefinition",
|
|
"parameters": {
|
|
"id": 1677,
|
|
"nodeType": "ParameterList",
|
|
"parameters": [
|
|
{
|
|
"constant": false,
|
|
"id": 1676,
|
|
"name": "roleName",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1686,
|
|
"src": "2010:15:26",
|
|
"stateVariable": false,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string"
|
|
},
|
|
"typeName": {
|
|
"id": 1675,
|
|
"name": "string",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "2010:6:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_storage_ptr",
|
|
"typeString": "string"
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "internal"
|
|
}
|
|
],
|
|
"src": "2009:17:26"
|
|
},
|
|
"src": "1992:86:26",
|
|
"visibility": "internal"
|
|
}
|
|
],
|
|
"scope": 1688,
|
|
"src": "600:2135:26"
|
|
}
|
|
],
|
|
"src": "0:2736:26"
|
|
},
|
|
"legacyAST": {
|
|
"absolutePath": "/home/spalladino/Projects/openzeppelin-zos/contracts/ownership/rbac/RBAC.sol",
|
|
"exportedSymbols": {
|
|
"RBAC": [
|
|
1687
|
|
]
|
|
},
|
|
"id": 1688,
|
|
"nodeType": "SourceUnit",
|
|
"nodes": [
|
|
{
|
|
"id": 1582,
|
|
"literals": [
|
|
"solidity",
|
|
"^",
|
|
"0.4",
|
|
".21"
|
|
],
|
|
"nodeType": "PragmaDirective",
|
|
"src": "0:24:26"
|
|
},
|
|
{
|
|
"absolutePath": "/home/spalladino/Projects/openzeppelin-zos/contracts/ownership/rbac/Roles.sol",
|
|
"file": "./Roles.sol",
|
|
"id": 1583,
|
|
"nodeType": "ImportDirective",
|
|
"scope": 1688,
|
|
"sourceUnit": 1825,
|
|
"src": "26:21:26",
|
|
"symbolAliases": [],
|
|
"unitAlias": ""
|
|
},
|
|
{
|
|
"baseContracts": [],
|
|
"contractDependencies": [],
|
|
"contractKind": "contract",
|
|
"documentation": "@title RBAC (Role-Based Access Control)\n@author Matt Condon (@Shrugs)\n@dev Stores and provides setters and getters for roles and addresses.\n@dev Supports unlimited numbers of roles and addresses.\n@dev See //contracts/mocks/RBACMock.sol for an example of usage.\nThis RBAC method uses strings to key roles. It may be beneficial\n for you to write your own implementation of this interface using Enums or similar.\nIt's also recommended that you define constants in the contract, like ROLE_ADMIN below,\n to avoid typos.",
|
|
"fullyImplemented": true,
|
|
"id": 1687,
|
|
"linearizedBaseContracts": [
|
|
1687
|
|
],
|
|
"name": "RBAC",
|
|
"nodeType": "ContractDefinition",
|
|
"nodes": [
|
|
{
|
|
"id": 1586,
|
|
"libraryName": {
|
|
"contractScope": null,
|
|
"id": 1584,
|
|
"name": "Roles",
|
|
"nodeType": "UserDefinedTypeName",
|
|
"referencedDeclaration": 1824,
|
|
"src": "624:5:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_contract$_Roles_$1824",
|
|
"typeString": "library Roles"
|
|
}
|
|
},
|
|
"nodeType": "UsingForDirective",
|
|
"src": "618:27:26",
|
|
"typeName": {
|
|
"contractScope": null,
|
|
"id": 1585,
|
|
"name": "Roles.Role",
|
|
"nodeType": "UserDefinedTypeName",
|
|
"referencedDeclaration": 1761,
|
|
"src": "634:10:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_struct$_Role_$1761_storage_ptr",
|
|
"typeString": "struct Roles.Role"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"constant": false,
|
|
"id": 1590,
|
|
"name": "roles",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1687,
|
|
"src": "649:44:26",
|
|
"stateVariable": true,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Role_$1761_storage_$",
|
|
"typeString": "mapping(string => struct Roles.Role)"
|
|
},
|
|
"typeName": {
|
|
"id": 1589,
|
|
"keyType": {
|
|
"id": 1587,
|
|
"name": "string",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "658:6:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_storage_ptr",
|
|
"typeString": "string"
|
|
}
|
|
},
|
|
"nodeType": "Mapping",
|
|
"src": "649:30:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Role_$1761_storage_$",
|
|
"typeString": "mapping(string => struct Roles.Role)"
|
|
},
|
|
"valueType": {
|
|
"contractScope": null,
|
|
"id": 1588,
|
|
"name": "Roles.Role",
|
|
"nodeType": "UserDefinedTypeName",
|
|
"referencedDeclaration": 1761,
|
|
"src": "668:10:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_struct$_Role_$1761_storage_ptr",
|
|
"typeString": "struct Roles.Role"
|
|
}
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "private"
|
|
},
|
|
{
|
|
"anonymous": false,
|
|
"documentation": null,
|
|
"id": 1596,
|
|
"name": "RoleAdded",
|
|
"nodeType": "EventDefinition",
|
|
"parameters": {
|
|
"id": 1595,
|
|
"nodeType": "ParameterList",
|
|
"parameters": [
|
|
{
|
|
"constant": false,
|
|
"id": 1592,
|
|
"indexed": false,
|
|
"name": "addr",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1596,
|
|
"src": "714:12:26",
|
|
"stateVariable": false,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
},
|
|
"typeName": {
|
|
"id": 1591,
|
|
"name": "address",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "714:7:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "internal"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"id": 1594,
|
|
"indexed": false,
|
|
"name": "roleName",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1596,
|
|
"src": "728:15:26",
|
|
"stateVariable": false,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string"
|
|
},
|
|
"typeName": {
|
|
"id": 1593,
|
|
"name": "string",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "728:6:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_storage_ptr",
|
|
"typeString": "string"
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "internal"
|
|
}
|
|
],
|
|
"src": "713:31:26"
|
|
},
|
|
"src": "698:47:26"
|
|
},
|
|
{
|
|
"anonymous": false,
|
|
"documentation": null,
|
|
"id": 1602,
|
|
"name": "RoleRemoved",
|
|
"nodeType": "EventDefinition",
|
|
"parameters": {
|
|
"id": 1601,
|
|
"nodeType": "ParameterList",
|
|
"parameters": [
|
|
{
|
|
"constant": false,
|
|
"id": 1598,
|
|
"indexed": false,
|
|
"name": "addr",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1602,
|
|
"src": "766:12:26",
|
|
"stateVariable": false,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
},
|
|
"typeName": {
|
|
"id": 1597,
|
|
"name": "address",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "766:7:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "internal"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"id": 1600,
|
|
"indexed": false,
|
|
"name": "roleName",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1602,
|
|
"src": "780:15:26",
|
|
"stateVariable": false,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string"
|
|
},
|
|
"typeName": {
|
|
"id": 1599,
|
|
"name": "string",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "780:6:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_storage_ptr",
|
|
"typeString": "string"
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "internal"
|
|
}
|
|
],
|
|
"src": "765:31:26"
|
|
},
|
|
"src": "748:49:26"
|
|
},
|
|
{
|
|
"body": {
|
|
"id": 1616,
|
|
"nodeType": "Block",
|
|
"src": "1013:38:26",
|
|
"statements": [
|
|
{
|
|
"expression": {
|
|
"argumentTypes": null,
|
|
"arguments": [
|
|
{
|
|
"argumentTypes": null,
|
|
"id": 1613,
|
|
"name": "addr",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1604,
|
|
"src": "1041:4:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
}
|
|
],
|
|
"expression": {
|
|
"argumentTypes": [
|
|
{
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
],
|
|
"expression": {
|
|
"argumentTypes": null,
|
|
"baseExpression": {
|
|
"argumentTypes": null,
|
|
"id": 1609,
|
|
"name": "roles",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1590,
|
|
"src": "1019:5:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Role_$1761_storage_$",
|
|
"typeString": "mapping(string memory => struct Roles.Role storage ref)"
|
|
}
|
|
},
|
|
"id": 1611,
|
|
"indexExpression": {
|
|
"argumentTypes": null,
|
|
"id": 1610,
|
|
"name": "roleName",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1606,
|
|
"src": "1025:8:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string memory"
|
|
}
|
|
},
|
|
"isConstant": false,
|
|
"isLValue": true,
|
|
"isPure": false,
|
|
"lValueRequested": false,
|
|
"nodeType": "IndexAccess",
|
|
"src": "1019:15:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_struct$_Role_$1761_storage",
|
|
"typeString": "struct Roles.Role storage ref"
|
|
}
|
|
},
|
|
"id": 1612,
|
|
"isConstant": false,
|
|
"isLValue": true,
|
|
"isPure": false,
|
|
"lValueRequested": false,
|
|
"memberName": "check",
|
|
"nodeType": "MemberAccess",
|
|
"referencedDeclaration": 1808,
|
|
"src": "1019:21:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1761_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1761_storage_ptr_$",
|
|
"typeString": "function (struct Roles.Role storage pointer,address) view"
|
|
}
|
|
},
|
|
"id": 1614,
|
|
"isConstant": false,
|
|
"isLValue": false,
|
|
"isPure": false,
|
|
"kind": "functionCall",
|
|
"lValueRequested": false,
|
|
"names": [],
|
|
"nodeType": "FunctionCall",
|
|
"src": "1019:27:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_tuple$__$",
|
|
"typeString": "tuple()"
|
|
}
|
|
},
|
|
"id": 1615,
|
|
"nodeType": "ExpressionStatement",
|
|
"src": "1019:27:26"
|
|
}
|
|
]
|
|
},
|
|
"documentation": "@dev reverts if addr does not have role\n@param addr address\n@param roleName the name of the role\n// reverts",
|
|
"id": 1617,
|
|
"implemented": true,
|
|
"isConstructor": false,
|
|
"isDeclaredConst": true,
|
|
"modifiers": [],
|
|
"name": "checkRole",
|
|
"nodeType": "FunctionDefinition",
|
|
"parameters": {
|
|
"id": 1607,
|
|
"nodeType": "ParameterList",
|
|
"parameters": [
|
|
{
|
|
"constant": false,
|
|
"id": 1604,
|
|
"name": "addr",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1617,
|
|
"src": "960:12:26",
|
|
"stateVariable": false,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
},
|
|
"typeName": {
|
|
"id": 1603,
|
|
"name": "address",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "960:7:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "internal"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"id": 1606,
|
|
"name": "roleName",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1617,
|
|
"src": "974:15:26",
|
|
"stateVariable": false,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string"
|
|
},
|
|
"typeName": {
|
|
"id": 1605,
|
|
"name": "string",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "974:6:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_storage_ptr",
|
|
"typeString": "string"
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "internal"
|
|
}
|
|
],
|
|
"src": "959:31:26"
|
|
},
|
|
"payable": false,
|
|
"returnParameters": {
|
|
"id": 1608,
|
|
"nodeType": "ParameterList",
|
|
"parameters": [],
|
|
"src": "1013:0:26"
|
|
},
|
|
"scope": 1687,
|
|
"src": "941:110:26",
|
|
"stateMutability": "view",
|
|
"superFunction": null,
|
|
"visibility": "public"
|
|
},
|
|
{
|
|
"body": {
|
|
"id": 1633,
|
|
"nodeType": "Block",
|
|
"src": "1278:43:26",
|
|
"statements": [
|
|
{
|
|
"expression": {
|
|
"argumentTypes": null,
|
|
"arguments": [
|
|
{
|
|
"argumentTypes": null,
|
|
"id": 1630,
|
|
"name": "addr",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1619,
|
|
"src": "1311:4:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
}
|
|
],
|
|
"expression": {
|
|
"argumentTypes": [
|
|
{
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
],
|
|
"expression": {
|
|
"argumentTypes": null,
|
|
"baseExpression": {
|
|
"argumentTypes": null,
|
|
"id": 1626,
|
|
"name": "roles",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1590,
|
|
"src": "1291:5:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Role_$1761_storage_$",
|
|
"typeString": "mapping(string memory => struct Roles.Role storage ref)"
|
|
}
|
|
},
|
|
"id": 1628,
|
|
"indexExpression": {
|
|
"argumentTypes": null,
|
|
"id": 1627,
|
|
"name": "roleName",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1621,
|
|
"src": "1297:8:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string memory"
|
|
}
|
|
},
|
|
"isConstant": false,
|
|
"isLValue": true,
|
|
"isPure": false,
|
|
"lValueRequested": false,
|
|
"nodeType": "IndexAccess",
|
|
"src": "1291:15:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_struct$_Role_$1761_storage",
|
|
"typeString": "struct Roles.Role storage ref"
|
|
}
|
|
},
|
|
"id": 1629,
|
|
"isConstant": false,
|
|
"isLValue": true,
|
|
"isPure": false,
|
|
"lValueRequested": false,
|
|
"memberName": "has",
|
|
"nodeType": "MemberAccess",
|
|
"referencedDeclaration": 1823,
|
|
"src": "1291:19:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_function_internal_view$_t_struct$_Role_$1761_storage_ptr_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_Role_$1761_storage_ptr_$",
|
|
"typeString": "function (struct Roles.Role storage pointer,address) view returns (bool)"
|
|
}
|
|
},
|
|
"id": 1631,
|
|
"isConstant": false,
|
|
"isLValue": false,
|
|
"isPure": false,
|
|
"kind": "functionCall",
|
|
"lValueRequested": false,
|
|
"names": [],
|
|
"nodeType": "FunctionCall",
|
|
"src": "1291:25:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_bool",
|
|
"typeString": "bool"
|
|
}
|
|
},
|
|
"functionReturnParameters": 1625,
|
|
"id": 1632,
|
|
"nodeType": "Return",
|
|
"src": "1284:32:26"
|
|
}
|
|
]
|
|
},
|
|
"documentation": "@dev determine if addr has role\n@param addr address\n@param roleName the name of the role\n@return bool",
|
|
"id": 1634,
|
|
"implemented": true,
|
|
"isConstructor": false,
|
|
"isDeclaredConst": true,
|
|
"modifiers": [],
|
|
"name": "hasRole",
|
|
"nodeType": "FunctionDefinition",
|
|
"parameters": {
|
|
"id": 1622,
|
|
"nodeType": "ParameterList",
|
|
"parameters": [
|
|
{
|
|
"constant": false,
|
|
"id": 1619,
|
|
"name": "addr",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1634,
|
|
"src": "1206:12:26",
|
|
"stateVariable": false,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
},
|
|
"typeName": {
|
|
"id": 1618,
|
|
"name": "address",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "1206:7:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "internal"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"id": 1621,
|
|
"name": "roleName",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1634,
|
|
"src": "1220:15:26",
|
|
"stateVariable": false,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string"
|
|
},
|
|
"typeName": {
|
|
"id": 1620,
|
|
"name": "string",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "1220:6:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_storage_ptr",
|
|
"typeString": "string"
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "internal"
|
|
}
|
|
],
|
|
"src": "1205:31:26"
|
|
},
|
|
"payable": false,
|
|
"returnParameters": {
|
|
"id": 1625,
|
|
"nodeType": "ParameterList",
|
|
"parameters": [
|
|
{
|
|
"constant": false,
|
|
"id": 1624,
|
|
"name": "",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1634,
|
|
"src": "1270:4:26",
|
|
"stateVariable": false,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_bool",
|
|
"typeString": "bool"
|
|
},
|
|
"typeName": {
|
|
"id": 1623,
|
|
"name": "bool",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "1270:4:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_bool",
|
|
"typeString": "bool"
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "internal"
|
|
}
|
|
],
|
|
"src": "1269:6:26"
|
|
},
|
|
"scope": 1687,
|
|
"src": "1189:132:26",
|
|
"stateMutability": "view",
|
|
"superFunction": null,
|
|
"visibility": "public"
|
|
},
|
|
{
|
|
"body": {
|
|
"id": 1653,
|
|
"nodeType": "Block",
|
|
"src": "1502:72:26",
|
|
"statements": [
|
|
{
|
|
"expression": {
|
|
"argumentTypes": null,
|
|
"arguments": [
|
|
{
|
|
"argumentTypes": null,
|
|
"id": 1645,
|
|
"name": "addr",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1636,
|
|
"src": "1528:4:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
}
|
|
],
|
|
"expression": {
|
|
"argumentTypes": [
|
|
{
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
],
|
|
"expression": {
|
|
"argumentTypes": null,
|
|
"baseExpression": {
|
|
"argumentTypes": null,
|
|
"id": 1641,
|
|
"name": "roles",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1590,
|
|
"src": "1508:5:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Role_$1761_storage_$",
|
|
"typeString": "mapping(string memory => struct Roles.Role storage ref)"
|
|
}
|
|
},
|
|
"id": 1643,
|
|
"indexExpression": {
|
|
"argumentTypes": null,
|
|
"id": 1642,
|
|
"name": "roleName",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1638,
|
|
"src": "1514:8:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string memory"
|
|
}
|
|
},
|
|
"isConstant": false,
|
|
"isLValue": true,
|
|
"isPure": false,
|
|
"lValueRequested": false,
|
|
"nodeType": "IndexAccess",
|
|
"src": "1508:15:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_struct$_Role_$1761_storage",
|
|
"typeString": "struct Roles.Role storage ref"
|
|
}
|
|
},
|
|
"id": 1644,
|
|
"isConstant": false,
|
|
"isLValue": true,
|
|
"isPure": false,
|
|
"lValueRequested": false,
|
|
"memberName": "add",
|
|
"nodeType": "MemberAccess",
|
|
"referencedDeclaration": 1777,
|
|
"src": "1508:19:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1761_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1761_storage_ptr_$",
|
|
"typeString": "function (struct Roles.Role storage pointer,address)"
|
|
}
|
|
},
|
|
"id": 1646,
|
|
"isConstant": false,
|
|
"isLValue": false,
|
|
"isPure": false,
|
|
"kind": "functionCall",
|
|
"lValueRequested": false,
|
|
"names": [],
|
|
"nodeType": "FunctionCall",
|
|
"src": "1508:25:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_tuple$__$",
|
|
"typeString": "tuple()"
|
|
}
|
|
},
|
|
"id": 1647,
|
|
"nodeType": "ExpressionStatement",
|
|
"src": "1508:25:26"
|
|
},
|
|
{
|
|
"eventCall": {
|
|
"argumentTypes": null,
|
|
"arguments": [
|
|
{
|
|
"argumentTypes": null,
|
|
"id": 1649,
|
|
"name": "addr",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1636,
|
|
"src": "1554:4:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
},
|
|
{
|
|
"argumentTypes": null,
|
|
"id": 1650,
|
|
"name": "roleName",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1638,
|
|
"src": "1560:8:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string memory"
|
|
}
|
|
}
|
|
],
|
|
"expression": {
|
|
"argumentTypes": [
|
|
{
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
},
|
|
{
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string memory"
|
|
}
|
|
],
|
|
"id": 1648,
|
|
"name": "RoleAdded",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1596,
|
|
"src": "1544:9:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$",
|
|
"typeString": "function (address,string memory)"
|
|
}
|
|
},
|
|
"id": 1651,
|
|
"isConstant": false,
|
|
"isLValue": false,
|
|
"isPure": false,
|
|
"kind": "functionCall",
|
|
"lValueRequested": false,
|
|
"names": [],
|
|
"nodeType": "FunctionCall",
|
|
"src": "1544:25:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_tuple$__$",
|
|
"typeString": "tuple()"
|
|
}
|
|
},
|
|
"id": 1652,
|
|
"nodeType": "EmitStatement",
|
|
"src": "1539:30:26"
|
|
}
|
|
]
|
|
},
|
|
"documentation": "@dev add a role to an address\n@param addr address\n@param roleName the name of the role",
|
|
"id": 1654,
|
|
"implemented": true,
|
|
"isConstructor": false,
|
|
"isDeclaredConst": false,
|
|
"modifiers": [],
|
|
"name": "addRole",
|
|
"nodeType": "FunctionDefinition",
|
|
"parameters": {
|
|
"id": 1639,
|
|
"nodeType": "ParameterList",
|
|
"parameters": [
|
|
{
|
|
"constant": false,
|
|
"id": 1636,
|
|
"name": "addr",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1654,
|
|
"src": "1456:12:26",
|
|
"stateVariable": false,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
},
|
|
"typeName": {
|
|
"id": 1635,
|
|
"name": "address",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "1456:7:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "internal"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"id": 1638,
|
|
"name": "roleName",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1654,
|
|
"src": "1470:15:26",
|
|
"stateVariable": false,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string"
|
|
},
|
|
"typeName": {
|
|
"id": 1637,
|
|
"name": "string",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "1470:6:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_storage_ptr",
|
|
"typeString": "string"
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "internal"
|
|
}
|
|
],
|
|
"src": "1455:31:26"
|
|
},
|
|
"payable": false,
|
|
"returnParameters": {
|
|
"id": 1640,
|
|
"nodeType": "ParameterList",
|
|
"parameters": [],
|
|
"src": "1502:0:26"
|
|
},
|
|
"scope": 1687,
|
|
"src": "1439:135:26",
|
|
"stateMutability": "nonpayable",
|
|
"superFunction": null,
|
|
"visibility": "internal"
|
|
},
|
|
{
|
|
"body": {
|
|
"id": 1673,
|
|
"nodeType": "Block",
|
|
"src": "1763:77:26",
|
|
"statements": [
|
|
{
|
|
"expression": {
|
|
"argumentTypes": null,
|
|
"arguments": [
|
|
{
|
|
"argumentTypes": null,
|
|
"id": 1665,
|
|
"name": "addr",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1656,
|
|
"src": "1792:4:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
}
|
|
],
|
|
"expression": {
|
|
"argumentTypes": [
|
|
{
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
],
|
|
"expression": {
|
|
"argumentTypes": null,
|
|
"baseExpression": {
|
|
"argumentTypes": null,
|
|
"id": 1661,
|
|
"name": "roles",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1590,
|
|
"src": "1769:5:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_mapping$_t_string_memory_$_t_struct$_Role_$1761_storage_$",
|
|
"typeString": "mapping(string memory => struct Roles.Role storage ref)"
|
|
}
|
|
},
|
|
"id": 1663,
|
|
"indexExpression": {
|
|
"argumentTypes": null,
|
|
"id": 1662,
|
|
"name": "roleName",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1658,
|
|
"src": "1775:8:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string memory"
|
|
}
|
|
},
|
|
"isConstant": false,
|
|
"isLValue": true,
|
|
"isPure": false,
|
|
"lValueRequested": false,
|
|
"nodeType": "IndexAccess",
|
|
"src": "1769:15:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_struct$_Role_$1761_storage",
|
|
"typeString": "struct Roles.Role storage ref"
|
|
}
|
|
},
|
|
"id": 1664,
|
|
"isConstant": false,
|
|
"isLValue": true,
|
|
"isPure": false,
|
|
"lValueRequested": false,
|
|
"memberName": "remove",
|
|
"nodeType": "MemberAccess",
|
|
"referencedDeclaration": 1793,
|
|
"src": "1769:22:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Role_$1761_storage_ptr_$_t_address_$returns$__$bound_to$_t_struct$_Role_$1761_storage_ptr_$",
|
|
"typeString": "function (struct Roles.Role storage pointer,address)"
|
|
}
|
|
},
|
|
"id": 1666,
|
|
"isConstant": false,
|
|
"isLValue": false,
|
|
"isPure": false,
|
|
"kind": "functionCall",
|
|
"lValueRequested": false,
|
|
"names": [],
|
|
"nodeType": "FunctionCall",
|
|
"src": "1769:28:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_tuple$__$",
|
|
"typeString": "tuple()"
|
|
}
|
|
},
|
|
"id": 1667,
|
|
"nodeType": "ExpressionStatement",
|
|
"src": "1769:28:26"
|
|
},
|
|
{
|
|
"eventCall": {
|
|
"argumentTypes": null,
|
|
"arguments": [
|
|
{
|
|
"argumentTypes": null,
|
|
"id": 1669,
|
|
"name": "addr",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1656,
|
|
"src": "1820:4:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
},
|
|
{
|
|
"argumentTypes": null,
|
|
"id": 1670,
|
|
"name": "roleName",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1658,
|
|
"src": "1826:8:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string memory"
|
|
}
|
|
}
|
|
],
|
|
"expression": {
|
|
"argumentTypes": [
|
|
{
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
},
|
|
{
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string memory"
|
|
}
|
|
],
|
|
"id": 1668,
|
|
"name": "RoleRemoved",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1602,
|
|
"src": "1808:11:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_string_memory_ptr_$returns$__$",
|
|
"typeString": "function (address,string memory)"
|
|
}
|
|
},
|
|
"id": 1671,
|
|
"isConstant": false,
|
|
"isLValue": false,
|
|
"isPure": false,
|
|
"kind": "functionCall",
|
|
"lValueRequested": false,
|
|
"names": [],
|
|
"nodeType": "FunctionCall",
|
|
"src": "1808:27:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_tuple$__$",
|
|
"typeString": "tuple()"
|
|
}
|
|
},
|
|
"id": 1672,
|
|
"nodeType": "EmitStatement",
|
|
"src": "1803:32:26"
|
|
}
|
|
]
|
|
},
|
|
"documentation": "@dev remove a role from an address\n@param addr address\n@param roleName the name of the role",
|
|
"id": 1674,
|
|
"implemented": true,
|
|
"isConstructor": false,
|
|
"isDeclaredConst": false,
|
|
"modifiers": [],
|
|
"name": "removeRole",
|
|
"nodeType": "FunctionDefinition",
|
|
"parameters": {
|
|
"id": 1659,
|
|
"nodeType": "ParameterList",
|
|
"parameters": [
|
|
{
|
|
"constant": false,
|
|
"id": 1656,
|
|
"name": "addr",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1674,
|
|
"src": "1717:12:26",
|
|
"stateVariable": false,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
},
|
|
"typeName": {
|
|
"id": 1655,
|
|
"name": "address",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "1717:7:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "internal"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"id": 1658,
|
|
"name": "roleName",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1674,
|
|
"src": "1731:15:26",
|
|
"stateVariable": false,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string"
|
|
},
|
|
"typeName": {
|
|
"id": 1657,
|
|
"name": "string",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "1731:6:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_storage_ptr",
|
|
"typeString": "string"
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "internal"
|
|
}
|
|
],
|
|
"src": "1716:31:26"
|
|
},
|
|
"payable": false,
|
|
"returnParameters": {
|
|
"id": 1660,
|
|
"nodeType": "ParameterList",
|
|
"parameters": [],
|
|
"src": "1763:0:26"
|
|
},
|
|
"scope": 1687,
|
|
"src": "1697:143:26",
|
|
"stateMutability": "nonpayable",
|
|
"superFunction": null,
|
|
"visibility": "internal"
|
|
},
|
|
{
|
|
"body": {
|
|
"id": 1685,
|
|
"nodeType": "Block",
|
|
"src": "2029:49:26",
|
|
"statements": [
|
|
{
|
|
"expression": {
|
|
"argumentTypes": null,
|
|
"arguments": [
|
|
{
|
|
"argumentTypes": null,
|
|
"expression": {
|
|
"argumentTypes": null,
|
|
"id": 1679,
|
|
"name": "msg",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 4784,
|
|
"src": "2045:3:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_magic_message",
|
|
"typeString": "msg"
|
|
}
|
|
},
|
|
"id": 1680,
|
|
"isConstant": false,
|
|
"isLValue": false,
|
|
"isPure": false,
|
|
"lValueRequested": false,
|
|
"memberName": "sender",
|
|
"nodeType": "MemberAccess",
|
|
"referencedDeclaration": null,
|
|
"src": "2045:10:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
}
|
|
},
|
|
{
|
|
"argumentTypes": null,
|
|
"id": 1681,
|
|
"name": "roleName",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1676,
|
|
"src": "2057:8:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string memory"
|
|
}
|
|
}
|
|
],
|
|
"expression": {
|
|
"argumentTypes": [
|
|
{
|
|
"typeIdentifier": "t_address",
|
|
"typeString": "address"
|
|
},
|
|
{
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string memory"
|
|
}
|
|
],
|
|
"id": 1678,
|
|
"name": "checkRole",
|
|
"nodeType": "Identifier",
|
|
"overloadedDeclarations": [],
|
|
"referencedDeclaration": 1617,
|
|
"src": "2035:9:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_function_internal_view$_t_address_$_t_string_memory_ptr_$returns$__$",
|
|
"typeString": "function (address,string memory) view"
|
|
}
|
|
},
|
|
"id": 1682,
|
|
"isConstant": false,
|
|
"isLValue": false,
|
|
"isPure": false,
|
|
"kind": "functionCall",
|
|
"lValueRequested": false,
|
|
"names": [],
|
|
"nodeType": "FunctionCall",
|
|
"src": "2035:31:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_tuple$__$",
|
|
"typeString": "tuple()"
|
|
}
|
|
},
|
|
"id": 1683,
|
|
"nodeType": "ExpressionStatement",
|
|
"src": "2035:31:26"
|
|
},
|
|
{
|
|
"id": 1684,
|
|
"nodeType": "PlaceholderStatement",
|
|
"src": "2072:1:26"
|
|
}
|
|
]
|
|
},
|
|
"documentation": "@dev modifier to scope access to a single role (uses msg.sender as addr)\n@param roleName the name of the role\n// reverts",
|
|
"id": 1686,
|
|
"name": "onlyRole",
|
|
"nodeType": "ModifierDefinition",
|
|
"parameters": {
|
|
"id": 1677,
|
|
"nodeType": "ParameterList",
|
|
"parameters": [
|
|
{
|
|
"constant": false,
|
|
"id": 1676,
|
|
"name": "roleName",
|
|
"nodeType": "VariableDeclaration",
|
|
"scope": 1686,
|
|
"src": "2010:15:26",
|
|
"stateVariable": false,
|
|
"storageLocation": "default",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_memory_ptr",
|
|
"typeString": "string"
|
|
},
|
|
"typeName": {
|
|
"id": 1675,
|
|
"name": "string",
|
|
"nodeType": "ElementaryTypeName",
|
|
"src": "2010:6:26",
|
|
"typeDescriptions": {
|
|
"typeIdentifier": "t_string_storage_ptr",
|
|
"typeString": "string"
|
|
}
|
|
},
|
|
"value": null,
|
|
"visibility": "internal"
|
|
}
|
|
],
|
|
"src": "2009:17:26"
|
|
},
|
|
"src": "1992:86:26",
|
|
"visibility": "internal"
|
|
}
|
|
],
|
|
"scope": 1688,
|
|
"src": "600:2135:26"
|
|
}
|
|
],
|
|
"src": "0:2736:26"
|
|
},
|
|
"compiler": {
|
|
"name": "solc",
|
|
"version": "0.4.24+commit.e67f0147.Emscripten.clang"
|
|
},
|
|
"networks": {},
|
|
"schemaVersion": "2.0.1",
|
|
"updatedAt": "2018-08-23T14:35:50.631Z"
|
|
} |