Example - Shuffle an Array
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
import {
GeneralRandcastConsumerBase,
BasicRandcastConsumerBase
} from "randcast-user-contract/user/GeneralRandcastConsumerBase.sol";
contract GetShuffledArrayExample is GeneralRandcastConsumerBase {
/* requestId -> randomness */
mapping(bytes32 => uint256[]) public randomResults;
uint256[] public shuffleResults;
constructor(address adapter) BasicRandcastConsumerBase(adapter) {}
/**
* Requests randomness
*/
function getShuffledArray(uint32 upper) external returns (bytes32) {
bytes memory params = abi.encode(upper);
return requestRandomness(RequestType.Shuffling, params);
}
/**
* Callback function used by Randcast Adapter
*/
function fulfillShuffledArray(bytes32 requestId, uint256[] memory array) internal override {
randomResults[requestId] = array;
shuffleResults = array;
}
function lengthOfShuffleResults() public view returns (uint256) {
return shuffleResults.length;
}
}Last updated