Skip to content

Instantly share code, notes, and snippets.

@ngmachado
Created December 3, 2020 17:20
Show Gist options
  • Save ngmachado/2921d54ac673a30945344edf24165834 to your computer and use it in GitHub Desktop.
Save ngmachado/2921d54ac673a30945344edf24165834 to your computer and use it in GitHub Desktop.
pragma solidity ^0.7.0;
contract superSpreader {
event sendEther(address indexed receiver, uint256 amount);
event deposit(address indexed sender, uint256 amount);
mapping(address => bool) private _transferDone;
constructor() payable {
_transferDone[address(0)] = true;
}
function getEther(address payable receiver) external {
require(_transferDone[receiver] == false, "no double send");
if(address(this).balance >= 1 ether) {
_transferDone[receiver] = true;
receiver.transfer(1 ether);
emit sendEther(receiver, 1 ether);
} else {
revert("Faucet without ether");
}
}
fallback() external payable {
revert("send some ether");
}
receive() external payable {
emit deposit(msg.sender, msg.value);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment