Skip to content

Instantly share code, notes, and snippets.

@eMarchenko
eMarchenko / Staking.sol
Created April 26, 2022 13:38
Prototype of an efficient staking smart contract
/*
Warning! The code is not production ready. It is provided for educational purposes only.
*/
pragma solidity ^0.8.12;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
pragma solidity 0.5.2;
contract EtherOrDollars {
mapping(address => uint) public balances;
mapping(address => bool) public eth;
function deposit(bool _eth) external payable {
require(balances[msg.sender] == 0);
balances[msg.sender] = msg.value;
eth[msg.sender] = _eth;
pragma solidity 0.5.2;
contract Splitter {
uint public constant MAX = 100;
mapping(address => uint) public balances;
mapping(address => uint) public shares;
function deposit(uint share) external payable {
require(balances[msg.sender] == 0);
require(share <= MAX);