Last active
April 26, 2021 23:29
-
-
Save alexroan/536123b71478ad4442cfc4278e8de577 to your computer and use it in GitHub Desktop.
RandomNumberConsumer.sol url: https://remix.ethereum.org/#version=soljson-v0.6.6+commit.6c089d02.js&optimize=false&evmVersion=null&gist=536123b71478ad4442cfc4278e8de577
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// This example code is designed to quickly deploy an example contract using Remix. | |
pragma solidity 0.6.6; | |
import "https://raw.githubusercontent.com/smartcontractkit/chainlink/master/evm-contracts/src/v0.6/VRFConsumerBase.sol"; | |
contract RandomNumberConsumer is VRFConsumerBase { | |
bytes32 internal keyHash; | |
uint256 internal fee; | |
uint256 public randomResult; | |
/** | |
* Constructor inherits VRFConsumerBase | |
* | |
* Network: Kovan | |
* Chainlink VRF Coordinator address: 0xdD3782915140c8f3b190B5D67eAc6dc5760C46E9 | |
* LINK token address: 0xa36085F69e2889c224210F603D836748e7dC0088 | |
* Key Hash: 0x6c3699283bda56ad74f6b855546325b68d482e983852a7a82979cc4807b641f4 | |
*/ | |
constructor() | |
VRFConsumerBase( | |
0xdD3782915140c8f3b190B5D67eAc6dc5760C46E9, // VRF Coordinator | |
0xa36085F69e2889c224210F603D836748e7dC0088 // LINK Token | |
) public | |
{ | |
keyHash = 0x6c3699283bda56ad74f6b855546325b68d482e983852a7a82979cc4807b641f4; | |
fee = 0.1 * 10 ** 18; // 0.1 LINK | |
} | |
/** | |
* Requests randomness from a user-provided seed | |
************************************************************************************ | |
* STOP! * | |
* THIS FUNCTION WILL FAIL IF THIS CONTRACT DOES NOT OWN LINK * | |
* ---------------------------------------------------------- * | |
* Learn how to obtain testnet LINK and fund this contract: * | |
* ------- https://docs.chain.link/docs/acquire-link -------- * | |
* ---- https://docs.chain.link/docs/fund-your-contract ----- * | |
* * | |
************************************************************************************/ | |
function getRandomNumber(uint256 userProvidedSeed) public returns (bytes32 requestId) { | |
require(LINK.balanceOf(address(this)) >= fee, "Not enough LINK - fill contract with faucet"); | |
return requestRandomness(keyHash, fee, userProvidedSeed); | |
} | |
/** | |
* Callback function used by VRF Coordinator | |
*/ | |
function fulfillRandomness(bytes32 requestId, uint256 randomness) internal override { | |
randomResult = randomness; | |
} | |
/** | |
* Withdraw LINK from this contract | |
* | |
* DO NOT USE THIS IN PRODUCTION AS IT CAN BE CALLED BY ANY ADDRESS. | |
* THIS IS PURELY FOR EXAMPLE PURPOSES. | |
*/ | |
function withdrawLink() external { | |
require(LINK.transfer(msg.sender, LINK.balanceOf(address(this))), "Unable to transfer"); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment