Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Bridge
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-29
*/
pragma solidity ^0.4.23;
contract ERC20Basic {
function totalSupply() public view returns (uint256);
function balanceOf(address who) public view returns (uint256);
function transfer(address to, uint256 value) public returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
}
contract ERC20 is ERC20Basic {
function allowance(address owner, address spender)
public view returns (uint256);
function transferFrom(address from, address to, uint256 value)
public returns (bool);
function approve(address spender, uint256 value) public returns (bool);
event Approval(
address indexed owner,
address indexed spender,
uint256 value
);
}
library SafeMath {
function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {
if (a == 0) {
return 0;
}
c = a * b;
assert(c / a == b);
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return a / b;
}
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 c) {
c = a + b;
assert(c >= a);
return c;
}
}
contract BasicToken is ERC20Basic {
using SafeMath for uint256;
mapping(address => uint256) balances;
uint256 totalSupply_;
function totalSupply() public view returns (uint256) {
return totalSupply_;
}
function transfer(address _to, uint256 _value) public returns (bool) {
require(_to != address(0));
require(_value <= balances[msg.sender]);
balances[msg.sender] = balances[msg.sender].sub(_value);
balances[_to] = balances[_to].add(_value);
emit Transfer(msg.sender, _to, _value);
return true;
}
function balanceOf(address _owner) public view returns (uint256) {
return balances[_owner];
}
}
contract DefaultToken is BasicToken {
string public name;
string public symbol;
uint8 public decimals;
constructor(string _name, string _symbol, uint8 _decimals) public {
name = _name;
symbol = _symbol;
decimals = _decimals;
}
}
// Wings Controller Interface
contract IWingsController {
uint256 public ethRewardPart;
uint256 public tokenRewardPart;
function fitCollectedValueIntoRange(uint256 _totalCollected) public view returns (uint256);
}
contract HasManager {
address public manager;
modifier onlyManager {
require(msg.sender == manager);
_;
}
function transferManager(address _newManager) public onlyManager() {
require(_newManager != address(0));
manager = _newManager;
}
}
contract Ownable {
address public owner;
event OwnershipRenounced(address indexed previousOwner);
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 relinquish control of the contract.
* @notice Renouncing to ownership will leave the contract without an owner.
* It will not be possible to call the functions with the `onlyOwner`
* modifier anymore.
*/
function renounceOwnership() public onlyOwner {
emit OwnershipRenounced(owner);
owner = address(0);
}
/**
* @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 {
_transferOwnership(_newOwner);
}
/**
* @dev Transfers control of the contract to a newOwner.
* @param _newOwner The address to transfer ownership to.
*/
function _transferOwnership(address _newOwner) internal {
require(_newOwner != address(0));
emit OwnershipTransferred(owner, _newOwner);
owner = _newOwner;
}
}
// Crowdsale contracts interface
contract ICrowdsaleProcessor is Ownable, HasManager {
modifier whenCrowdsaleAlive() {
require(isActive());
_;
}
modifier whenCrowdsaleFailed() {
require(isFailed());
_;
}
modifier whenCrowdsaleSuccessful() {
require(isSuccessful());
_;
}
modifier hasntStopped() {
require(!stopped);
_;
}
modifier hasBeenStopped() {
require(stopped);
_;
}
modifier hasntStarted() {
require(!started);
_;
}
modifier hasBeenStarted() {
require(started);
_;
}
// Minimal acceptable hard cap
uint256 constant public MIN_HARD_CAP = 1 ether;
// Minimal acceptable duration of crowdsale
uint256 constant public MIN_CROWDSALE_TIME = 3 days;
// Maximal acceptable duration of crowdsale
uint256 constant public MAX_CROWDSALE_TIME = 50 days;
// Becomes true when timeframe is assigned
bool public started;
// Becomes true if cancelled by owner
bool public stopped;
// Total collected forecast question currency
uint256 public totalCollected;
// Total collected Ether
uint256 public totalCollectedETH;
// Total amount of project's token sold: must be updated every time tokens has been sold
uint256 public totalSold;
// Crowdsale minimal goal, must be greater or equal to Forecasting min amount
uint256 public minimalGoal;
// Crowdsale hard cap, must be less or equal to Forecasting max amount
uint256 public hardCap;
// Crowdsale duration in seconds.
// Accepted range is MIN_CROWDSALE_TIME..MAX_CROWDSALE_TIME.
uint256 public duration;
// Start timestamp of crowdsale, absolute UTC time
uint256 public startTimestamp;
// End timestamp of crowdsale, absolute UTC time
uint256 public endTimestamp;
// Allows to transfer some ETH into the contract without selling tokens
function deposit() public payable {}
// Returns address of crowdsale token, must be ERC20 compilant
function getToken() public returns(address);
// Transfers ETH rewards amount (if ETH rewards is configured) to Forecasting contract
function mintETHRewards(address _contract, uint256 _amount) public onlyManager();
// Mints token Rewards to Forecasting contract
function mintTokenRewards(address _contract, uint256 _amount) public onlyManager();
// Releases tokens (transfers crowdsale token from mintable to transferrable state)
function releaseTokens() public onlyManager() hasntStopped() whenCrowdsaleSuccessful();
// Stops crowdsale. Called by CrowdsaleController, the latter is called by owner.
// Crowdsale may be stopped any time before it finishes.
function stop() public onlyManager() hasntStopped();
// Validates parameters and starts crowdsale
function start(uint256 _startTimestamp, uint256 _endTimestamp, address _fundingAddress)
public onlyManager() hasntStarted() hasntStopped();
// Is crowdsale failed (completed, but minimal goal wasn't reached)
function isFailed() public constant returns (bool);
// Is crowdsale active (i.e. the token can be sold)
function isActive() public constant returns (bool);
// Is crowdsale completed successfully
function isSuccessful() public constant returns (bool);
}
// Basic crowdsale implementation both for regualt and 3rdparty Crowdsale contracts
contract BasicCrowdsale is ICrowdsaleProcessor {
event CROWDSALE_START(uint256 startTimestamp, uint256 endTimestamp, address fundingAddress);
// Where to transfer collected ETH
address public fundingAddress;
// Ctor.
function BasicCrowdsale(
address _owner,
address _manager
)
public
{
owner = _owner;
manager = _manager;
}
// called by CrowdsaleController to transfer reward part of ETH
// collected by successful crowdsale to Forecasting contract.
// This call is made upon closing successful crowdfunding process
// iff agreed ETH reward part is not zero
function mintETHRewards(
address _contract, // Forecasting contract
uint256 _amount // agreed part of totalCollected which is intended for rewards
)
public
onlyManager() // manager is CrowdsaleController instance
{
require(_contract.call.value(_amount)());
}
// cancels crowdsale
function stop() public onlyManager() hasntStopped() {
// we can stop only not started and not completed crowdsale
if (started) {
require(!isFailed());
require(!isSuccessful());
}
stopped = true;
}
// called by CrowdsaleController to setup start and end time of crowdfunding process
// as well as funding address (where to transfer ETH upon successful crowdsale)
function start(
uint256 _startTimestamp,
uint256 _endTimestamp,
address _fundingAddress
)
public
onlyManager() // manager is CrowdsaleController instance
hasntStarted() // not yet started
hasntStopped() // crowdsale wasn't cancelled
{
require(_fundingAddress != address(0));
// start time must not be earlier than current time
require(_startTimestamp >= block.timestamp);
// range must be sane
require(_endTimestamp > _startTimestamp);
duration = _endTimestamp - _startTimestamp;
// duration must fit constraints
require(duration >= MIN_CROWDSALE_TIME && duration <= MAX_CROWDSALE_TIME);
startTimestamp = _startTimestamp;
endTimestamp = _endTimestamp;
fundingAddress = _fundingAddress;
// now crowdsale is considered started, even if the current time is before startTimestamp
started = true;
CROWDSALE_START(_startTimestamp, _endTimestamp, _fundingAddress);
}
// must return true if crowdsale is over, but it failed
function isFailed()
public
constant
returns(bool)
{
return (
// it was started
started &&
// crowdsale period has finished
block.timestamp >= endTimestamp &&
// but collected ETH is below the required minimum
totalCollected < minimalGoal
);
}
// must return true if crowdsale is active (i.e. the token can be bought)
function isActive()
public
constant
returns(bool)
{
return (
// it was started
started &&
// hard cap wasn't reached yet
totalCollected < hardCap &&
// and current time is within the crowdfunding period
block.timestamp >= startTimestamp &&
block.timestamp < endTimestamp
);
}
// must return true if crowdsale completed successfully
function isSuccessful()
public
constant
returns(bool)
{
return (
// either the hard cap is collected
totalCollected >= hardCap ||
// ...or the crowdfunding period is over, but the minimum has been reached
(block.timestamp >= endTimestamp && totalCollected >= minimalGoal)
);
}
}
/*
Standalone Bridge
*/
contract Bridge is BasicCrowdsale {
using SafeMath for uint256;
event CUSTOM_CROWDSALE_TOKEN_ADDED(address token, uint8 decimals);
event CUSTOM_CROWDSALE_FINISH();
// Crowdsale token must be ERC20-compliant
DefaultToken token;
// Crowdsale state
bool completed;
// Constructor
constructor(
//uint256 _minimalGoal,
//uint256 _hardCap,
//address _token
) public
BasicCrowdsale(msg.sender, msg.sender) // owner, manager
{
minimalGoal = 1;
hardCap = 1;
token = DefaultToken(0x9998Db897783603c9344ED2678AB1B5D73d0f7C3);
}
/*
Here goes ICrowdsaleProcessor methods implementation
*/
// Returns address of crowdsale token
function getToken()
public
returns (address)
{
return address(token);
}
// Mints token Rewards to Forecasting contract
// called by CrowdsaleController
function mintTokenRewards(
address _contract,
uint256 _amount // agreed part of totalSold which is intended for rewards
)
public
onlyManager()
{
// in our example we are transferring tokens instead of minting them
token.transfer(_contract, _amount);
}
function releaseTokens() public onlyManager() hasntStopped() whenCrowdsaleSuccessful() {
}
/*
Crowdsale methods implementation
*/
// Fallback payable function
function() public payable {
}
// Update information about collected ETH and sold tokens amount
function notifySale(uint256 _amount, uint256 _ethAmount, uint256 _tokensAmount)
public
hasBeenStarted()
hasntStopped()
whenCrowdsaleAlive()
onlyOwner()
{
totalCollected = totalCollected.add(_amount);
totalCollectedETH = totalCollectedETH.add(_ethAmount);
totalSold = totalSold.add(_tokensAmount);
}
// Validates parameters and starts crowdsale
// called by CrowdsaleController
function start(
uint256 _startTimestamp,
uint256 _endTimestamp,
address _fundingAddress
)
public
hasntStarted()
hasntStopped()
onlyManager()
{
started = true;
emit CROWDSALE_START(_startTimestamp, _endTimestamp, _fundingAddress);
}
// Finish crowdsale
function finish()
public
hasntStopped()
hasBeenStarted()
whenCrowdsaleAlive()
onlyOwner()
{
completed = true;
emit CUSTOM_CROWDSALE_FINISH();
}
function isFailed()
public
view
returns (bool)
{
return (false);
}
function isActive()
public
view
returns (bool)
{
return (started && !completed);
}
function isSuccessful()
public
view
returns (bool)
{
return (completed);
}
// Find out the amount of rewards in ETH and tokens
function calculateRewards() public view returns (uint256, uint256) {
uint256 tokenRewardPart = IWingsController(manager).tokenRewardPart();
uint256 ethRewardPart = IWingsController(manager).ethRewardPart();
uint256 ethReward;
bool hasEthReward = (ethRewardPart != 0);
uint256 tokenReward = totalSold.mul(tokenRewardPart) / 1000000;
if (totalCollectedETH != 0) {
totalCollected = totalCollectedETH;
}
totalCollected = IWingsController(manager).fitCollectedValueIntoRange(totalCollected);
if (hasEthReward) {
ethReward = totalCollected.mul(ethRewardPart) / 1000000;
}
return (ethReward, tokenReward);
}
// Change token address (in case you've used the dafault token address during bridge deployment)
function changeToken(address _newToken) public onlyOwner() {
token = DefaultToken(_newToken);
emit CUSTOM_CROWDSALE_TOKEN_ADDED(address(token), uint8(token.decimals()));
}
// Gives owner ability to withdraw eth and wings from Bridge contract balance in case if some error during reward calculation occured
function withdraw() public onlyOwner() {
uint256 ethBalance = address(this).balance;
uint256 tokenBalance = token.balanceOf(address(this));
if (ethBalance > 0) {
require(msg.sender.send(ethBalance));
}
if (tokenBalance > 0) {
require(token.transfer(msg.sender, tokenBalance));
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[],"name":"stop","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"duration","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_CROWDSALE_TIME","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_contract","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mintETHRewards","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"started","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"getToken","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isActive","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"calculateRewards","outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"manager","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalCollectedETH","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minimalGoal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newToken","type":"address"}],"name":"changeToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"MIN_CROWDSALE_TIME","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stopped","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MIN_HARD_CAP","outputs":[{"name":"","type":"uint256"}],"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":"totalSold","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"},{"name":"_ethAmount","type":"uint256"},{"name":"_tokensAmount","type":"uint256"}],"name":"notifySale","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_startTimestamp","type":"uint256"},{"name":"_endTimestamp","type":"uint256"},{"name":"_fundingAddress","type":"address"}],"name":"start","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"endTimestamp","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"releaseTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_contract","type":"address"},{"name":"_amount","type":"uint256"}],"name":"mintTokenRewards","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newManager","type":"address"}],"name":"transferManager","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"fundingAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finish","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalCollected","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"startTimestamp","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isSuccessful","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isFailed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"hardCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"token","type":"address"},{"indexed":false,"name":"decimals","type":"uint8"}],"name":"CUSTOM_CROWDSALE_TOKEN_ADDED","type":"event"},{"anonymous":false,"inputs":[],"name":"CUSTOM_CROWDSALE_FINISH","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"startTimestamp","type":"uint256"},{"indexed":false,"name":"endTimestamp","type":"uint256"},{"indexed":false,"name":"fundingAddress","type":"address"}],"name":"CROWDSALE_START","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"}],"name":"OwnershipRenounced","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]Contract Creation Code
608060405234801561001057600080fd5b5060008054600160a060020a03199081163390811782168117835560018054831690911781556005819055600655600b8054909116739998db897783603c9344ed2678ab1b5d73d0f7c317905561107c90819061006d90396000f3006080604052600436106101ab5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166307da68f581146101ad5780630fb5a6b4146101c25780631510ca79146101e957806318c9ef97146101fe5780631f2698ab1461022257806321df0da71461024b57806322f3e2d41461027c5780633ccfd60b146102915780633e50de30146102a6578063481c6a75146102d45780635d202249146102e95780636385cbbe146102fe57806366829b1614610313578063715018a6146103345780637234ba0c1461034957806375f12b211461035e57806376ddfc39146103735780638da5cb5b146103885780639106d7ba1461039d57806393f33b88146103b2578063a51fe113146103d0578063a85adeab146103f7578063a96f86681461040c578063b23c1f1914610421578063ba0e930a14610445578063d0e30db014610466578063d3b7bfb41461046e578063d56b288914610483578063e29eb83614610498578063e6fd48bc146104ad578063ec4cd0cf146104c2578063f2fde38b146104d7578063f4163340146104f8578063fb86a4041461050d575b005b3480156101b957600080fd5b506101ab610522565b3480156101ce57600080fd5b506101d76105ad565b60408051918252519081900360200190f35b3480156101f557600080fd5b506101d76105b3565b34801561020a57600080fd5b506101ab600160a060020a03600435166024356105ba565b34801561022e57600080fd5b506102376105fd565b604080519115158252519081900360200190f35b34801561025757600080fd5b5061026061060d565b60408051600160a060020a039092168252519081900360200190f35b34801561028857600080fd5b5061023761061c565b34801561029d57600080fd5b506101ab610647565b3480156102b257600080fd5b506102bb6107d7565b6040805192835260208301919091528051918290030190f35b3480156102e057600080fd5b50610260610a17565b3480156102f557600080fd5b506101d7610a26565b34801561030a57600080fd5b506101d7610a2c565b34801561031f57600080fd5b506101ab600160a060020a0360043516610a32565b34801561034057600080fd5b506101ab610b42565b34801561035557600080fd5b506101d7610bae565b34801561036a57600080fd5b50610237610bb5565b34801561037f57600080fd5b506101d7610bc5565b34801561039457600080fd5b50610260610bd1565b3480156103a957600080fd5b506101d7610be0565b3480156103be57600080fd5b506101ab600435602435604435610be6565b3480156103dc57600080fd5b506101ab600435602435600160a060020a0360443516610c86565b34801561040357600080fd5b506101d7610d3c565b34801561041857600080fd5b506101ab610d42565b34801561042d57600080fd5b506101ab600160a060020a0360043516602435610d85565b34801561045157600080fd5b506101ab600160a060020a0360043516610e3b565b6101ab610d83565b34801561047a57600080fd5b50610260610e96565b34801561048f57600080fd5b506101ab610ea5565b3480156104a457600080fd5b506101d7610f4d565b3480156104b957600080fd5b506101d7610f53565b3480156104ce57600080fd5b50610237610f59565b3480156104e357600080fd5b506101ab600160a060020a0360043516610f69565b34801561050457600080fd5b50610237610f8c565b34801561051957600080fd5b506101d7610f91565b600154600160a060020a0316331461053957600080fd5b60015460a860020a900460ff161561055057600080fd5b60015460a060020a900460ff16156105865761056a610f8c565b1561057457600080fd5b61057c610f59565b1561058657600080fd5b6001805475ff000000000000000000000000000000000000000000191660a860020a179055565b60075481565b6241eb0081565b600154600160a060020a031633146105d157600080fd5b604051600160a060020a038316908290600081818185875af19250505015156105f957600080fd5b5050565b60015460a060020a900460ff1681565b600b54600160a060020a031690565b60015460009060a060020a900460ff1680156106425750600b5460a060020a900460ff16155b905090565b600080548190600160a060020a0316331461066157600080fd5b600b54604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201819052915191319450600160a060020a03909216916370a082319160248083019260209291908290030181600087803b1580156106cc57600080fd5b505af11580156106e0573d6000803e3d6000fd5b505050506040513d60208110156106f657600080fd5b50519050600082111561072a57604051339083156108fc029084906000818181858888f19350505050151561072a57600080fd5b60008111156105f957600b54604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018490529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b1580156107a057600080fd5b505af11580156107b4573d6000803e3d6000fd5b505050506040513d60208110156107ca57600080fd5b505115156105f957600080fd5b6000806000806000806000600160009054906101000a9004600160a060020a0316600160a060020a031663a823cfaf6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561084e57600080fd5b505af1158015610862573d6000803e3d6000fd5b505050506040513d602081101561087857600080fd5b5051600154604080517f80fa81b10000000000000000000000000000000000000000000000000000000081529051929750600160a060020a03909116916380fa81b1916004808201926020929091908290030181600087803b1580156108dd57600080fd5b505af11580156108f1573d6000803e3d6000fd5b505050506040513d602081101561090757600080fd5b50516004549094508415159250620f424090610929908763ffffffff610f9716565b81151561093257fe5b600354919004915015610946576003546002555b600154600254604080517f3350ae36000000000000000000000000000000000000000000000000000000008152600481019290925251600160a060020a0390921691633350ae36916024808201926020929091908290030181600087803b1580156109b057600080fd5b505af11580156109c4573d6000803e3d6000fd5b505050506040513d60208110156109da57600080fd5b50516002558115610a0a57600254620f4240906109fd908663ffffffff610f9716565b811515610a0657fe5b0492505b9196919550909350505050565b600154600160a060020a031681565b60035481565b60055481565b600054600160a060020a03163314610a4957600080fd5b600b805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169190911791829055604080517f313ce56700000000000000000000000000000000000000000000000000000000815290517fed6f18557b7914dbfc23d546be65de82017608e11b87429e06c0b88b55f0b6c39390921691829163313ce5679160048083019260209291908290030181600087803b158015610aef57600080fd5b505af1158015610b03573d6000803e3d6000fd5b505050506040513d6020811015610b1957600080fd5b505160408051600160a060020a03909316835260ff90911660208301528051918290030190a150565b600054600160a060020a03163314610b5957600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b6203f48081565b60015460a860020a900460ff1681565b670de0b6b3a764000081565b600054600160a060020a031681565b60045481565b60015460a060020a900460ff161515610bfe57600080fd5b60015460a860020a900460ff1615610c1557600080fd5b610c1d61061c565b1515610c2857600080fd5b600054600160a060020a03163314610c3f57600080fd5b600254610c52908463ffffffff610fc616565b600255600354610c68908363ffffffff610fc616565b600355600454610c7e908263ffffffff610fc616565b600455505050565b60015460a060020a900460ff1615610c9d57600080fd5b60015460a860020a900460ff1615610cb457600080fd5b600154600160a060020a03163314610ccb57600080fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a1790556040805184815260208101849052600160a060020a0383168183015290517ffccf552413932efea18979436cc8ce92942bdef118c2b5682351e1891bef80729181900360600190a1505050565b60095481565b600154600160a060020a03163314610d5957600080fd5b60015460a860020a900460ff1615610d7057600080fd5b610d78610f59565b1515610d8357600080fd5b565b600154600160a060020a03163314610d9c57600080fd5b600b54604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015610e0b57600080fd5b505af1158015610e1f573d6000803e3d6000fd5b505050506040513d6020811015610e3557600080fd5b50505050565b600154600160a060020a03163314610e5257600080fd5b600160a060020a0381161515610e6757600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600a54600160a060020a031681565b60015460a860020a900460ff1615610ebc57600080fd5b60015460a060020a900460ff161515610ed457600080fd5b610edc61061c565b1515610ee757600080fd5b600054600160a060020a03163314610efe57600080fd5b600b805474ff0000000000000000000000000000000000000000191660a060020a1790556040517f256531276449280f5a3022f3024cb03968cf6ab90d6d067e9bc10768bcbcb08090600090a1565b60025481565b60085481565b600b5460a060020a900460ff1690565b600054600160a060020a03163314610f8057600080fd5b610f8981610fd3565b50565b600090565b60065481565b6000821515610fa857506000610fc0565b50818102818382811515610fb857fe5b0414610fc057fe5b92915050565b81810182811015610fc057fe5b600160a060020a0381161515610fe857600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a723058208871e37bff48fd8bdbe8815e029dd4dce11b984e655b0adf861138bd2d37a1b50029
Deployed Bytecode
0x6080604052600436106101ab5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166307da68f581146101ad5780630fb5a6b4146101c25780631510ca79146101e957806318c9ef97146101fe5780631f2698ab1461022257806321df0da71461024b57806322f3e2d41461027c5780633ccfd60b146102915780633e50de30146102a6578063481c6a75146102d45780635d202249146102e95780636385cbbe146102fe57806366829b1614610313578063715018a6146103345780637234ba0c1461034957806375f12b211461035e57806376ddfc39146103735780638da5cb5b146103885780639106d7ba1461039d57806393f33b88146103b2578063a51fe113146103d0578063a85adeab146103f7578063a96f86681461040c578063b23c1f1914610421578063ba0e930a14610445578063d0e30db014610466578063d3b7bfb41461046e578063d56b288914610483578063e29eb83614610498578063e6fd48bc146104ad578063ec4cd0cf146104c2578063f2fde38b146104d7578063f4163340146104f8578063fb86a4041461050d575b005b3480156101b957600080fd5b506101ab610522565b3480156101ce57600080fd5b506101d76105ad565b60408051918252519081900360200190f35b3480156101f557600080fd5b506101d76105b3565b34801561020a57600080fd5b506101ab600160a060020a03600435166024356105ba565b34801561022e57600080fd5b506102376105fd565b604080519115158252519081900360200190f35b34801561025757600080fd5b5061026061060d565b60408051600160a060020a039092168252519081900360200190f35b34801561028857600080fd5b5061023761061c565b34801561029d57600080fd5b506101ab610647565b3480156102b257600080fd5b506102bb6107d7565b6040805192835260208301919091528051918290030190f35b3480156102e057600080fd5b50610260610a17565b3480156102f557600080fd5b506101d7610a26565b34801561030a57600080fd5b506101d7610a2c565b34801561031f57600080fd5b506101ab600160a060020a0360043516610a32565b34801561034057600080fd5b506101ab610b42565b34801561035557600080fd5b506101d7610bae565b34801561036a57600080fd5b50610237610bb5565b34801561037f57600080fd5b506101d7610bc5565b34801561039457600080fd5b50610260610bd1565b3480156103a957600080fd5b506101d7610be0565b3480156103be57600080fd5b506101ab600435602435604435610be6565b3480156103dc57600080fd5b506101ab600435602435600160a060020a0360443516610c86565b34801561040357600080fd5b506101d7610d3c565b34801561041857600080fd5b506101ab610d42565b34801561042d57600080fd5b506101ab600160a060020a0360043516602435610d85565b34801561045157600080fd5b506101ab600160a060020a0360043516610e3b565b6101ab610d83565b34801561047a57600080fd5b50610260610e96565b34801561048f57600080fd5b506101ab610ea5565b3480156104a457600080fd5b506101d7610f4d565b3480156104b957600080fd5b506101d7610f53565b3480156104ce57600080fd5b50610237610f59565b3480156104e357600080fd5b506101ab600160a060020a0360043516610f69565b34801561050457600080fd5b50610237610f8c565b34801561051957600080fd5b506101d7610f91565b600154600160a060020a0316331461053957600080fd5b60015460a860020a900460ff161561055057600080fd5b60015460a060020a900460ff16156105865761056a610f8c565b1561057457600080fd5b61057c610f59565b1561058657600080fd5b6001805475ff000000000000000000000000000000000000000000191660a860020a179055565b60075481565b6241eb0081565b600154600160a060020a031633146105d157600080fd5b604051600160a060020a038316908290600081818185875af19250505015156105f957600080fd5b5050565b60015460a060020a900460ff1681565b600b54600160a060020a031690565b60015460009060a060020a900460ff1680156106425750600b5460a060020a900460ff16155b905090565b600080548190600160a060020a0316331461066157600080fd5b600b54604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201819052915191319450600160a060020a03909216916370a082319160248083019260209291908290030181600087803b1580156106cc57600080fd5b505af11580156106e0573d6000803e3d6000fd5b505050506040513d60208110156106f657600080fd5b50519050600082111561072a57604051339083156108fc029084906000818181858888f19350505050151561072a57600080fd5b60008111156105f957600b54604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018490529051600160a060020a039092169163a9059cbb916044808201926020929091908290030181600087803b1580156107a057600080fd5b505af11580156107b4573d6000803e3d6000fd5b505050506040513d60208110156107ca57600080fd5b505115156105f957600080fd5b6000806000806000806000600160009054906101000a9004600160a060020a0316600160a060020a031663a823cfaf6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561084e57600080fd5b505af1158015610862573d6000803e3d6000fd5b505050506040513d602081101561087857600080fd5b5051600154604080517f80fa81b10000000000000000000000000000000000000000000000000000000081529051929750600160a060020a03909116916380fa81b1916004808201926020929091908290030181600087803b1580156108dd57600080fd5b505af11580156108f1573d6000803e3d6000fd5b505050506040513d602081101561090757600080fd5b50516004549094508415159250620f424090610929908763ffffffff610f9716565b81151561093257fe5b600354919004915015610946576003546002555b600154600254604080517f3350ae36000000000000000000000000000000000000000000000000000000008152600481019290925251600160a060020a0390921691633350ae36916024808201926020929091908290030181600087803b1580156109b057600080fd5b505af11580156109c4573d6000803e3d6000fd5b505050506040513d60208110156109da57600080fd5b50516002558115610a0a57600254620f4240906109fd908663ffffffff610f9716565b811515610a0657fe5b0492505b9196919550909350505050565b600154600160a060020a031681565b60035481565b60055481565b600054600160a060020a03163314610a4957600080fd5b600b805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a038381169190911791829055604080517f313ce56700000000000000000000000000000000000000000000000000000000815290517fed6f18557b7914dbfc23d546be65de82017608e11b87429e06c0b88b55f0b6c39390921691829163313ce5679160048083019260209291908290030181600087803b158015610aef57600080fd5b505af1158015610b03573d6000803e3d6000fd5b505050506040513d6020811015610b1957600080fd5b505160408051600160a060020a03909316835260ff90911660208301528051918290030190a150565b600054600160a060020a03163314610b5957600080fd5b60008054604051600160a060020a03909116917ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482091a26000805473ffffffffffffffffffffffffffffffffffffffff19169055565b6203f48081565b60015460a860020a900460ff1681565b670de0b6b3a764000081565b600054600160a060020a031681565b60045481565b60015460a060020a900460ff161515610bfe57600080fd5b60015460a860020a900460ff1615610c1557600080fd5b610c1d61061c565b1515610c2857600080fd5b600054600160a060020a03163314610c3f57600080fd5b600254610c52908463ffffffff610fc616565b600255600354610c68908363ffffffff610fc616565b600355600454610c7e908263ffffffff610fc616565b600455505050565b60015460a060020a900460ff1615610c9d57600080fd5b60015460a860020a900460ff1615610cb457600080fd5b600154600160a060020a03163314610ccb57600080fd5b6001805474ff0000000000000000000000000000000000000000191660a060020a1790556040805184815260208101849052600160a060020a0383168183015290517ffccf552413932efea18979436cc8ce92942bdef118c2b5682351e1891bef80729181900360600190a1505050565b60095481565b600154600160a060020a03163314610d5957600080fd5b60015460a860020a900460ff1615610d7057600080fd5b610d78610f59565b1515610d8357600080fd5b565b600154600160a060020a03163314610d9c57600080fd5b600b54604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015610e0b57600080fd5b505af1158015610e1f573d6000803e3d6000fd5b505050506040513d6020811015610e3557600080fd5b50505050565b600154600160a060020a03163314610e5257600080fd5b600160a060020a0381161515610e6757600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600a54600160a060020a031681565b60015460a860020a900460ff1615610ebc57600080fd5b60015460a060020a900460ff161515610ed457600080fd5b610edc61061c565b1515610ee757600080fd5b600054600160a060020a03163314610efe57600080fd5b600b805474ff0000000000000000000000000000000000000000191660a060020a1790556040517f256531276449280f5a3022f3024cb03968cf6ab90d6d067e9bc10768bcbcb08090600090a1565b60025481565b60085481565b600b5460a060020a900460ff1690565b600054600160a060020a03163314610f8057600080fd5b610f8981610fd3565b50565b600090565b60065481565b6000821515610fa857506000610fc0565b50818102818382811515610fb857fe5b0414610fc057fe5b92915050565b81810182811015610fc057fe5b600160a060020a0381161515610fe857600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03929092169190911790555600a165627a7a723058208871e37bff48fd8bdbe8815e029dd4dce11b984e655b0adf861138bd2d37a1b50029
Swarm Source
bzzr://8871e37bff48fd8bdbe8815e029dd4dce11b984e655b0adf861138bd2d37a1b5
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 ]
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.