Example
@compiler >= 6
include "../interfaces/IVRF.aes"
include "../interfaces/IVRFReceiver.aes"
contract VRFExample : IVRFReceiver =
record state = {
random_winner_idx: int,
players: map(int, address),
vrf: IVRF
}
stateful entrypoint init( vrf: IVRF ) = { random_winner_idx = 0
, players = {}
, vrf = vrf }
payable stateful entrypoint pick_winner( subscription_id: int ) : int =
state.vrf.request_random_number( subscription_id
, protected = false )
stateful entrypoint fulfill_random_number( request_id: int
, random_words: int ) : unit =
require(Call.caller == state.vrf.address, "UNAUTHORIZED CALLER")
put(state{ random_winner_idx = random_words })
entrypoint get_state(): state = state
Last updated
Was this helpful?