Source Code
Latest 25 from a total of 179 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Unstake | 16145318 | 1179 days ago | IN | 0 ETH | 0.00075822 | ||||
| Stake | 15970114 | 1204 days ago | IN | 0 ETH | 0.00282206 | ||||
| Stake | 12828993 | 1691 days ago | IN | 0 ETH | 0.00523908 | ||||
| Stake | 12307044 | 1772 days ago | IN | 0 ETH | 0.00523908 | ||||
| Unstake | 9883039 | 2146 days ago | IN | 0 ETH | 0.00056095 | ||||
| Unstake | 9597783 | 2190 days ago | IN | 0 ETH | 0.00012335 | ||||
| Unstake | 9586895 | 2192 days ago | IN | 0 ETH | 0.00008221 | ||||
| Unstake | 9586605 | 2192 days ago | IN | 0 ETH | 0.00011221 | ||||
| Unstake | 9584254 | 2192 days ago | IN | 0 ETH | 0.00005611 | ||||
| Unstake | 9451248 | 2212 days ago | IN | 0 ETH | 0.0000411 | ||||
| Stake | 9389193 | 2222 days ago | IN | 0 ETH | 0.00375176 | ||||
| Stake | 9389182 | 2222 days ago | IN | 0 ETH | 0.00375176 | ||||
| Stake | 9389168 | 2222 days ago | IN | 0 ETH | 0.00435224 | ||||
| Stake | 9360216 | 2226 days ago | IN | 0 ETH | 0.00375176 | ||||
| Unstake | 9305930 | 2235 days ago | IN | 0 ETH | 0.00004111 | ||||
| Unstake | 9305921 | 2235 days ago | IN | 0 ETH | 0.00016835 | ||||
| Unstake | 9286343 | 2238 days ago | IN | 0 ETH | 0.00005611 | ||||
| Stake | 9085989 | 2273 days ago | IN | 0 ETH | 0.00012844 | ||||
| Stake | 9017273 | 2285 days ago | IN | 0 ETH | 0.00362376 | ||||
| Stake | 8998141 | 2289 days ago | IN | 0 ETH | 0.00362376 | ||||
| Stake | 8991889 | 2290 days ago | IN | 0 ETH | 0.00422376 | ||||
| Stake | 8904067 | 2304 days ago | IN | 0 ETH | 0.0036212 | ||||
| Stake | 8869244 | 2310 days ago | IN | 0 ETH | 0.0036212 | ||||
| Stake | 8869185 | 2310 days ago | IN | 0 ETH | 0.0036212 | ||||
| Stake | 8869174 | 2310 days ago | IN | 0 ETH | 0.00362376 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
This contract contains unverified libraries: SafeMath
Contract Name:
TimeLockedStaking
Compiler Version
v0.5.0+commit.1d4f565a
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2019-02-11
*/
pragma solidity ^0.5.0;
/// https://eips.ethereum.org/EIPS/eip-165
interface ERC165 {
/// @notice Query if a contract implements an interface
/// @param interfaceID The interface identifier, as specified in ERC-165
/// @dev Interface identification is specified in ERC-165. This function
/// uses less than 30,000 gas.
/// @return `true` if the contract implements `interfaceID` and
/// `interfaceID` is not 0xffffffff, `false` otherwise
function supportsInterface(bytes4 interfaceID) external view returns (bool);
}
/// https://eips.ethereum.org/EIPS/eip-900
/// @notice Interface with external methods
interface ISimpleStaking {
event Staked(address indexed user, uint256 amount, uint256 total, bytes data);
event Unstaked(address indexed user, uint256 amount, uint256 total, bytes data);
function stake(uint256 amount, bytes calldata data) external;
function stakeFor(address user, uint256 amount, bytes calldata data) external;
function unstake(uint256 amount, bytes calldata data) external;
function totalStakedFor(address addr) external view returns (uint256);
function totalStaked() external view returns (uint256);
function token() external view returns (address);
function supportsHistory() external pure returns (bool);
// optional. Commented out until we have valid reason to implement these methods
// function lastStakedFor(address addr) public view returns (uint256);
// function totalStakedForAt(address addr, uint256 blockNumber) public view returns (uint256);
// function totalStakedAt(uint256 blockNumber) public view returns (uint256);
}
/**
* @title SafeMath
* Courtesy of https://github.com/OpenZeppelin/openzeppelin-solidity/blob/9be0f100c48e4726bee73829fbb10f7d85b6ef54/contracts/math/SafeMath.sol
* @dev Math operations with safety checks that revert on error
*/
library SafeMath {
/**
* @dev Multiplies two numbers, reverts on overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
// Gas optimization: this is cheaper than requiring 'a' not being zero, but the
// benefit is lost if 'b' is also tested.
// See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b);
return c;
}
/**
* @dev Integer division of two numbers truncating the quotient, reverts on division by zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
require(b > 0); // Solidity only automatically asserts 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;
}
/**
* @dev Subtracts two numbers, reverts on overflow (i.e. if subtrahend is greater than minuend).
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
require(b <= a);
uint256 c = a - b;
return c;
}
/**
* @dev Adds two numbers, reverts on overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a);
return c;
}
/**
* @dev Divides two numbers and returns the remainder (unsigned integer modulo),
* reverts when dividing by zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
require(b != 0);
return a % b;
}
}
contract ERC20 {
/// @return The total amount of tokens
function totalSupply() public view returns (uint256 supply);
/// @param _owner The address from which the balance will be retrieved
/// @return The balance
function balanceOf(address _owner) public view returns (uint256 balance);
/// @notice send `_value` token to `_to` from `msg.sender`
/// @param _to The address of the recipient
/// @param _value The amount of token to be transferred
/// @return Whether the transfer was successful or not
function transfer(address _to, uint256 _value) public returns (bool success);
/// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`
/// @param _from The address of the sender
/// @param _to The address of the recipient
/// @param _value The amount of token to be transferred
/// @return Whether the transfer was successful or not
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);
/// @notice `msg.sender` approves `_spender` to spend `_value` tokens
/// @param _spender The address of the account able to transfer the tokens
/// @param _value The amount of tokens to be approved for transfer
/// @return Whether the approval was successful or not
function approve(address _spender, uint256 _value) public returns (bool success);
/// @param _owner The address of the account owning tokens
/// @param _spender The address of the account able to transfer the tokens
/// @return Amount of remaining tokens allowed to spent
function allowance(address _owner, address _spender) public view returns (uint256 remaining);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
/**
* Smart contract to stake ERC20 and optionally lock it in for a period of time.
* Users can add stake any time as long as the emergency status is false
* Maximum locked-in time is 365 days from now.
*
* It also keeps track of the effective start time which is recorded on the very
* first stake. Think of it as the "member since" attribute.
* If user unstakes (full or partial) at any point, the effective start time is reset.
*
*/
contract TimeLockedStaking is ERC165, ISimpleStaking {
using SafeMath for uint256;
struct StakeRecord {
uint256 amount;
uint256 unlockedAt;
}
struct StakeInfo {
/// total tokens this user stakes.
uint256 totalAmount;
/// "member since" in unix timestamp. Reset when user unstakes.
uint256 effectiveAt;
/// storing staking data for unstaking later.
/// recordId i.e. key of mapping is the keccak256 of the 'data' parameter in the stake method.
mapping (bytes32 => StakeRecord) stakeRecords;
}
/// @dev When emergency is true,
/// block staking action and
/// allow to unstake without verifying the record.unlockedAt
bool public emergency;
/// @dev Owner of this contract, who can activate the emergency.
address public owner;
/// @dev Address of the ERC20 token contract used for staking.
ERC20 internal erc20Token;
/// @dev https://solidity.readthedocs.io/en/v0.4.25/style-guide.html#avoiding-naming-collisions
uint256 internal totalStaked_ = 0;
/// Keep track of all stakers
mapping (address => StakeInfo) public stakers;
modifier greaterThanZero(uint256 num) {
require(num > 0, "Must be greater than 0.");
_;
}
/// @dev Better to manually validate these params after deployment.
/// @param token_ ERC0 token's address. Required.
/// @param owner_ Who can set emergency status. Default: msg.sender.
constructor(address token_, address owner_) public {
erc20Token = ERC20(token_);
owner = owner_;
emergency = false;
}
/// @dev Implement ERC165
/// With three or more supported interfaces (including ERC165 itself as a required supported interface),
/// the mapping approach (in every case) costs less gas than the pure approach (at worst case).
function supportsInterface(bytes4 interfaceID) external view returns (bool) {
return
interfaceID == this.supportsInterface.selector ||
interfaceID == this.stake.selector ^ this.stakeFor.selector ^ this.unstake.selector ^ this.totalStakedFor.selector ^ this.totalStaked.selector ^ this.token.selector ^ this.supportsHistory.selector;
}
/// @dev msg.sender stakes for him/her self.
/// @param amount Number of ERC20 to be staked. Amount must be > 0.
/// @param data Used for signaling the unlocked time.
function stake(uint256 amount, bytes calldata data) external {
registerStake(msg.sender, amount, data);
}
/// @dev msg.sender stakes for someone else.
/// @param amount Number of ERC20 to be staked. Must be > 0.
/// @param data Used for signaling the unlocked time.
function stakeFor(address user, uint256 amount, bytes calldata data) external {
registerStake(user, amount, data);
}
/// @dev msg.sender can unstake full amount or partial if unlockedAt =< now
/// @notice as a result, the "member since" attribute is reset.
/// @param amount Number of ERC20 to be unstaked. Must be > 0 and =< staked amount.
/// @param data The payload that was used when staking.
function unstake(uint256 amount, bytes calldata data)
external
greaterThanZero(stakers[msg.sender].effectiveAt) // must be a member
greaterThanZero(amount)
{
address user = msg.sender;
bytes32 recordId = keccak256(data);
StakeRecord storage record = stakers[user].stakeRecords[recordId];
require(amount <= record.amount, "Amount must be equal or smaller than the record.");
// Validate unlockedAt if there's no emergency.
// Otherwise, ignore the lockdown period.
if (!emergency) {
require(block.timestamp >= record.unlockedAt, "This stake is still locked.");
}
record.amount = record.amount.sub(amount);
stakers[user].totalAmount = stakers[user].totalAmount.sub(amount);
stakers[user].effectiveAt = block.timestamp;
totalStaked_ = totalStaked_.sub(amount);
require(erc20Token.transfer(user, amount), "Transfer failed.");
emit Unstaked(user, amount, stakers[user].totalAmount, data);
}
/// @return The staked amount of an address.
function totalStakedFor(address addr) external view returns (uint256) {
return stakers[addr].totalAmount;
}
/// @return Total number of tokens this smart contract hold.
function totalStaked() external view returns (uint256) {
return totalStaked_;
}
/// @return Address of the ERC20 used for staking.
function token() external view returns (address) {
return address(erc20Token);
}
/// @dev This smart contract does not store staking activities on chain.
/// @return false History is processed off-chain via event logs.
function supportsHistory() external pure returns (bool) {
return false;
}
/// Escape hatch
function setEmergency(bool status) external {
require(msg.sender == owner, "msg.sender must be owner.");
emergency = status;
}
/// Helpers
///
function max(uint256 a, uint256 b) public pure returns (uint256) {
return a > b ? a : b;
}
function min(uint256 a, uint256 b) public pure returns (uint256) {
return a > b ? b : a;
}
function getStakeRecordUnlockedAt(address user, bytes memory data) public view returns (uint256) {
return stakers[user].stakeRecords[keccak256(data)].unlockedAt;
}
function getStakeRecordAmount(address user, bytes memory data) public view returns (uint256) {
return stakers[user].stakeRecords[keccak256(data)].amount;
}
/// @dev Get the unlockedAt in the data field.
/// Maximum of 365 days from now.
/// Minimum of 1. Default value if data.length < 32.
/// @param data The left-most 256 bits are unix timestamp in seconds.
/// @return The unlockedAt in the data. Range [1, 365 days from now].
function getUnlockedAtSignal(bytes memory data) public view returns (uint256) {
uint256 unlockedAt;
if (data.length >= 32) {
assembly {
let d := add(data, 32) // first 32 bytes are the padded length of data
unlockedAt := mload(d)
}
}
// Maximum 365 days from now
uint256 oneYearFromNow = block.timestamp + 365 days;
uint256 capped = min(unlockedAt, oneYearFromNow);
return max(1, capped);
}
/// @dev Register a stake by updating the StakeInfo struct
function registerStake(address user, uint256 amount, bytes memory data) private greaterThanZero(amount) {
require(!emergency, "Cannot stake due to emergency.");
require(erc20Token.transferFrom(msg.sender, address(this), amount), "Transfer failed.");
StakeInfo storage info = stakers[user];
// Update effective at
info.effectiveAt = info.effectiveAt == 0 ? block.timestamp : info.effectiveAt;
// Update stake record
bytes32 recordId = keccak256(data);
StakeRecord storage record = info.stakeRecords[recordId];
record.amount = amount.add(record.amount);
record.unlockedAt = record.unlockedAt == 0 ? getUnlockedAtSignal(data) : record.unlockedAt;
// Update total amounts
info.totalAmount = amount.add(info.totalAmount);
totalStaked_ = totalStaked_.add(amount);
emit Staked(user, amount, stakers[user].totalAmount, data);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[{"name":"interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"status","type":"bool"}],"name":"setEmergency","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"},{"name":"data","type":"bytes"}],"name":"stake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"user","type":"address"},{"name":"amount","type":"uint256"},{"name":"data","type":"bytes"}],"name":"stakeFor","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"data","type":"bytes"}],"name":"getUnlockedAtSignal","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"addr","type":"address"}],"name":"totalStakedFor","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"a","type":"uint256"},{"name":"b","type":"uint256"}],"name":"max","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"supportsHistory","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[{"name":"a","type":"uint256"},{"name":"b","type":"uint256"}],"name":"min","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"totalStaked","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":"","type":"address"}],"name":"stakers","outputs":[{"name":"totalAmount","type":"uint256"},{"name":"effectiveAt","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"},{"name":"data","type":"bytes"}],"name":"getStakeRecordUnlockedAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"},{"name":"data","type":"bytes"}],"name":"unstake","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"emergency","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"user","type":"address"},{"name":"data","type":"bytes"}],"name":"getStakeRecordAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"token_","type":"address"},{"name":"owner_","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"total","type":"uint256"},{"indexed":false,"name":"data","type":"bytes"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"user","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"total","type":"uint256"},{"indexed":false,"name":"data","type":"bytes"}],"name":"Unstaked","type":"event"}]Contract Creation Code
6080604052600060025534801561001557600080fd5b50604051604080611ae48339810180604052604081101561003557600080fd5b81019080805190602001909291908051906020019092919050505081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548160ff02191690831515021790555050506119e7806100fd6000396000f3fe6080604052600436106100f1576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a7146100f65780630501d556146101685780630e89439b146101a55780630ef9635614610235578063317eda69146102e55780634b341aed146103c15780636d5433e6146104265780637033e4a61461047f5780637ae2b5c7146104ae578063817b1cd2146105075780638da5cb5b146105325780639168ae7214610589578063be98dae7146105f5578063c8fd6ed0146106f1578063caa6fea414610781578063e122549e146107b0578063fc0c546a146108ac575b600080fd5b34801561010257600080fd5b5061014e6004803603602081101561011957600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610903565b604051808215151515815260200191505060405180910390f35b34801561017457600080fd5b506101a36004803603602081101561018b57600080fd5b81019080803515159060200190929190505050610ab9565b005b3480156101b157600080fd5b50610233600480360360408110156101c857600080fd5b8101908080359060200190929190803590602001906401000000008111156101ef57600080fd5b82018360208201111561020157600080fd5b8035906020019184600183028401116401000000008311171561022357600080fd5b9091929391929390505050610b9a565b005b34801561024157600080fd5b506102e36004803603606081101561025857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561029f57600080fd5b8201836020820111156102b157600080fd5b803590602001918460018302840111640100000000831117156102d357600080fd5b9091929391929390505050610bee565b005b3480156102f157600080fd5b506103ab6004803603602081101561030857600080fd5b810190808035906020019064010000000081111561032557600080fd5b82018360208201111561033757600080fd5b8035906020019184600183028401116401000000008311171561035957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610c43565b6040518082815260200191505060405180910390f35b3480156103cd57600080fd5b50610410600480360360208110156103e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c89565b6040518082815260200191505060405180910390f35b34801561043257600080fd5b506104696004803603604081101561044957600080fd5b810190808035906020019092919080359060200190929190505050610cd5565b6040518082815260200191505060405180910390f35b34801561048b57600080fd5b50610494610cee565b604051808215151515815260200191505060405180910390f35b3480156104ba57600080fd5b506104f1600480360360408110156104d157600080fd5b810190808035906020019092919080359060200190929190505050610cf6565b6040518082815260200191505060405180910390f35b34801561051357600080fd5b5061051c610d0f565b6040518082815260200191505060405180910390f35b34801561053e57600080fd5b50610547610d19565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059557600080fd5b506105d8600480360360208110156105ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d3f565b604051808381526020018281526020019250505060405180910390f35b34801561060157600080fd5b506106db6004803603604081101561061857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561065557600080fd5b82018360208201111561066757600080fd5b8035906020019184600183028401116401000000008311171561068957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610d63565b6040518082815260200191505060405180910390f35b3480156106fd57600080fd5b5061077f6004803603604081101561071457600080fd5b81019080803590602001909291908035906020019064010000000081111561073b57600080fd5b82018360208201111561074d57600080fd5b8035906020019184600183028401116401000000008311171561076f57600080fd5b9091929391929390505050610dcb565b005b34801561078d57600080fd5b50610796611418565b604051808215151515815260200191505060405180910390f35b3480156107bc57600080fd5b50610896600480360360408110156107d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561081057600080fd5b82018360208201111561082257600080fd5b8035906020019184600183028401116401000000008311171561084457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061142a565b6040518082815260200191505060405180910390f35b3480156108b857600080fd5b506108c1611492565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006301ffc9a77c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610ab25750637033e4a67c01000000000000000000000000000000000000000000000000000000000263fc0c546a7c01000000000000000000000000000000000000000000000000000000000263817b1cd27c010000000000000000000000000000000000000000000000000000000002634b341aed7c01000000000000000000000000000000000000000000000000000000000263c8fd6ed07c010000000000000000000000000000000000000000000000000000000002630ef963567c010000000000000000000000000000000000000000000000000000000002630e89439b7c0100000000000000000000000000000000000000000000000000000000021818181818187bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b7e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f6d73672e73656e646572206d757374206265206f776e65722e0000000000000081525060200191505060405180910390fd5b806000806101000a81548160ff02191690831515021790555050565b610be9338484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506114bc565b505050565b610c3d848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506114bc565b50505050565b60008060208351101515610c5b576020830180519150505b60006301e13380420190506000610c728383610cf6565b9050610c7f600182610cd5565b9350505050919050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b6000818311610ce45781610ce6565b825b905092915050565b600080905090565b6000818311610d055782610d07565b815b905092915050565b6000600254905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915090508060000154908060010154905082565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008380519060200120815260200190815260200160002060010154905092915050565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600081111515610e86576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4d7573742062652067726561746572207468616e20302e00000000000000000081525060200191505060405180910390fd5b83600081111515610eff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4d7573742062652067726561746572207468616e20302e00000000000000000081525060200191505060405180910390fd5b600033905060008585604051808383808284378083019250505092505050604051809103902090506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002016000838152602001908152602001600020905080600001548811151515611020576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f416d6f756e74206d75737420626520657175616c206f7220736d616c6c65722081526020017f7468616e20746865207265636f72642e0000000000000000000000000000000081525060400191505060405180910390fd5b6000809054906101000a900460ff1615156110b257806001015442101515156110b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686973207374616b65206973207374696c6c206c6f636b65642e000000000081525060200191505060405180910390fd5b5b6110c988826000015461197890919063ffffffff16565b816000018190555061112688600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461197890919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555042600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506111c88860025461197890919063ffffffff16565b600281905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb848a6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561129357600080fd5b505af11580156112a7573d6000803e3d6000fd5b505050506040513d60208110156112bd57600080fd5b81019080805190602001909291905050501515611342576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5472616e73666572206661696c65642e0000000000000000000000000000000081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff167faf01bfc8475df280aca00b578c4a948e6d95700f0db8c13365240f7f973c875489600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001548a8a60405180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509550505050505060405180910390a25050505050505050565b6000809054906101000a900460ff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008380519060200120815260200190815260200160002060000154905092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b81600081111515611535576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4d7573742062652067726561746572207468616e20302e00000000000000000081525060200191505060405180910390fd5b6000809054906101000a900460ff161515156115b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f43616e6e6f74207374616b652064756520746f20656d657267656e63792e000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156116b257600080fd5b505af11580156116c6573d6000803e3d6000fd5b505050506040513d60208110156116dc57600080fd5b81019080805190602001909291905050501515611761576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5472616e73666572206661696c65642e0000000000000000000000000000000081525060200191505060405180910390fd5b6000600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160010154146117ba5780600101546117bc565b425b81600101819055506000838051906020012090506000826002016000838152602001908152602001600020905061180081600001548761199a90919063ffffffff16565b8160000181905550600081600101541461181e578060010154611828565b61182785610c43565b5b816001018190555061184783600001548761199a90919063ffffffff16565b83600001819055506118648660025461199a90919063ffffffff16565b6002819055508673ffffffffffffffffffffffffffffffffffffffff167fc65e53b88159e7d2c0fc12a0600072e28ae53ff73b4c1715369c30f16093514287600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154886040518084815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611933578082015181840152602081019050611918565b50505050905090810190601f1680156119605780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a250505050505050565b600082821115151561198957600080fd5b600082840390508091505092915050565b60008082840190508381101515156119b157600080fd5b809150509291505056fea165627a7a723058205762661b761eb975883621464a2ba04b08dcd41c7205e67914041196806ac30b0029000000000000000000000000cb94be6f13a1182e4a4b6140cb7bf2025d28e41b0000000000000000000000000ed8c3d25849fe3fe918a8863a04e71036cbc501
Deployed Bytecode
0x6080604052600436106100f1576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301ffc9a7146100f65780630501d556146101685780630e89439b146101a55780630ef9635614610235578063317eda69146102e55780634b341aed146103c15780636d5433e6146104265780637033e4a61461047f5780637ae2b5c7146104ae578063817b1cd2146105075780638da5cb5b146105325780639168ae7214610589578063be98dae7146105f5578063c8fd6ed0146106f1578063caa6fea414610781578063e122549e146107b0578063fc0c546a146108ac575b600080fd5b34801561010257600080fd5b5061014e6004803603602081101561011957600080fd5b8101908080357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19169060200190929190505050610903565b604051808215151515815260200191505060405180910390f35b34801561017457600080fd5b506101a36004803603602081101561018b57600080fd5b81019080803515159060200190929190505050610ab9565b005b3480156101b157600080fd5b50610233600480360360408110156101c857600080fd5b8101908080359060200190929190803590602001906401000000008111156101ef57600080fd5b82018360208201111561020157600080fd5b8035906020019184600183028401116401000000008311171561022357600080fd5b9091929391929390505050610b9a565b005b34801561024157600080fd5b506102e36004803603606081101561025857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561029f57600080fd5b8201836020820111156102b157600080fd5b803590602001918460018302840111640100000000831117156102d357600080fd5b9091929391929390505050610bee565b005b3480156102f157600080fd5b506103ab6004803603602081101561030857600080fd5b810190808035906020019064010000000081111561032557600080fd5b82018360208201111561033757600080fd5b8035906020019184600183028401116401000000008311171561035957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610c43565b6040518082815260200191505060405180910390f35b3480156103cd57600080fd5b50610410600480360360208110156103e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c89565b6040518082815260200191505060405180910390f35b34801561043257600080fd5b506104696004803603604081101561044957600080fd5b810190808035906020019092919080359060200190929190505050610cd5565b6040518082815260200191505060405180910390f35b34801561048b57600080fd5b50610494610cee565b604051808215151515815260200191505060405180910390f35b3480156104ba57600080fd5b506104f1600480360360408110156104d157600080fd5b810190808035906020019092919080359060200190929190505050610cf6565b6040518082815260200191505060405180910390f35b34801561051357600080fd5b5061051c610d0f565b6040518082815260200191505060405180910390f35b34801561053e57600080fd5b50610547610d19565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059557600080fd5b506105d8600480360360208110156105ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d3f565b604051808381526020018281526020019250505060405180910390f35b34801561060157600080fd5b506106db6004803603604081101561061857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561065557600080fd5b82018360208201111561066757600080fd5b8035906020019184600183028401116401000000008311171561068957600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610d63565b6040518082815260200191505060405180910390f35b3480156106fd57600080fd5b5061077f6004803603604081101561071457600080fd5b81019080803590602001909291908035906020019064010000000081111561073b57600080fd5b82018360208201111561074d57600080fd5b8035906020019184600183028401116401000000008311171561076f57600080fd5b9091929391929390505050610dcb565b005b34801561078d57600080fd5b50610796611418565b604051808215151515815260200191505060405180910390f35b3480156107bc57600080fd5b50610896600480360360408110156107d357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561081057600080fd5b82018360208201111561082257600080fd5b8035906020019184600183028401116401000000008311171561084457600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061142a565b6040518082815260200191505060405180910390f35b3480156108b857600080fd5b506108c1611492565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006301ffc9a77c0100000000000000000000000000000000000000000000000000000000027bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610ab25750637033e4a67c01000000000000000000000000000000000000000000000000000000000263fc0c546a7c01000000000000000000000000000000000000000000000000000000000263817b1cd27c010000000000000000000000000000000000000000000000000000000002634b341aed7c01000000000000000000000000000000000000000000000000000000000263c8fd6ed07c010000000000000000000000000000000000000000000000000000000002630ef963567c010000000000000000000000000000000000000000000000000000000002630e89439b7c0100000000000000000000000000000000000000000000000000000000021818181818187bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b7e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f6d73672e73656e646572206d757374206265206f776e65722e0000000000000081525060200191505060405180910390fd5b806000806101000a81548160ff02191690831515021790555050565b610be9338484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506114bc565b505050565b610c3d848484848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506114bc565b50505050565b60008060208351101515610c5b576020830180519150505b60006301e13380420190506000610c728383610cf6565b9050610c7f600182610cd5565b9350505050919050565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001549050919050565b6000818311610ce45781610ce6565b825b905092915050565b600080905090565b6000818311610d055782610d07565b815b905092915050565b6000600254905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915090508060000154908060010154905082565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008380519060200120815260200190815260200160002060010154905092915050565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010154600081111515610e86576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4d7573742062652067726561746572207468616e20302e00000000000000000081525060200191505060405180910390fd5b83600081111515610eff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4d7573742062652067726561746572207468616e20302e00000000000000000081525060200191505060405180910390fd5b600033905060008585604051808383808284378083019250505092505050604051809103902090506000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002016000838152602001908152602001600020905080600001548811151515611020576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f416d6f756e74206d75737420626520657175616c206f7220736d616c6c65722081526020017f7468616e20746865207265636f72642e0000000000000000000000000000000081525060400191505060405180910390fd5b6000809054906101000a900460ff1615156110b257806001015442101515156110b1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f54686973207374616b65206973207374696c6c206c6f636b65642e000000000081525060200191505060405180910390fd5b5b6110c988826000015461197890919063ffffffff16565b816000018190555061112688600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015461197890919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555042600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055506111c88860025461197890919063ffffffff16565b600281905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb848a6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561129357600080fd5b505af11580156112a7573d6000803e3d6000fd5b505050506040513d60208110156112bd57600080fd5b81019080805190602001909291905050501515611342576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5472616e73666572206661696c65642e0000000000000000000000000000000081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff167faf01bfc8475df280aca00b578c4a948e6d95700f0db8c13365240f7f973c875489600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001548a8a60405180858152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509550505050505060405180910390a25050505050505050565b6000809054906101000a900460ff1681565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160008380519060200120815260200190815260200160002060000154905092915050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b81600081111515611535576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f4d7573742062652067726561746572207468616e20302e00000000000000000081525060200191505060405180910390fd5b6000809054906101000a900460ff161515156115b9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f43616e6e6f74207374616b652064756520746f20656d657267656e63792e000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b1580156116b257600080fd5b505af11580156116c6573d6000803e3d6000fd5b505050506040513d60208110156116dc57600080fd5b81019080805190602001909291905050501515611761576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260108152602001807f5472616e73666572206661696c65642e0000000000000000000000000000000081525060200191505060405180910390fd5b6000600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160010154146117ba5780600101546117bc565b425b81600101819055506000838051906020012090506000826002016000838152602001908152602001600020905061180081600001548761199a90919063ffffffff16565b8160000181905550600081600101541461181e578060010154611828565b61182785610c43565b5b816001018190555061184783600001548761199a90919063ffffffff16565b83600001819055506118648660025461199a90919063ffffffff16565b6002819055508673ffffffffffffffffffffffffffffffffffffffff167fc65e53b88159e7d2c0fc12a0600072e28ae53ff73b4c1715369c30f16093514287600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000154886040518084815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611933578082015181840152602081019050611918565b50505050905090810190601f1680156119605780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a250505050505050565b600082821115151561198957600080fd5b600082840390508091505092915050565b60008082840190508381101515156119b157600080fd5b809150509291505056fea165627a7a723058205762661b761eb975883621464a2ba04b08dcd41c7205e67914041196806ac30b0029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000cb94be6f13a1182e4a4b6140cb7bf2025d28e41b0000000000000000000000000ed8c3d25849fe3fe918a8863a04e71036cbc501
-----Decoded View---------------
Arg [0] : token_ (address): 0xCb94be6f13A1182E4A4B6140cb7bf2025d28e41B
Arg [1] : owner_ (address): 0x0Ed8C3d25849fe3fe918A8863A04E71036cbc501
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000cb94be6f13a1182e4a4b6140cb7bf2025d28e41b
Arg [1] : 0000000000000000000000000ed8c3d25849fe3fe918a8863a04e71036cbc501
Swarm Source
bzzr://5762661b761eb975883621464a2ba04b08dcd41c7205e67914041196806ac30b
Loading...
Loading
Loading...
Loading
Net Worth in USD
$977.89
Net Worth in ETH
0.481946
Token Allocations
TRST
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $0.000485 | 2,018,021.949 | $977.89 |
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.