"metadata": "{\"compiler\":{\"version\":\"0.8.10+commit.fc410830\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_number\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_block\",\"type\":\"uint256\"}],\"name\":\"contribute\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_block\",\"type\":\"uint256\"}],\"name\":\"getRN\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"RN\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_block\",\"type\":\"uint256\"}],\"name\":\"getUncorrelatedRN\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"RN\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"number\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_block\",\"type\":\"uint256\"}],\"name\":\"requestRN\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"constructor\":{\"details\":\"Constructor.\",\"params\":{\"_number\":\"The number to always return.\"}},\"contribute(uint256)\":{\"details\":\"Contribute to the reward of a random number. All the ETH will be lost forever.\",\"params\":{\"_block\":\"Block the random number is linked to.\"}},\"getRN(uint256)\":{\"details\":\"Get the \\\"random number\\\" (which is always the same).\",\"params\":{\"_block\":\"Block the random number is linked to.\"},\"returns\":{\"RN\":\"Random Number. If the number is not ready or has not been required 0 instead.\"}},\"getUncorrelatedRN(uint256)\":{\"details\":\"Get a uncorrelated random number. Act like getRN but give a different number for each sender. This is to prevent users from getting correlated numbers.\",\"params\":{\"_block\":\"Block the random number is linked to.\"},\"returns\":{\"RN\":\"Random Number. If the number is not ready or has not been required 0 instead.\"}},\"requestRN(uint256)\":{\"details\":\"Request a random number.\",\"params\":{\"_block\":\"Block linked to the request.\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/rng/ConstantNG.sol\":\"ConstantNG\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\",\"useLiteralContent\":true},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"src/rng/ConstantNG.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\n/**\\n * @title Constant Number Generator\\n * @author Cl\\u00e9ment Lesaege - <
[email protected]>\\n * @dev A Random Number Generator which always return the same number. Usefull in order to make tests.\\n */\\n\\npragma solidity ^0.8;\\nimport \\\"./RNG.sol\\\";\\n\\ncontract ConstantNG is RNG {\\n uint256 public immutable number;\\n\\n /**\\n * @dev Constructor.\\n * @param _number The number to always return.\\n */\\n constructor(uint256 _number) {\\n number = _number;\\n }\\n\\n /**\\n * @dev Contribute to the reward of a random number. All the ETH will be lost forever.\\n * @param _block Block the random number is linked to.\\n */\\n function contribute(uint256 _block) public payable override {}\\n\\n /**\\n * @dev Get the \\\"random number\\\" (which is always the same).\\n * @param _block Block the random number is linked to.\\n * @return RN Random Number. If the number is not ready or has not been required 0 instead.\\n */\\n function getRN(uint256 _block) public view override returns (uint256 RN) {\\n return number;\\n }\\n}\\n\",\"keccak256\":\"0xa36e4dbc69128b01a005e4a9ce79a4c0f555be0963497e7cabdb76028f00e44c\",\"license\":\"MIT\"},\"src/rng/RNG.sol\":{\"content\":\"// SPDX-License-Identifier: MIT\\n\\n/**\\n * @authors: [@clesaege]\\n * @reviewers: [@remedcu]\\n * @auditors: []\\n * @bounties: []\\n * @deployments: []\\n */\\n\\npragma solidity ^0.8;\\n\\n/**\\n * @title Random Number Generator Standard\\n * @author Cl\\u00e9ment Lesaege - <
[email protected]>\\n * @dev This is an abstract contract\\n */\\nabstract contract RNG {\\n /**\\n * @dev Contribute to the reward of a random number.\\n * @param _block Block the random number is linked to.\\n */\\n function contribute(uint256 _block) public payable virtual;\\n\\n /**\\n * @dev Request a random number.\\n * @param _block Block linked to the request.\\n */\\n function requestRN(uint256 _block) public payable {\\n contribute(_block);\\n }\\n\\n /**\\n * @dev Get the random number.\\n * @param _block Block the random number is linked to.\\n * @return RN Random Number. If the number is not ready or has not been required 0 instead.\\n */\\n function getRN(uint256 _block) public virtual returns (uint256 RN);\\n\\n /**\\n * @dev Get a uncorrelated random number. Act like getRN but give a different number for each sender.\\n * This is to prevent users from getting correlated numbers.\\n * @param _block Block the random number is linked to.\\n * @return RN Random Number. If the number is not ready or has not been required 0 instead.\\n */\\n function getUncorrelatedRN(uint256 _block) public returns (uint256 RN) {\\n uint256 baseRN = getRN(_block);\\n if (baseRN == 0) return 0;\\n else return uint256(keccak256(abi.encode(msg.sender, baseRN)));\\n }\\n}\\n\",\"keccak256\":\"0x854bcb147fe44383cba7a5fdbcb69b3c0a9a71435c80eb73c172222da472a855\",\"license\":\"MIT\"}},\"version\":1}",
0 commit comments