Inherits: AutomationCompatibleInterface, VRFConsumerBaseV2Plus, FactoryFeeManager
Author: JA (@ubinatus)
Raffl is a decentralized platform built on the Ethereum blockchain, allowing users to create and participate in raffles/lotteries with complete transparency, security, and fairness.
The RafflFactory contract can be used to create raffle contracts, leveraging Chainlink VRF and Chainlink Automations.
Max gas to bump to
Callback gas limit for the Chainlink VRF
Number of requests confirmations for the Chainlink VRF
Chainlink subscription ID
The address that will be used as a delegate call target for Raffl
s.
It will be used as the salt for create2
Maps the created Raffl
s addresses
Maps the VRF requestId
to the Raffl
s address
Stores the active raffles, which upkeep is pending to be performed
*Creates a Raffl
factory contract.
Requirements:
implementationAddress
has to be a contract.feeCollectorAddress
can’t be address 0x0.poolFeePercentage
must be within 0 and maxFee range.vrfCoordinator
can’t be address 0x0.*Parameters
Name | Type | Description |
---|---|---|
implementationAddress | address | Address of Raffl contract implementation. |
feeCollectorAddress | address | Address of feeCollector . |
creationFeeValue | uint64 | Value for creationFee that will be charged on new Raffl s deployed. |
poolFeePercentage | uint64 | Value for poolFeePercentage that will be charged from the Raffl s pool on success draw. |
vrfCoordinator | address | VRF Coordinator address |
_keyHash | bytes32 | The gas lane to use, which specifies the maximum gas price to bump to |
_subscriptionId | uint256 | The subscription ID that this contract uses for funding VRF requests |
Increments the salt one step.
Creates new Raffl
contracts.
Requirements:
underlyingTokenAddress
cannot be the zero address.timestamps
must be given in ascending order.percentages
must be given in ascending order and the last one must always be 1 eth, where 1 eth equals to
100%.Parameters
Name | Type | Description |
---|---|---|
entryToken | address | The address of the ERC-20 token as entry. If address zero, entry is the network token |
entryPrice | uint256 | The value of each entry for the raffle. |
minEntries | uint256 | The minimum number of entries to consider make the draw. |
deadline | uint256 | The block timestamp until the raffle will receive entries and that will perform the draw if criteria is met. |
prizes | IRaffl.Prize[] | The prizes that will be held by this contract. |
tokenGates | IRaffl.TokenGate[] | The token gating that will be imposed to users. |
extraRecipient | IRaffl.ExtraRecipient | The extra recipient that will share the rewards (optional). |
Exposes the ActiveRaffle
s
Sets the Chainlink VRF subscription settings
Parameters
Name | Type | Description |
---|---|---|
_subscriptionId | uint64 | The subscription ID that this contract uses for funding VRF requests |
_keyHash | bytes32 | The gas lane to use, which specifies the maximum gas price to bump to |
_callbackGasLimit | uint32 | Callback gas limit for the Chainlink VRF |
_requestConfirmations | uint16 | Number of requests confirmations for the Chainlink VRF |
Method called by the Chainlink Automation Nodes to check if performUpkeep
must be done.
Performs the computation to the array of _activeRaffles
. This opens the possibility of having several
checkUpkeeps done at the same time.
Parameters
Name | Type | Description |
---|---|---|
checkData | bytes | Encoded binary data which contains the lower bound and upper bound of the _activeRaffles array on which to perform the computation |
Returns
Name | Type | Description |
---|---|---|
upkeepNeeded | bool | Whether the upkeep must be performed or not |
performData | bytes | Encoded binary data which contains the raffle address and index of the _activeRaffles |
Permissionless write method usually called by the Chainlink Automation Nodes.
Either starts the draw for a raffle or cancels the raffle if criteria is not met.
Parameters
Name | Type | Description |
---|---|---|
performData | bytes | Encoded binary data which contains the raffle address and index of the _activeRaffles |
Method called by the Chainlink VRF Coordinator
Parameters
Name | Type | Description |
---|---|---|
requestId | uint256 | Id of the VRF request |
randomWords | uint256[] | Provably fair and verifiable array of random words |
Helper function to remove a raffle from the _activeRaffles
array
Move the last element to the deleted stop and removes the last element
Parameters
Name | Type | Description |
---|---|---|
i | uint256 | Element index to remove |
FUNCTIONS
*Set address of fee collector. Requirements:
msg.sender
has to be the owner of the factory.newFeeCollector
can’t be address 0x0.*Parameters
Name | Type | Description |
---|---|---|
newFeeCollector | address | Address of feeCollector . |
Parameters
Name | Type | Description |
---|---|---|
raffle | address | Address of the created raffle |
raffle
the address of the raffle
deadline
is the timestamp that marks the start time to perform the upkeep effect.
Inherits: AutomationCompatibleInterface, VRFConsumerBaseV2Plus, FactoryFeeManager
Author: JA (@ubinatus)
Raffl is a decentralized platform built on the Ethereum blockchain, allowing users to create and participate in raffles/lotteries with complete transparency, security, and fairness.
The RafflFactory contract can be used to create raffle contracts, leveraging Chainlink VRF and Chainlink Automations.
Max gas to bump to
Callback gas limit for the Chainlink VRF
Number of requests confirmations for the Chainlink VRF
Chainlink subscription ID
The address that will be used as a delegate call target for Raffl
s.
It will be used as the salt for create2
Maps the created Raffl
s addresses
Maps the VRF requestId
to the Raffl
s address
Stores the active raffles, which upkeep is pending to be performed
*Creates a Raffl
factory contract.
Requirements:
implementationAddress
has to be a contract.feeCollectorAddress
can’t be address 0x0.poolFeePercentage
must be within 0 and maxFee range.vrfCoordinator
can’t be address 0x0.*Parameters
Name | Type | Description |
---|---|---|
implementationAddress | address | Address of Raffl contract implementation. |
feeCollectorAddress | address | Address of feeCollector . |
creationFeeValue | uint64 | Value for creationFee that will be charged on new Raffl s deployed. |
poolFeePercentage | uint64 | Value for poolFeePercentage that will be charged from the Raffl s pool on success draw. |
vrfCoordinator | address | VRF Coordinator address |
_keyHash | bytes32 | The gas lane to use, which specifies the maximum gas price to bump to |
_subscriptionId | uint256 | The subscription ID that this contract uses for funding VRF requests |
Increments the salt one step.
Creates new Raffl
contracts.
Requirements:
underlyingTokenAddress
cannot be the zero address.timestamps
must be given in ascending order.percentages
must be given in ascending order and the last one must always be 1 eth, where 1 eth equals to
100%.Parameters
Name | Type | Description |
---|---|---|
entryToken | address | The address of the ERC-20 token as entry. If address zero, entry is the network token |
entryPrice | uint256 | The value of each entry for the raffle. |
minEntries | uint256 | The minimum number of entries to consider make the draw. |
deadline | uint256 | The block timestamp until the raffle will receive entries and that will perform the draw if criteria is met. |
prizes | IRaffl.Prize[] | The prizes that will be held by this contract. |
tokenGates | IRaffl.TokenGate[] | The token gating that will be imposed to users. |
extraRecipient | IRaffl.ExtraRecipient | The extra recipient that will share the rewards (optional). |
Exposes the ActiveRaffle
s
Sets the Chainlink VRF subscription settings
Parameters
Name | Type | Description |
---|---|---|
_subscriptionId | uint64 | The subscription ID that this contract uses for funding VRF requests |
_keyHash | bytes32 | The gas lane to use, which specifies the maximum gas price to bump to |
_callbackGasLimit | uint32 | Callback gas limit for the Chainlink VRF |
_requestConfirmations | uint16 | Number of requests confirmations for the Chainlink VRF |
Method called by the Chainlink Automation Nodes to check if performUpkeep
must be done.
Performs the computation to the array of _activeRaffles
. This opens the possibility of having several
checkUpkeeps done at the same time.
Parameters
Name | Type | Description |
---|---|---|
checkData | bytes | Encoded binary data which contains the lower bound and upper bound of the _activeRaffles array on which to perform the computation |
Returns
Name | Type | Description |
---|---|---|
upkeepNeeded | bool | Whether the upkeep must be performed or not |
performData | bytes | Encoded binary data which contains the raffle address and index of the _activeRaffles |
Permissionless write method usually called by the Chainlink Automation Nodes.
Either starts the draw for a raffle or cancels the raffle if criteria is not met.
Parameters
Name | Type | Description |
---|---|---|
performData | bytes | Encoded binary data which contains the raffle address and index of the _activeRaffles |
Method called by the Chainlink VRF Coordinator
Parameters
Name | Type | Description |
---|---|---|
requestId | uint256 | Id of the VRF request |
randomWords | uint256[] | Provably fair and verifiable array of random words |
Helper function to remove a raffle from the _activeRaffles
array
Move the last element to the deleted stop and removes the last element
Parameters
Name | Type | Description |
---|---|---|
i | uint256 | Element index to remove |
FUNCTIONS
*Set address of fee collector. Requirements:
msg.sender
has to be the owner of the factory.newFeeCollector
can’t be address 0x0.*Parameters
Name | Type | Description |
---|---|---|
newFeeCollector | address | Address of feeCollector . |
Parameters
Name | Type | Description |
---|---|---|
raffle | address | Address of the created raffle |
raffle
the address of the raffle
deadline
is the timestamp that marks the start time to perform the upkeep effect.