2018-06-20 08:09:14 +00:00
{
2018-09-26 09:19:53 +00:00
"contractName" : "SignatureDecoder" ,
2018-06-28 17:13:59 +00:00
"abi" : [ ] ,
2018-09-26 09:19:53 +00:00
"bytecode" : "0x6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a72305820d9ee3caf094740365f7393d3f6ba692eb56aac36a91a228ffd64563a0a424d7e0029" ,
"deployedBytecode" : "0x6080604052600080fd00a165627a7a72305820d9ee3caf094740365f7393d3f6ba692eb56aac36a91a228ffd64563a0a424d7e0029" ,
"sourceMap" : "226:1692:12:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;226:1692:12;;;;;;;" ,
"deployedSourceMap" : "226:1692:12:-;;;;;" ,
"source" : "pragma solidity 0.4.24;\n\n\n/// @title SignatureDecoder - Decodes signatures that a encoded as bytes\n/// @author Ricardo Guilherme Schmidt (Status Research & Development GmbH) \n/// @author Richard Meissner - <richard@gnosis.pm>\ncontract SignatureDecoder {\n \n /// @dev Recovers address who signed the message \n /// @param messageHash operation ethereum signed message hash\n /// @param messageSignature message `txHash` signature\n /// @param pos which signature to read\n function recoverKey (\n bytes32 messageHash, \n bytes messageSignature,\n uint256 pos\n )\n internal\n pure\n returns (address) \n {\n uint8 v;\n bytes32 r;\n bytes32 s;\n (v, r, s) = signatureSplit(messageSignature, pos);\n return ecrecover(messageHash, v, r, s);\n }\n\n /// @dev divides bytes signature into `uint8 v, bytes32 r, bytes32 s`\n /// @param pos which signature to read\n /// @param signatures concatenated rsv signatures\n function signatureSplit(bytes signatures, uint256 pos)\n internal\n pure\n returns (uint8 v, bytes32 r, bytes32 s)\n {\n // The signature format is a compact form of:\n // {bytes32 r}{bytes32 s}{uint8 v}\n // Compact means, uint8 is not padded to 32 bytes.\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let signaturePos := mul(0x41, pos)\n r := mload(add(signatures, add(signaturePos, 0x20)))\n s := mload(add(signatures, add(signaturePos, 0x40)))\n // Here we are loading the last 32 bytes, including 31 bytes\n // of 's'. There is no 'mload8' to do this.\n //\n // 'byte' is not working due to the Solidity parser, so lets\n // use the second best option, 'and'\n v := and(mload(add(signatures, add(signaturePos, 0x41))), 0xff)\n }\n }\n}\n" ,
"sourcePath" : "/Users/apanizo/git/gnosis/safe-contracts/contracts/common/SignatureDecoder.sol" ,
2018-06-20 08:09:14 +00:00
"ast" : {
2018-09-26 09:19:53 +00:00
"absolutePath" : "/Users/apanizo/git/gnosis/safe-contracts/contracts/common/SignatureDecoder.sol" ,
2018-06-20 08:09:14 +00:00
"exportedSymbols" : {
2018-09-26 09:19:53 +00:00
"SignatureDecoder" : [
1791
2018-06-20 08:09:14 +00:00
]
} ,
2018-09-26 09:19:53 +00:00
"id" : 1792 ,
2018-06-20 08:09:14 +00:00
"nodeType" : "SourceUnit" ,
"nodes" : [
{
2018-09-26 09:19:53 +00:00
"id" : 1737 ,
2018-06-20 08:09:14 +00:00
"literals" : [
"solidity" ,
"0.4" ,
".24"
] ,
"nodeType" : "PragmaDirective" ,
2018-09-26 09:19:53 +00:00
"src" : "0:23:12"
2018-06-20 08:09:14 +00:00
} ,
{
"baseContracts" : [ ] ,
"contractDependencies" : [ ] ,
"contractKind" : "contract" ,
2018-09-26 09:19:53 +00:00
"documentation" : "@title SignatureDecoder - Decodes signatures that a encoded as bytes\n @author Ricardo Guilherme Schmidt (Status Research & Development GmbH) \n @author Richard Meissner - <richard@gnosis.pm>" ,
2018-06-20 08:09:14 +00:00
"fullyImplemented" : true ,
2018-09-26 09:19:53 +00:00
"id" : 1791 ,
2018-06-20 08:09:14 +00:00
"linearizedBaseContracts" : [
2018-09-26 09:19:53 +00:00
1791
2018-06-20 08:09:14 +00:00
] ,
2018-09-26 09:19:53 +00:00
"name" : "SignatureDecoder" ,
2018-06-20 08:09:14 +00:00
"nodeType" : "ContractDefinition" ,
"nodes" : [
{
"body" : {
2018-09-26 09:19:53 +00:00
"id" : 1774 ,
2018-06-20 08:09:14 +00:00
"nodeType" : "Block" ,
2018-09-26 09:19:53 +00:00
"src" : "656:169:12" ,
2018-06-20 08:09:14 +00:00
"statements" : [
{
"assignments" : [ ] ,
"declarations" : [
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1749 ,
2018-06-20 08:09:14 +00:00
"name" : "v" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1775 ,
"src" : "666:7:12" ,
2018-06-20 08:09:14 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint8" ,
"typeString" : "uint8"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1748 ,
2018-06-20 08:09:14 +00:00
"name" : "uint8" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "666:5:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_uint8" ,
"typeString" : "uint8"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
2018-09-26 09:19:53 +00:00
"id" : 1750 ,
2018-06-20 08:09:14 +00:00
"initialValue" : null ,
"nodeType" : "VariableDeclarationStatement" ,
2018-09-26 09:19:53 +00:00
"src" : "666:7:12"
2018-06-20 08:09:14 +00:00
} ,
{
"assignments" : [ ] ,
"declarations" : [
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1752 ,
2018-06-20 08:09:14 +00:00
"name" : "r" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1775 ,
"src" : "683:9:12" ,
2018-06-20 08:09:14 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1751 ,
2018-06-20 08:09:14 +00:00
"name" : "bytes32" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "683:7:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
2018-09-26 09:19:53 +00:00
"id" : 1753 ,
2018-06-20 08:09:14 +00:00
"initialValue" : null ,
"nodeType" : "VariableDeclarationStatement" ,
2018-09-26 09:19:53 +00:00
"src" : "683:9:12"
2018-06-20 08:09:14 +00:00
} ,
{
"assignments" : [ ] ,
"declarations" : [
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1755 ,
2018-06-20 08:09:14 +00:00
"name" : "s" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1775 ,
"src" : "702:9:12" ,
2018-06-20 08:09:14 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1754 ,
2018-06-20 08:09:14 +00:00
"name" : "bytes32" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "702:7:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
2018-09-26 09:19:53 +00:00
"id" : 1756 ,
2018-06-20 08:09:14 +00:00
"initialValue" : null ,
"nodeType" : "VariableDeclarationStatement" ,
2018-09-26 09:19:53 +00:00
"src" : "702:9:12"
2018-06-20 08:09:14 +00:00
} ,
{
"expression" : {
"argumentTypes" : null ,
2018-09-26 09:19:53 +00:00
"id" : 1765 ,
2018-06-20 08:09:14 +00:00
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftHandSide" : {
"argumentTypes" : null ,
"components" : [
{
"argumentTypes" : null ,
2018-09-26 09:19:53 +00:00
"id" : 1757 ,
2018-06-20 08:09:14 +00:00
"name" : "v" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-09-26 09:19:53 +00:00
"referencedDeclaration" : 1749 ,
"src" : "722:1:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_uint8" ,
"typeString" : "uint8"
}
} ,
{
"argumentTypes" : null ,
2018-09-26 09:19:53 +00:00
"id" : 1758 ,
2018-06-20 08:09:14 +00:00
"name" : "r" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-09-26 09:19:53 +00:00
"referencedDeclaration" : 1752 ,
"src" : "725:1:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
{
"argumentTypes" : null ,
2018-09-26 09:19:53 +00:00
"id" : 1759 ,
2018-06-20 08:09:14 +00:00
"name" : "s" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-09-26 09:19:53 +00:00
"referencedDeclaration" : 1755 ,
"src" : "728:1:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
}
] ,
2018-09-26 09:19:53 +00:00
"id" : 1760 ,
2018-06-20 08:09:14 +00:00
"isConstant" : false ,
"isInlineArray" : false ,
"isLValue" : true ,
"isPure" : false ,
"lValueRequested" : true ,
"nodeType" : "TupleExpression" ,
2018-09-26 09:19:53 +00:00
"src" : "721:9:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_tuple$_t_uint8_$_t_bytes32_$_t_bytes32_$" ,
"typeString" : "tuple(uint8,bytes32,bytes32)"
}
} ,
"nodeType" : "Assignment" ,
"operator" : "=" ,
"rightHandSide" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
2018-09-26 09:19:53 +00:00
"id" : 1762 ,
2018-06-20 08:09:14 +00:00
"name" : "messageSignature" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-09-26 09:19:53 +00:00
"referencedDeclaration" : 1741 ,
"src" : "748:16:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes memory"
}
} ,
{
"argumentTypes" : null ,
2018-09-26 09:19:53 +00:00
"id" : 1763 ,
2018-06-20 08:09:14 +00:00
"name" : "pos" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-09-26 09:19:53 +00:00
"referencedDeclaration" : 1743 ,
"src" : "766:3:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes memory"
} ,
{
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
] ,
2018-09-26 09:19:53 +00:00
"id" : 1761 ,
2018-06-20 08:09:14 +00:00
"name" : "signatureSplit" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-09-26 09:19:53 +00:00
"referencedDeclaration" : 1790 ,
"src" : "733:14:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$_t_bytes32_$_t_bytes32_$" ,
"typeString" : "function (bytes memory,uint256) pure returns (uint8,bytes32,bytes32)"
}
} ,
2018-09-26 09:19:53 +00:00
"id" : 1764 ,
2018-06-20 08:09:14 +00:00
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
2018-09-26 09:19:53 +00:00
"src" : "733:37:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_tuple$_t_uint8_$_t_bytes32_$_t_bytes32_$" ,
"typeString" : "tuple(uint8,bytes32,bytes32)"
}
} ,
2018-09-26 09:19:53 +00:00
"src" : "721:49:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_tuple$__$" ,
"typeString" : "tuple()"
}
} ,
2018-09-26 09:19:53 +00:00
"id" : 1766 ,
2018-06-20 08:09:14 +00:00
"nodeType" : "ExpressionStatement" ,
2018-09-26 09:19:53 +00:00
"src" : "721:49:12"
2018-06-20 08:09:14 +00:00
} ,
{
"expression" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
2018-09-26 09:19:53 +00:00
"id" : 1768 ,
"name" : "messageHash" ,
2018-06-20 08:09:14 +00:00
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-09-26 09:19:53 +00:00
"referencedDeclaration" : 1739 ,
"src" : "797:11:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
{
"argumentTypes" : null ,
2018-09-26 09:19:53 +00:00
"id" : 1769 ,
2018-06-20 08:09:14 +00:00
"name" : "v" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-09-26 09:19:53 +00:00
"referencedDeclaration" : 1749 ,
"src" : "810:1:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_uint8" ,
"typeString" : "uint8"
}
} ,
{
"argumentTypes" : null ,
2018-09-26 09:19:53 +00:00
"id" : 1770 ,
2018-06-20 08:09:14 +00:00
"name" : "r" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-09-26 09:19:53 +00:00
"referencedDeclaration" : 1752 ,
"src" : "813:1:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
{
"argumentTypes" : null ,
2018-09-26 09:19:53 +00:00
"id" : 1771 ,
2018-06-20 08:09:14 +00:00
"name" : "s" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-09-26 09:19:53 +00:00
"referencedDeclaration" : 1755 ,
"src" : "816:1:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
} ,
{
"typeIdentifier" : "t_uint8" ,
"typeString" : "uint8"
} ,
{
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
} ,
{
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
] ,
2018-09-26 09:19:53 +00:00
"id" : 1767 ,
2018-06-20 08:09:14 +00:00
"name" : "ecrecover" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-10-05 15:26:48 +00:00
"referencedDeclaration" : 4007 ,
2018-09-26 09:19:53 +00:00
"src" : "787:9:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$" ,
"typeString" : "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
}
} ,
2018-09-26 09:19:53 +00:00
"id" : 1772 ,
2018-06-20 08:09:14 +00:00
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
2018-09-26 09:19:53 +00:00
"src" : "787:31:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
2018-09-26 09:19:53 +00:00
"functionReturnParameters" : 1747 ,
"id" : 1773 ,
2018-06-20 08:09:14 +00:00
"nodeType" : "Return" ,
2018-09-26 09:19:53 +00:00
"src" : "780:38:12"
2018-06-20 08:09:14 +00:00
}
]
} ,
2018-09-26 09:19:53 +00:00
"documentation" : "@dev Recovers address who signed the message \n @param messageHash operation ethereum signed message hash\n @param messageSignature message `txHash` signature\n @param pos which signature to read" ,
"id" : 1775 ,
2018-06-20 08:09:14 +00:00
"implemented" : true ,
"isConstructor" : false ,
"isDeclaredConst" : true ,
"modifiers" : [ ] ,
"name" : "recoverKey" ,
"nodeType" : "FunctionDefinition" ,
"parameters" : {
2018-09-26 09:19:53 +00:00
"id" : 1744 ,
2018-06-20 08:09:14 +00:00
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1739 ,
"name" : "messageHash" ,
2018-06-20 08:09:14 +00:00
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1775 ,
"src" : "515:19:12" ,
2018-06-20 08:09:14 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1738 ,
2018-06-20 08:09:14 +00:00
"name" : "bytes32" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "515:7:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1741 ,
2018-06-20 08:09:14 +00:00
"name" : "messageSignature" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1775 ,
"src" : "545:22:12" ,
2018-06-20 08:09:14 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1740 ,
2018-06-20 08:09:14 +00:00
"name" : "bytes" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "545:5:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_storage_ptr" ,
"typeString" : "bytes"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1743 ,
2018-06-20 08:09:14 +00:00
"name" : "pos" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1775 ,
"src" : "577:11:12" ,
2018-06-20 08:09:14 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1742 ,
2018-06-20 08:09:14 +00:00
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "577:7:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
2018-09-26 09:19:53 +00:00
"src" : "505:89:12"
2018-06-20 08:09:14 +00:00
} ,
"payable" : false ,
"returnParameters" : {
2018-09-26 09:19:53 +00:00
"id" : 1747 ,
2018-06-20 08:09:14 +00:00
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1746 ,
2018-06-20 08:09:14 +00:00
"name" : "" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1775 ,
"src" : "642:7:12" ,
2018-06-20 08:09:14 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1745 ,
2018-06-20 08:09:14 +00:00
"name" : "address" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "642:7:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
2018-09-26 09:19:53 +00:00
"src" : "641:9:12"
2018-06-20 08:09:14 +00:00
} ,
2018-09-26 09:19:53 +00:00
"scope" : 1791 ,
"src" : "485:340:12" ,
2018-06-20 08:09:14 +00:00
"stateMutability" : "pure" ,
"superFunction" : null ,
2018-06-28 17:13:59 +00:00
"visibility" : "internal"
2018-06-20 08:09:14 +00:00
} ,
{
"body" : {
2018-09-26 09:19:53 +00:00
"id" : 1789 ,
2018-06-20 08:09:14 +00:00
"nodeType" : "Block" ,
2018-09-26 09:19:53 +00:00
"src" : "1139:777:12" ,
2018-06-20 08:09:14 +00:00
"statements" : [
{
"externalReferences" : [
{
"r" : {
2018-09-26 09:19:53 +00:00
"declaration" : 1784 ,
2018-06-20 08:09:14 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-09-26 09:19:53 +00:00
"src" : "1441:1:12" ,
2018-06-20 08:09:14 +00:00
"valueSize" : 1
}
} ,
{
"pos" : {
2018-09-26 09:19:53 +00:00
"declaration" : 1779 ,
2018-06-20 08:09:14 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-09-26 09:19:53 +00:00
"src" : "1424:3:12" ,
2018-06-20 08:09:14 +00:00
"valueSize" : 1
}
} ,
{
"signatures" : {
2018-09-26 09:19:53 +00:00
"declaration" : 1777 ,
2018-06-20 08:09:14 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-09-26 09:19:53 +00:00
"src" : "1456:10:12" ,
2018-06-20 08:09:14 +00:00
"valueSize" : 1
}
} ,
{
"s" : {
2018-09-26 09:19:53 +00:00
"declaration" : 1786 ,
2018-06-20 08:09:14 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-09-26 09:19:53 +00:00
"src" : "1506:1:12" ,
2018-06-20 08:09:14 +00:00
"valueSize" : 1
}
} ,
{
"signatures" : {
2018-09-26 09:19:53 +00:00
"declaration" : 1777 ,
2018-06-20 08:09:14 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-09-26 09:19:53 +00:00
"src" : "1521:10:12" ,
2018-06-20 08:09:14 +00:00
"valueSize" : 1
}
} ,
{
"v" : {
2018-09-26 09:19:53 +00:00
"declaration" : 1782 ,
2018-06-20 08:09:14 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-09-26 09:19:53 +00:00
"src" : "1837:1:12" ,
2018-06-20 08:09:14 +00:00
"valueSize" : 1
}
} ,
{
"signatures" : {
2018-09-26 09:19:53 +00:00
"declaration" : 1777 ,
2018-06-20 08:09:14 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-09-26 09:19:53 +00:00
"src" : "1856:10:12" ,
2018-06-20 08:09:14 +00:00
"valueSize" : 1
}
}
] ,
2018-09-26 09:19:53 +00:00
"id" : 1788 ,
2018-06-20 08:09:14 +00:00
"nodeType" : "InlineAssembly" ,
"operations" : "{\n let signaturePos := mul(0x41, pos)\n r := mload(add(signatures, add(signaturePos, 0x20)))\n s := mload(add(signatures, add(signaturePos, 0x40)))\n v := and(mload(add(signatures, add(signaturePos, 0x41))), 0xff)\n}" ,
2018-09-26 09:19:53 +00:00
"src" : "1371:545:12"
2018-06-20 08:09:14 +00:00
}
]
} ,
"documentation" : "@dev divides bytes signature into `uint8 v, bytes32 r, bytes32 s`\n @param pos which signature to read\n @param signatures concatenated rsv signatures" ,
2018-09-26 09:19:53 +00:00
"id" : 1790 ,
2018-06-20 08:09:14 +00:00
"implemented" : true ,
"isConstructor" : false ,
"isDeclaredConst" : true ,
"modifiers" : [ ] ,
"name" : "signatureSplit" ,
"nodeType" : "FunctionDefinition" ,
"parameters" : {
2018-09-26 09:19:53 +00:00
"id" : 1780 ,
2018-06-20 08:09:14 +00:00
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1777 ,
2018-06-20 08:09:14 +00:00
"name" : "signatures" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1790 ,
"src" : "1026:16:12" ,
2018-06-20 08:09:14 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1776 ,
2018-06-20 08:09:14 +00:00
"name" : "bytes" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "1026:5:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_storage_ptr" ,
"typeString" : "bytes"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1779 ,
2018-06-20 08:09:14 +00:00
"name" : "pos" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1790 ,
"src" : "1044:11:12" ,
2018-06-20 08:09:14 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1778 ,
2018-06-20 08:09:14 +00:00
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "1044:7:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
2018-09-26 09:19:53 +00:00
"src" : "1025:31:12"
2018-06-20 08:09:14 +00:00
} ,
"payable" : false ,
"returnParameters" : {
2018-09-26 09:19:53 +00:00
"id" : 1787 ,
2018-06-20 08:09:14 +00:00
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1782 ,
2018-06-20 08:09:14 +00:00
"name" : "v" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1790 ,
"src" : "1104:7:12" ,
2018-06-20 08:09:14 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint8" ,
"typeString" : "uint8"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1781 ,
2018-06-20 08:09:14 +00:00
"name" : "uint8" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "1104:5:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_uint8" ,
"typeString" : "uint8"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1784 ,
2018-06-20 08:09:14 +00:00
"name" : "r" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1790 ,
"src" : "1113:9:12" ,
2018-06-20 08:09:14 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1783 ,
2018-06-20 08:09:14 +00:00
"name" : "bytes32" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "1113:7:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1786 ,
2018-06-20 08:09:14 +00:00
"name" : "s" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1790 ,
"src" : "1124:9:12" ,
2018-06-20 08:09:14 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1785 ,
2018-06-20 08:09:14 +00:00
"name" : "bytes32" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "1124:7:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
2018-09-26 09:19:53 +00:00
"src" : "1103:31:12"
2018-06-20 08:09:14 +00:00
} ,
2018-09-26 09:19:53 +00:00
"scope" : 1791 ,
"src" : "1002:914:12" ,
2018-06-20 08:09:14 +00:00
"stateMutability" : "pure" ,
"superFunction" : null ,
2018-06-28 17:13:59 +00:00
"visibility" : "internal"
2018-06-20 08:09:14 +00:00
}
] ,
2018-09-26 09:19:53 +00:00
"scope" : 1792 ,
"src" : "226:1692:12"
2018-06-20 08:09:14 +00:00
}
] ,
2018-09-26 09:19:53 +00:00
"src" : "0:1919:12"
2018-06-20 08:09:14 +00:00
} ,
"legacyAST" : {
2018-09-26 09:19:53 +00:00
"absolutePath" : "/Users/apanizo/git/gnosis/safe-contracts/contracts/common/SignatureDecoder.sol" ,
2018-06-20 08:09:14 +00:00
"exportedSymbols" : {
2018-09-26 09:19:53 +00:00
"SignatureDecoder" : [
1791
2018-06-20 08:09:14 +00:00
]
} ,
2018-09-26 09:19:53 +00:00
"id" : 1792 ,
2018-06-20 08:09:14 +00:00
"nodeType" : "SourceUnit" ,
"nodes" : [
{
2018-09-26 09:19:53 +00:00
"id" : 1737 ,
2018-06-20 08:09:14 +00:00
"literals" : [
"solidity" ,
"0.4" ,
".24"
] ,
"nodeType" : "PragmaDirective" ,
2018-09-26 09:19:53 +00:00
"src" : "0:23:12"
2018-06-20 08:09:14 +00:00
} ,
{
"baseContracts" : [ ] ,
"contractDependencies" : [ ] ,
"contractKind" : "contract" ,
2018-09-26 09:19:53 +00:00
"documentation" : "@title SignatureDecoder - Decodes signatures that a encoded as bytes\n @author Ricardo Guilherme Schmidt (Status Research & Development GmbH) \n @author Richard Meissner - <richard@gnosis.pm>" ,
2018-06-20 08:09:14 +00:00
"fullyImplemented" : true ,
2018-09-26 09:19:53 +00:00
"id" : 1791 ,
2018-06-20 08:09:14 +00:00
"linearizedBaseContracts" : [
2018-09-26 09:19:53 +00:00
1791
2018-06-20 08:09:14 +00:00
] ,
2018-09-26 09:19:53 +00:00
"name" : "SignatureDecoder" ,
2018-06-20 08:09:14 +00:00
"nodeType" : "ContractDefinition" ,
"nodes" : [
{
"body" : {
2018-09-26 09:19:53 +00:00
"id" : 1774 ,
2018-06-20 08:09:14 +00:00
"nodeType" : "Block" ,
2018-09-26 09:19:53 +00:00
"src" : "656:169:12" ,
2018-06-20 08:09:14 +00:00
"statements" : [
{
"assignments" : [ ] ,
"declarations" : [
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1749 ,
2018-06-20 08:09:14 +00:00
"name" : "v" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1775 ,
"src" : "666:7:12" ,
2018-06-20 08:09:14 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint8" ,
"typeString" : "uint8"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1748 ,
2018-06-20 08:09:14 +00:00
"name" : "uint8" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "666:5:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_uint8" ,
"typeString" : "uint8"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
2018-09-26 09:19:53 +00:00
"id" : 1750 ,
2018-06-20 08:09:14 +00:00
"initialValue" : null ,
"nodeType" : "VariableDeclarationStatement" ,
2018-09-26 09:19:53 +00:00
"src" : "666:7:12"
2018-06-20 08:09:14 +00:00
} ,
{
"assignments" : [ ] ,
"declarations" : [
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1752 ,
2018-06-20 08:09:14 +00:00
"name" : "r" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1775 ,
"src" : "683:9:12" ,
2018-06-20 08:09:14 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1751 ,
2018-06-20 08:09:14 +00:00
"name" : "bytes32" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "683:7:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
2018-09-26 09:19:53 +00:00
"id" : 1753 ,
2018-06-20 08:09:14 +00:00
"initialValue" : null ,
"nodeType" : "VariableDeclarationStatement" ,
2018-09-26 09:19:53 +00:00
"src" : "683:9:12"
2018-06-20 08:09:14 +00:00
} ,
{
"assignments" : [ ] ,
"declarations" : [
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1755 ,
2018-06-20 08:09:14 +00:00
"name" : "s" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1775 ,
"src" : "702:9:12" ,
2018-06-20 08:09:14 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1754 ,
2018-06-20 08:09:14 +00:00
"name" : "bytes32" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "702:7:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
2018-09-26 09:19:53 +00:00
"id" : 1756 ,
2018-06-20 08:09:14 +00:00
"initialValue" : null ,
"nodeType" : "VariableDeclarationStatement" ,
2018-09-26 09:19:53 +00:00
"src" : "702:9:12"
2018-06-20 08:09:14 +00:00
} ,
{
"expression" : {
"argumentTypes" : null ,
2018-09-26 09:19:53 +00:00
"id" : 1765 ,
2018-06-20 08:09:14 +00:00
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftHandSide" : {
"argumentTypes" : null ,
"components" : [
{
"argumentTypes" : null ,
2018-09-26 09:19:53 +00:00
"id" : 1757 ,
2018-06-20 08:09:14 +00:00
"name" : "v" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-09-26 09:19:53 +00:00
"referencedDeclaration" : 1749 ,
"src" : "722:1:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_uint8" ,
"typeString" : "uint8"
}
} ,
{
"argumentTypes" : null ,
2018-09-26 09:19:53 +00:00
"id" : 1758 ,
2018-06-20 08:09:14 +00:00
"name" : "r" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-09-26 09:19:53 +00:00
"referencedDeclaration" : 1752 ,
"src" : "725:1:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
{
"argumentTypes" : null ,
2018-09-26 09:19:53 +00:00
"id" : 1759 ,
2018-06-20 08:09:14 +00:00
"name" : "s" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-09-26 09:19:53 +00:00
"referencedDeclaration" : 1755 ,
"src" : "728:1:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
}
] ,
2018-09-26 09:19:53 +00:00
"id" : 1760 ,
2018-06-20 08:09:14 +00:00
"isConstant" : false ,
"isInlineArray" : false ,
"isLValue" : true ,
"isPure" : false ,
"lValueRequested" : true ,
"nodeType" : "TupleExpression" ,
2018-09-26 09:19:53 +00:00
"src" : "721:9:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_tuple$_t_uint8_$_t_bytes32_$_t_bytes32_$" ,
"typeString" : "tuple(uint8,bytes32,bytes32)"
}
} ,
"nodeType" : "Assignment" ,
"operator" : "=" ,
"rightHandSide" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
2018-09-26 09:19:53 +00:00
"id" : 1762 ,
2018-06-20 08:09:14 +00:00
"name" : "messageSignature" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-09-26 09:19:53 +00:00
"referencedDeclaration" : 1741 ,
"src" : "748:16:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes memory"
}
} ,
{
"argumentTypes" : null ,
2018-09-26 09:19:53 +00:00
"id" : 1763 ,
2018-06-20 08:09:14 +00:00
"name" : "pos" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-09-26 09:19:53 +00:00
"referencedDeclaration" : 1743 ,
"src" : "766:3:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes memory"
} ,
{
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
] ,
2018-09-26 09:19:53 +00:00
"id" : 1761 ,
2018-06-20 08:09:14 +00:00
"name" : "signatureSplit" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-09-26 09:19:53 +00:00
"referencedDeclaration" : 1790 ,
"src" : "733:14:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$_t_bytes32_$_t_bytes32_$" ,
"typeString" : "function (bytes memory,uint256) pure returns (uint8,bytes32,bytes32)"
}
} ,
2018-09-26 09:19:53 +00:00
"id" : 1764 ,
2018-06-20 08:09:14 +00:00
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
2018-09-26 09:19:53 +00:00
"src" : "733:37:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_tuple$_t_uint8_$_t_bytes32_$_t_bytes32_$" ,
"typeString" : "tuple(uint8,bytes32,bytes32)"
}
} ,
2018-09-26 09:19:53 +00:00
"src" : "721:49:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_tuple$__$" ,
"typeString" : "tuple()"
}
} ,
2018-09-26 09:19:53 +00:00
"id" : 1766 ,
2018-06-20 08:09:14 +00:00
"nodeType" : "ExpressionStatement" ,
2018-09-26 09:19:53 +00:00
"src" : "721:49:12"
2018-06-20 08:09:14 +00:00
} ,
{
"expression" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
2018-09-26 09:19:53 +00:00
"id" : 1768 ,
"name" : "messageHash" ,
2018-06-20 08:09:14 +00:00
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-09-26 09:19:53 +00:00
"referencedDeclaration" : 1739 ,
"src" : "797:11:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
{
"argumentTypes" : null ,
2018-09-26 09:19:53 +00:00
"id" : 1769 ,
2018-06-20 08:09:14 +00:00
"name" : "v" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-09-26 09:19:53 +00:00
"referencedDeclaration" : 1749 ,
"src" : "810:1:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_uint8" ,
"typeString" : "uint8"
}
} ,
{
"argumentTypes" : null ,
2018-09-26 09:19:53 +00:00
"id" : 1770 ,
2018-06-20 08:09:14 +00:00
"name" : "r" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-09-26 09:19:53 +00:00
"referencedDeclaration" : 1752 ,
"src" : "813:1:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
{
"argumentTypes" : null ,
2018-09-26 09:19:53 +00:00
"id" : 1771 ,
2018-06-20 08:09:14 +00:00
"name" : "s" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-09-26 09:19:53 +00:00
"referencedDeclaration" : 1755 ,
"src" : "816:1:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
} ,
{
"typeIdentifier" : "t_uint8" ,
"typeString" : "uint8"
} ,
{
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
} ,
{
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
] ,
2018-09-26 09:19:53 +00:00
"id" : 1767 ,
2018-06-20 08:09:14 +00:00
"name" : "ecrecover" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-10-05 15:26:48 +00:00
"referencedDeclaration" : 4007 ,
2018-09-26 09:19:53 +00:00
"src" : "787:9:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$" ,
"typeString" : "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
}
} ,
2018-09-26 09:19:53 +00:00
"id" : 1772 ,
2018-06-20 08:09:14 +00:00
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
2018-09-26 09:19:53 +00:00
"src" : "787:31:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
2018-09-26 09:19:53 +00:00
"functionReturnParameters" : 1747 ,
"id" : 1773 ,
2018-06-20 08:09:14 +00:00
"nodeType" : "Return" ,
2018-09-26 09:19:53 +00:00
"src" : "780:38:12"
2018-06-20 08:09:14 +00:00
}
]
} ,
2018-09-26 09:19:53 +00:00
"documentation" : "@dev Recovers address who signed the message \n @param messageHash operation ethereum signed message hash\n @param messageSignature message `txHash` signature\n @param pos which signature to read" ,
"id" : 1775 ,
2018-06-20 08:09:14 +00:00
"implemented" : true ,
"isConstructor" : false ,
"isDeclaredConst" : true ,
"modifiers" : [ ] ,
"name" : "recoverKey" ,
"nodeType" : "FunctionDefinition" ,
"parameters" : {
2018-09-26 09:19:53 +00:00
"id" : 1744 ,
2018-06-20 08:09:14 +00:00
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1739 ,
"name" : "messageHash" ,
2018-06-20 08:09:14 +00:00
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1775 ,
"src" : "515:19:12" ,
2018-06-20 08:09:14 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1738 ,
2018-06-20 08:09:14 +00:00
"name" : "bytes32" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "515:7:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1741 ,
2018-06-20 08:09:14 +00:00
"name" : "messageSignature" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1775 ,
"src" : "545:22:12" ,
2018-06-20 08:09:14 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1740 ,
2018-06-20 08:09:14 +00:00
"name" : "bytes" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "545:5:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_storage_ptr" ,
"typeString" : "bytes"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1743 ,
2018-06-20 08:09:14 +00:00
"name" : "pos" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1775 ,
"src" : "577:11:12" ,
2018-06-20 08:09:14 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1742 ,
2018-06-20 08:09:14 +00:00
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "577:7:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
2018-09-26 09:19:53 +00:00
"src" : "505:89:12"
2018-06-20 08:09:14 +00:00
} ,
"payable" : false ,
"returnParameters" : {
2018-09-26 09:19:53 +00:00
"id" : 1747 ,
2018-06-20 08:09:14 +00:00
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1746 ,
2018-06-20 08:09:14 +00:00
"name" : "" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1775 ,
"src" : "642:7:12" ,
2018-06-20 08:09:14 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1745 ,
2018-06-20 08:09:14 +00:00
"name" : "address" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "642:7:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
2018-09-26 09:19:53 +00:00
"src" : "641:9:12"
2018-06-20 08:09:14 +00:00
} ,
2018-09-26 09:19:53 +00:00
"scope" : 1791 ,
"src" : "485:340:12" ,
2018-06-20 08:09:14 +00:00
"stateMutability" : "pure" ,
"superFunction" : null ,
2018-06-28 17:13:59 +00:00
"visibility" : "internal"
2018-06-20 08:09:14 +00:00
} ,
{
"body" : {
2018-09-26 09:19:53 +00:00
"id" : 1789 ,
2018-06-20 08:09:14 +00:00
"nodeType" : "Block" ,
2018-09-26 09:19:53 +00:00
"src" : "1139:777:12" ,
2018-06-20 08:09:14 +00:00
"statements" : [
{
"externalReferences" : [
{
"r" : {
2018-09-26 09:19:53 +00:00
"declaration" : 1784 ,
2018-06-20 08:09:14 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-09-26 09:19:53 +00:00
"src" : "1441:1:12" ,
2018-06-20 08:09:14 +00:00
"valueSize" : 1
}
} ,
{
"pos" : {
2018-09-26 09:19:53 +00:00
"declaration" : 1779 ,
2018-06-20 08:09:14 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-09-26 09:19:53 +00:00
"src" : "1424:3:12" ,
2018-06-20 08:09:14 +00:00
"valueSize" : 1
}
} ,
{
"signatures" : {
2018-09-26 09:19:53 +00:00
"declaration" : 1777 ,
2018-06-20 08:09:14 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-09-26 09:19:53 +00:00
"src" : "1456:10:12" ,
2018-06-20 08:09:14 +00:00
"valueSize" : 1
}
} ,
{
"s" : {
2018-09-26 09:19:53 +00:00
"declaration" : 1786 ,
2018-06-20 08:09:14 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-09-26 09:19:53 +00:00
"src" : "1506:1:12" ,
2018-06-20 08:09:14 +00:00
"valueSize" : 1
}
} ,
{
"signatures" : {
2018-09-26 09:19:53 +00:00
"declaration" : 1777 ,
2018-06-20 08:09:14 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-09-26 09:19:53 +00:00
"src" : "1521:10:12" ,
2018-06-20 08:09:14 +00:00
"valueSize" : 1
}
} ,
{
"v" : {
2018-09-26 09:19:53 +00:00
"declaration" : 1782 ,
2018-06-20 08:09:14 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-09-26 09:19:53 +00:00
"src" : "1837:1:12" ,
2018-06-20 08:09:14 +00:00
"valueSize" : 1
}
} ,
{
"signatures" : {
2018-09-26 09:19:53 +00:00
"declaration" : 1777 ,
2018-06-20 08:09:14 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-09-26 09:19:53 +00:00
"src" : "1856:10:12" ,
2018-06-20 08:09:14 +00:00
"valueSize" : 1
}
}
] ,
2018-09-26 09:19:53 +00:00
"id" : 1788 ,
2018-06-20 08:09:14 +00:00
"nodeType" : "InlineAssembly" ,
"operations" : "{\n let signaturePos := mul(0x41, pos)\n r := mload(add(signatures, add(signaturePos, 0x20)))\n s := mload(add(signatures, add(signaturePos, 0x40)))\n v := and(mload(add(signatures, add(signaturePos, 0x41))), 0xff)\n}" ,
2018-09-26 09:19:53 +00:00
"src" : "1371:545:12"
2018-06-20 08:09:14 +00:00
}
]
} ,
"documentation" : "@dev divides bytes signature into `uint8 v, bytes32 r, bytes32 s`\n @param pos which signature to read\n @param signatures concatenated rsv signatures" ,
2018-09-26 09:19:53 +00:00
"id" : 1790 ,
2018-06-20 08:09:14 +00:00
"implemented" : true ,
"isConstructor" : false ,
"isDeclaredConst" : true ,
"modifiers" : [ ] ,
"name" : "signatureSplit" ,
"nodeType" : "FunctionDefinition" ,
"parameters" : {
2018-09-26 09:19:53 +00:00
"id" : 1780 ,
2018-06-20 08:09:14 +00:00
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1777 ,
2018-06-20 08:09:14 +00:00
"name" : "signatures" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1790 ,
"src" : "1026:16:12" ,
2018-06-20 08:09:14 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1776 ,
2018-06-20 08:09:14 +00:00
"name" : "bytes" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "1026:5:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_storage_ptr" ,
"typeString" : "bytes"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1779 ,
2018-06-20 08:09:14 +00:00
"name" : "pos" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1790 ,
"src" : "1044:11:12" ,
2018-06-20 08:09:14 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1778 ,
2018-06-20 08:09:14 +00:00
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "1044:7:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
2018-09-26 09:19:53 +00:00
"src" : "1025:31:12"
2018-06-20 08:09:14 +00:00
} ,
"payable" : false ,
"returnParameters" : {
2018-09-26 09:19:53 +00:00
"id" : 1787 ,
2018-06-20 08:09:14 +00:00
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1782 ,
2018-06-20 08:09:14 +00:00
"name" : "v" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1790 ,
"src" : "1104:7:12" ,
2018-06-20 08:09:14 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint8" ,
"typeString" : "uint8"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1781 ,
2018-06-20 08:09:14 +00:00
"name" : "uint8" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "1104:5:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_uint8" ,
"typeString" : "uint8"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1784 ,
2018-06-20 08:09:14 +00:00
"name" : "r" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1790 ,
"src" : "1113:9:12" ,
2018-06-20 08:09:14 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1783 ,
2018-06-20 08:09:14 +00:00
"name" : "bytes32" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "1113:7:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1786 ,
2018-06-20 08:09:14 +00:00
"name" : "s" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1790 ,
"src" : "1124:9:12" ,
2018-06-20 08:09:14 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1785 ,
2018-06-20 08:09:14 +00:00
"name" : "bytes32" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "1124:7:12" ,
2018-06-20 08:09:14 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
2018-09-26 09:19:53 +00:00
"src" : "1103:31:12"
2018-06-20 08:09:14 +00:00
} ,
2018-09-26 09:19:53 +00:00
"scope" : 1791 ,
"src" : "1002:914:12" ,
2018-06-20 08:09:14 +00:00
"stateMutability" : "pure" ,
"superFunction" : null ,
2018-06-28 17:13:59 +00:00
"visibility" : "internal"
2018-06-20 08:09:14 +00:00
}
] ,
2018-09-26 09:19:53 +00:00
"scope" : 1792 ,
"src" : "226:1692:12"
2018-06-20 08:09:14 +00:00
}
] ,
2018-09-26 09:19:53 +00:00
"src" : "0:1919:12"
2018-06-20 08:09:14 +00:00
} ,
"compiler" : {
"name" : "solc" ,
"version" : "0.4.24+commit.e67f0147.Emscripten.clang"
} ,
"networks" : { } ,
2018-06-29 11:23:01 +00:00
"schemaVersion" : "2.0.0" ,
2018-10-05 15:26:48 +00:00
"updatedAt" : "2018-10-05T14:25:58.938Z"
2018-06-20 08:09:14 +00:00
}