Source Code
Latest 25 from a total of 52 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Withdraw ETH | 18559611 | 849 days ago | IN | 0 ETH | 0.00098912 | ||||
| Withdraw ETH | 18559599 | 849 days ago | IN | 0 ETH | 0.00099632 | ||||
| Claim | 18500925 | 858 days ago | IN | 0 ETH | 0.00080305 | ||||
| Claim | 18307686 | 885 days ago | IN | 0 ETH | 0.00031531 | ||||
| Claim | 18111327 | 912 days ago | IN | 0 ETH | 0.00032503 | ||||
| Stake | 17851174 | 949 days ago | IN | 0 ETH | 0.00191789 | ||||
| Claim | 17844016 | 950 days ago | IN | 0 ETH | 0.00099929 | ||||
| Claim | 17792377 | 957 days ago | IN | 0 ETH | 0.00181066 | ||||
| Claim | 17708990 | 969 days ago | IN | 0 ETH | 0.00052658 | ||||
| Stake | 17605827 | 983 days ago | IN | 0 ETH | 0.0018081 | ||||
| Claim | 17605785 | 983 days ago | IN | 0 ETH | 0.00048968 | ||||
| Claim | 17599718 | 984 days ago | IN | 0 ETH | 0.00207484 | ||||
| Claim | 17593369 | 985 days ago | IN | 0 ETH | 0.00136609 | ||||
| Modify Rewards | 17566096 | 989 days ago | IN | 0 ETH | 0.00253059 | ||||
| Modify Rewards | 17566081 | 989 days ago | IN | 0 ETH | 0.00180899 | ||||
| Stake | 17565923 | 989 days ago | IN | 0 ETH | 0.00208317 | ||||
| Claim | 17521443 | 995 days ago | IN | 0 ETH | 0.00087723 | ||||
| Withdraw | 17508840 | 997 days ago | IN | 0 ETH | 0.00033506 | ||||
| Withdraw | 17506805 | 997 days ago | IN | 0 ETH | 0.00031249 | ||||
| Claim | 17506622 | 997 days ago | IN | 0 ETH | 0.00066889 | ||||
| Emergency Withdr... | 17500795 | 998 days ago | IN | 0 ETH | 0.0046443 | ||||
| Claim | 17500794 | 998 days ago | IN | 0 ETH | 0.00144786 | ||||
| Stake | 17487502 | 1000 days ago | IN | 0 ETH | 0.00167071 | ||||
| Stake | 17487498 | 1000 days ago | IN | 0 ETH | 0.00173618 | ||||
| Stake | 17437703 | 1007 days ago | IN | 0 ETH | 0.00301259 |
Latest 14 internal transactions
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 18559611 | 849 days ago | 0.59419194 ETH | ||||
| Transfer | 18559599 | 849 days ago | 0.00059478 ETH | ||||
| Transfer | 18500925 | 858 days ago | 0.05072523 ETH | ||||
| Transfer | 18307686 | 885 days ago | 0.05154423 ETH | ||||
| Transfer | 18111327 | 912 days ago | 0.07204811 ETH | ||||
| Transfer | 17844016 | 950 days ago | 0.07088865 ETH | ||||
| Transfer | 17792377 | 957 days ago | 0.00000339 ETH | ||||
| Transfer | 17708990 | 969 days ago | 0.05419207 ETH | ||||
| Transfer | 17605785 | 983 days ago | 0.0297705 ETH | ||||
| Transfer | 17599718 | 984 days ago | 0.01365082 ETH | ||||
| Transfer | 17593369 | 985 days ago | 0.05864972 ETH | ||||
| Transfer | 17521443 | 995 days ago | 0 ETH | ||||
| Transfer | 17506622 | 997 days ago | 0.00219268 ETH | ||||
| Transfer | 17500794 | 998 days ago | 0.00154782 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Pool1
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2023-05-29
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
return sub(a, b, "SafeMath: subtraction overflow");
}
function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b <= a, errorMessage);
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
return div(a, b, "SafeMath: division by zero");
}
function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
require(b > 0, errorMessage);
uint256 c = a / b;
return c;
}
}
interface IERC20 {
function totalSupply() external view returns (uint256);
function decimals() external view returns (uint8);
function symbol() external view returns (string memory);
function name() external view returns (string memory);
function getOwner() external view returns (address);
function balanceOf(address account) external view returns (uint256);
function transfer(address recipient, uint256 amount) external returns (bool);
function allowance(address _owner, address spender) external view returns (uint256);
function approve(address spender, uint256 amount) external returns (bool);
function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
}
contract Pool1 {
using SafeMath for uint256;
address internal owner;
modifier onlyOwner() {
require(isOwner(msg.sender), "Call not allowed."); _;
}
function isOwner(address account) public view returns (bool) {
return account == owner;
}
function getRewardsEarned(address staker) public view returns (uint256) {
return stakersRewards[staker] + (balance[staker] * rewardsPerBUBLSPerBlock * (block.number - lastUpdate[staker])) / 1e18;
}
function getLastUpdate(address staker) public view returns (uint256) {
return lastUpdate[staker];
}
function getStakerBalance(address staker) public view returns (uint256) {
return balance[staker];
}
function receiveEther() external payable {
ethBalances[msg.sender] += msg.value;
}
address public penaltyWallet = (0x81207769EC7a4F20A242912d6590ec3d9C44C1e6);
function emergencyWithdraw() public {
require(balance[msg.sender] > 0, "You do not have any staked tokens to withdraw!");
uint256 _lastUpdate = lastUpdate[msg.sender];
lastUpdate[msg.sender] = block.number;
stakersRewards[msg.sender] += (balance[msg.sender] * rewardsPerBUBLSPerBlock * (block.number - _lastUpdate)) / 1e18;
uint256 penaltyAmount = balance[msg.sender] / 2;
uint256 withdrawalAmount = balance[msg.sender] - penaltyAmount;
balance[msg.sender] = 0;
totalLocked -= withdrawalAmount;
if (balance[msg.sender] == 0) {
removeStaker(msg.sender);
}
// Transfer the withdrawalAmount to the user
BUBLS.transfer(msg.sender, withdrawalAmount);
// Transfer the penaltyAmount to the penaltyWallet
BUBLS.transfer(penaltyWallet, penaltyAmount);
}
function withdrawETH(uint256 amount) external onlyOwner{
payable(msg.sender).transfer(amount);
}
IERC20 BUBLS = IERC20(0x67e989f78a32A1547443f1706eC050EEc725547e); //Main Net
uint256 public maximumLocked = 9999999999999999999999 * 1e18;
uint256 public totalLocked;
uint256 public rewardsPerBUBLSPerBlock;
uint256 public stackingStartTime;
uint256 public launchTime;
mapping (address => uint256) stakersRewards;
mapping (address => uint256) lastUpdate;
mapping (address => uint256) balance;
mapping (address => uint256) public ethBalances;
address[] stakers;
mapping (address => uint256) stakerIndexes;
constructor() {
owner = msg.sender;
launchTime = block.timestamp;
}
function stake(uint256 amount) public {
require(amount > 0 && totalLocked + amount <= maximumLocked, "The maximum amount of BUBLSs has been staked in this pool.");
BUBLS.transferFrom(msg.sender, address(this), amount);
totalLocked += amount;
uint256 _lastUpdate = lastUpdate[msg.sender];
lastUpdate[msg.sender] = block.number;
if (balance[msg.sender] > 0) {
stakersRewards[msg.sender] += (balance[msg.sender] * rewardsPerBUBLSPerBlock * (block.number - _lastUpdate)) / 1e18;
} else {
stackingStartTime = block.timestamp;
addStaker(msg.sender);
}
balance[msg.sender] += amount;
if (block.timestamp > launchTime + 24 hours) {
rewardsPerBUBLSPerBlock = rewardsPerBUBLSPerBlock.div(2);
}
}
function withdraw(uint256 amount) public {
require(block.timestamp >= stackingStartTime + 15 days, "You can only withdraw after 15 Days of staking.");
require(amount > 0 && amount <= balance[msg.sender], "You cannot withdraw more than what you have!");
uint256 _lastUpdate = lastUpdate[msg.sender];
lastUpdate[msg.sender] = block.number;
stakersRewards[msg.sender] += (balance[msg.sender] * rewardsPerBUBLSPerBlock * (block.number - _lastUpdate)) / 1e18;
balance[msg.sender] -= amount;
if (balance[msg.sender] == 0) {
removeStaker(msg.sender);
}
BUBLS.transfer(msg.sender, amount);
totalLocked -= amount;
}
function claim() public {
uint256 _lastUpdate = lastUpdate[msg.sender];
lastUpdate[msg.sender] = block.number;
stakersRewards[msg.sender] += (balance[msg.sender] * rewardsPerBUBLSPerBlock * (block.number - _lastUpdate)) / 1e18;
require(stakersRewards[msg.sender] > 0, "No rewards to claim!");
uint256 rewards = stakersRewards[msg.sender];
stakersRewards[msg.sender] = 0;
require(address(this).balance >= rewards, "Not enough Ether to pay out rewards!");
payable(msg.sender).transfer(rewards);
}
function modifyRewards(uint256 amount) public onlyOwner {
for (uint256 i = 0; i < stakers.length; i++) {
uint256 _lastUpdate = lastUpdate[stakers[i]];
lastUpdate[stakers[i]] = block.number;
stakersRewards[stakers[i]] += (balance[stakers[i]] * rewardsPerBUBLSPerBlock * (block.number - _lastUpdate)) / 1e18;
}
rewardsPerBUBLSPerBlock = amount;
}
function addStaker(address staker) internal {
stakerIndexes[staker] = stakers.length;
stakers.push(staker);
}
function removeStaker(address staker) internal {
stakers[stakerIndexes[staker]] = stakers[stakers.length-1];
stakerIndexes[stakers[stakers.length-1]] = stakerIndexes[staker];
stakers.pop();
}
}
contract Pool2 {
using SafeMath for uint256;
address internal owner;
modifier onlyOwner() {
require(isOwner(msg.sender), "Call not allowed."); _;
}
function isOwner(address account) public view returns (bool) {
return account == owner;
}
function getRewardsEarned(address staker) public view returns (uint256) {
return stakersRewards[staker] + (balance[staker] * rewardsPerBUBLSPerBlock * (block.number - lastUpdate[staker])) / 1e18;
}
function getLastUpdate(address staker) public view returns (uint256) {
return lastUpdate[staker];
}
function getStakerBalance(address staker) public view returns (uint256) {
return balance[staker];
}
function receiveEther() external payable {
ethBalances[msg.sender] += msg.value;
}
address public penaltyWallet = (0x81207769EC7a4F20A242912d6590ec3d9C44C1e6);
function emergencyWithdraw() public {
require(balance[msg.sender] > 0, "You do not have any staked tokens to withdraw!");
uint256 _lastUpdate = lastUpdate[msg.sender];
lastUpdate[msg.sender] = block.number;
stakersRewards[msg.sender] += (balance[msg.sender] * rewardsPerBUBLSPerBlock * (block.number - _lastUpdate)) / 1e18;
uint256 penaltyAmount = balance[msg.sender] / 2;
uint256 withdrawalAmount = balance[msg.sender] - penaltyAmount;
balance[msg.sender] = 0;
totalLocked -= withdrawalAmount;
if (balance[msg.sender] == 0) {
removeStaker(msg.sender);
}
// Transfer the withdrawalAmount to the user
BUBLS.transfer(msg.sender, withdrawalAmount);
// Transfer the penaltyAmount to the penaltyWallet
BUBLS.transfer(penaltyWallet, penaltyAmount);
}
function withdrawETH(uint256 amount) external onlyOwner{
payable(msg.sender).transfer(amount);
}
IERC20 BUBLS = IERC20(0x67e989f78a32A1547443f1706eC050EEc725547e); //Main Net
uint256 public maximumLocked = 9999999999999999999999 * 1e18;
uint256 public totalLocked;
uint256 public rewardsPerBUBLSPerBlock;
uint256 public stackingStartTime;
uint256 public launchTime;
mapping (address => uint256) stakersRewards;
mapping (address => uint256) lastUpdate;
mapping (address => uint256) balance;
mapping (address => uint256) public ethBalances;
address[] stakers;
mapping (address => uint256) stakerIndexes;
constructor() {
owner = msg.sender;
launchTime = block.timestamp;
}
function stake(uint256 amount) public {
require(amount > 0 && totalLocked + amount <= maximumLocked, "The maximum amount of BUBLSs has been staked in this pool.");
BUBLS.transferFrom(msg.sender, address(this), amount);
totalLocked += amount;
uint256 _lastUpdate = lastUpdate[msg.sender];
lastUpdate[msg.sender] = block.number;
if (balance[msg.sender] > 0) {
stakersRewards[msg.sender] += (balance[msg.sender] * rewardsPerBUBLSPerBlock * (block.number - _lastUpdate)) / 1e18;
} else {
stackingStartTime = block.timestamp;
addStaker(msg.sender);
}
balance[msg.sender] += amount;
if (block.timestamp > launchTime + 24 hours) {
rewardsPerBUBLSPerBlock = rewardsPerBUBLSPerBlock.div(2);
}
}
function withdraw(uint256 amount) public {
require(block.timestamp >= stackingStartTime + 30 days, "You can only withdraw after 30 days of staking.");
require(amount > 0 && amount <= balance[msg.sender], "You cannot withdraw more than what you have!");
uint256 _lastUpdate = lastUpdate[msg.sender];
lastUpdate[msg.sender] = block.number;
stakersRewards[msg.sender] += (balance[msg.sender] * rewardsPerBUBLSPerBlock * (block.number - _lastUpdate)) / 1e18;
balance[msg.sender] -= amount;
if (balance[msg.sender] == 0) {
removeStaker(msg.sender);
}
BUBLS.transfer(msg.sender, amount);
totalLocked -= amount;
}
function claim() public {
uint256 _lastUpdate = lastUpdate[msg.sender];
lastUpdate[msg.sender] = block.number;
stakersRewards[msg.sender] += (balance[msg.sender] * rewardsPerBUBLSPerBlock * (block.number - _lastUpdate)) / 1e18;
require(stakersRewards[msg.sender] > 0, "No rewards to claim!");
uint256 rewards = stakersRewards[msg.sender];
stakersRewards[msg.sender] = 0;
require(address(this).balance >= rewards, "Not enough Ether to pay out rewards!");
payable(msg.sender).transfer(rewards);
}
function modifyRewards(uint256 amount) public onlyOwner {
for (uint256 i = 0; i < stakers.length; i++) {
uint256 _lastUpdate = lastUpdate[stakers[i]];
lastUpdate[stakers[i]] = block.number;
stakersRewards[stakers[i]] += (balance[stakers[i]] * rewardsPerBUBLSPerBlock * (block.number - _lastUpdate)) / 1e18;
}
rewardsPerBUBLSPerBlock = amount;
}
function addStaker(address staker) internal {
stakerIndexes[staker] = stakers.length;
stakers.push(staker);
}
function removeStaker(address staker) internal {
stakers[stakerIndexes[staker]] = stakers[stakers.length-1];
stakerIndexes[stakers[stakers.length-1]] = stakerIndexes[staker];
stakers.pop();
}
}
contract Pool3 {
using SafeMath for uint256;
address internal owner;
modifier onlyOwner() {
require(isOwner(msg.sender), "Call not allowed."); _;
}
function isOwner(address account) public view returns (bool) {
return account == owner;
}
function getRewardsEarned(address staker) public view returns (uint256) {
return stakersRewards[staker] + (balance[staker] * rewardsPerBUBLSPerBlock * (block.number - lastUpdate[staker])) / 1e18;
}
function getLastUpdate(address staker) public view returns (uint256) {
return lastUpdate[staker];
}
function getStakerBalance(address staker) public view returns (uint256) {
return balance[staker];
}
function receiveEther() external payable {
ethBalances[msg.sender] += msg.value;
}
address public penaltyWallet = (0x81207769EC7a4F20A242912d6590ec3d9C44C1e6);
function emergencyWithdraw() public {
require(balance[msg.sender] > 0, "You do not have any staked tokens to withdraw!");
uint256 _lastUpdate = lastUpdate[msg.sender];
lastUpdate[msg.sender] = block.number;
stakersRewards[msg.sender] += (balance[msg.sender] * rewardsPerBUBLSPerBlock * (block.number - _lastUpdate)) / 1e18;
uint256 penaltyAmount = balance[msg.sender] / 2;
uint256 withdrawalAmount = balance[msg.sender] - penaltyAmount;
balance[msg.sender] = 0;
totalLocked -= withdrawalAmount;
if (balance[msg.sender] == 0) {
removeStaker(msg.sender);
}
// Transfer the withdrawalAmount to the user
BUBLS.transfer(msg.sender, withdrawalAmount);
// Transfer the penaltyAmount to the penaltyWallet
BUBLS.transfer(penaltyWallet, penaltyAmount);
}
function withdrawETH(uint256 amount) external onlyOwner{
payable(msg.sender).transfer(amount);
}
IERC20 BUBLS = IERC20(0x67e989f78a32A1547443f1706eC050EEc725547e); //Main Net
uint256 public maximumLocked = 9999999999999999999999 * 1e18;
uint256 public totalLocked;
uint256 public rewardsPerBUBLSPerBlock;
uint256 public stackingStartTime;
uint256 public launchTime;
mapping (address => uint256) stakersRewards;
mapping (address => uint256) lastUpdate;
mapping (address => uint256) balance;
mapping (address => uint256) public ethBalances;
address[] stakers;
mapping (address => uint256) stakerIndexes;
constructor() {
owner = msg.sender;
launchTime = block.timestamp;
}
function stake(uint256 amount) public {
require(amount > 0 && totalLocked + amount <= maximumLocked, "The maximum amount of BUBLSs has been staked in this pool.");
BUBLS.transferFrom(msg.sender, address(this), amount);
totalLocked += amount;
uint256 _lastUpdate = lastUpdate[msg.sender];
lastUpdate[msg.sender] = block.number;
if (balance[msg.sender] > 0) {
stakersRewards[msg.sender] += (balance[msg.sender] * rewardsPerBUBLSPerBlock * (block.number - _lastUpdate)) / 1e18;
} else {
stackingStartTime = block.timestamp;
addStaker(msg.sender);
}
balance[msg.sender] += amount;
if (block.timestamp > launchTime + 24 hours) {
rewardsPerBUBLSPerBlock = rewardsPerBUBLSPerBlock.div(2);
}
}
function withdraw(uint256 amount) public {
require(block.timestamp >= stackingStartTime + 45 days, "You can only withdraw after 45 Days of staking.");
require(amount > 0 && amount <= balance[msg.sender], "You cannot withdraw more than what you have!");
uint256 _lastUpdate = lastUpdate[msg.sender];
lastUpdate[msg.sender] = block.number;
stakersRewards[msg.sender] += (balance[msg.sender] * rewardsPerBUBLSPerBlock * (block.number - _lastUpdate)) / 1e18;
balance[msg.sender] -= amount;
if (balance[msg.sender] == 0) {
removeStaker(msg.sender);
}
BUBLS.transfer(msg.sender, amount);
totalLocked -= amount;
}
function claim() public {
uint256 _lastUpdate = lastUpdate[msg.sender];
lastUpdate[msg.sender] = block.number;
stakersRewards[msg.sender] += (balance[msg.sender] * rewardsPerBUBLSPerBlock * (block.number - _lastUpdate)) / 1e18;
require(stakersRewards[msg.sender] > 0, "No rewards to claim!");
uint256 rewards = stakersRewards[msg.sender];
stakersRewards[msg.sender] = 0;
require(address(this).balance >= rewards, "Not enough Ether to pay out rewards!");
payable(msg.sender).transfer(rewards);
}
function modifyRewards(uint256 amount) public onlyOwner {
for (uint256 i = 0; i < stakers.length; i++) {
uint256 _lastUpdate = lastUpdate[stakers[i]];
lastUpdate[stakers[i]] = block.number;
stakersRewards[stakers[i]] += (balance[stakers[i]] * rewardsPerBUBLSPerBlock * (block.number - _lastUpdate)) / 1e18;
}
rewardsPerBUBLSPerBlock = amount;
}
function addStaker(address staker) internal {
stakerIndexes[staker] = stakers.length;
stakers.push(staker);
}
function removeStaker(address staker) internal {
stakers[stakerIndexes[staker]] = stakers[stakers.length-1];
stakerIndexes[stakers[stakers.length-1]] = stakerIndexes[staker];
stakers.pop();
}
}
contract Pool4 {
using SafeMath for uint256;
address internal owner;
modifier onlyOwner() {
require(isOwner(msg.sender), "Call not allowed."); _;
}
function isOwner(address account) public view returns (bool) {
return account == owner;
}
function getRewardsEarned(address staker) public view returns (uint256) {
return stakersRewards[staker] + (balance[staker] * rewardsPerBUBLSPerBlock * (block.number - lastUpdate[staker])) / 1e18;
}
function getLastUpdate(address staker) public view returns (uint256) {
return lastUpdate[staker];
}
function getStakerBalance(address staker) public view returns (uint256) {
return balance[staker];
}
function receiveEther() external payable {
ethBalances[msg.sender] += msg.value;
}
address public penaltyWallet = (0x81207769EC7a4F20A242912d6590ec3d9C44C1e6);
function emergencyWithdraw() public {
require(balance[msg.sender] > 0, "You do not have any staked tokens to withdraw!");
uint256 _lastUpdate = lastUpdate[msg.sender];
lastUpdate[msg.sender] = block.number;
stakersRewards[msg.sender] += (balance[msg.sender] * rewardsPerBUBLSPerBlock * (block.number - _lastUpdate)) / 1e18;
uint256 penaltyAmount = balance[msg.sender] / 2;
uint256 withdrawalAmount = balance[msg.sender] - penaltyAmount;
balance[msg.sender] = 0;
totalLocked -= withdrawalAmount;
if (balance[msg.sender] == 0) {
removeStaker(msg.sender);
}
// Transfer the withdrawalAmount to the user
BUBLS.transfer(msg.sender, withdrawalAmount);
// Transfer the penaltyAmount to the penaltyWallet
BUBLS.transfer(penaltyWallet, penaltyAmount);
}
function withdrawETH(uint256 amount) external onlyOwner{
payable(msg.sender).transfer(amount);
}
IERC20 BUBLS = IERC20(0x67e989f78a32A1547443f1706eC050EEc725547e); //Main Net
uint256 public maximumLocked = 9999999999999999999999 * 1e18;
uint256 public totalLocked;
uint256 public rewardsPerBUBLSPerBlock;
uint256 public stackingStartTime;
uint256 public launchTime;
mapping (address => uint256) stakersRewards;
mapping (address => uint256) lastUpdate;
mapping (address => uint256) balance;
mapping (address => uint256) public ethBalances;
address[] stakers;
mapping (address => uint256) stakerIndexes;
constructor() {
owner = msg.sender;
launchTime = block.timestamp;
}
function stake(uint256 amount) public {
require(amount > 0 && totalLocked + amount <= maximumLocked, "The maximum amount of BUBLSs has been staked in this pool.");
BUBLS.transferFrom(msg.sender, address(this), amount);
totalLocked += amount;
uint256 _lastUpdate = lastUpdate[msg.sender];
lastUpdate[msg.sender] = block.number;
if (balance[msg.sender] > 0) {
stakersRewards[msg.sender] += (balance[msg.sender] * rewardsPerBUBLSPerBlock * (block.number - _lastUpdate)) / 1e18;
} else {
stackingStartTime = block.timestamp;
addStaker(msg.sender);
}
balance[msg.sender] += amount;
if (block.timestamp > launchTime + 24 hours) {
rewardsPerBUBLSPerBlock = rewardsPerBUBLSPerBlock.div(2);
}
}
function withdraw(uint256 amount) public {
require(block.timestamp >= stackingStartTime + 60 days, "You can only withdraw after 60 Days of staking.");
require(amount > 0 && amount <= balance[msg.sender], "You cannot withdraw more than what you have!");
uint256 _lastUpdate = lastUpdate[msg.sender];
lastUpdate[msg.sender] = block.number;
stakersRewards[msg.sender] += (balance[msg.sender] * rewardsPerBUBLSPerBlock * (block.number - _lastUpdate)) / 1e18;
balance[msg.sender] -= amount;
if (balance[msg.sender] == 0) {
removeStaker(msg.sender);
}
BUBLS.transfer(msg.sender, amount);
totalLocked -= amount;
}
function claim() public {
uint256 _lastUpdate = lastUpdate[msg.sender];
lastUpdate[msg.sender] = block.number;
stakersRewards[msg.sender] += (balance[msg.sender] * rewardsPerBUBLSPerBlock * (block.number - _lastUpdate)) / 1e18;
require(stakersRewards[msg.sender] > 0, "No rewards to claim!");
uint256 rewards = stakersRewards[msg.sender];
stakersRewards[msg.sender] = 0;
require(address(this).balance >= rewards, "Not enough Ether to pay out rewards!");
payable(msg.sender).transfer(rewards);
}
function modifyRewards(uint256 amount) public onlyOwner {
for (uint256 i = 0; i < stakers.length; i++) {
uint256 _lastUpdate = lastUpdate[stakers[i]];
lastUpdate[stakers[i]] = block.number;
stakersRewards[stakers[i]] += (balance[stakers[i]] * rewardsPerBUBLSPerBlock * (block.number - _lastUpdate)) / 1e18;
}
rewardsPerBUBLSPerBlock = amount;
}
function addStaker(address staker) internal {
stakerIndexes[staker] = stakers.length;
stakers.push(staker);
}
function removeStaker(address staker) internal {
stakers[stakerIndexes[staker]] = stakers[stakers.length-1];
stakerIndexes[stakers[stakers.length-1]] = stakerIndexes[staker];
stakers.pop();
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ethBalances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"getLastUpdate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"getRewardsEarned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"staker","type":"address"}],"name":"getStakerBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maximumLocked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"modifyRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"penaltyWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"receiveEther","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"rewardsPerBUBLSPerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stackingStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalLocked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawETH","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
6080604052600180546001600160a01b03199081167381207769ec7a4f20a242912d6590ec3d9c44c1e617909155600280549091167367e989f78a32a1547443f1706ec050eec725547e179055701d6329f1c35ca4bfabac14aa4c589c000060035534801561006d57600080fd5b50600080546001600160a01b0319163317905542600755611293806100936000396000f3fe6080604052600436106101095760003560e01c8063722e7ec811610095578063a3912ec811610064578063a3912ec8146102f6578063a694fc3a146102fe578063db2e21bc1461031e578063f14210a614610333578063fe7b25601461035357600080fd5b8063722e7ec814610272578063790ca413146102885780637a34a19e1461029e5780638b752677146102be57600080fd5b80632fa4f085116100dc5780632fa4f085146101ce5780633cfba0e3146101e45780634e71d92d1461021157806356891412146102265780635a7e19891461023c57600080fd5b80631560aace1461010e5780632640d9db146101375780632e1a7d4d1461016d5780632f54bf6e1461018f575b600080fd5b34801561011a57600080fd5b5061012460065481565b6040519081526020015b60405180910390f35b34801561014357600080fd5b506101246101523660046110d7565b6001600160a01b03166000908152600a602052604090205490565b34801561017957600080fd5b5061018d610188366004611100565b610373565b005b34801561019b57600080fd5b506101be6101aa3660046110d7565b6000546001600160a01b0391821691161490565b604051901515815260200161012e565b3480156101da57600080fd5b5061012460035481565b3480156101f057600080fd5b506101246101ff3660046110d7565b600b6020526000908152604090205481565b34801561021d57600080fd5b5061018d6105d1565b34801561023257600080fd5b5061012460045481565b34801561024857600080fd5b506101246102573660046110d7565b6001600160a01b031660009081526009602052604090205490565b34801561027e57600080fd5b5061012460055481565b34801561029457600080fd5b5061012460075481565b3480156102aa57600080fd5b5061018d6102b9366004611100565b610747565b3480156102ca57600080fd5b506001546102de906001600160a01b031681565b6040516001600160a01b03909116815260200161012e565b61018d610914565b34801561030a57600080fd5b5061018d610319366004611100565b61093a565b34801561032a57600080fd5b5061018d610baa565b34801561033f57600080fd5b5061018d61034e366004611100565b610e37565b34801561035f57600080fd5b5061012461036e3660046110d7565b610eb2565b600654610383906213c68061112f565b4210156103ef5760405162461bcd60e51b815260206004820152602f60248201527f596f752063616e206f6e6c79207769746864726177206166746572203135204460448201526e30bcb99037b31039ba30b5b4b7339760891b60648201526084015b60405180910390fd5b60008111801561040e5750336000908152600a60205260409020548111155b61046f5760405162461bcd60e51b815260206004820152602c60248201527f596f752063616e6e6f74207769746864726177206d6f7265207468616e20776860448201526b617420796f7520686176652160a01b60648201526084016103e6565b3360009081526009602052604090208054439182905590670de0b6b3a76400009061049b908390611147565b600554336000908152600a60205260409020546104b8919061115e565b6104c2919061115e565b6104cc919061117d565b33600090815260086020526040812080549091906104eb90849061112f565b9091555050336000908152600a60205260408120805484929061050f908490611147565b9091555050336000908152600a60205260409020546105315761053133610f42565b60025460405163a9059cbb60e01b8152336004820152602481018490526001600160a01b039091169063a9059cbb90604401602060405180830381600087803b15801561057d57600080fd5b505af1158015610591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b5919061119f565b5081600460008282546105c89190611147565b90915550505050565b3360009081526009602052604090208054439182905590670de0b6b3a7640000906105fd908390611147565b600554336000908152600a602052604090205461061a919061115e565b610624919061115e565b61062e919061117d565b336000908152600860205260408120805490919061064d90849061112f565b9091555050336000908152600860205260409020546106a55760405162461bcd60e51b81526020600482015260146024820152734e6f207265776172647320746f20636c61696d2160601b60448201526064016103e6565b3360009081526008602052604081208054919055478111156107155760405162461bcd60e51b8152602060048201526024808201527f4e6f7420656e6f75676820457468657220746f20706179206f757420726577616044820152637264732160e01b60648201526084016103e6565b604051339082156108fc029083906000818181858888f19350505050158015610742573d6000803e3d6000fd5b505050565b6000546001600160a01b031633146107955760405162461bcd60e51b815260206004820152601160248201527021b0b636103737ba1030b63637bbb2b21760791b60448201526064016103e6565b60005b600c5481101561090e57600060096000600c84815481106107bb576107bb6111c1565b9060005260206000200160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000205490504360096000600c8581548110610814576108146111c1565b60009182526020808320909101546001600160a01b03168352820192909252604001902055670de0b6b3a764000061084c8243611147565b600554600a6000600c8781548110610866576108666111c1565b60009182526020808320909101546001600160a01b03168352820192909252604001902054610895919061115e565b61089f919061115e565b6108a9919061117d565b60086000600c85815481106108c0576108c06111c1565b60009182526020808320909101546001600160a01b03168352820192909252604001812080549091906108f490849061112f565b909155508291506109069050816111d7565b915050610798565b50600555565b336000908152600b60205260408120805434929061093390849061112f565b9091555050565b600081118015610959575060035481600454610956919061112f565b11155b6109cb5760405162461bcd60e51b815260206004820152603a60248201527f546865206d6178696d756d20616d6f756e74206f66204255424c53732068617360448201527f206265656e207374616b656420696e207468697320706f6f6c2e00000000000060648201526084016103e6565b6002546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd90606401602060405180830381600087803b158015610a1d57600080fd5b505af1158015610a31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a55919061119f565b508060046000828254610a68919061112f565b9091555050336000908152600960209081526040808320805443909155600a9092529091205415610b0157670de0b6b3a7640000610aa68243611147565b600554336000908152600a6020526040902054610ac3919061115e565b610acd919061115e565b610ad7919061117d565b3360009081526008602052604081208054909190610af690849061112f565b90915550610b599050565b42600655600c8054336000818152600d60205260408120839055600183018455929092527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b03191690911790555b336000908152600a602052604081208054849290610b7890849061112f565b9091555050600754610b8d906201518061112f565b421115610ba657600554610ba2906002611057565b6005555b5050565b336000908152600a6020526040902054610c1d5760405162461bcd60e51b815260206004820152602e60248201527f596f7520646f206e6f74206861766520616e79207374616b656420746f6b656e60448201526d7320746f2077697468647261772160901b60648201526084016103e6565b3360009081526009602052604090208054439182905590670de0b6b3a764000090610c49908390611147565b600554336000908152600a6020526040902054610c66919061115e565b610c70919061115e565b610c7a919061117d565b3360009081526008602052604081208054909190610c9990849061112f565b9091555050336000908152600a6020526040812054610cba9060029061117d565b336000908152600a602052604081205491925090610cd9908390611147565b336000908152600a60205260408120819055600480549293508392909190610d02908490611147565b9091555050336000908152600a6020526040902054610d2457610d2433610f42565b60025460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb90604401602060405180830381600087803b158015610d7057600080fd5b505af1158015610d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da8919061119f565b5060025460015460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810185905291169063a9059cbb90604401602060405180830381600087803b158015610df957600080fd5b505af1158015610e0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e31919061119f565b50505050565b6000546001600160a01b03163314610e855760405162461bcd60e51b815260206004820152601160248201527021b0b636103737ba1030b63637bbb2b21760791b60448201526064016103e6565b604051339082156108fc029083906000818181858888f19350505050158015610ba6573d6000803e3d6000fd5b6001600160a01b038116600090815260096020526040812054670de0b6b3a764000090610edf9043611147565b6005546001600160a01b0385166000908152600a6020526040902054610f05919061115e565b610f0f919061115e565b610f19919061117d565b6001600160a01b038316600090815260086020526040902054610f3c919061112f565b92915050565b600c8054610f5290600190611147565b81548110610f6257610f626111c1565b60009182526020808320909101546001600160a01b038481168452600d909252604090922054600c80549290931692918110610fa057610fa06111c1565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600d918290526040812054600c805491939291610fec90600190611147565b81548110610ffc57610ffc6111c1565b60009182526020808320909101546001600160a01b03168352820192909252604001902055600c805480611032576110326111f2565b600082815260209020810160001990810180546001600160a01b031916905501905550565b600061109983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506110a0565b9392505050565b600081836110c15760405162461bcd60e51b81526004016103e69190611208565b5060006110ce848661117d565b95945050505050565b6000602082840312156110e957600080fd5b81356001600160a01b038116811461109957600080fd5b60006020828403121561111257600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561114257611142611119565b500190565b60008282101561115957611159611119565b500390565b600081600019048311821515161561117857611178611119565b500290565b60008261119a57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156111b157600080fd5b8151801515811461109957600080fd5b634e487b7160e01b600052603260045260246000fd5b60006000198214156111eb576111eb611119565b5060010190565b634e487b7160e01b600052603160045260246000fd5b600060208083528351808285015260005b8181101561123557858101830151858201604001528201611219565b81811115611247576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220e81dfb93862a103d93a4b0a94b9e06e4f2816ce7017a7797c9846fd57c1e09f764736f6c63430008090033
Deployed Bytecode
0x6080604052600436106101095760003560e01c8063722e7ec811610095578063a3912ec811610064578063a3912ec8146102f6578063a694fc3a146102fe578063db2e21bc1461031e578063f14210a614610333578063fe7b25601461035357600080fd5b8063722e7ec814610272578063790ca413146102885780637a34a19e1461029e5780638b752677146102be57600080fd5b80632fa4f085116100dc5780632fa4f085146101ce5780633cfba0e3146101e45780634e71d92d1461021157806356891412146102265780635a7e19891461023c57600080fd5b80631560aace1461010e5780632640d9db146101375780632e1a7d4d1461016d5780632f54bf6e1461018f575b600080fd5b34801561011a57600080fd5b5061012460065481565b6040519081526020015b60405180910390f35b34801561014357600080fd5b506101246101523660046110d7565b6001600160a01b03166000908152600a602052604090205490565b34801561017957600080fd5b5061018d610188366004611100565b610373565b005b34801561019b57600080fd5b506101be6101aa3660046110d7565b6000546001600160a01b0391821691161490565b604051901515815260200161012e565b3480156101da57600080fd5b5061012460035481565b3480156101f057600080fd5b506101246101ff3660046110d7565b600b6020526000908152604090205481565b34801561021d57600080fd5b5061018d6105d1565b34801561023257600080fd5b5061012460045481565b34801561024857600080fd5b506101246102573660046110d7565b6001600160a01b031660009081526009602052604090205490565b34801561027e57600080fd5b5061012460055481565b34801561029457600080fd5b5061012460075481565b3480156102aa57600080fd5b5061018d6102b9366004611100565b610747565b3480156102ca57600080fd5b506001546102de906001600160a01b031681565b6040516001600160a01b03909116815260200161012e565b61018d610914565b34801561030a57600080fd5b5061018d610319366004611100565b61093a565b34801561032a57600080fd5b5061018d610baa565b34801561033f57600080fd5b5061018d61034e366004611100565b610e37565b34801561035f57600080fd5b5061012461036e3660046110d7565b610eb2565b600654610383906213c68061112f565b4210156103ef5760405162461bcd60e51b815260206004820152602f60248201527f596f752063616e206f6e6c79207769746864726177206166746572203135204460448201526e30bcb99037b31039ba30b5b4b7339760891b60648201526084015b60405180910390fd5b60008111801561040e5750336000908152600a60205260409020548111155b61046f5760405162461bcd60e51b815260206004820152602c60248201527f596f752063616e6e6f74207769746864726177206d6f7265207468616e20776860448201526b617420796f7520686176652160a01b60648201526084016103e6565b3360009081526009602052604090208054439182905590670de0b6b3a76400009061049b908390611147565b600554336000908152600a60205260409020546104b8919061115e565b6104c2919061115e565b6104cc919061117d565b33600090815260086020526040812080549091906104eb90849061112f565b9091555050336000908152600a60205260408120805484929061050f908490611147565b9091555050336000908152600a60205260409020546105315761053133610f42565b60025460405163a9059cbb60e01b8152336004820152602481018490526001600160a01b039091169063a9059cbb90604401602060405180830381600087803b15801561057d57600080fd5b505af1158015610591573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b5919061119f565b5081600460008282546105c89190611147565b90915550505050565b3360009081526009602052604090208054439182905590670de0b6b3a7640000906105fd908390611147565b600554336000908152600a602052604090205461061a919061115e565b610624919061115e565b61062e919061117d565b336000908152600860205260408120805490919061064d90849061112f565b9091555050336000908152600860205260409020546106a55760405162461bcd60e51b81526020600482015260146024820152734e6f207265776172647320746f20636c61696d2160601b60448201526064016103e6565b3360009081526008602052604081208054919055478111156107155760405162461bcd60e51b8152602060048201526024808201527f4e6f7420656e6f75676820457468657220746f20706179206f757420726577616044820152637264732160e01b60648201526084016103e6565b604051339082156108fc029083906000818181858888f19350505050158015610742573d6000803e3d6000fd5b505050565b6000546001600160a01b031633146107955760405162461bcd60e51b815260206004820152601160248201527021b0b636103737ba1030b63637bbb2b21760791b60448201526064016103e6565b60005b600c5481101561090e57600060096000600c84815481106107bb576107bb6111c1565b9060005260206000200160009054906101000a90046001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000205490504360096000600c8581548110610814576108146111c1565b60009182526020808320909101546001600160a01b03168352820192909252604001902055670de0b6b3a764000061084c8243611147565b600554600a6000600c8781548110610866576108666111c1565b60009182526020808320909101546001600160a01b03168352820192909252604001902054610895919061115e565b61089f919061115e565b6108a9919061117d565b60086000600c85815481106108c0576108c06111c1565b60009182526020808320909101546001600160a01b03168352820192909252604001812080549091906108f490849061112f565b909155508291506109069050816111d7565b915050610798565b50600555565b336000908152600b60205260408120805434929061093390849061112f565b9091555050565b600081118015610959575060035481600454610956919061112f565b11155b6109cb5760405162461bcd60e51b815260206004820152603a60248201527f546865206d6178696d756d20616d6f756e74206f66204255424c53732068617360448201527f206265656e207374616b656420696e207468697320706f6f6c2e00000000000060648201526084016103e6565b6002546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd90606401602060405180830381600087803b158015610a1d57600080fd5b505af1158015610a31573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a55919061119f565b508060046000828254610a68919061112f565b9091555050336000908152600960209081526040808320805443909155600a9092529091205415610b0157670de0b6b3a7640000610aa68243611147565b600554336000908152600a6020526040902054610ac3919061115e565b610acd919061115e565b610ad7919061117d565b3360009081526008602052604081208054909190610af690849061112f565b90915550610b599050565b42600655600c8054336000818152600d60205260408120839055600183018455929092527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b03191690911790555b336000908152600a602052604081208054849290610b7890849061112f565b9091555050600754610b8d906201518061112f565b421115610ba657600554610ba2906002611057565b6005555b5050565b336000908152600a6020526040902054610c1d5760405162461bcd60e51b815260206004820152602e60248201527f596f7520646f206e6f74206861766520616e79207374616b656420746f6b656e60448201526d7320746f2077697468647261772160901b60648201526084016103e6565b3360009081526009602052604090208054439182905590670de0b6b3a764000090610c49908390611147565b600554336000908152600a6020526040902054610c66919061115e565b610c70919061115e565b610c7a919061117d565b3360009081526008602052604081208054909190610c9990849061112f565b9091555050336000908152600a6020526040812054610cba9060029061117d565b336000908152600a602052604081205491925090610cd9908390611147565b336000908152600a60205260408120819055600480549293508392909190610d02908490611147565b9091555050336000908152600a6020526040902054610d2457610d2433610f42565b60025460405163a9059cbb60e01b8152336004820152602481018390526001600160a01b039091169063a9059cbb90604401602060405180830381600087803b158015610d7057600080fd5b505af1158015610d84573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610da8919061119f565b5060025460015460405163a9059cbb60e01b81526001600160a01b0391821660048201526024810185905291169063a9059cbb90604401602060405180830381600087803b158015610df957600080fd5b505af1158015610e0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e31919061119f565b50505050565b6000546001600160a01b03163314610e855760405162461bcd60e51b815260206004820152601160248201527021b0b636103737ba1030b63637bbb2b21760791b60448201526064016103e6565b604051339082156108fc029083906000818181858888f19350505050158015610ba6573d6000803e3d6000fd5b6001600160a01b038116600090815260096020526040812054670de0b6b3a764000090610edf9043611147565b6005546001600160a01b0385166000908152600a6020526040902054610f05919061115e565b610f0f919061115e565b610f19919061117d565b6001600160a01b038316600090815260086020526040902054610f3c919061112f565b92915050565b600c8054610f5290600190611147565b81548110610f6257610f626111c1565b60009182526020808320909101546001600160a01b038481168452600d909252604090922054600c80549290931692918110610fa057610fa06111c1565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600d918290526040812054600c805491939291610fec90600190611147565b81548110610ffc57610ffc6111c1565b60009182526020808320909101546001600160a01b03168352820192909252604001902055600c805480611032576110326111f2565b600082815260209020810160001990810180546001600160a01b031916905501905550565b600061109983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506110a0565b9392505050565b600081836110c15760405162461bcd60e51b81526004016103e69190611208565b5060006110ce848661117d565b95945050505050565b6000602082840312156110e957600080fd5b81356001600160a01b038116811461109957600080fd5b60006020828403121561111257600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b6000821982111561114257611142611119565b500190565b60008282101561115957611159611119565b500390565b600081600019048311821515161561117857611178611119565b500290565b60008261119a57634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156111b157600080fd5b8151801515811461109957600080fd5b634e487b7160e01b600052603260045260246000fd5b60006000198214156111eb576111eb611119565b5060010190565b634e487b7160e01b600052603160045260246000fd5b600060208083528351808285015260005b8181101561123557858101830151858201604001528201611219565b81811115611247576000604083870101525b50601f01601f191692909201604001939250505056fea2646970667358221220e81dfb93862a103d93a4b0a94b9e06e4f2816ce7017a7797c9846fd57c1e09f764736f6c63430008090033
Deployed Bytecode Sourcemap
2115:5372:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4249:32;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;4249:32:0;;;;;;;;2754:113;;;;;;;;;;-1:-1:-1;2754:113:0;;;;;:::i;:::-;-1:-1:-1;;;;;2844:15:0;2817:7;2844:15;;;:7;:15;;;;;;;2754:113;5467:663;;;;;;;;;;-1:-1:-1;5467:663:0;;;;;:::i;:::-;;:::i;:::-;;2303:103;;;;;;;;;;-1:-1:-1;2303:103:0;;;;;:::i;:::-;2358:4;2393:5;-1:-1:-1;;;;;2382:16:0;;;2393:5;;2382:16;;2303:103;;;;837:14:1;;830:22;812:41;;800:2;785:18;2303:103:0;672:187:1;4107:60:0;;;;;;;;;;;;;;;;4453:47;;;;;;;;;;-1:-1:-1;4453:47:0;;;;;:::i;:::-;;;;;;;;;;;;;;6138:592;;;;;;;;;;;;;:::i;4171:26::-;;;;;;;;;;;;;;;;2633:113;;;;;;;;;;-1:-1:-1;2633:113:0;;;;;:::i;:::-;-1:-1:-1;;;;;2720:18:0;2693:7;2720:18;;;:10;:18;;;;;;;2633:113;4204:38;;;;;;;;;;;;;;;;4288:25;;;;;;;;;;;;;;;;6741:373;;;;;;;;;;-1:-1:-1;6741:373:0;;;;;:::i;:::-;;:::i;2979:75::-;;;;;;;;;;-1:-1:-1;2979:75:0;;;;-1:-1:-1;;;;;2979:75:0;;;;;;-1:-1:-1;;;;;1028:32:1;;;1010:51;;998:2;983:18;2979:75:0;864:203:1;2875:96:0;;;:::i;4679:780::-;;;;;;;;;;-1:-1:-1;4679:780:0;;;;;:::i;:::-;;:::i;3063:836::-;;;;;;;;;;;;;:::i;3907:110::-;;;;;;;;;;-1:-1:-1;3907:110:0;;;;;:::i;:::-;;:::i;2414:211::-;;;;;;;;;;-1:-1:-1;2414:211:0;;;;;:::i;:::-;;:::i;5467:663::-;5546:17;;:27;;5566:7;5546:27;:::i;:::-;5527:15;:46;;5519:106;;;;-1:-1:-1;;;5519:106:0;;1539:2:1;5519:106:0;;;1521:21:1;1578:2;1558:18;;;1551:30;1617:34;1597:18;;;1590:62;-1:-1:-1;;;1668:18:1;;;1661:45;1723:19;;5519:106:0;;;;;;;;;5647:1;5638:6;:10;:43;;;;-1:-1:-1;5670:10:0;5662:19;;;;:7;:19;;;;;;5652:29;;;5638:43;5630:100;;;;-1:-1:-1;;;5630:100:0;;1955:2:1;5630:100:0;;;1937:21:1;1994:2;1974:18;;;1967:30;2033:34;2013:18;;;2006:62;-1:-1:-1;;;2084:18:1;;;2077:42;2136:19;;5630:100:0;1753:408:1;5630:100:0;5768:10;5735:19;5757:22;;;:10;:22;;;;;;;5809:12;5784:37;;;;5757:22;5937:4;;5906:26;;5757:22;;5906:26;:::i;:::-;5879:23;;5865:10;5857:19;;;;:7;:19;;;;;;:45;;5879:23;5857:45;:::i;:::-;:76;;;;:::i;:::-;5856:85;;;;:::i;:::-;5841:10;5826:26;;;;:14;:26;;;;;:115;;:26;;;:115;;;;;:::i;:::-;;;;-1:-1:-1;;5954:10:0;5946:19;;;;:7;:19;;;;;:29;;5969:6;;5946:19;:29;;5969:6;;5946:29;:::i;:::-;;;;-1:-1:-1;;5994:10:0;5986:19;;;;:7;:19;;;;;;5982:66;;6018:24;6031:10;6018:12;:24::i;:::-;6054:5;;:34;;-1:-1:-1;;;6054:34:0;;6069:10;6054:34;;;2865:51:1;2932:18;;;2925:34;;;-1:-1:-1;;;;;6054:5:0;;;;:14;;2838:18:1;;6054:34:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6116:6;6101:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;5467:663:0:o;6138:592::-;6206:10;6173:19;6195:22;;;:10;:22;;;;;;;6253:12;6228:37;;;;6195:22;6387:4;;6356:26;;6195:22;;6356:26;:::i;:::-;6329:23;;6315:10;6307:19;;;;:7;:19;;;;;;:45;;6329:23;6307:45;:::i;:::-;:76;;;;:::i;:::-;6306:85;;;;:::i;:::-;6291:10;6276:26;;;;:14;:26;;;;;:115;;:26;;;:115;;;;;:::i;:::-;;;;-1:-1:-1;;6425:10:0;6439:1;6410:26;;;:14;:26;;;;;;6402:63;;;;-1:-1:-1;;;6402:63:0;;3454:2:1;6402:63:0;;;3436:21:1;3493:2;3473:18;;;3466:30;-1:-1:-1;;;3512:18:1;;;3505:50;3572:18;;6402:63:0;3252:344:1;6402:63:0;6509:10;6476:15;6494:26;;;:14;:26;;;;;;;6531:30;;;6590:21;:32;-1:-1:-1;6590:32:0;6582:81;;;;-1:-1:-1;;;6582:81:0;;3803:2:1;6582:81:0;;;3785:21:1;3842:2;3822:18;;;3815:30;3881:34;3861:18;;;3854:62;-1:-1:-1;;;3932:18:1;;;3925:34;3976:19;;6582:81:0;3601:400:1;6582:81:0;6685:37;;6693:10;;6685:37;;;;;6714:7;;6685:37;;;;6714:7;6693:10;6685:37;;;;;;;;;;;;;;;;;;;;;6162:568;;6138:592::o;6741:373::-;2358:4;2393:5;-1:-1:-1;;;;;2393:5:0;2251:10;2382:16;2235:49;;;;-1:-1:-1;;;2235:49:0;;4208:2:1;2235:49:0;;;4190:21:1;4247:2;4227:18;;;4220:30;-1:-1:-1;;;4266:18:1;;;4259:47;4323:18;;2235:49:0;4006:341:1;2235:49:0;6809:9:::1;6804:265;6828:7;:14:::0;6824:18;::::1;6804:265;;;6855:19;6877:10;:22;6888:7;6896:1;6888:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;6888:10:0::1;-1:-1:-1::0;;;;;6877:22:0::1;-1:-1:-1::0;;;;;6877:22:0::1;;;;;;;;;;;;;6855:44;;6930:12;6905:10;:22;6916:7;6924:1;6916:10;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;::::0;-1:-1:-1;;;;;6916:10:0::1;6905:22:::0;;;::::1;::::0;;;;;;;;:37;7059:4:::1;7028:26;7043:11:::0;7028:12:::1;:26;:::i;:::-;7001:23;;6979:7;:19;6987:7;6995:1;6987:10;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;::::0;-1:-1:-1;;;;;6987:10:0::1;6979:19:::0;;;::::1;::::0;;;;;;;;;:45:::1;::::0;;::::1;:::i;:::-;:76;;;;:::i;:::-;6978:85;;;;:::i;:::-;6948:14;:26;6963:7;6971:1;6963:10;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;::::0;-1:-1:-1;;;;;6963:10:0::1;6948:26:::0;;;::::1;::::0;;;;;;;;:115;;:26;;6963:10;6948:115:::1;::::0;;;::::1;:::i;:::-;::::0;;;-1:-1:-1;6844:3:0;;-1:-1:-1;6844:3:0::1;::::0;-1:-1:-1;6844:3:0;::::1;:::i;:::-;;;;6804:265;;;-1:-1:-1::0;7075:23:0::1;:32:::0;6741:373::o;2875:96::-;2939:10;2927:23;;;;:11;:23;;;;;:36;;2954:9;;2927:23;:36;;2954:9;;2927:36;:::i;:::-;;;;-1:-1:-1;;2875:96:0:o;4679:780::-;4739:1;4730:6;:10;:51;;;;;4768:13;;4758:6;4744:11;;:20;;;;:::i;:::-;:37;;4730:51;4722:122;;;;-1:-1:-1;;;4722:122:0;;4826:2:1;4722:122:0;;;4808:21:1;4865:2;4845:18;;;4838:30;4904:34;4884:18;;;4877:62;4975:28;4955:18;;;4948:56;5021:19;;4722:122:0;4624:422:1;4722:122:0;4849:5;;:53;;-1:-1:-1;;;4849:53:0;;4868:10;4849:53;;;5291:34:1;4888:4:0;5341:18:1;;;5334:43;5393:18;;;5386:34;;;-1:-1:-1;;;;;4849:5:0;;;;:18;;5226::1;;4849:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;4924:6;4909:11;;:21;;;;;;;:::i;:::-;;;;-1:-1:-1;;4970:10:0;4937:19;4959:22;;;:10;:22;;;;;;;;;;5011:12;4986:37;;;5034:7;:19;;;;;;;:23;5030:245;;5176:4;5145:26;5160:11;5145:12;:26;:::i;:::-;5118:23;;5104:10;5096:19;;;;:7;:19;;;;;;:45;;5118:23;5096:45;:::i;:::-;:76;;;;:::i;:::-;5095:85;;;;:::i;:::-;5080:10;5065:26;;;;:14;:26;;;;;:115;;:26;;;:115;;;;;:::i;:::-;;;;-1:-1:-1;5030:245:0;;-1:-1:-1;5030:245:0;;5227:15;5207:17;:35;7198:7;:14;;5258:10;7174:21;;;;:13;:21;;;;;:38;;;7223:20;;;;;;;;;;;;;-1:-1:-1;;;;;;7223:20:0;;;;;;5248:21;5289:10;5281:19;;;;:7;:19;;;;;:29;;5304:6;;5281:19;:29;;5304:6;;5281:29;:::i;:::-;;;;-1:-1:-1;;5345:10:0;;:21;;5358:8;5345:21;:::i;:::-;5327:15;:39;5323:128;;;5409:23;;:30;;5437:1;5409:27;:30::i;:::-;5383:23;:56;5323:128;4717:742;4679:780;:::o;3063:836::-;3122:10;3136:1;3114:19;;;:7;:19;;;;;;3106:82;;;;-1:-1:-1;;;3106:82:0;;5633:2:1;3106:82:0;;;5615:21:1;5672:2;5652:18;;;5645:30;5711:34;5691:18;;;5684:62;-1:-1:-1;;;5762:18:1;;;5755:44;5816:19;;3106:82:0;5431:410:1;3106:82:0;3230:10;3197:19;3219:22;;;:10;:22;;;;;;;3273:12;3248:37;;;;3219:22;3403:4;;3372:26;;3219:22;;3372:26;:::i;:::-;3345:23;;3331:10;3323:19;;;;:7;:19;;;;;;:45;;3345:23;3323:45;:::i;:::-;:76;;;;:::i;:::-;3322:85;;;;:::i;:::-;3307:10;3292:26;;;;:14;:26;;;;;:115;;:26;;;:115;;;;;:::i;:::-;;;;-1:-1:-1;;3448:10:0;3416:21;3440:19;;;:7;:19;;;;;;:23;;3462:1;;3440:23;:::i;:::-;3505:10;3470:24;3497:19;;;:7;:19;;;;;;3416:47;;-1:-1:-1;3470:24:0;3497:35;;3416:47;;3497:35;:::i;:::-;3549:10;3563:1;3541:19;;;:7;:19;;;;;:23;;;3571:11;:31;;3470:62;;-1:-1:-1;3470:62:0;;3571:11;;3563:1;3571:31;;3470:62;;3571:31;:::i;:::-;;;;-1:-1:-1;;3623:10:0;3615:19;;;;:7;:19;;;;;;3611:73;;3652:24;3665:10;3652:12;:24::i;:::-;3742:5;;:44;;-1:-1:-1;;;3742:44:0;;3757:10;3742:44;;;2865:51:1;2932:18;;;2925:34;;;-1:-1:-1;;;;;3742:5:0;;;;:14;;2838:18:1;;3742:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;3851:5:0;;;3866:13;3851:44;;-1:-1:-1;;;3851:44:0;;-1:-1:-1;;;;;3866:13:0;;;3851:44;;;2865:51:1;2932:18;;;2925:34;;;3851:5:0;;;:14;;2838:18:1;;3851:44:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;3099:800;;;3063:836::o;3907:110::-;2358:4;2393:5;-1:-1:-1;;;;;2393:5:0;2251:10;2382:16;2235:49;;;;-1:-1:-1;;;2235:49:0;;4208:2:1;2235:49:0;;;4190:21:1;4247:2;4227:18;;;4220:30;-1:-1:-1;;;4266:18:1;;;4259:47;4323:18;;2235:49:0;4006:341:1;2235:49:0;3973:36:::1;::::0;3981:10:::1;::::0;3973:36;::::1;;;::::0;4002:6;;3973:36:::1;::::0;;;4002:6;3981:10;3973:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;2414:211:::0;-1:-1:-1;;;;;2590:18:0;;2477:7;2590:18;;;:10;:18;;;;;;2613:4;;2575:33;;:12;:33;:::i;:::-;2548:23;;-1:-1:-1;;;;;2530:15:0;;;;;;:7;:15;;;;;;:41;;2548:23;2530:41;:::i;:::-;:79;;;;:::i;:::-;2529:88;;;;:::i;:::-;-1:-1:-1;;;;;2504:22:0;;;;;;:14;:22;;;;;;:113;;;;:::i;:::-;2497:120;2414:211;-1:-1:-1;;2414:211:0:o;7259:223::-;7350:7;7358:14;;:16;;7373:1;;7358:16;:::i;:::-;7350:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;7325:21:0;;;;;:13;:21;;;;;;;;7317:7;:30;;7350:25;;;;;7317:7;:30;;;;;;:::i;:::-;;;;;;;;;;;;;:58;;-1:-1:-1;;;;;;7317:58:0;-1:-1:-1;;;;;7317:58:0;;;;;;7429:21;;;;;:13;:21;;;;;;;;7400:7;7408:14;;7429:21;;:13;7317:30;7408:16;;-1:-1:-1;;7408:16:0;:::i;:::-;7400:25;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;7400:25:0;7386:40;;;;;;;;;;;;:64;7461:7;:13;;;;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;7461:13:0;;;;;-1:-1:-1;;;;;;7461:13:0;;;;;;-1:-1:-1;7259:223:0:o;867:132::-;925:7;952:39;956:1;959;952:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;945:46;867:132;-1:-1:-1;;;867:132:0:o;1005:189::-;1091:7;1126:12;1119:5;1111:28;;;;-1:-1:-1;;;1111:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1150:9:0;1162:5;1166:1;1162;:5;:::i;:::-;1150:17;1005:189;-1:-1:-1;;;;;1005:189:0:o;196:286:1:-;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;350:23;;-1:-1:-1;;;;;402:31:1;;392:42;;382:70;;448:1;445;438:12;487:180;546:6;599:2;587:9;578:7;574:23;570:32;567:52;;;615:1;612;605:12;567:52;-1:-1:-1;638:23:1;;487:180;-1:-1:-1;487:180:1:o;1072:127::-;1133:10;1128:3;1124:20;1121:1;1114:31;1164:4;1161:1;1154:15;1188:4;1185:1;1178:15;1204:128;1244:3;1275:1;1271:6;1268:1;1265:13;1262:39;;;1281:18;;:::i;:::-;-1:-1:-1;1317:9:1;;1204:128::o;2166:125::-;2206:4;2234:1;2231;2228:8;2225:34;;;2239:18;;:::i;:::-;-1:-1:-1;2276:9:1;;2166:125::o;2296:168::-;2336:7;2402:1;2398;2394:6;2390:14;2387:1;2384:21;2379:1;2372:9;2365:17;2361:45;2358:71;;;2409:18;;:::i;:::-;-1:-1:-1;2449:9:1;;2296:168::o;2469:217::-;2509:1;2535;2525:132;;2579:10;2574:3;2570:20;2567:1;2560:31;2614:4;2611:1;2604:15;2642:4;2639:1;2632:15;2525:132;-1:-1:-1;2671:9:1;;2469:217::o;2970:277::-;3037:6;3090:2;3078:9;3069:7;3065:23;3061:32;3058:52;;;3106:1;3103;3096:12;3058:52;3138:9;3132:16;3191:5;3184:13;3177:21;3170:5;3167:32;3157:60;;3213:1;3210;3203:12;4352:127;4413:10;4408:3;4404:20;4401:1;4394:31;4444:4;4441:1;4434:15;4468:4;4465:1;4458:15;4484:135;4523:3;-1:-1:-1;;4544:17:1;;4541:43;;;4564:18;;:::i;:::-;-1:-1:-1;4611:1:1;4600:13;;4484:135::o;5846:127::-;5907:10;5902:3;5898:20;5895:1;5888:31;5938:4;5935:1;5928:15;5962:4;5959:1;5952:15;5978:597;6090:4;6119:2;6148;6137:9;6130:21;6180:6;6174:13;6223:6;6218:2;6207:9;6203:18;6196:34;6248:1;6258:140;6272:6;6269:1;6266:13;6258:140;;;6367:14;;;6363:23;;6357:30;6333:17;;;6352:2;6329:26;6322:66;6287:10;;6258:140;;;6416:6;6413:1;6410:13;6407:91;;;6486:1;6481:2;6472:6;6461:9;6457:22;6453:31;6446:42;6407:91;-1:-1:-1;6559:2:1;6538:15;-1:-1:-1;;6534:29:1;6519:45;;;;6566:2;6515:54;;5978:597;-1:-1:-1;;;5978:597:1:o
Swarm Source
ipfs://e81dfb93862a103d93a4b0a94b9e06e4f2816ce7017a7797c9846fd57c1e09f7
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.