Files
dungeons-and-dragons-nft/build/contracts/VRFRequestIDBase.json
2020-11-20 18:39:26 -05:00

1391 lines
58 KiB
JSON

{
"contractName": "VRFRequestIDBase",
"abi": [],
"metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"@chainlink/contracts/src/v0.6/VRFRequestIDBase.sol\":\"VRFRequestIDBase\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"@chainlink/contracts/src/v0.6/VRFRequestIDBase.sol\":{\"keccak256\":\"0x49fd3481ccbfedaedc2072f3338a873009e497a15279c857239c59cbf417ab9a\",\"urls\":[\"bzz-raw://78114391bf17e3fcbaa66b5fe75458d1b0621f5ede7394ce5baaa6042ab922a5\",\"dweb:/ipfs/QmUkrvFsVuXPWjjUtT8SbDkicWcmEn6GsbXkoEsopj3g7y\"]}},\"version\":1}",
"bytecode": "0x6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea26469706673582212203dbe9e42e28682590eb8a08046d88dd351954cc792d26a7e530a2efbd8da540464736f6c63430006060033",
"deployedBytecode": "0x6080604052600080fdfea26469706673582212203dbe9e42e28682590eb8a08046d88dd351954cc792d26a7e530a2efbd8da540464736f6c63430006060033",
"immutableReferences": {},
"sourceMap": "25:1854:4:-:0;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;25:1854:4;;;;;;;",
"deployedSourceMap": "25:1854:4:-:0;;;12:1:-1;9;2:12",
"source": "pragma solidity ^0.6.0;\n\ncontract VRFRequestIDBase {\n\n /**\n * @notice returns the seed which is actually input to the VRF\n *\n * @dev To prevent repetition of VRF output due to repetition against the\n * @dev user-supplied seed, that seed is combined in a hash with the a\n * @dev user-specific nonce, and the address of the consuming contract.\n *\n * @dev Of course, crucial security guranatees would be broken by repetition\n * @dev of the user-supplied seed, as all the other inputs can be anticipated\n * @dev and the user-specified seed is public once the initial request is\n * @dev made, so if the oracle has reason to belive that a user-specified seed\n * @dev will be repeated, it may be able to anticipate its future outputs. So\n * @dev it may make sense, for certain applications, for the VRF framework to\n * @dev simply refuse to operate, if given a seed it's seen before.\n *\n * @param _userSeed VRF seed input provided by user\n * @param _requester Address of the requesting contract\n * @param _nonce User-specific nonce at the time of the request\n */\n function makeVRFInputSeed(bytes32 _keyHash, uint256 _userSeed,\n address _requester, uint256 _nonce)\n internal pure returns (uint256)\n {\n return uint256(keccak256(abi.encode(_keyHash, _userSeed, _requester, _nonce)));\n }\n\n /**\n * @notice Returns the id for this request\n * @param _keyHash The serviceAgreement ID to be used for this request\n * @param _vRFInputSeed The seed to be passed directly to the VRF\n * @return The id for this request\n *\n * @dev Note that _vRFInputSeed is not the seed passed by the consuming\n * @dev contract, but the one generated by makeVRFInputSeed\n */\n function makeRequestId(\n bytes32 _keyHash, uint256 _vRFInputSeed) internal pure returns (bytes32) {\n return keccak256(abi.encodePacked(_keyHash, _vRFInputSeed));\n }\n}\n",
"sourcePath": "@chainlink/contracts/src/v0.6/VRFRequestIDBase.sol",
"ast": {
"absolutePath": "@chainlink/contracts/src/v0.6/VRFRequestIDBase.sol",
"exportedSymbols": {
"VRFRequestIDBase": [
652
]
},
"id": 653,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 604,
"literals": [
"solidity",
"^",
"0.6",
".0"
],
"nodeType": "PragmaDirective",
"src": "0:23:4"
},
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "contract",
"documentation": null,
"fullyImplemented": true,
"id": 652,
"linearizedBaseContracts": [
652
],
"name": "VRFRequestIDBase",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": {
"id": 631,
"nodeType": "Block",
"src": "1236:90:4",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 623,
"name": "_keyHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 607,
"src": "1279:8:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 624,
"name": "_userSeed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 609,
"src": "1289:9:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 625,
"name": "_requester",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 611,
"src": "1300:10:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 626,
"name": "_nonce",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 613,
"src": "1312:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 621,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "1268:3:4",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 622,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encode",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1268:10:4",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 627,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1268:51:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 620,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -8,
"src": "1258:9:4",
"typeDescriptions": {
"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) pure returns (bytes32)"
}
},
"id": 628,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1258:62:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 619,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1250:7:4",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 618,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1250:7:4",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 629,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1250:71:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 617,
"id": 630,
"nodeType": "Return",
"src": "1242:79:4"
}
]
},
"documentation": {
"id": 605,
"nodeType": "StructuredDocumentation",
"src": "56:1036:4",
"text": "@notice returns the seed which is actually input to the VRF\n * @dev To prevent repetition of VRF output due to repetition against the\n@dev user-supplied seed, that seed is combined in a hash with the a\n@dev user-specific nonce, and the address of the consuming contract.\n * @dev Of course, crucial security guranatees would be broken by repetition\n@dev of the user-supplied seed, as all the other inputs can be anticipated\n@dev and the user-specified seed is public once the initial request is\n@dev made, so if the oracle has reason to belive that a user-specified seed\n@dev will be repeated, it may be able to anticipate its future outputs. So\n@dev it may make sense, for certain applications, for the VRF framework to\n@dev simply refuse to operate, if given a seed it's seen before.\n * @param _userSeed VRF seed input provided by user\n@param _requester Address of the requesting contract\n@param _nonce User-specific nonce at the time of the request"
},
"id": 632,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "makeVRFInputSeed",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 614,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 607,
"mutability": "mutable",
"name": "_keyHash",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 632,
"src": "1121:16:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 606,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1121:7:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 609,
"mutability": "mutable",
"name": "_userSeed",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 632,
"src": "1139:17:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 608,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1139:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 611,
"mutability": "mutable",
"name": "_requester",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 632,
"src": "1162:18:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 610,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1162:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 613,
"mutability": "mutable",
"name": "_nonce",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 632,
"src": "1182:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 612,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1182:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1120:77:4"
},
"returnParameters": {
"id": 617,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 616,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 632,
"src": "1225:7:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 615,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1225:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1224:9:4"
},
"scope": 652,
"src": "1095:231:4",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 650,
"nodeType": "Block",
"src": "1807:70:4",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 645,
"name": "_keyHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 635,
"src": "1847:8:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 646,
"name": "_vRFInputSeed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 637,
"src": "1857:13:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 643,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "1830:3:4",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 644,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodePacked",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1830:16:4",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 647,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1830:41:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 642,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -8,
"src": "1820:9:4",
"typeDescriptions": {
"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) pure returns (bytes32)"
}
},
"id": 648,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1820:52:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"functionReturnParameters": 641,
"id": 649,
"nodeType": "Return",
"src": "1813:59:4"
}
]
},
"documentation": {
"id": 633,
"nodeType": "StructuredDocumentation",
"src": "1330:373:4",
"text": "@notice Returns the id for this request\n@param _keyHash The serviceAgreement ID to be used for this request\n@param _vRFInputSeed The seed to be passed directly to the VRF\n@return The id for this request\n * @dev Note that _vRFInputSeed is not the seed passed by the consuming\n@dev contract, but the one generated by makeVRFInputSeed"
},
"id": 651,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "makeRequestId",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 638,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 635,
"mutability": "mutable",
"name": "_keyHash",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 651,
"src": "1734:16:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 634,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1734:7:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 637,
"mutability": "mutable",
"name": "_vRFInputSeed",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 651,
"src": "1752:21:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 636,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1752:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1728:46:4"
},
"returnParameters": {
"id": 641,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 640,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 651,
"src": "1798:7:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 639,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1798:7:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1797:9:4"
},
"scope": 652,
"src": "1706:171:4",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
}
],
"scope": 653,
"src": "25:1854:4"
}
],
"src": "0:1880:4"
},
"legacyAST": {
"absolutePath": "@chainlink/contracts/src/v0.6/VRFRequestIDBase.sol",
"exportedSymbols": {
"VRFRequestIDBase": [
652
]
},
"id": 653,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 604,
"literals": [
"solidity",
"^",
"0.6",
".0"
],
"nodeType": "PragmaDirective",
"src": "0:23:4"
},
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "contract",
"documentation": null,
"fullyImplemented": true,
"id": 652,
"linearizedBaseContracts": [
652
],
"name": "VRFRequestIDBase",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": {
"id": 631,
"nodeType": "Block",
"src": "1236:90:4",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 623,
"name": "_keyHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 607,
"src": "1279:8:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 624,
"name": "_userSeed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 609,
"src": "1289:9:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 625,
"name": "_requester",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 611,
"src": "1300:10:4",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 626,
"name": "_nonce",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 613,
"src": "1312:6:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 621,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "1268:3:4",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 622,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encode",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1268:10:4",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 627,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1268:51:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 620,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -8,
"src": "1258:9:4",
"typeDescriptions": {
"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) pure returns (bytes32)"
}
},
"id": 628,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1258:62:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 619,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "1250:7:4",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 618,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1250:7:4",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 629,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1250:71:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"functionReturnParameters": 617,
"id": 630,
"nodeType": "Return",
"src": "1242:79:4"
}
]
},
"documentation": {
"id": 605,
"nodeType": "StructuredDocumentation",
"src": "56:1036:4",
"text": "@notice returns the seed which is actually input to the VRF\n * @dev To prevent repetition of VRF output due to repetition against the\n@dev user-supplied seed, that seed is combined in a hash with the a\n@dev user-specific nonce, and the address of the consuming contract.\n * @dev Of course, crucial security guranatees would be broken by repetition\n@dev of the user-supplied seed, as all the other inputs can be anticipated\n@dev and the user-specified seed is public once the initial request is\n@dev made, so if the oracle has reason to belive that a user-specified seed\n@dev will be repeated, it may be able to anticipate its future outputs. So\n@dev it may make sense, for certain applications, for the VRF framework to\n@dev simply refuse to operate, if given a seed it's seen before.\n * @param _userSeed VRF seed input provided by user\n@param _requester Address of the requesting contract\n@param _nonce User-specific nonce at the time of the request"
},
"id": 632,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "makeVRFInputSeed",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 614,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 607,
"mutability": "mutable",
"name": "_keyHash",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 632,
"src": "1121:16:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 606,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1121:7:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 609,
"mutability": "mutable",
"name": "_userSeed",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 632,
"src": "1139:17:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 608,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1139:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 611,
"mutability": "mutable",
"name": "_requester",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 632,
"src": "1162:18:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 610,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1162:7:4",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 613,
"mutability": "mutable",
"name": "_nonce",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 632,
"src": "1182:14:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 612,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1182:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1120:77:4"
},
"returnParameters": {
"id": 617,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 616,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 632,
"src": "1225:7:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 615,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1225:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1224:9:4"
},
"scope": 652,
"src": "1095:231:4",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
},
{
"body": {
"id": 650,
"nodeType": "Block",
"src": "1807:70:4",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 645,
"name": "_keyHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 635,
"src": "1847:8:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 646,
"name": "_vRFInputSeed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 637,
"src": "1857:13:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 643,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "1830:3:4",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 644,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodePacked",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "1830:16:4",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 647,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1830:41:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 642,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -8,
"src": "1820:9:4",
"typeDescriptions": {
"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) pure returns (bytes32)"
}
},
"id": 648,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "1820:52:4",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"functionReturnParameters": 641,
"id": 649,
"nodeType": "Return",
"src": "1813:59:4"
}
]
},
"documentation": {
"id": 633,
"nodeType": "StructuredDocumentation",
"src": "1330:373:4",
"text": "@notice Returns the id for this request\n@param _keyHash The serviceAgreement ID to be used for this request\n@param _vRFInputSeed The seed to be passed directly to the VRF\n@return The id for this request\n * @dev Note that _vRFInputSeed is not the seed passed by the consuming\n@dev contract, but the one generated by makeVRFInputSeed"
},
"id": 651,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "makeRequestId",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 638,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 635,
"mutability": "mutable",
"name": "_keyHash",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 651,
"src": "1734:16:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 634,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1734:7:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 637,
"mutability": "mutable",
"name": "_vRFInputSeed",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 651,
"src": "1752:21:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 636,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1752:7:4",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1728:46:4"
},
"returnParameters": {
"id": 641,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 640,
"mutability": "mutable",
"name": "",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 651,
"src": "1798:7:4",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 639,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1798:7:4",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1797:9:4"
},
"scope": 652,
"src": "1706:171:4",
"stateMutability": "pure",
"virtual": false,
"visibility": "internal"
}
],
"scope": 653,
"src": "25:1854:4"
}
],
"src": "0:1880:4"
},
"compiler": {
"name": "solc",
"version": "0.6.6+commit.6c089d02.Emscripten.clang"
},
"networks": {},
"schemaVersion": "3.2.5",
"updatedAt": "2020-10-28T15:56:43.354Z",
"devdoc": {
"methods": {}
},
"userdoc": {
"methods": {}
}
}