From a5e27da469c6224179b6a27ad89d0c6b534b5ae1 Mon Sep 17 00:00:00 2001 From: Santo Cariotti Date: Thu, 16 Jun 2022 16:14:46 +0200 Subject: Add exercise --- Year_3/Blockchain/RandomMoney.sol | 43 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 Year_3/Blockchain/RandomMoney.sol (limited to 'Year_3/Blockchain/RandomMoney.sol') diff --git a/Year_3/Blockchain/RandomMoney.sol b/Year_3/Blockchain/RandomMoney.sol new file mode 100644 index 0000000..2a5def4 --- /dev/null +++ b/Year_3/Blockchain/RandomMoney.sol @@ -0,0 +1,43 @@ +// SPDX-License-Identifier: MIT + +pragma solidity >0.7 <0.9; + +contract RandomMoney { + uint public total; + uint public constant minFee = 10; + mapping(address => uint) public amounts; + address[] private members; + + + function play() public payable returns (uint) { + require(msg.value >= minFee, "Value is less than the required minimum"); + + + amounts[msg.sender] += msg.value; + + if (amounts[msg.sender] == msg.value) { + members.push(msg.sender); + } + + total += msg.value; + + return total; + } + + function pay() public payable { + address payable account = payable(randomAddress()); + account.transfer(total); + total = 0; + } + + function randomAddress() internal view returns (address) { + uint8 num = uint8( + uint256( + keccak256(abi.encode(block.timestamp, block.difficulty)) + ) % members.length + ); + + return members[num]; + } +} + -- cgit v1.2.3-18-g5258