Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Latest 25 from a total of 404 transactions
| Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Unstake | 21681291 | 397 days ago | IN | 0 ETH | 0.0005166 | ||||
| Unstake | 21449596 | 429 days ago | IN | 0 ETH | 0.00146708 | ||||
| Unstake | 21250333 | 457 days ago | IN | 0 ETH | 0.00048928 | ||||
| Unstake | 20385750 | 578 days ago | IN | 0 ETH | 0.00028713 | ||||
| Unstake | 20273685 | 593 days ago | IN | 0 ETH | 0.0002369 | ||||
| Unstake | 20227930 | 600 days ago | IN | 0 ETH | 0.0003727 | ||||
| Distribute | 20145015 | 611 days ago | IN | 0 ETH | 0.00006355 | ||||
| Unstake | 20065625 | 622 days ago | IN | 0 ETH | 0.00152176 | ||||
| Unstake | 20011949 | 630 days ago | IN | 0 ETH | 0.00097949 | ||||
| Unstake | 20005779 | 631 days ago | IN | 0 ETH | 0.0006494 | ||||
| Claim Rewards | 20005776 | 631 days ago | IN | 0 ETH | 0.00092873 | ||||
| Unstake | 19984833 | 634 days ago | IN | 0 ETH | 0.00077999 | ||||
| Unstake | 19983942 | 634 days ago | IN | 0 ETH | 0.00073369 | ||||
| Unstake | 19955845 | 638 days ago | IN | 0 ETH | 0.00067587 | ||||
| Unstake | 19917864 | 643 days ago | IN | 0 ETH | 0.00055249 | ||||
| Unstake | 19891241 | 647 days ago | IN | 0 ETH | 0.00040506 | ||||
| Unstake | 19829557 | 655 days ago | IN | 0 ETH | 0.0001778 | ||||
| Claim Rewards | 19829552 | 655 days ago | IN | 0 ETH | 0.00025053 | ||||
| Unstake | 19819748 | 657 days ago | IN | 0 ETH | 0.00040611 | ||||
| Unstake | 19771221 | 664 days ago | IN | 0 ETH | 0.00034829 | ||||
| Claim Rewards | 19771213 | 664 days ago | IN | 0 ETH | 0.00036615 | ||||
| Unstake | 19757159 | 665 days ago | IN | 0 ETH | 0.00063781 | ||||
| Unstake | 19738034 | 668 days ago | IN | 0 ETH | 0.00050968 | ||||
| Unstake | 19713045 | 672 days ago | IN | 0 ETH | 0.00078587 | ||||
| Unstake | 19704203 | 673 days ago | IN | 0 ETH | 0.0007802 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
Staking
Compiler Version
v0.8.19+commit.7dd6d404
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;
import {IERC20} from "@openzeppelin/interfaces/IERC20.sol";
error NotStaked();
error NoStakers();
error CannotStakeZeroTokens();
contract Staking {
event UserStaked(address indexed who, uint256 amount);
event UserUnstaked(address indexed who, uint256 amount);
event RewardsPayout(address indexed to, uint256 amount);
event CapturedRewards(address indexed from, uint256 amount);
event RewardsToTreasury(uint256 amount);
struct StakingRecord {
uint256 stakedAmount;
uint256 rewardsPerStakedTokenSnapshot; // Scaled by a WAD
}
uint256 private constant WAD = 1e18;
/// @notice Address of the treasury where 50% of the profits
/// will be sent.
address public immutable treasury;
IERC20 public immutable weth;
IERC20 public immutable prtc;
/// @notice Amount of `WETH` rewards per staked token.
/// @dev Scaled by a WAD.
uint256 public rewardsPerStakedToken;
/// @notice Total amount of `prtc` staked.
uint256 public totalStaked;
mapping(address => StakingRecord) public stakingRecords;
constructor(IERC20 _prtc, IERC20 _weth, address _treasury) {
prtc = _prtc;
weth = _weth;
treasury = _treasury;
}
/// @notice Method to claim `WETH` rewards accumulated in the
/// contract.
function claimRewards() public {
StakingRecord storage userRecord = stakingRecords[msg.sender];
if (userRecord.stakedAmount == 0) revert NotStaked();
uint256 userReward = userRecord.stakedAmount
* (rewardsPerStakedToken - userRecord.rewardsPerStakedTokenSnapshot) / WAD;
userRecord.rewardsPerStakedTokenSnapshot = rewardsPerStakedToken;
if (userReward != 0) {
weth.transfer(msg.sender, userReward);
emit RewardsPayout(msg.sender, userReward);
}
}
/// @notice Retrieve any users' `WETH` rewards.
function previewRewards(address user) public view returns (uint256) {
StakingRecord storage userRecord = stakingRecords[user];
uint256 totalStake = userRecord.stakedAmount;
if (totalStake == 0) return 0;
uint256 userReward =
totalStake * (rewardsPerStakedToken - userRecord.rewardsPerStakedTokenSnapshot) / WAD;
return userReward;
}
/// @notice Retrieve users' staked amount.
function balanceOf(address user) public view returns (uint256) {
return stakingRecords[user].stakedAmount;
}
/// @notice Staking method that accepts `prtc`. Profits from the
/// vault will be distributed to this contract and staking users
/// will be rewarded with `WETH`.
/// @param amount Amount of `prtc` to be staked.
function stake(uint256 amount) external {
if (amount == 0) revert CannotStakeZeroTokens();
StakingRecord storage userPosition = stakingRecords[msg.sender];
if (userPosition.stakedAmount != 0) claimRewards();
prtc.transferFrom(msg.sender, address(this), amount);
totalStaked += amount;
userPosition.stakedAmount += amount;
userPosition.rewardsPerStakedTokenSnapshot = rewardsPerStakedToken;
emit UserStaked(msg.sender, amount);
}
/// @notice Method to unstake all `prtc`.
function unstake() external {
unstake(type(uint256).max);
}
/// @notice Method to unstake `prtc`. It will calculate the portion
/// of `WETH` rewards for the user and send them.
function unstake(uint256 _amount) public {
if (_amount == 0) _amount = type(uint256).max;
StakingRecord storage userRecord = stakingRecords[msg.sender];
uint256 userStakedAmount = userRecord.stakedAmount;
if (userStakedAmount == 0) revert NotStaked();
uint256 userReward = previewRewards(msg.sender);
if (_amount >= userStakedAmount) {
totalStaked -= userStakedAmount;
delete stakingRecords[msg.sender];
prtc.transfer(msg.sender, userStakedAmount);
emit UserUnstaked(msg.sender, userStakedAmount);
} else {
totalStaked -= _amount;
userRecord.stakedAmount -= _amount;
userRecord.rewardsPerStakedTokenSnapshot = rewardsPerStakedToken;
prtc.transfer(msg.sender, _amount);
emit UserUnstaked(msg.sender, _amount);
}
if (userReward != 0) {
weth.transfer(msg.sender, userReward);
emit RewardsPayout(msg.sender, userReward);
}
}
/// @notice Method to distribute `WETH` rewards.
/// @dev Anyone that wants to distribute `WETH` can call this.
/// @param amount The amount of `WETH` to be distributed to the contract.
function distribute(uint256 amount) external {
if (totalStaked == 0) revert NoStakers();
uint256 amountForTreasury = amount / 2;
uint256 amountForStakers = amount - amountForTreasury;
weth.transferFrom(msg.sender, treasury, amountForTreasury);
weth.transferFrom(msg.sender, address(this), amountForStakers);
// Distribute the other 50% to the stakers.
rewardsPerStakedToken += amountForStakers * WAD / totalStaked;
emit RewardsToTreasury(amountForTreasury);
emit CapturedRewards(msg.sender, amountForStakers);
}
}// SPDX-License-Identifier: MIT // OpenZeppelin Contracts v4.4.1 (interfaces/IERC20.sol) pragma solidity ^0.8.0; import "../token/ERC20/IERC20.sol";
// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @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 Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @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 `to`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address to, 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 `from` to `to` 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 from, address to, uint256 amount) external returns (bool);
}{
"remappings": [
"@openzeppelin/=lib/openzeppelin-contracts/contracts/",
"ds-test/=lib/forge-std/lib/ds-test/src/",
"erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
"forge-std/=lib/forge-std/src/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/",
"openzeppelin/=lib/openzeppelin-contracts/contracts/"
],
"optimizer": {
"enabled": true,
"runs": 200
},
"metadata": {
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "paris",
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"contract IERC20","name":"_prtc","type":"address"},{"internalType":"contract IERC20","name":"_weth","type":"address"},{"internalType":"address","name":"_treasury","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"CannotStakeZeroTokens","type":"error"},{"inputs":[],"name":"NoStakers","type":"error"},{"inputs":[],"name":"NotStaked","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"CapturedRewards","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardsPayout","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardsToTreasury","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"who","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"UserStaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"who","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"UserUnstaked","type":"event"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"distribute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"previewRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prtc","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardsPerStakedToken","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":[{"internalType":"address","name":"","type":"address"}],"name":"stakingRecords","outputs":[{"internalType":"uint256","name":"stakedAmount","type":"uint256"},{"internalType":"uint256","name":"rewardsPerStakedTokenSnapshot","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"weth","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60e060405234801561001057600080fd5b50604051610cca380380610cca83398101604081905261002f91610064565b6001600160a01b0392831660c05290821660a052166080526100b1565b6001600160a01b038116811461006157600080fd5b50565b60008060006060848603121561007957600080fd5b83516100848161004c565b60208501519093506100958161004c565b60408501519092506100a68161004c565b809150509250925092565b60805160a05160c051610bb261011860003960008181610214015281816102fe015281816103fa015261095101526000818161013f015281816104c8015281816106090152818161074701526107d901526000818161017e01526107150152610bb26000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c578063a694fc3a11610066578063a694fc3a146101f3578063c29b0c3114610206578063cdde89ba1461020f578063f166e9201461023657600080fd5b806370a08231146101a0578063817b1cd2146101d757806391c05b0b146101e057600080fd5b8063021417cf146100d45780632def6620146101155780632e17de781461011f578063372500ab146101325780633fc8cef31461013a57806361d027b314610179575b600080fd5b6100fb6100e2366004610a96565b6002602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b61011d610249565b005b61011d61012d366004610ac6565b610256565b61011d61057a565b6101617f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161010c565b6101617f000000000000000000000000000000000000000000000000000000000000000081565b6101c96101ae366004610a96565b6001600160a01b031660009081526002602052604090205490565b60405190815260200161010c565b6101c960015481565b61011d6101ee366004610ac6565b6106ba565b61011d610201366004610ac6565b6108f0565b6101c960005481565b6101617f000000000000000000000000000000000000000000000000000000000000000081565b6101c9610244366004610a96565b610a31565b610254600019610256565b565b8060000361026357506000195b33600090815260026020526040812080549091819003610295576040516273e5c360e31b815260040160405180910390fd5b60006102a033610a31565b90508184106103a65781600160008282546102bb9190610af5565b909155505033600081815260026020526040808220828155600101919091555163a9059cbb60e01b81526004810191909152602481018390526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015610347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036b9190610b0e565b5060405182815233907f668647a3bf871c3ff8779af5157eda0c0d6de3f7af4a3468d3ecc571fc413adb9060200160405180910390a26104a6565b83600160008282546103b89190610af5565b90915550508254849084906000906103d1908490610af5565b9091555050600054600184015560405163a9059cbb60e01b8152336004820152602481018590527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561044b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046f9190610b0e565b5060405184815233907f668647a3bf871c3ff8779af5157eda0c0d6de3f7af4a3468d3ecc571fc413adb9060200160405180910390a25b80156105745760405163a9059cbb60e01b8152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610519573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053d9190610b0e565b5060405181815233907f41f65a7f97c30e01e7536b57c58e5875b46a2d428032c8990754d2f7ac142ff59060200160405180910390a25b50505050565b33600090815260026020526040812080549091036105aa576040516273e5c360e31b815260040160405180910390fd5b6000670de0b6b3a764000082600101546000546105c79190610af5565b83546105d39190610b30565b6105dd9190610b47565b6000546001840155905080156106b65760405163a9059cbb60e01b8152336004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561065a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067e9190610b0e565b5060405181815233907f41f65a7f97c30e01e7536b57c58e5875b46a2d428032c8990754d2f7ac142ff5906020015b60405180910390a25b5050565b6001546000036106dd576040516321311aa360e01b815260040160405180910390fd5b60006106ea600283610b47565b905060006106f88284610af5565b6040516323b872dd60e01b81523360048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152604482018590529192507f0000000000000000000000000000000000000000000000000000000000000000909116906323b872dd906064016020604051808303816000875af1158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190610b0e565b506040516323b872dd60e01b8152336004820152306024820152604481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af115801561082a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084e9190610b0e565b50600154610864670de0b6b3a764000083610b30565b61086e9190610b47565b60008082825461087e9190610b69565b90915550506040518281527fb95243771503d0dd1766359d6d43e2cb66046113234073fdcf1f466fba623acb9060200160405180910390a160405181815233907f92209e8b44b9db41583844798e98c06a8bf7e9fcf15e50743f052606e0aecfa49060200160405180910390a2505050565b80600003610911576040516361db553160e11b815260040160405180910390fd5b33600090815260026020526040902080541561092f5761092f61057a565b6040516323b872dd60e01b8152336004820152306024820152604481018390527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af11580156109a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c69190610b0e565b5081600160008282546109d99190610b69565b90915550508054829082906000906109f2908490610b69565b9091555050600054600182015560405182815233907f8c265adcfa641899d6632b86254dda7a76f27701f1d21a732621d51f2328c460906020016106ad565b6001600160a01b03811660009081526002602052604081208054808303610a5c575060009392505050565b6000670de0b6b3a76400008360010154600054610a799190610af5565b610a839084610b30565b610a8d9190610b47565b95945050505050565b600060208284031215610aa857600080fd5b81356001600160a01b0381168114610abf57600080fd5b9392505050565b600060208284031215610ad857600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b0857610b08610adf565b92915050565b600060208284031215610b2057600080fd5b81518015158114610abf57600080fd5b8082028115828204841417610b0857610b08610adf565b600082610b6457634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610b0857610b08610adf56fea2646970667358221220ca39c9fe92c4b9199166747abb4d24049ebfa873ca0459375dfb4aafa4cfe26164736f6c63430008130033000000000000000000000000b9098d3669a78e9afe8b94a97290407400d9da31000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000002a1aa732fe04494be2a24e90b120ba1864da3b17
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806370a082311161008c578063a694fc3a11610066578063a694fc3a146101f3578063c29b0c3114610206578063cdde89ba1461020f578063f166e9201461023657600080fd5b806370a08231146101a0578063817b1cd2146101d757806391c05b0b146101e057600080fd5b8063021417cf146100d45780632def6620146101155780632e17de781461011f578063372500ab146101325780633fc8cef31461013a57806361d027b314610179575b600080fd5b6100fb6100e2366004610a96565b6002602052600090815260409020805460019091015482565b604080519283526020830191909152015b60405180910390f35b61011d610249565b005b61011d61012d366004610ac6565b610256565b61011d61057a565b6101617f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b6040516001600160a01b03909116815260200161010c565b6101617f0000000000000000000000002a1aa732fe04494be2a24e90b120ba1864da3b1781565b6101c96101ae366004610a96565b6001600160a01b031660009081526002602052604090205490565b60405190815260200161010c565b6101c960015481565b61011d6101ee366004610ac6565b6106ba565b61011d610201366004610ac6565b6108f0565b6101c960005481565b6101617f000000000000000000000000b9098d3669a78e9afe8b94a97290407400d9da3181565b6101c9610244366004610a96565b610a31565b610254600019610256565b565b8060000361026357506000195b33600090815260026020526040812080549091819003610295576040516273e5c360e31b815260040160405180910390fd5b60006102a033610a31565b90508184106103a65781600160008282546102bb9190610af5565b909155505033600081815260026020526040808220828155600101919091555163a9059cbb60e01b81526004810191909152602481018390526001600160a01b037f000000000000000000000000b9098d3669a78e9afe8b94a97290407400d9da31169063a9059cbb906044016020604051808303816000875af1158015610347573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036b9190610b0e565b5060405182815233907f668647a3bf871c3ff8779af5157eda0c0d6de3f7af4a3468d3ecc571fc413adb9060200160405180910390a26104a6565b83600160008282546103b89190610af5565b90915550508254849084906000906103d1908490610af5565b9091555050600054600184015560405163a9059cbb60e01b8152336004820152602481018590527f000000000000000000000000b9098d3669a78e9afe8b94a97290407400d9da316001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561044b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046f9190610b0e565b5060405184815233907f668647a3bf871c3ff8779af5157eda0c0d6de3f7af4a3468d3ecc571fc413adb9060200160405180910390a25b80156105745760405163a9059cbb60e01b8152336004820152602481018290527f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610519573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061053d9190610b0e565b5060405181815233907f41f65a7f97c30e01e7536b57c58e5875b46a2d428032c8990754d2f7ac142ff59060200160405180910390a25b50505050565b33600090815260026020526040812080549091036105aa576040516273e5c360e31b815260040160405180910390fd5b6000670de0b6b3a764000082600101546000546105c79190610af5565b83546105d39190610b30565b6105dd9190610b47565b6000546001840155905080156106b65760405163a9059cbb60e01b8152336004820152602481018290527f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03169063a9059cbb906044016020604051808303816000875af115801561065a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061067e9190610b0e565b5060405181815233907f41f65a7f97c30e01e7536b57c58e5875b46a2d428032c8990754d2f7ac142ff5906020015b60405180910390a25b5050565b6001546000036106dd576040516321311aa360e01b815260040160405180910390fd5b60006106ea600283610b47565b905060006106f88284610af5565b6040516323b872dd60e01b81523360048201526001600160a01b037f0000000000000000000000002a1aa732fe04494be2a24e90b120ba1864da3b1781166024830152604482018590529192507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2909116906323b872dd906064016020604051808303816000875af1158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190610b0e565b506040516323b872dd60e01b8152336004820152306024820152604481018290527f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b0316906323b872dd906064016020604051808303816000875af115801561082a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084e9190610b0e565b50600154610864670de0b6b3a764000083610b30565b61086e9190610b47565b60008082825461087e9190610b69565b90915550506040518281527fb95243771503d0dd1766359d6d43e2cb66046113234073fdcf1f466fba623acb9060200160405180910390a160405181815233907f92209e8b44b9db41583844798e98c06a8bf7e9fcf15e50743f052606e0aecfa49060200160405180910390a2505050565b80600003610911576040516361db553160e11b815260040160405180910390fd5b33600090815260026020526040902080541561092f5761092f61057a565b6040516323b872dd60e01b8152336004820152306024820152604481018390527f000000000000000000000000b9098d3669a78e9afe8b94a97290407400d9da316001600160a01b0316906323b872dd906064016020604051808303816000875af11580156109a2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c69190610b0e565b5081600160008282546109d99190610b69565b90915550508054829082906000906109f2908490610b69565b9091555050600054600182015560405182815233907f8c265adcfa641899d6632b86254dda7a76f27701f1d21a732621d51f2328c460906020016106ad565b6001600160a01b03811660009081526002602052604081208054808303610a5c575060009392505050565b6000670de0b6b3a76400008360010154600054610a799190610af5565b610a839084610b30565b610a8d9190610b47565b95945050505050565b600060208284031215610aa857600080fd5b81356001600160a01b0381168114610abf57600080fd5b9392505050565b600060208284031215610ad857600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115610b0857610b08610adf565b92915050565b600060208284031215610b2057600080fd5b81518015158114610abf57600080fd5b8082028115828204841417610b0857610b08610adf565b600082610b6457634e487b7160e01b600052601260045260246000fd5b500490565b80820180821115610b0857610b08610adf56fea2646970667358221220ca39c9fe92c4b9199166747abb4d24049ebfa873ca0459375dfb4aafa4cfe26164736f6c63430008130033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000b9098d3669a78e9afe8b94a97290407400d9da31000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc20000000000000000000000002a1aa732fe04494be2a24e90b120ba1864da3b17
-----Decoded View---------------
Arg [0] : _prtc (address): 0xb9098D3669A78e9AfE8b94a97290407400D9dA31
Arg [1] : _weth (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
Arg [2] : _treasury (address): 0x2A1Aa732Fe04494bE2A24E90b120Ba1864Da3b17
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000b9098d3669a78e9afe8b94a97290407400d9da31
Arg [1] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Arg [2] : 0000000000000000000000002a1aa732fe04494be2a24e90b120ba1864da3b17
Loading...
Loading
Loading...
Loading
Net Worth in USD
$95.70
Net Worth in ETH
0.051285
Token Allocations
WETH
100.00%
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $1,865.98 | 0.0513 | $95.7 |
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.