hardlydifficult-ethereum-contracts
Version:
A collection of reusable contracts and Javascript helpers for Ethereum.
566 lines • 25 kB
JSON
{
"contractName": "AntiOwnerProxy",
"abi": [
{
"constant": false,
"inputs": [
{
"internalType": "address",
"name": "_contract",
"type": "address"
},
{
"internalType": "bytes",
"name": "_callData",
"type": "bytes"
}
],
"name": "proxyCall",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_contract\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_callData\",\"type\":\"bytes\"}],\"name\":\"proxyCall\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"If this contract is the owner / admin account for another, this contract allows anyone to make owner only calls; bypassing the owner requirement.\",\"methods\":{},\"title\":\"Anti-Owner Proxy used to bypass existing owner checks (typically for testing).\"},\"userdoc\":{\"methods\":{},\"notice\":\"Allows anyone to make arbitrary calls through this contract.\"}},\"settings\":{\"compilationTarget\":{\"/home/circleci/repo/contracts/proxies/AntiOwnerProxy.sol\":\"AntiOwnerProxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":2000000},\"remappings\":[]},\"sources\":{\"/home/circleci/repo/contracts/proxies/AntiOwnerProxy.sol\":{\"keccak256\":\"0x4c8933e0ce68f8b311cf15e915e1518ddebfc94c2db2af0526e9b7c6907c08ff\",\"urls\":[\"bzz-raw://568ac6b3b1f37027d667368dc17d50c3faca66d38dad1738382549d9d60b4d02\",\"dweb:/ipfs/QmaoK6hiE4Lck9aC1JM18RDyzy1XkqLoJPW2g3G8MWnacT\"]},\"/home/circleci/repo/contracts/proxies/CallContract.sol\":{\"keccak256\":\"0x5b891896d85a8937da32acd5af2d4b2d3fd8f5fbae639540d54ed972d05304b4\",\"urls\":[\"bzz-raw://982e6db3cc9a612ab3ecd4a404ed15255429e857ebf0bb96b404dedb83313dc1\",\"dweb:/ipfs/Qmeh7ezyMrD4q62edq1oLdR93NuTr8GYwE4XKE62T125Mt\"]}},\"version\":1}",
"bytecode": "0x608060405234801561001057600080fd5b506101d9806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c80632a31f6b414610030575b600080fd5b6100f36004803603604081101561004657600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516919081019060408101602082013564010000000081111561007e57600080fd5b82018360208201111561009057600080fd5b803590602001918460018302840111640100000000831117156100b257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506100f5945050505050565b005b61011d73ffffffffffffffffffffffffffffffffffffffff831682600063ffffffff61012116565b5050565b600080600084516020860185885af190508061019e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f494e5445524e414c5f434f4e54524143545f43414c4c5f4641494c4544000000604482015290519081900360640190fd5b5050505056fea265627a7a723158205af9ac07c5c5e5beed79a9f6a1f24c601f3235918b753b6ba1f37563e91e49e064736f6c63430005110032",
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c80632a31f6b414610030575b600080fd5b6100f36004803603604081101561004657600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516919081019060408101602082013564010000000081111561007e57600080fd5b82018360208201111561009057600080fd5b803590602001918460018302840111640100000000831117156100b257600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506100f5945050505050565b005b61011d73ffffffffffffffffffffffffffffffffffffffff831682600063ffffffff61012116565b5050565b600080600084516020860185885af190508061019e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f494e5445524e414c5f434f4e54524143545f43414c4c5f4641494c4544000000604482015290519081900360640190fd5b5050505056fea265627a7a723158205af9ac07c5c5e5beed79a9f6a1f24c601f3235918b753b6ba1f37563e91e49e064736f6c63430005110032",
"sourceMap": "382:188:6:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;382:188:6;;;;;;;",
"deployedSourceMap": "382:188:6:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;382:188:6;;;;;;;;;;;;;;;;;;;445:123;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;445:123:6;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;445:123:6;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;445:123:6;;;;;;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;445:123:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;445:123:6;;-1:-1:-1;445:123:6;;-1:-1:-1;;;;;445:123:6:i;:::-;;;534:29;:15;;;550:9;561:1;534:29;:15;:29;:::i;:::-;445:123;;:::o;398:479:7:-;505:11;786:1;757;717:9;711:16;665:2;654:9;650:18;631:9;612;599:3;585:228;575:238;;832:6;824:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;398:479;;;;:::o",
"source": "pragma solidity ^0.5.0;\n\nimport './CallContract.sol';\n\n\n/**\n * @title Anti-Owner Proxy used to bypass existing owner checks (typically for testing).\n * @notice Allows anyone to make arbitrary calls through this contract.\n * @dev If this contract is the owner / admin account for another, this contract allows\n * anyone to make owner only calls; bypassing the owner requirement.\n */\ncontract AntiOwnerProxy\n{\n using CallContract for address;\n\n function proxyCall(\n address _contract,\n bytes memory _callData\n ) public\n {\n _contract._call(_callData, 0);\n }\n}\n",
"sourcePath": "/home/circleci/repo/contracts/proxies/AntiOwnerProxy.sol",
"ast": {
"absolutePath": "/home/circleci/repo/contracts/proxies/AntiOwnerProxy.sol",
"exportedSymbols": {
"AntiOwnerProxy": [
1253
]
},
"id": 1254,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1233,
"literals": [
"solidity",
"^",
"0.5",
".0"
],
"nodeType": "PragmaDirective",
"src": "0:23:6"
},
{
"absolutePath": "/home/circleci/repo/contracts/proxies/CallContract.sol",
"file": "./CallContract.sol",
"id": 1234,
"nodeType": "ImportDirective",
"scope": 1254,
"sourceUnit": 1330,
"src": "25:28:6",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [],
"contractDependencies": [],
"contractKind": "contract",
"documentation": "@title Anti-Owner Proxy used to bypass existing owner checks (typically for testing).\n@notice Allows anyone to make arbitrary calls through this contract.\n@dev If this contract is the owner / admin account for another, this contract allows\nanyone to make owner only calls; bypassing the owner requirement.",
"fullyImplemented": true,
"id": 1253,
"linearizedBaseContracts": [
1253
],
"name": "AntiOwnerProxy",
"nodeType": "ContractDefinition",
"nodes": [
{
"id": 1237,
"libraryName": {
"contractScope": null,
"id": 1235,
"name": "CallContract",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1329,
"src": "416:12:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_CallContract_$1329",
"typeString": "library CallContract"
}
},
"nodeType": "UsingForDirective",
"src": "410:31:6",
"typeName": {
"id": 1236,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "433:7:6",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
},
{
"body": {
"id": 1251,
"nodeType": "Block",
"src": "528:40:6",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1247,
"name": "_callData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1241,
"src": "550:9:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"hexValue": "30",
"id": 1248,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "561:1:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"expression": {
"argumentTypes": null,
"id": 1244,
"name": "_contract",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1239,
"src": "534:9:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1246,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "_call",
"nodeType": "MemberAccess",
"referencedDeclaration": 1305,
"src": "534:15:6",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$bound_to$_t_address_$",
"typeString": "function (address,bytes memory,uint256)"
}
},
"id": 1249,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "534:29:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1250,
"nodeType": "ExpressionStatement",
"src": "534:29:6"
}
]
},
"documentation": null,
"id": 1252,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "proxyCall",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1242,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1239,
"name": "_contract",
"nodeType": "VariableDeclaration",
"scope": 1252,
"src": "469:17:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1238,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "469:7:6",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1241,
"name": "_callData",
"nodeType": "VariableDeclaration",
"scope": 1252,
"src": "492:22:6",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 1240,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "492:5:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "463:55:6"
},
"returnParameters": {
"id": 1243,
"nodeType": "ParameterList",
"parameters": [],
"src": "528:0:6"
},
"scope": 1253,
"src": "445:123:6",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
}
],
"scope": 1254,
"src": "382:188:6"
}
],
"src": "0:571:6"
},
"legacyAST": {
"absolutePath": "/home/circleci/repo/contracts/proxies/AntiOwnerProxy.sol",
"exportedSymbols": {
"AntiOwnerProxy": [
1253
]
},
"id": 1254,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1233,
"literals": [
"solidity",
"^",
"0.5",
".0"
],
"nodeType": "PragmaDirective",
"src": "0:23:6"
},
{
"absolutePath": "/home/circleci/repo/contracts/proxies/CallContract.sol",
"file": "./CallContract.sol",
"id": 1234,
"nodeType": "ImportDirective",
"scope": 1254,
"sourceUnit": 1330,
"src": "25:28:6",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [],
"contractDependencies": [],
"contractKind": "contract",
"documentation": "@title Anti-Owner Proxy used to bypass existing owner checks (typically for testing).\n@notice Allows anyone to make arbitrary calls through this contract.\n@dev If this contract is the owner / admin account for another, this contract allows\nanyone to make owner only calls; bypassing the owner requirement.",
"fullyImplemented": true,
"id": 1253,
"linearizedBaseContracts": [
1253
],
"name": "AntiOwnerProxy",
"nodeType": "ContractDefinition",
"nodes": [
{
"id": 1237,
"libraryName": {
"contractScope": null,
"id": 1235,
"name": "CallContract",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1329,
"src": "416:12:6",
"typeDescriptions": {
"typeIdentifier": "t_contract$_CallContract_$1329",
"typeString": "library CallContract"
}
},
"nodeType": "UsingForDirective",
"src": "410:31:6",
"typeName": {
"id": 1236,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "433:7:6",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
},
{
"body": {
"id": 1251,
"nodeType": "Block",
"src": "528:40:6",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1247,
"name": "_callData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1241,
"src": "550:9:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"hexValue": "30",
"id": 1248,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "561:1:6",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"expression": {
"argumentTypes": null,
"id": 1244,
"name": "_contract",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1239,
"src": "534:9:6",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 1246,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "_call",
"nodeType": "MemberAccess",
"referencedDeclaration": 1305,
"src": "534:15:6",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$__$bound_to$_t_address_$",
"typeString": "function (address,bytes memory,uint256)"
}
},
"id": 1249,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "534:29:6",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1250,
"nodeType": "ExpressionStatement",
"src": "534:29:6"
}
]
},
"documentation": null,
"id": 1252,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "proxyCall",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 1242,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1239,
"name": "_contract",
"nodeType": "VariableDeclaration",
"scope": 1252,
"src": "469:17:6",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 1238,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "469:7:6",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1241,
"name": "_callData",
"nodeType": "VariableDeclaration",
"scope": 1252,
"src": "492:22:6",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 1240,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "492:5:6",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "463:55:6"
},
"returnParameters": {
"id": 1243,
"nodeType": "ParameterList",
"parameters": [],
"src": "528:0:6"
},
"scope": 1253,
"src": "445:123:6",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
}
],
"scope": 1254,
"src": "382:188:6"
}
],
"src": "0:571:6"
},
"compiler": {
"name": "solc",
"version": "0.5.17+commit.d19bba13.Emscripten.clang"
},
"networks": {},
"schemaVersion": "3.0.23",
"updatedAt": "2020-04-07T20:17:34.940Z",
"devdoc": {
"details": "If this contract is the owner / admin account for another, this contract allows anyone to make owner only calls; bypassing the owner requirement.",
"methods": {},
"title": "Anti-Owner Proxy used to bypass existing owner checks (typically for testing)."
},
"userdoc": {
"methods": {},
"notice": "Allows anyone to make arbitrary calls through this contract."
}
}