// SPDX-License-Identifier: MIT
pragma solidity >=0.7.0 <0.9.0;
import "witnet-solidity-bridge/contracts/interfaces/IWitnetRandomness.sol";
uint32 public randomness;
uint256 public latestRandomizingBlock;
IWitnetRandomness witnet;
witnet = IWitnetRandomness(
address("<address of the WitnetRandomness contract>")
receive() external payable {}
function getRandomNumber() external payable {
latestRandomizingBlock = block.number;
uint _usedFunds = witnet.randomize{value: msg.value}();
if (_usedFunds < msg.value) {
payable(msg.sender).transfer(msg.value - _usedFunds);
function fulfillRandomness() external {
assert(latestRandomizingBlock > 0);
randomness = witnet.random(type(uint32).max + 1, 0, latestRandomizingBlock);