Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 7 from a total of 7 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Transfer | 6983131 | 2637 days ago | IN | 1 ETH | 0.0008164 | ||||
| Transfer | 6416153 | 2730 days ago | IN | 0.1 ETH | 0.00339864 | ||||
| Transfer | 6172001 | 2771 days ago | IN | 0.01587531 ETH | 0.00016328 | ||||
| Transfer | 6097602 | 2783 days ago | IN | 0.104 ETH | 0.00334724 | ||||
| Transfer | 6076106 | 2787 days ago | IN | 0.0001 ETH | 0.0008164 | ||||
| Transfer | 6073315 | 2787 days ago | IN | 0.02 ETH | 0.00522496 | ||||
| Transfer | 6069375 | 2788 days ago | IN | 0.00001 ETH | 0.00040992 |
Latest 7 internal transactions
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
PreSale
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2018-08-01
*/
pragma solidity 0.4.24;
/**
* @title SafeMath
* @dev Math operations with safety checks that throw on error
*/
library SafeMath {
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
assert(c / a == b);
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// assert(b > 0); // Solidity automatically throws when dividing by 0
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a);
return a - b;
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
assert(c >= a);
return c;
}
}
contract Ownable {
address public owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev The Ownable constructor sets the original `owner` of the contract to the sender
* account.
*/
constructor() public {
owner = msg.sender;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
/**
* @dev Allows the current owner to transfer control of the contract to a newOwner.
* @param newOwner The address to transfer ownership to.
*/
function transferOwnership(address newOwner) public onlyOwner {
require(newOwner != address(0));
emit OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
}
/**
* @title Finalizable
* @dev Base contract to finalize some features
*/
contract Finalizable is Ownable {
event Finish();
bool public finalized = false;
function finalize() public onlyOwner {
finalized = true;
}
modifier notFinalized() {
require(!finalized);
_;
}
}
/**
* @title Part of ERC20 interface
* @dev see https://github.com/ethereum/EIPs/issues/20
*/
contract IToken {
function balanceOf(address who) public view returns (uint256);
function transfer(address to, uint256 value) public returns (bool);
}
/**
* @title Token Receivable
* @dev Support transfer of ERC20 tokens out of this contract's address
* @dev Even if we don't intend for people to send them here, somebody will
*/
contract TokenReceivable is Ownable {
event logTokenTransfer(address token, address to, uint256 amount);
function claimTokens(address _token, address _to) public onlyOwner returns (bool) {
IToken token = IToken(_token);
uint256 balance = token.balanceOf(this);
if (token.transfer(_to, balance)) {
emit logTokenTransfer(_token, _to, balance);
return true;
}
return false;
}
}
contract EventDefinitions {
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
event Mint(address indexed to, uint256 amount);
event Burn(address indexed burner, uint256 value);
}
/**
* @title Standard ERC20 token
*
* @dev Implementation of the basic standard token.
* @dev https://github.com/ethereum/EIPs/issues/20
* @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
*/
contract Token is Finalizable, TokenReceivable, EventDefinitions {
using SafeMath for uint256;
string public name = "FairWin Token";
uint8 public decimals = 8;
string public symbol = "FWIN";
Controller controller;
// message of the day
string public motd;
function setController(address _controller) public onlyOwner notFinalized {
controller = Controller(_controller);
}
modifier onlyController() {
require(msg.sender == address(controller));
_;
}
modifier onlyPayloadSize(uint256 numwords) {
assert(msg.data.length >= numwords * 32 + 4);
_;
}
/**
* @dev Gets the balance of the specified address.
* @param _owner The address to query the the balance of.
* @return An uint256 representing the amount owned by the passed address.
*/
function balanceOf(address _owner) public view returns (uint256) {
return controller.balanceOf(_owner);
}
function totalSupply() public view returns (uint256) {
return controller.totalSupply();
}
/**
* @dev transfer token for a specified address
* @param _to The address to transfer to.
* @param _value The amount to be transferred.
*/
function transfer(address _to, uint256 _value) public
onlyPayloadSize(2)
returns (bool success) {
success = controller.transfer(msg.sender, _to, _value);
if (success) {
emit Transfer(msg.sender, _to, _value);
}
}
/**
* @dev Transfer tokens from one address to another
* @param _from address The address which you want to send tokens from
* @param _to address The address which you want to transfer to
* @param _value uint256 the amount of tokens to be transferred
*/
function transferFrom(address _from, address _to, uint256 _value) public
onlyPayloadSize(3)
returns (bool success) {
success = controller.transferFrom(msg.sender, _from, _to, _value);
if (success) {
emit Transfer(_from, _to, _value);
}
}
/**
* @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
*
* Beware that changing an allowance with this method brings the risk that someone may use both the old
* and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
* race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
* @param _spender The address which will spend the funds.
* @param _value The amount of tokens to be spent.
*/
function approve(address _spender, uint256 _value) public
onlyPayloadSize(2)
returns (bool success) {
//promote safe user behavior
require(controller.allowance(msg.sender, _spender) == 0);
success = controller.approve(msg.sender, _spender, _value);
if (success) {
emit Approval(msg.sender, _spender, _value);
}
return true;
}
/**
* @dev Increase the amount of tokens that an owner allowed to a spender.
*
* approve should be called when allowed[_spender] == 0. To increment
* allowed value is better to use this function to avoid 2 calls (and wait until
* the first transaction is mined)
* From MonolithDAO Token.sol
* @param _spender The address which will spend the funds.
* @param _addedValue The amount of tokens to increase the allowance by.
*/
function increaseApproval(address _spender, uint256 _addedValue) public
onlyPayloadSize(2)
returns (bool success) {
success = controller.increaseApproval(msg.sender, _spender, _addedValue);
if (success) {
uint256 newValue = controller.allowance(msg.sender, _spender);
emit Approval(msg.sender, _spender, newValue);
}
}
/**
* @dev Decrease the amount of tokens that an owner allowed to a spender.
*
* approve should be called when allowed[_spender] == 0. To decrement
* allowed value is better to use this function to avoid 2 calls (and wait until
* the first transaction is mined)
* From MonolithDAO Token.sol
* @param _spender The address which will spend the funds.
* @param _subtractedValue The amount of tokens to decrease the allowance by.
*/
function decreaseApproval(address _spender, uint _subtractedValue) public
onlyPayloadSize(2)
returns (bool success) {
success = controller.decreaseApproval(msg.sender, _spender, _subtractedValue);
if (success) {
uint newValue = controller.allowance(msg.sender, _spender);
emit Approval(msg.sender, _spender, newValue);
}
}
/**
* @dev Function to check the amount of tokens that an owner allowed to a spender.
* @param _owner address The address which owns the funds.
* @param _spender address The address which will spend the funds.
* @return A uint256 specifying the amount of tokens still available for the spender.
*/
function allowance(address _owner, address _spender) public view returns (uint256) {
return controller.allowance(_owner, _spender);
}
/**
* @dev Burns a specific amount of tokens.
* @param _amount The amount of token to be burned.
*/
function burn(uint256 _amount) public
onlyPayloadSize(1)
{
bool success = controller.burn(msg.sender, _amount);
if (success) {
emit Burn(msg.sender, _amount);
}
}
function controllerTransfer(address _from, address _to, uint256 _value) public onlyController {
emit Transfer(_from, _to, _value);
}
function controllerApprove(address _owner, address _spender, uint256 _value) public onlyController {
emit Approval(_owner, _spender, _value);
}
function controllerBurn(address _burner, uint256 _value) public onlyController {
emit Burn(_burner, _value);
}
function controllerMint(address _to, uint256 _value) public onlyController {
emit Mint(_to, _value);
}
event Motd(string message);
function setMotd(string _motd) public onlyOwner {
motd = _motd;
emit Motd(_motd);
}
}
contract Controller is Finalizable {
Ledger public ledger;
Token public token;
address public sale;
constructor (address _token, address _ledger) public {
require(_token != 0);
require(_ledger != 0);
ledger = Ledger(_ledger);
token = Token(_token);
}
function setToken(address _token) public onlyOwner {
token = Token(_token);
}
function setLedger(address _ledger) public onlyOwner {
ledger = Ledger(_ledger);
}
function setSale(address _sale) public onlyOwner {
sale = _sale;
}
modifier onlyToken() {
require(msg.sender == address(token));
_;
}
modifier onlyLedger() {
require(msg.sender == address(ledger));
_;
}
modifier onlySale() {
require(msg.sender == sale);
_;
}
function totalSupply() public onlyToken view returns (uint256) {
return ledger.totalSupply();
}
function balanceOf(address _a) public onlyToken view returns (uint256) {
return ledger.balanceOf(_a);
}
function allowance(address _owner, address _spender) public onlyToken view returns (uint256) {
return ledger.allowance(_owner, _spender);
}
function transfer(address _from, address _to, uint256 _value) public
onlyToken
returns (bool) {
return ledger.transfer(_from, _to, _value);
}
function transferFrom(address _spender, address _from, address _to, uint256 _value) public
onlyToken
returns (bool) {
return ledger.transferFrom(_spender, _from, _to, _value);
}
function burn(address _owner, uint256 _amount) public
onlyToken
returns (bool) {
return ledger.burn(_owner, _amount);
}
function approve(address _owner, address _spender, uint256 _value) public
onlyToken
returns (bool) {
return ledger.approve(_owner, _spender, _value);
}
function increaseApproval(address _owner, address _spender, uint256 _addedValue) public
onlyToken
returns (bool) {
return ledger.increaseApproval(_owner, _spender, _addedValue);
}
function decreaseApproval(address _owner, address _spender, uint256 _subtractedValue) public
onlyToken
returns (bool) {
return ledger.decreaseApproval(_owner, _spender, _subtractedValue);
}
function proxyMint(address _to, uint256 _value) public onlySale {
token.controllerMint(_to, _value);
}
function proxyTransfer(address _from, address _to, uint256 _value) public onlySale {
token.controllerTransfer(_from, _to, _value);
}
}
contract PreSale is Finalizable {
using SafeMath for uint256;
Ledger public ledger;
Controller public controller;
// Address where funds are collected
address public wallet;
// How many token units a buyer gets per wei.
// The rate is the conversion between wei and the smallest and indivisible token unit.
// So, if you are using a rate of 1 with a DetailedERC20 token with 3 decimals called TOK
// 1 wei will give you 1 unit, or 0.001 TOK.
uint256 public rate;
// Amount of wei raised
uint256 public weiRaised;
/**
* Event for token purchase logging
* @param purchaser who paid for the tokens
* @param beneficiary who got the tokens
* @param value weis paid for purchase
* @param amount amount of tokens purchased
*/
event TokenPurchase(
address indexed purchaser,
address indexed beneficiary,
uint256 value,
uint256 amount
);
/**
* @param _rate Number of token units a buyer gets per wei
* @param _wallet Address where collected funds will be forwarded to
*/
constructor(uint256 _rate, address _wallet, address _ledger, address _controller) public {
require(_rate > 0);
require(_wallet != address(0));
require(_ledger != address(0));
require(_controller != address(0));
rate = _rate;
wallet = _wallet;
ledger = Ledger(_ledger);
controller = Controller(_controller);
}
function setRate(uint256 _rate) public notFinalized onlyOwner {
require(_rate > 0);
rate = _rate;
}
function () external payable {
buyTokens(msg.sender);
}
function buyTokens(address _beneficiary) public notFinalized payable {
uint256 weiAmount = msg.value;
require(_beneficiary != address(0));
require(weiAmount != 0);
// calculate token amount to be created
uint256 tokens = weiAmount.mul(rate).div(10 ** 10);
// update state
weiRaised = weiRaised.add(weiAmount);
// mint tokens
ledger.mint(_beneficiary, tokens);
// emit token event
controller.proxyMint(_beneficiary, tokens);
controller.proxyTransfer(0, _beneficiary, tokens);
emit TokenPurchase(
msg.sender,
_beneficiary,
weiAmount,
tokens
);
_forwardFunds();
}
function _forwardFunds() internal {
wallet.transfer(msg.value);
}
}
contract Ledger is Finalizable {
using SafeMath for uint256;
address public controller;
address public sale;
mapping(address => uint256) internal balances;
mapping(address => mapping(address => uint256)) internal allowed;
uint256 internal totalSupply_;
bool public mintFinished = false;
event Mint(address indexed to, uint256 amount);
event MintFinished();
function setController(address _controller) public onlyOwner notFinalized {
controller = _controller;
}
function setSale(address _sale) public onlyOwner notFinalized {
sale = _sale;
}
modifier onlyController() {
require(msg.sender == controller);
_;
}
modifier canMint() {
require(!mintFinished);
_;
}
function finishMint() public onlyOwner canMint {
mintFinished = true;
emit MintFinished();
}
/**
* @dev Gets the balance of the specified address.
* @param _owner The address to query the the balance of.
* @return An uint256 representing the amount owned by the passed address.
*/
function balanceOf(address _owner) public view returns (uint256) {
return balances[_owner];
}
/**
* @dev total number of tokens in existence
*/
function totalSupply() public view returns (uint256) {
return totalSupply_;
}
/**
* @dev Function to check the amount of tokens that an owner allowed to a spender.
* @param _owner address The address which owns the funds.
* @param _spender address The address which will spend the funds.
* @return A uint256 specifying the amount of tokens still available for the spender.
*/
function allowance(address _owner, address _spender) public view returns (uint256) {
return allowed[_owner][_spender];
}
/**
* @dev transfer token for a specified address
* @param _from msg.sender from controller.
* @param _to The address to transfer to.
* @param _value The amount to be transferred.
*/
function transfer(address _from, address _to, uint256 _value) public onlyController returns (bool) {
require(_to != address(0));
require(_value <= balances[_from]);
// SafeMath.sub will throw if there is not enough balance.
balances[_from] = balances[_from].sub(_value);
balances[_to] = balances[_to].add(_value);
return true;
}
/**
* @dev Transfer tokens from one address to another
* @param _from address The address which you want to send tokens from
* @param _to address The address which you want to transfer to
* @param _value uint256 the amount of tokens to be transferred
*/
function transferFrom(address _spender, address _from, address _to, uint256 _value) public onlyController returns (bool) {
uint256 allow = allowed[_from][_spender];
require(_to != address(0));
require(_value <= balances[_from]);
require(_value <= allow);
balances[_from] = balances[_from].sub(_value);
balances[_to] = balances[_to].add(_value);
allowed[_from][_spender] = allow.sub(_value);
return true;
}
/**
* @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
*
* Beware that changing an allowance with this method brings the risk that someone may use both the old
* and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this
* race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
* @param _spender The address which will spend the funds.
* @param _value The amount of tokens to be spent.
*/
function approve(address _owner, address _spender, uint256 _value) public onlyController returns (bool) {
//require user to set to zero before resetting to nonzero
if ((_value != 0) && (allowed[_owner][_spender] != 0)) {
return false;
}
allowed[_owner][_spender] = _value;
return true;
}
/**
* @dev Increase the amount of tokens that an owner allowed to a spender.
*
* approve should be called when allowed[_spender] == 0. To increment
* allowed value is better to use this function to avoid 2 calls (and wait until
* the first transaction is mined)
* From MonolithDAO Token.sol
* @param _spender The address which will spend the funds.
* @param _addedValue The amount of tokens to increase the allowance by.
*/
function increaseApproval(address _owner, address _spender, uint256 _addedValue) public onlyController returns (bool) {
allowed[_owner][_spender] = allowed[_owner][_spender].add(_addedValue);
return true;
}
/**
* @dev Decrease the amount of tokens that an owner allowed to a spender.
*
* approve should be called when allowed[_spender] == 0. To decrement
* allowed value is better to use this function to avoid 2 calls (and wait until
* the first transaction is mined)
* From MonolithDAO Token.sol
* @param _spender The address which will spend the funds.
* @param _subtractedValue The amount of tokens to decrease the allowance by.
*/
function decreaseApproval(address _owner, address _spender, uint256 _subtractedValue) public onlyController returns (bool) {
uint256 oldValue = allowed[_owner][_spender];
if (_subtractedValue > oldValue) {
allowed[_owner][_spender] = 0;
} else {
allowed[_owner][_spender] = oldValue.sub(_subtractedValue);
}
return true;
}
/**
* @dev Burns a specific amount of tokens.
* @param _amount The amount of token to be burned.
*/
function burn(address _burner, uint256 _amount) public onlyController returns (bool) {
require(balances[_burner] >= _amount);
// no need to require _amount <= totalSupply, since that would imply the
// sender's balance is greater than the totalSupply, which *should* be an assertion failure
balances[_burner] = balances[_burner].sub(_amount);
totalSupply_ = totalSupply_.sub(_amount);
return true;
}
/**
* @dev Function to mint tokens
* @param _to The address that will receive the minted tokens.
* @param _amount The amount of tokens to mint.
* @return A boolean that indicates if the operation was successful.
*/
function mint(address _to, uint256 _amount) public canMint returns (bool) {
require(msg.sender == controller || msg.sender == sale || msg.sender == owner);
totalSupply_ = totalSupply_.add(_amount);
balances[_to] = balances[_to].add(_amount);
emit Mint(_to, _amount);
return true;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_rate","type":"uint256"}],"name":"setRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"weiRaised","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"wallet","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ledger","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"finalized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"buyTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"controller","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_rate","type":"uint256"},{"name":"_wallet","type":"address"},{"name":"_ledger","type":"address"},{"name":"_controller","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"purchaser","type":"address"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"TokenPurchase","type":"event"},{"anonymous":false,"inputs":[],"name":"Finish","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]Contract Creation Code
60806040526000805460a060020a60ff021916905534801561002057600080fd5b506040516080806107d9833981016040908152815160208301519183015160609093015160008054600160a060020a03191633178155919391841161006457600080fd5b600160a060020a038316151561007957600080fd5b600160a060020a038216151561008e57600080fd5b600160a060020a03811615156100a357600080fd5b60049390935560038054600160a060020a0319908116600160a060020a03948516179091556001805482169284169290921790915560028054909116919092161790556106e4806100f56000396000f3006080604052600436106100ae5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632c4e722e81146100b957806334fcf437146100e05780634042b66f146100f85780634bb278f31461010d578063521eb2731461012257806356397c35146101535780638da5cb5b14610168578063b3f05b971461017d578063ec8ac4d8146101a6578063f2fde38b146101ba578063f77c4791146101db575b6100b7336101f0565b005b3480156100c557600080fd5b506100ce610484565b60408051918252519081900360200190f35b3480156100ec57600080fd5b506100b760043561048a565b34801561010457600080fd5b506100ce6104db565b34801561011957600080fd5b506100b76104e1565b34801561012e57600080fd5b5061013761052f565b60408051600160a060020a039092168252519081900360200190f35b34801561015f57600080fd5b5061013761053e565b34801561017457600080fd5b5061013761054d565b34801561018957600080fd5b5061019261055c565b604080519115158252519081900360200190f35b6100b7600160a060020a03600435166101f0565b3480156101c657600080fd5b506100b7600160a060020a036004351661057d565b3480156101e757600080fd5b50610137610611565b60008054819074010000000000000000000000000000000000000000900460ff161561021b57600080fd5b349150600160a060020a038316151561023357600080fd5b81151561023f57600080fd5b6102696402540be40061025d6004548561062090919063ffffffff16565b9063ffffffff61065616565b60055490915061027f908363ffffffff61066d16565b600555600154604080517f40c10f19000000000000000000000000000000000000000000000000000000008152600160a060020a03868116600483015260248201859052915191909216916340c10f199160448083019260209291908290030181600087803b1580156102f157600080fd5b505af1158015610305573d6000803e3d6000fd5b505050506040513d602081101561031b57600080fd5b5050600254604080517f1f471ad0000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301526024820185905291519190921691631f471ad091604480830192600092919082900301818387803b15801561038b57600080fd5b505af115801561039f573d6000803e3d6000fd5b5050600254604080517f4a92fb3a000000000000000000000000000000000000000000000000000000008152600060048201819052600160a060020a038981166024840152604483018890529251929093169450634a92fb3a9350606480820193929182900301818387803b15801561041757600080fd5b505af115801561042b573d6000803e3d6000fd5b505060408051858152602081018590528151600160a060020a03881694503393507f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18929181900390910190a361047f61067c565b505050565b60045481565b60005474010000000000000000000000000000000000000000900460ff16156104b257600080fd5b600054600160a060020a031633146104c957600080fd5b600081116104d657600080fd5b600455565b60055481565b600054600160a060020a031633146104f857600080fd5b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600354600160a060020a031681565b600154600160a060020a031681565b600054600160a060020a031681565b60005474010000000000000000000000000000000000000000900460ff1681565b600054600160a060020a0316331461059457600080fd5b600160a060020a03811615156105a957600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600254600160a060020a031681565b600080831515610633576000915061064f565b5082820282848281151561064357fe5b041461064b57fe5b8091505b5092915050565b600080828481151561066457fe5b04949350505050565b60008282018381101561064b57fe5b600354604051600160a060020a03909116903480156108fc02916000818181858888f193505050501580156106b5573d6000803e3d6000fd5b505600a165627a7a72305820360030a2ace75fde63ce08c5d5ab6dabad434f9d710281d2b32d1df4a4266af80029000000000000000000000000000000000000000000000000000000000013af10000000000000000000000000b5cc143c518aa037e1af18a6436c7b1cbe18743800000000000000000000000044cd8c17c1f316073f8443dc9b8273c8abd549160000000000000000000000004c82d6dbd18a8af90be344051df1756570688e42
Deployed Bytecode
0x6080604052600436106100ae5763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416632c4e722e81146100b957806334fcf437146100e05780634042b66f146100f85780634bb278f31461010d578063521eb2731461012257806356397c35146101535780638da5cb5b14610168578063b3f05b971461017d578063ec8ac4d8146101a6578063f2fde38b146101ba578063f77c4791146101db575b6100b7336101f0565b005b3480156100c557600080fd5b506100ce610484565b60408051918252519081900360200190f35b3480156100ec57600080fd5b506100b760043561048a565b34801561010457600080fd5b506100ce6104db565b34801561011957600080fd5b506100b76104e1565b34801561012e57600080fd5b5061013761052f565b60408051600160a060020a039092168252519081900360200190f35b34801561015f57600080fd5b5061013761053e565b34801561017457600080fd5b5061013761054d565b34801561018957600080fd5b5061019261055c565b604080519115158252519081900360200190f35b6100b7600160a060020a03600435166101f0565b3480156101c657600080fd5b506100b7600160a060020a036004351661057d565b3480156101e757600080fd5b50610137610611565b60008054819074010000000000000000000000000000000000000000900460ff161561021b57600080fd5b349150600160a060020a038316151561023357600080fd5b81151561023f57600080fd5b6102696402540be40061025d6004548561062090919063ffffffff16565b9063ffffffff61065616565b60055490915061027f908363ffffffff61066d16565b600555600154604080517f40c10f19000000000000000000000000000000000000000000000000000000008152600160a060020a03868116600483015260248201859052915191909216916340c10f199160448083019260209291908290030181600087803b1580156102f157600080fd5b505af1158015610305573d6000803e3d6000fd5b505050506040513d602081101561031b57600080fd5b5050600254604080517f1f471ad0000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301526024820185905291519190921691631f471ad091604480830192600092919082900301818387803b15801561038b57600080fd5b505af115801561039f573d6000803e3d6000fd5b5050600254604080517f4a92fb3a000000000000000000000000000000000000000000000000000000008152600060048201819052600160a060020a038981166024840152604483018890529251929093169450634a92fb3a9350606480820193929182900301818387803b15801561041757600080fd5b505af115801561042b573d6000803e3d6000fd5b505060408051858152602081018590528151600160a060020a03881694503393507f623b3804fa71d67900d064613da8f94b9617215ee90799290593e1745087ad18929181900390910190a361047f61067c565b505050565b60045481565b60005474010000000000000000000000000000000000000000900460ff16156104b257600080fd5b600054600160a060020a031633146104c957600080fd5b600081116104d657600080fd5b600455565b60055481565b600054600160a060020a031633146104f857600080fd5b6000805474ff0000000000000000000000000000000000000000191674010000000000000000000000000000000000000000179055565b600354600160a060020a031681565b600154600160a060020a031681565b600054600160a060020a031681565b60005474010000000000000000000000000000000000000000900460ff1681565b600054600160a060020a0316331461059457600080fd5b600160a060020a03811615156105a957600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600254600160a060020a031681565b600080831515610633576000915061064f565b5082820282848281151561064357fe5b041461064b57fe5b8091505b5092915050565b600080828481151561066457fe5b04949350505050565b60008282018381101561064b57fe5b600354604051600160a060020a03909116903480156108fc02916000818181858888f193505050501580156106b5573d6000803e3d6000fd5b505600a165627a7a72305820360030a2ace75fde63ce08c5d5ab6dabad434f9d710281d2b32d1df4a4266af80029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000013af10000000000000000000000000b5cc143c518aa037e1af18a6436c7b1cbe18743800000000000000000000000044cd8c17c1f316073f8443dc9b8273c8abd549160000000000000000000000004c82d6dbd18a8af90be344051df1756570688e42
-----Decoded View---------------
Arg [0] : _rate (uint256): 1290000
Arg [1] : _wallet (address): 0xB5cc143C518aa037e1af18a6436C7b1CBe187438
Arg [2] : _ledger (address): 0x44CD8c17C1F316073f8443DC9B8273C8Abd54916
Arg [3] : _controller (address): 0x4c82D6dBd18A8aF90Be344051df1756570688E42
-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000000013af10
Arg [1] : 000000000000000000000000b5cc143c518aa037e1af18a6436c7b1cbe187438
Arg [2] : 00000000000000000000000044cd8c17c1f316073f8443dc9b8273c8abd54916
Arg [3] : 0000000000000000000000004c82d6dbd18a8af90be344051df1756570688e42
Swarm Source
bzzr://360030a2ace75fde63ce08c5d5ab6dabad434f9d710281d2b32d1df4a4266af8
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.