Source Code
Latest 18 from a total of 18 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Stake | 27333983 | 316 days ago | IN | 0 ETH | 0.00000034 | ||||
| Stake | 27333730 | 316 days ago | IN | 0 ETH | 0.00000021 | ||||
| Withdraw | 27333689 | 316 days ago | IN | 0 ETH | 0.00000028 | ||||
| Claim Rewards | 27333455 | 316 days ago | IN | 0 ETH | 0.00000039 | ||||
| Claim Rewards | 27333398 | 316 days ago | IN | 0 ETH | 0.00000035 | ||||
| Stake | 27333025 | 316 days ago | IN | 0 ETH | 0.0000002 | ||||
| Withdraw | 27332980 | 316 days ago | IN | 0 ETH | 0.00000025 | ||||
| Withdraw | 27332941 | 316 days ago | IN | 0 ETH | 0.00000033 | ||||
| Stake | 25313399 | 362 days ago | IN | 0 ETH | 0.00000095 | ||||
| Stake | 24629167 | 378 days ago | IN | 0 ETH | 0.00000186 | ||||
| Stake | 24611111 | 379 days ago | IN | 0 ETH | 0.00000207 | ||||
| Stake | 18773148 | 514 days ago | IN | 0 ETH | 0.00000075 | ||||
| Stake | 18137353 | 529 days ago | IN | 0 ETH | 0.00000047 | ||||
| Withdraw | 18137316 | 529 days ago | IN | 0 ETH | 0.00000027 | ||||
| Stake | 18137303 | 529 days ago | IN | 0 ETH | 0.00000033 | ||||
| Stake | 18137254 | 529 days ago | IN | 0 ETH | 0.00000053 | ||||
| Stake | 17059869 | 553 days ago | IN | 0 ETH | 0.00000034 | ||||
| Stake | 17059859 | 553 days ago | IN | 0 ETH | 0.00000071 |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
StakingContract
Compiler Version
v0.8.25+commit.b61c2a91
Contract Source Code (Solidity)
/**
*Submitted for verification at basescan.org on 2024-06-12
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
function burnToken() external view returns (uint256);
/**
* @dev Returns the token decimals.
*/
function decimals() external view returns (uint8);
/**
* @dev Returns the token symbol.
*/
function symbol() external view returns (string memory);
/**
* @dev Returns the token name.
*/
function name() external view returns (string memory);
/**
* @dev Returns the bep token owner.
*/
function getOwner() external view returns (address);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address _owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: 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
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}
/*
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with GSN meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
contract Context {
// Empty internal constructor, to prevent people from mistakenly deploying
// an instance of this contract, which should be used via inheritance.
constructor () { }
function _msgSender() internal view returns (address payable) {
return payable(msg.sender);
}
function _msgData() internal view returns (bytes memory) {
this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
return msg.data;
}
}
/**
* @dev Wrappers over Solidity's arithmetic operations with added overflow
* checks.
*
* Arithmetic operations in Solidity wrap on overflow. This can easily result
* in bugs, because programmers usually assume that an overflow raises an
* error, which is the standard behavior in high level programming languages.
* `SafeMath` restores this intuition by reverting the transaction when an
* operation overflows.
*
* Using this library instead of the unchecked operations eliminates an entire
* class of bugs, so it's recommended to use it always.
*/
library SafeMath {
/**
* @dev Returns the addition of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `+` operator.
*
* Requirements:
* - Addition cannot overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
/**
* @dev Returns the subtraction of two unsigned integers, reverting with custom message on
* overflow (when the result is negative).
*
* Counterpart to Solidity's `-` operator.
*
* Requirements:
* - Subtraction cannot overflow.
*/
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
/**
* @dev Returns the multiplication of two unsigned integers, reverting on
* overflow.
*
* Counterpart to Solidity's `*` operator.
*
* Requirements:
* - Multiplication cannot 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-contracts/pull/522
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
/**
* @dev Returns the integer division of two unsigned integers. Reverts with custom message on
* division by zero. The result is rounded towards zero.
*
* Counterpart to Solidity's `/` operator. Note: this function uses a
* `revert` opcode (which leaves remaining gas untouched) while Solidity
* uses an invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
// Solidity only automatically asserts when dividing by 0
require(b > 0, errorMessage);
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b) internal pure returns (uint256) {
return mod(a, b, "SafeMath: modulo by zero");
}
/**
* @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
* Reverts with custom message when dividing by zero.
*
* Counterpart to Solidity's `%` operator. This function uses a `revert`
* opcode (which leaves remaining gas untouched) while Solidity uses an
* invalid opcode to revert (consuming all remaining gas).
*
* Requirements:
* - The divisor cannot be zero.
*/
function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b != 0, errorMessage);
return a % b;
}
}
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor () {
address msgSender = _msgSender();
_owner = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public onlyOwner {
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
*/
function _transferOwnership(address newOwner) internal {
require(newOwner != address(0), "Ownable: new owner is the zero address");
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
}
contract StakingContract is Ownable {
// ERC20 token being staked
IERC20 public stakingToken;
// ERC20 token used for rewards
IERC20 public rewardToken;
// APR (Annual Percentage Rate) for rewards (10%)
uint256 public apr = 10;
uint256 public totalUsers;
// Mapping to track user stakes
struct users{
uint256 stakes;
uint256 stakeTimes;
uint256 stakeRewads;
}
mapping (address=>users) public stakes;
// Event emitted when a user stakes tokens
event Staked(address indexed user, uint256 amount);
// Event emitted when a user withdraws their stake
event Withdrawn(address indexed user, uint256 amount);
// Event emitted when a user claims their rewards
event RewardClaimed(address indexed user, uint256 amount);
constructor(address _stakingToken, address _rewardToken) {
stakingToken = IERC20(_stakingToken);
rewardToken = IERC20(_rewardToken);
}
// Stake tokens
function stake(uint256 amount) external {
require(amount > 0, "Amount must be greater than 0");
require(stakingToken.allowance(msg.sender, address(this)) >= amount, "Must approve tokens first");
// Transfer tokens from user to contract
stakingToken.transferFrom(msg.sender, address(this), amount);
if(stakes[msg.sender].stakes==0) totalUsers=totalUsers+1;
// Update user's stake and stake time
stakes[msg.sender].stakes += amount;
stakes[msg.sender].stakeTimes = block.timestamp;
stakes[msg.sender].stakeRewads+=calculateRewards(msg.sender);
emit Staked(msg.sender, amount);
}
// Withdraw staked tokens
function withdraw(uint256 amount) external {
require(amount > 0, "Amount must be greater than 0");
require(stakes[msg.sender].stakes >= amount, "Insufficient staked balance");
// Transfer tokens from contract to user
stakingToken.transfer(msg.sender, amount);
// Update user's stake and stake time
stakes[msg.sender].stakes -= amount;
stakes[msg.sender].stakeTimes = 0;
stakes[msg.sender].stakeRewads=0;
emit Withdrawn(msg.sender, amount);
}
// Claim rewards
function claimRewards() external {
uint256 rewards = calculateRewards(msg.sender);
require(rewards > 0, "No rewards available");
// Transfer rewards from contract to user
rewardToken.transfer(msg.sender, rewards);
emit RewardClaimed(msg.sender, rewards);
}
// Calculate rewards for a user based on their stake and time elapsed
function calculateRewards(address user) public view returns (uint256) {
uint256 userStake = stakes[user].stakes;
uint256 startTime = stakes[user].stakeTimes;
uint256 timeElapsed = block.timestamp - startTime;
// Calculate rewards based on APR and time elapsed
uint256 rewards = (userStake * apr * timeElapsed) / (365 days * 100); // APR per day
rewards+=stakes[msg.sender].stakeRewads;
return rewards;
}
// Update APR (only callable by owner)
function setApr(uint256 _apr) external onlyOwner {
apr = _apr;
}
// Update APR (only callable by owner)
function setTokens(address _stakingToken, address _rewardToken) external onlyOwner {
stakingToken = IERC20(_stakingToken);
rewardToken = IERC20(_rewardToken);
}
// Emergency function to recover mistakenly sent tokens (only callable by owner)
function recoverTokens(address tokenAddress, uint256 amount) external onlyOwner {
require(tokenAddress != address(stakingToken) && tokenAddress != address(rewardToken), "Cannot recover staking or reward tokens");
IERC20(tokenAddress).transfer(owner(), amount);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_stakingToken","type":"address"},{"internalType":"address","name":"_rewardToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Staked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[],"name":"apr","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"calculateRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"recoverTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_apr","type":"uint256"}],"name":"setApr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_stakingToken","type":"address"},{"internalType":"address","name":"_rewardToken","type":"address"}],"name":"setTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakes","outputs":[{"internalType":"uint256","name":"stakes","type":"uint256"},{"internalType":"uint256","name":"stakeTimes","type":"uint256"},{"internalType":"uint256","name":"stakeRewads","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingToken","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalUsers","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
6080604052600a600355348015610014575f80fd5b50604051610d92380380610d92833981016040819052610033916100bf565b5f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180546001600160a01b039384166001600160a01b031991821617909155600280549290931691161790556100f0565b80516001600160a01b03811681146100ba575f80fd5b919050565b5f80604083850312156100d0575f80fd5b6100d9836100a4565b91506100e7602084016100a4565b90509250929050565b610c95806100fd5f395ff3fe608060405234801561000f575f80fd5b50600436106100f0575f3560e01c8063715018a611610093578063bff1f9e111610063578063bff1f9e114610205578063cbc7854e1461020e578063f2fde38b14610221578063f7c618c114610234575f80fd5b8063715018a6146101af57806372f702f3146101b75780638da5cb5b146101e2578063a694fc3a146101f2575f80fd5b8063372500ab116100ce578063372500ab1461016a57806357ded9c91461017257806359cee29c1461018957806364ab86751461019c575f80fd5b8063069c9fae146100f457806316934fc4146101095780632e1a7d4d14610157575b5f80fd5b610107610102366004610aee565b610247565b005b610137610117366004610b16565b60056020525f908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060015b60405180910390f35b610107610165366004610b36565b610394565b61010761052f565b61017b60035481565b60405190815260200161014e565b610107610197366004610b36565b610626565b61017b6101aa366004610b16565b610654565b6101076106d2565b6001546101ca906001600160a01b031681565b6040516001600160a01b03909116815260200161014e565b5f546001600160a01b03166101ca565b610107610200366004610b36565b610743565b61017b60045481565b61010761021c366004610b4d565b610989565b61010761022f366004610b16565b6109e0565b6002546101ca906001600160a01b031681565b5f546001600160a01b031633146102795760405162461bcd60e51b815260040161027090610b7e565b60405180910390fd5b6001546001600160a01b038381169116148015906102a557506002546001600160a01b03838116911614155b6103015760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74207265636f766572207374616b696e67206f722072657761726460448201526620746f6b656e7360c81b6064820152608401610270565b816001600160a01b031663a9059cbb6103215f546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af115801561036b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061038f9190610bb3565b505050565b5f81116103e35760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610270565b335f908152600560205260409020548111156104415760405162461bcd60e51b815260206004820152601b60248201527f496e73756666696369656e74207374616b65642062616c616e636500000000006044820152606401610270565b60015460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303815f875af115801561048f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104b39190610bb3565b50335f90815260056020526040812080548392906104d2908490610be6565b9091555050335f818152600560205260408082206001810183905560020191909155517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5906105249084815260200190565b60405180910390a250565b5f61053933610654565b90505f81116105815760405162461bcd60e51b81526020600482015260146024820152734e6f207265776172647320617661696c61626c6560601b6044820152606401610270565b60025460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303815f875af11580156105cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105f39190610bb3565b5060405181815233907f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f724190602001610524565b5f546001600160a01b0316331461064f5760405162461bcd60e51b815260040161027090610b7e565b600355565b6001600160a01b0381165f90815260056020526040812080546001909101548261067e8242610be6565b90505f63bbf81e0082600354866106959190610bff565b61069f9190610bff565b6106a99190610c16565b335f908152600560205260409020600201549091506106c89082610c35565b9695505050505050565b5f546001600160a01b031633146106fb5760405162461bcd60e51b815260040161027090610b7e565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f81116107925760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610270565b600154604051636eb1769f60e11b815233600482015230602482015282916001600160a01b03169063dd62ed3e90604401602060405180830381865afa1580156107de573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108029190610c48565b10156108505760405162461bcd60e51b815260206004820152601960248201527f4d75737420617070726f766520746f6b656e73206669727374000000000000006044820152606401610270565b6001546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303815f875af11580156108a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c89190610bb3565b50335f9081526005602052604081205490036108f0576004546108ec906001610c35565b6004555b335f908152600560205260408120805483929061090e908490610c35565b9091555050335f8181526005602052604090204260019091015561093190610654565b335f9081526005602052604081206002018054909190610952908490610c35565b909155505060405181815233907f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d90602001610524565b5f546001600160a01b031633146109b25760405162461bcd60e51b815260040161027090610b7e565b600180546001600160a01b039384166001600160a01b03199182161790915560028054929093169116179055565b5f546001600160a01b03163314610a095760405162461bcd60e51b815260040161027090610b7e565b610a1281610a15565b50565b6001600160a01b038116610a7a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610270565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b0381168114610ae9575f80fd5b919050565b5f8060408385031215610aff575f80fd5b610b0883610ad3565b946020939093013593505050565b5f60208284031215610b26575f80fd5b610b2f82610ad3565b9392505050565b5f60208284031215610b46575f80fd5b5035919050565b5f8060408385031215610b5e575f80fd5b610b6783610ad3565b9150610b7560208401610ad3565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215610bc3575f80fd5b81518015158114610b2f575f80fd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610bf957610bf9610bd2565b92915050565b8082028115828204841417610bf957610bf9610bd2565b5f82610c3057634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610bf957610bf9610bd2565b5f60208284031215610c58575f80fd5b505191905056fea2646970667358221220a590016bf73d647732c9cf94ed36b9474ed63e95f6434864f7c06cd2c09f13f864736f6c63430008190033000000000000000000000000f35a0bedf75aa6764959efcbcb22c5db02a3a5c90000000000000000000000005875f6b109bbcba089875cd0cc198602c1f483b7
Deployed Bytecode
0x608060405234801561000f575f80fd5b50600436106100f0575f3560e01c8063715018a611610093578063bff1f9e111610063578063bff1f9e114610205578063cbc7854e1461020e578063f2fde38b14610221578063f7c618c114610234575f80fd5b8063715018a6146101af57806372f702f3146101b75780638da5cb5b146101e2578063a694fc3a146101f2575f80fd5b8063372500ab116100ce578063372500ab1461016a57806357ded9c91461017257806359cee29c1461018957806364ab86751461019c575f80fd5b8063069c9fae146100f457806316934fc4146101095780632e1a7d4d14610157575b5f80fd5b610107610102366004610aee565b610247565b005b610137610117366004610b16565b60056020525f908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060015b60405180910390f35b610107610165366004610b36565b610394565b61010761052f565b61017b60035481565b60405190815260200161014e565b610107610197366004610b36565b610626565b61017b6101aa366004610b16565b610654565b6101076106d2565b6001546101ca906001600160a01b031681565b6040516001600160a01b03909116815260200161014e565b5f546001600160a01b03166101ca565b610107610200366004610b36565b610743565b61017b60045481565b61010761021c366004610b4d565b610989565b61010761022f366004610b16565b6109e0565b6002546101ca906001600160a01b031681565b5f546001600160a01b031633146102795760405162461bcd60e51b815260040161027090610b7e565b60405180910390fd5b6001546001600160a01b038381169116148015906102a557506002546001600160a01b03838116911614155b6103015760405162461bcd60e51b815260206004820152602760248201527f43616e6e6f74207265636f766572207374616b696e67206f722072657761726460448201526620746f6b656e7360c81b6064820152608401610270565b816001600160a01b031663a9059cbb6103215f546001600160a01b031690565b6040516001600160e01b031960e084901b1681526001600160a01b039091166004820152602481018490526044016020604051808303815f875af115801561036b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061038f9190610bb3565b505050565b5f81116103e35760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610270565b335f908152600560205260409020548111156104415760405162461bcd60e51b815260206004820152601b60248201527f496e73756666696369656e74207374616b65642062616c616e636500000000006044820152606401610270565b60015460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303815f875af115801561048f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104b39190610bb3565b50335f90815260056020526040812080548392906104d2908490610be6565b9091555050335f818152600560205260408082206001810183905560020191909155517f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5906105249084815260200190565b60405180910390a250565b5f61053933610654565b90505f81116105815760405162461bcd60e51b81526020600482015260146024820152734e6f207265776172647320617661696c61626c6560601b6044820152606401610270565b60025460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb906044016020604051808303815f875af11580156105cf573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105f39190610bb3565b5060405181815233907f106f923f993c2149d49b4255ff723acafa1f2d94393f561d3eda32ae348f724190602001610524565b5f546001600160a01b0316331461064f5760405162461bcd60e51b815260040161027090610b7e565b600355565b6001600160a01b0381165f90815260056020526040812080546001909101548261067e8242610be6565b90505f63bbf81e0082600354866106959190610bff565b61069f9190610bff565b6106a99190610c16565b335f908152600560205260409020600201549091506106c89082610c35565b9695505050505050565b5f546001600160a01b031633146106fb5760405162461bcd60e51b815260040161027090610b7e565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f80546001600160a01b0319169055565b5f81116107925760405162461bcd60e51b815260206004820152601d60248201527f416d6f756e74206d7573742062652067726561746572207468616e20300000006044820152606401610270565b600154604051636eb1769f60e11b815233600482015230602482015282916001600160a01b03169063dd62ed3e90604401602060405180830381865afa1580156107de573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108029190610c48565b10156108505760405162461bcd60e51b815260206004820152601960248201527f4d75737420617070726f766520746f6b656e73206669727374000000000000006044820152606401610270565b6001546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303815f875af11580156108a4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108c89190610bb3565b50335f9081526005602052604081205490036108f0576004546108ec906001610c35565b6004555b335f908152600560205260408120805483929061090e908490610c35565b9091555050335f8181526005602052604090204260019091015561093190610654565b335f9081526005602052604081206002018054909190610952908490610c35565b909155505060405181815233907f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d90602001610524565b5f546001600160a01b031633146109b25760405162461bcd60e51b815260040161027090610b7e565b600180546001600160a01b039384166001600160a01b03199182161790915560028054929093169116179055565b5f546001600160a01b03163314610a095760405162461bcd60e51b815260040161027090610b7e565b610a1281610a15565b50565b6001600160a01b038116610a7a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610270565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f80546001600160a01b0319166001600160a01b0392909216919091179055565b80356001600160a01b0381168114610ae9575f80fd5b919050565b5f8060408385031215610aff575f80fd5b610b0883610ad3565b946020939093013593505050565b5f60208284031215610b26575f80fd5b610b2f82610ad3565b9392505050565b5f60208284031215610b46575f80fd5b5035919050565b5f8060408385031215610b5e575f80fd5b610b6783610ad3565b9150610b7560208401610ad3565b90509250929050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215610bc3575f80fd5b81518015158114610b2f575f80fd5b634e487b7160e01b5f52601160045260245ffd5b81810381811115610bf957610bf9610bd2565b92915050565b8082028115828204841417610bf957610bf9610bd2565b5f82610c3057634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115610bf957610bf9610bd2565b5f60208284031215610c58575f80fd5b505191905056fea2646970667358221220a590016bf73d647732c9cf94ed36b9474ed63e95f6434864f7c06cd2c09f13f864736f6c63430008190033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000f35a0bedf75aa6764959efcbcb22c5db02a3a5c90000000000000000000000005875f6b109bbcba089875cd0cc198602c1f483b7
-----Decoded View---------------
Arg [0] : _stakingToken (address): 0xF35a0BEdf75AA6764959EfcbcB22c5Db02A3A5C9
Arg [1] : _rewardToken (address): 0x5875f6b109BBCBa089875Cd0CC198602C1F483B7
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000f35a0bedf75aa6764959efcbcb22c5db02a3a5c9
Arg [1] : 0000000000000000000000005875f6b109bbcba089875cd0cc198602c1f483b7
Deployed Bytecode Sourcemap
11394:3919:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15025:285;;;;;;:::i;:::-;;:::i;:::-;;11846:38;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;844:25:1;;;900:2;885:18;;878:34;;;;928:18;;;921:34;832:2;817:18;11846:38:0;;;;;;;;13135:531;;;;;;:::i;:::-;;:::i;13696:310::-;;;:::i;11633:23::-;;;;;;;;;1297:25:1;;;1285:2;1270:18;11633:23:0;1151:177:1;14614:78:0;;;;;;:::i;:::-;;:::i;14089:473::-;;;;;;:::i;:::-;;:::i;10696:130::-;;;:::i;11472:26::-;;;;;-1:-1:-1;;;;;11472:26:0;;;;;;-1:-1:-1;;;;;1511:32:1;;;1493:51;;1481:2;1466:18;11472:26:0;1333:217:1;10094:73:0;10132:7;10155:6;-1:-1:-1;;;;;10155:6:0;10094:73;;12423:673;;;;;;:::i;:::-;;:::i;11665:25::-;;;;;;14742:189;;;;;;:::i;:::-;;:::i;10971:103::-;;;;;;:::i;:::-;;:::i;11544:25::-;;;;;-1:-1:-1;;;;;11544:25:0;;;15025:285;10288:6;;-1:-1:-1;;;;;10288:6:0;3874:10;10288:22;10280:67;;;;-1:-1:-1;;;10280:67:0;;;;;;;:::i;:::-;;;;;;;;;15148:12:::1;::::0;-1:-1:-1;;;;;15124:37:0;;::::1;15148:12:::0;::::1;15124:37;::::0;::::1;::::0;:77:::1;;-1:-1:-1::0;15189:11:0::1;::::0;-1:-1:-1;;;;;15165:36:0;;::::1;15189:11:::0;::::1;15165:36;;15124:77;15116:129;;;::::0;-1:-1:-1;;;15116:129:0;;2591:2:1;15116:129:0::1;::::0;::::1;2573:21:1::0;2630:2;2610:18;;;2603:30;2669:34;2649:18;;;2642:62;-1:-1:-1;;;2720:18:1;;;2713:37;2767:19;;15116:129:0::1;2389:403:1::0;15116:129:0::1;15263:12;-1:-1:-1::0;;;;;15256:29:0::1;;15286:7;10132::::0;10155:6;-1:-1:-1;;;;;10155:6:0;;10094:73;15286:7:::1;15256:46;::::0;-1:-1:-1;;;;;;15256:46:0::1;::::0;;;;;;-1:-1:-1;;;;;2989:32:1;;;15256:46:0::1;::::0;::::1;2971:51:1::0;3038:18;;;3031:34;;;2944:18;;15256:46:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15025:285:::0;;:::o;13135:531::-;13206:1;13197:6;:10;13189:52;;;;-1:-1:-1;;;13189:52:0;;3560:2:1;13189:52:0;;;3542:21:1;3599:2;3579:18;;;3572:30;3638:31;3618:18;;;3611:59;3687:18;;13189:52:0;3358:353:1;13189:52:0;13267:10;13260:18;;;;:6;:18;;;;;:25;:35;-1:-1:-1;13260:35:0;13252:75;;;;-1:-1:-1;;;13252:75:0;;3918:2:1;13252:75:0;;;3900:21:1;3957:2;3937:18;;;3930:30;3996:29;3976:18;;;3969:57;4043:18;;13252:75:0;3716:351:1;13252:75:0;13390:12;;:41;;-1:-1:-1;;;13390:41:0;;13412:10;13390:41;;;2971:51:1;3038:18;;;3031:34;;;-1:-1:-1;;;;;13390:12:0;;;;:21;;2944:18:1;;13390:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;13498:10:0;13491:18;;;;:6;:18;;;;;:35;;13520:6;;13491:18;:35;;13520:6;;13491:35;:::i;:::-;;;;-1:-1:-1;;13544:10:0;13569:1;13537:18;;;:6;:18;;;;;;:29;;;:33;;;13581:30;;:32;;;;13629:29;;;;;13651:6;1297:25:1;;1285:2;1270:18;;1151:177;13629:29:0;;;;;;;;13135:531;:::o;13696:310::-;13740:15;13758:28;13775:10;13758:16;:28::i;:::-;13740:46;;13815:1;13805:7;:11;13797:44;;;;-1:-1:-1;;;13797:44:0;;4539:2:1;13797:44:0;;;4521:21:1;4578:2;4558:18;;;4551:30;-1:-1:-1;;;4597:18:1;;;4590:50;4657:18;;13797:44:0;4337:344:1;13797:44:0;13905:11;;:41;;-1:-1:-1;;;13905:41:0;;13926:10;13905:41;;;2971:51:1;3038:18;;;3031:34;;;-1:-1:-1;;;;;13905:11:0;;;;:20;;2944:18:1;;13905:41:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;13964:34:0;;1297:25:1;;;13978:10:0;;13964:34;;1285:2:1;1270:18;13964:34:0;1151:177:1;14614:78:0;10288:6;;-1:-1:-1;;;;;10288:6:0;3874:10;10288:22;10280:67;;;;-1:-1:-1;;;10280:67:0;;;;;;;:::i;:::-;14674:3:::1;:10:::0;14614:78::o;14089:473::-;-1:-1:-1;;;;;14190:12:0;;14150:7;14190:12;;;:6;:12;;;;;:19;;14240:23;;;;;14150:7;14296:27;14240:23;14296:15;:27;:::i;:::-;14274:49;;14396:15;14449:14;14433:11;14427:3;;14415:9;:15;;;;:::i;:::-;:29;;;;:::i;:::-;14414:50;;;;:::i;:::-;14506:10;14499:18;;;;:6;:18;;;;;:30;;;14396:68;;-1:-1:-1;14490:39:0;;14396:68;14490:39;:::i;:::-;;14089:473;-1:-1:-1;;;;;;14089:473:0:o;10696:130::-;10288:6;;-1:-1:-1;;;;;10288:6:0;3874:10;10288:22;10280:67;;;;-1:-1:-1;;;10280:67:0;;;;;;;:::i;:::-;10791:1:::1;10775:6:::0;;10754:40:::1;::::0;-1:-1:-1;;;;;10775:6:0;;::::1;::::0;10754:40:::1;::::0;10791:1;;10754:40:::1;10818:1;10801:19:::0;;-1:-1:-1;;;;;;10801:19:0::1;::::0;;10696:130::o;12423:673::-;12491:1;12482:6;:10;12474:52;;;;-1:-1:-1;;;12474:52:0;;3560:2:1;12474:52:0;;;3542:21:1;3599:2;3579:18;;;3572:30;3638:31;3618:18;;;3611:59;3687:18;;12474:52:0;3358:353:1;12474:52:0;12545:12;;:49;;-1:-1:-1;;;12545:49:0;;12568:10;12545:49;;;5423:34:1;12588:4:0;5473:18:1;;;5466:43;12598:6:0;;-1:-1:-1;;;;;12545:12:0;;:22;;5358:18:1;;12545:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:59;;12537:97;;;;-1:-1:-1;;;12537:97:0;;5911:2:1;12537:97:0;;;5893:21:1;5950:2;5930:18;;;5923:30;5989:27;5969:18;;;5962:55;6034:18;;12537:97:0;5709:349:1;12537:97:0;12697:12;;:60;;-1:-1:-1;;;12697:60:0;;12723:10;12697:60;;;6303:34:1;12743:4:0;6353:18:1;;;6346:43;6405:18;;;6398:34;;;-1:-1:-1;;;;;12697:12:0;;;;:25;;6238:18:1;;12697:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;12778:10:0;12771:18;;;;:6;:18;;;;;:25;:28;;12768:56;;12812:10;;:12;;12823:1;12812:12;:::i;:::-;12801:10;:23;12768:56;12889:10;12882:18;;;;:6;:18;;;;;:35;;12911:6;;12882:18;:35;;12911:6;;12882:35;:::i;:::-;;;;-1:-1:-1;;12935:10:0;12928:18;;;;:6;:18;;;;;12960:15;12928:29;;;;:47;13018:28;;:16;:28::i;:::-;12993:10;12986:18;;;;:6;:18;;;;;:30;;:60;;:30;;:18;:60;;;;;:::i;:::-;;;;-1:-1:-1;;13062:26:0;;1297:25:1;;;13069:10:0;;13062:26;;1285:2:1;1270:18;13062:26:0;1151:177:1;14742:189:0;10288:6;;-1:-1:-1;;;;;10288:6:0;3874:10;10288:22;10280:67;;;;-1:-1:-1;;;10280:67:0;;;;;;;:::i;:::-;14836:12:::1;:36:::0;;-1:-1:-1;;;;;14836:36:0;;::::1;-1:-1:-1::0;;;;;;14836:36:0;;::::1;;::::0;;;14883:11:::1;:34:::0;;;;;::::1;::::0;::::1;;::::0;;14742:189::o;10971:103::-;10288:6;;-1:-1:-1;;;;;10288:6:0;3874:10;10288:22;10280:67;;;;-1:-1:-1;;;10280:67:0;;;;;;;:::i;:::-;11040:28:::1;11059:8;11040:18;:28::i;:::-;10971:103:::0;:::o;11172:215::-;-1:-1:-1;;;;;11242:22:0;;11234:73;;;;-1:-1:-1;;;11234:73:0;;6645:2:1;11234:73:0;;;6627:21:1;6684:2;6664:18;;;6657:30;6723:34;6703:18;;;6696:62;-1:-1:-1;;;6774:18:1;;;6767:36;6820:19;;11234:73:0;6443:402:1;11234:73:0;11340:6;;;11319:38;;-1:-1:-1;;;;;11319:38:0;;;;11340:6;;;11319:38;;;11364:6;:17;;-1:-1:-1;;;;;;11364:17:0;-1:-1:-1;;;;;11364:17:0;;;;;;;;;;11172:215::o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;111:70;14:173;;;:::o;192:254::-;260:6;268;321:2;309:9;300:7;296:23;292:32;289:52;;;337:1;334;327:12;289:52;360:29;379:9;360:29;:::i;:::-;350:39;436:2;421:18;;;;408:32;;-1:-1:-1;;;192:254:1:o;451:186::-;510:6;563:2;551:9;542:7;538:23;534:32;531:52;;;579:1;576;569:12;531:52;602:29;621:9;602:29;:::i;:::-;592:39;451:186;-1:-1:-1;;;451:186:1:o;966:180::-;1025:6;1078:2;1066:9;1057:7;1053:23;1049:32;1046:52;;;1094:1;1091;1084:12;1046:52;-1:-1:-1;1117:23:1;;966:180;-1:-1:-1;966:180:1:o;1763:260::-;1831:6;1839;1892:2;1880:9;1871:7;1867:23;1863:32;1860:52;;;1908:1;1905;1898:12;1860:52;1931:29;1950:9;1931:29;:::i;:::-;1921:39;;1979:38;2013:2;2002:9;1998:18;1979:38;:::i;:::-;1969:48;;1763:260;;;;;:::o;2028:356::-;2230:2;2212:21;;;2249:18;;;2242:30;2308:34;2303:2;2288:18;;2281:62;2375:2;2360:18;;2028:356::o;3076:277::-;3143:6;3196:2;3184:9;3175:7;3171:23;3167:32;3164:52;;;3212:1;3209;3202:12;3164:52;3244:9;3238:16;3297:5;3290:13;3283:21;3276:5;3273:32;3263:60;;3319:1;3316;3309:12;4072:127;4133:10;4128:3;4124:20;4121:1;4114:31;4164:4;4161:1;4154:15;4188:4;4185:1;4178:15;4204:128;4271:9;;;4292:11;;;4289:37;;;4306:18;;:::i;:::-;4204:128;;;;:::o;4686:168::-;4759:9;;;4790;;4807:15;;;4801:22;;4787:37;4777:71;;4828:18;;:::i;4859:217::-;4899:1;4925;4915:132;;4969:10;4964:3;4960:20;4957:1;4950:31;5004:4;5001:1;4994:15;5032:4;5029:1;5022:15;4915:132;-1:-1:-1;5061:9:1;;4859:217::o;5081:125::-;5146:9;;;5167:10;;;5164:36;;;5180:18;;:::i;5520:184::-;5590:6;5643:2;5631:9;5622:7;5618:23;5614:32;5611:52;;;5659:1;5656;5649:12;5611:52;-1:-1:-1;5682:16:1;;5520:184;-1:-1:-1;5520:184:1:o
Swarm Source
ipfs://a590016bf73d647732c9cf94ed36b9474ed63e95f6434864f7c06cd2c09f13f8
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 35 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.