diff options
-rw-r--r-- | Year_3/Blockchain/RandomMoney.sol | 43 |
1 files changed, 43 insertions, 0 deletions
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]; + } +} + |