Example - Roll a Dice
```solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
import {
GeneralRandcastConsumerBase,
BasicRandcastConsumerBase
} from "randcast-user-contract/user/GeneralRandcastConsumerBase.sol";
// solhint-disable-next-line no-global-import
import "randcast-user-contract/user/RandcastSDK.sol" as RandcastSDK;
contract RollDiceExample is GeneralRandcastConsumerBase {
/* requestId -> randomness */
mapping(bytes32 => uint256[]) public randomResults;
uint256[] public diceResults;
// solhint-disable-next-line no-empty-blocks
constructor(address adapter) BasicRandcastConsumerBase(adapter) {}
/**
* Requests randomness
*/
function rollDice(uint32 bunch) external returns (bytes32) {
bytes memory params = abi.encode(bunch);
return _requestRandomness(RequestType.RandomWords, params);
}
/**
* Callback function used by Randcast Adapter
*/
function _fulfillRandomWords(bytes32 requestId, uint256[] memory randomWords) internal override {
randomResults[requestId] = randomWords;
diceResults = new uint256[](randomWords.length);
for (uint32 i = 0; i < randomWords.length; i++) {
diceResults[i] = RandcastSDK.roll(randomWords[i], 6) + 1;
}
}
function lengthOfDiceResults() public view returns (uint256) {
return diceResults.length;
}
}Last updated