mirror of https://github.com/ConsenSys/mythril
Handle edge case during feature extraction (#1811)
* Update requirements.txt * use eth-abi * Update requirements.txt * Handle edge case during feature extractionpull/1812/head
parent
60ca80b91a
commit
91c4ddad2e
@ -0,0 +1,53 @@ |
||||
pragma solidity ^0.8.0; |
||||
|
||||
contract Regression_1 { |
||||
mapping (address => uint256) private userBalances; |
||||
|
||||
uint256 public constant TOKEN_PRICE = 1 ether; |
||||
string public constant name = "Moon Token"; |
||||
string public constant symbol = "MOON"; |
||||
|
||||
// The token is non-divisible |
||||
// You can buy/sell/transfer 1, 2, 3, or 46 tokens but not 33.5 |
||||
uint8 public constant decimals = 0; |
||||
|
||||
uint256 public totalSupply; |
||||
|
||||
function buy(uint256 _amount) external payable { |
||||
require( |
||||
msg.value == _amount * TOKEN_PRICE, |
||||
"Ether submitted and Token amount to buy mismatch" |
||||
); |
||||
|
||||
userBalances[msg.sender] += _amount; |
||||
totalSupply += _amount; |
||||
} |
||||
|
||||
function sell(uint256 _amount) external { |
||||
require(userBalances[msg.sender] >= _amount, "Insufficient balance"); |
||||
|
||||
userBalances[msg.sender] -= _amount; |
||||
totalSupply -= _amount; |
||||
|
||||
(bool success, ) = msg.sender.call{value: _amount * TOKEN_PRICE}(""); |
||||
require(success, "Failed to send Ether"); |
||||
|
||||
assert(getEtherBalance() == totalSupply * TOKEN_PRICE); |
||||
} |
||||
|
||||
function transfer(address _to, uint256 _amount) external { |
||||
require(_to != address(0), "_to address is not valid"); |
||||
require(userBalances[msg.sender] >= _amount, "Insufficient balance"); |
||||
|
||||
userBalances[msg.sender] -= _amount; |
||||
userBalances[_to] += _amount; |
||||
} |
||||
|
||||
function getEtherBalance() public view returns (uint256) { |
||||
return address(this).balance; |
||||
} |
||||
|
||||
function getUserBalance(address _user) external view returns (uint256) { |
||||
return userBalances[_user]; |
||||
} |
||||
} |
Loading…
Reference in new issue