Forkchoice Ethereum Mainnet

Address Contract Partially Verified

Address 0x7F222f42D2d8d21bB289FdF6f47A91c9b507eC58
Balance 0 ETH
Nonce 1
Code Size 3330 bytes
Indexed Transactions 0 (1 on-chain, 0% indexed)
External Etherscan · Sourcify

Contract Bytecode

3330 bytes
0x6080604052600436106101a05760003560e01c80639146385b116100ec578063d674d58a1161008a578063e22b5d1911610064578063e22b5d191461063c578063e8d06c5914610651578063ea26399714610666578063ef41ea7e14610699576101ec565b8063d674d58a146105d7578063dd62ed3e146105ec578063e0749ae214610627576101ec565b806399535bd7116100c657806399535bd71461058c5780639af1d35a146105ba578063a9059cbb146102da578063b914f9fe146105cf576101ec565b80639146385b1461052f57806395d89b411461056257806396c3614f14610577576101ec565b806323b872dd116101595780634a257db3116101335780634a257db3146104035780634b4860011461041857806370a08231146104cb5780638da5cb5b146104fe576101ec565b806323b872dd14610380578063313ce567146103c3578063476343ee146103ee576101ec565b8063057b78a21461022357806306fdde0314610250578063095ea7b3146102da5780630d5634ed1461032757806316ac29041461035157806318160ddd14610359576101ec565b366101ec5734156101e25760405162461bcd60e51b8152600401808060200182810382526022815260200180610cab6022913960400191505060405180910390fd5b6101ea6106ae565b005b60405162461bcd60e51b8152600401808060200182810382526025815260200180610c5b6025913960400191505060405180910390fd5b34801561022f57600080fd5b506101ea6004803603602081101561024657600080fd5b503560ff166107e9565b34801561025c57600080fd5b50610265610825565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561029f578181015183820152602001610287565b50505050905090810190601f1680156102cc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102e657600080fd5b50610313600480360360408110156102fd57600080fd5b506001600160a01b038135169060200135610845565b604080519115158252519081900360200190f35b34801561033357600080fd5b506101ea6004803603602081101561034a57600080fd5b503561084d565b6101ea610878565b34801561036557600080fd5b5061036e610905565b60408051918252519081900360200190f35b34801561038c57600080fd5b50610313600480360360608110156103a357600080fd5b506001600160a01b0381358116916020810135909116906040013561090a565b3480156103cf57600080fd5b506103d8610913565b6040805160ff9092168252519081900360200190f35b3480156103fa57600080fd5b506101ea610918565b34801561040f57600080fd5b5061036e6109c3565b34801561042457600080fd5b506101ea6004803603602081101561043b57600080fd5b81019060208101813564010000000081111561045657600080fd5b82018360208201111561046857600080fd5b8035906020019184600183028401116401000000008311171561048a57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109c9945050505050565b3480156104d757600080fd5b5061036e600480360360208110156104ee57600080fd5b50356001600160a01b03166109f3565b34801561050a57600080fd5b50610513610a1b565b604080516001600160a01b039092168252519081900360200190f35b34801561053b57600080fd5b5061036e6004803603602081101561055257600080fd5b50356001600160a01b0316610a2a565b34801561056e57600080fd5b50610265610a3c565b34801561058357600080fd5b5061036e610a5a565b34801561059857600080fd5b506105a1610a60565b6040805192835260208301919091528051918290030190f35b3480156105c657600080fd5b5061036e610a80565b6101ea610a86565b3480156105e357600080fd5b506101ea6106ae565b3480156105f857600080fd5b5061036e6004803603604081101561060f57600080fd5b506001600160a01b0381358116916020013516610845565b34801561063357600080fd5b5061036e610b13565b34801561064857600080fd5b506103d8610b19565b34801561065d57600080fd5b50610265610b22565b34801561067257600080fd5b5061036e6004803603602081101561068957600080fd5b50356001600160a01b0316610bb0565b3480156106a557600080fd5b5061036e610bc2565b60065460ff166106fe576040805162461bcd60e51b8152602060048201526016602482015275456c656374696f6e206e6f7420636f6d706c6574652160501b604482015290519081900360640190fd5b60065460009060ff16600114156107585732600090815260016020526040902054600254600454620186a0919082028161073457fe5b32600090815260016020526040902054919004028161074f57fe5b0401905061079d565b32600090815260036020526040902054600454600254620186a0919082028161077d57fe5b32600090815260036020526040902054919004028161079857fe5b040190505b32600081815260016020908152604080832083905560039091528082208290555183156108fc0291849190818181858888f193505050501580156107e5573d6000803e3d6000fd5b5050565b6000546001600160a01b031632148015610806575060065460ff16155b61080f57600080fd5b6006805460ff191660ff92909216919091179055565b60606040518060600160405280602b8152602001610c80602b9139905090565b600092915050565b6000546001600160a01b03163214801561086a575060065460ff16155b61087357600080fd5b600855565b60085442106108ce576040805162461bcd60e51b815260206004820181905260248201527f546f6f206c617465202d20656c656374696f6e20686173207374617274656421604482015290519081900360640190fd5b6005805460643483810291909104918201909255600480548284030190553260009081526003602052604090208054909201039055565b600090565b60009392505050565b601290565b6000546001600160a01b031632148015610936575060065460ff1615155b610980576040805162461bcd60e51b8152602060048201526016602482015275456c656374696f6e206e6f7420636f6d706c6574652160501b604482015290519081900360640190fd5b600080546005546040516001600160a01b039092169281156108fc029290818181858888f193505050501580156109bb573d6000803e3d6000fd5b506000600555565b60045481565b6000546001600160a01b031632146109e057600080fd5b80516107e5906007906020840190610bc7565b6001600160a01b03166000908152600160209081526040808320546003909252909120540190565b6000546001600160a01b031681565b60016020526000908152604090205481565b6040805180820190915260048152630454c32360e41b602082015290565b60085481565b326000908152600360209081526040808320546001909252909120549091565b60055481565b6008544210610adc576040805162461bcd60e51b815260206004820181905260248201527f546f6f206c617465202d20656c656374696f6e20686173207374617274656421604482015290519081900360640190fd5b6005805460643483810291909104918201909255600280548284030190553260009081526001602052604090208054909201039055565b60025481565b60065460ff1681565b6007805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015610ba85780601f10610b7d57610100808354040283529160200191610ba8565b820191906000526020600020905b815481529060010190602001808311610b8b57829003601f168201915b505050505081565b60036020526000908152604090205481565b600581565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10610c0857805160ff1916838001178555610c35565b82800160010185558215610c35579182015b82811115610c35578251825591602001919060010190610c1a565b50610c41929150610c45565b5090565b5b80821115610c415760008155600101610c4656fe4e6f7420616363657074696e67207061796d656e747320616e79206f74686572207761792e454c3230202d20426574206f6e20555320507265736964656e7469616c20456c656374696f6e20323032304d7573742073656e64203020746f20726574726965766520796f75722077696e732ea264697066735822122033d5de7e800834ad8203b8d05bbad748dc4a953587a6dbbc95ee76319fdf3a5a64736f6c63430007000033

Verified Source Code Partial Match

Compiler: v0.7.0+commit.9e61f92b EVM: istanbul Optimization: Yes (200 runs)
election2020.sol 118 lines
pragma solidity >=0.4.21 <=0.7.0;

contract election2020 {
  address payable public owner;
  uint256 constant public feePerc = 5;
  mapping (address => uint256) public betsBiden;
  uint256 public betsBidenTotal;
  mapping (address => uint256) public betsTrump;
  uint256 public betsTrumpTotal;
  uint256 public fees;
  uint8 public electionResult; // 0 - election not completed, 1 - Biden won, 2 - Trump won
  string public dappURL;
  uint256 public electionDay = 1604379600; // 11/3/2020 12:00:00 AM EST

  constructor() {
    owner = tx.origin;
    //electionResult = 0;
    //betsBidenTotal = 0;
    //betsTrumpTotal = 0;
    //fees = 0;
  }

  /**
   * Make sure cannot receive ETH any other way.
   */
  fallback() external payable {
    revert("Not accepting payments any other way.");
  }

  /**
   * Change election day, in case it is changed officially.
   */
  function setElectionDay(uint256 _electionDay) external {
    require(tx.origin == owner && 0 == electionResult);
    electionDay = _electionDay;
  }

  function betOnBiden() external payable {
    require(block.timestamp < electionDay, "Too late - election has started!");
    uint256 fee = (msg.value * feePerc) / 100;
    fees += fee;
    betsBidenTotal += msg.value - fee;
    betsBiden[tx.origin] = betsBiden[tx.origin] + msg.value - fee;
  }

  function betOnTrump() external payable {
    require(block.timestamp < electionDay, "Too late - election has started!");
    uint256 fee = (msg.value * feePerc) / 100;
    fees += fee;
    betsTrumpTotal += msg.value - fee;
    betsTrump[tx.origin] = betsTrump[tx.origin] + msg.value - fee;
  }

  /**
   * Enter results after election completes / oracle function.
   */
  function setElectionResult(uint8 _electionResult) external {
    require(tx.origin == owner && 0 == electionResult);
    electionResult = _electionResult;
  }

  /**
   * Owner withdrawal of fees.
   */
  function withdrawFees() external {
    require(tx.origin == owner && electionResult != 0, "Election not complete!");
    owner.transfer(fees);
    fees = 0;
  }

  /**
   * Better withdrawal of fees.
   */
  function withdrawWins() public {
    require(electionResult != 0, "Election not complete!");
    uint256 win;
    if (1 == electionResult) { // Biden won
      win = ((betsBiden[tx.origin] * (100000 * betsTrumpTotal / betsBidenTotal)) / 100000) + betsBiden[tx.origin];
    } else { // Trump won
      win = ((betsTrump[tx.origin] * (100000 * betsBidenTotal / betsTrumpTotal)) / 100000) + betsTrump[tx.origin];
    }
    betsBiden[tx.origin] = 0;
    betsTrump[tx.origin] = 0;
    tx.origin.transfer(win);
  }

  /**
   * Receive ETH to withdraw your wins.
   */
  receive() external payable {
    require(msg.value == 0, "Must send 0 to retrieve your wins.");
    withdrawWins();
  }

  function setDAppURL(string memory _dappURL) external {
    require(tx.origin == owner);
    dappURL = _dappURL;
  }

  function getMyBets() external view returns (uint256 myBetsTrump, uint256 myBetsBiden) {
    myBetsTrump = betsTrump[tx.origin];
    myBetsBiden = betsBiden[tx.origin];
  }

  // ERC-20 Methods
  function name() public pure returns (string memory) { return "EL20 - Bet on US Presidential Election 2020"; }
  function symbol() public pure returns (string memory) { return "EL20"; }
  function decimals() public pure returns (uint8) { return 18; }
  function totalSupply() public pure returns (uint256) { return 0; }
  function transfer(address, uint256) public pure returns (bool success) { return false; }
  function transferFrom(address, address, uint256) public pure returns (bool success) { return false; }
  function approve(address, uint256) public pure returns (bool success) { return false; }
  function allowance(address, address) public pure returns (uint256 remaining) { return 0; }

  function balanceOf(address _owner) public view returns (uint256) {
    return betsTrump[_owner] + betsBiden[_owner];
  }
}

Read Contract

allowance 0xdd62ed3e → uint256
approve 0x095ea7b3 → bool
balanceOf 0x70a08231 → uint256
betsBiden 0x9146385b → uint256
betsBidenTotal 0xe0749ae2 → uint256
betsTrump 0xea263997 → uint256
betsTrumpTotal 0x4a257db3 → uint256
dappURL 0xe8d06c59 → string
decimals 0x313ce567 → uint8
electionDay 0x96c3614f → uint256
electionResult 0xe22b5d19 → uint8
feePerc 0xef41ea7e → uint256
fees 0x9af1d35a → uint256
getMyBets 0x99535bd7 → uint256, uint256
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
transfer 0xa9059cbb → bool
transferFrom 0x23b872dd → bool

Write Contract 7 functions

These functions modify contract state and require a wallet transaction to execute.

betOnBiden 0xb914f9fe
No parameters
betOnTrump 0x16ac2904
No parameters
setDAppURL 0x4b486001
string _dappURL
setElectionDay 0x0d5634ed
uint256 _electionDay
setElectionResult 0x057b78a2
uint8 _electionResult
withdrawFees 0x476343ee
No parameters
withdrawWins 0xd674d58a
No parameters

Recent Transactions

This address has 1 on-chain transactions, but only 0% of the chain is indexed. Transactions will appear as indexing progresses. View on Etherscan →