Source Code
Overview
ETH Balance
0.001044999999999988 ETH
Eth Value
$2.09 (@ $1,996.11/ETH)Latest 7 internal transactions
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 24759685 | 10 hrs ago | 0.0001 ETH | ||||
| Notify Reward | 24758421 | 14 hrs ago | 0.00094999 ETH | ||||
| Transfer | 24758385 | 14 hrs ago | 0.00089999 ETH | ||||
| Transfer | 24758385 | 14 hrs ago | 0.001 ETH | ||||
| Notify Reward | 24758016 | 15 hrs ago | 0.00009499 ETH | ||||
| Transfer | 24758010 | 15 hrs ago | 0.00008999 ETH | ||||
| Transfer | 24758009 | 15 hrs ago | 0.0001 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
FeeSplitter
Compiler Version
v0.8.26+commit.8a97fa7a
Optimization Enabled:
Yes with 200 runs
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;
import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol";
import {Pausable} from "@openzeppelin/contracts/utils/Pausable.sol";
interface IAshStaking {
function notifyReward() external payable;
}
/// @title FeeSplitter (Hardened)
/// @notice Receives ETH trading fees from AshHook and splits them:
/// 50% to treasury (pull-payment pattern)
/// 50% to AshStaking (distributed to ASH stakers)
///
/// Set as the hook's treasury address via hook.setTreasury(thisAddress).
/// Auto-splits on receive. Manual split() and retrySplit() available.
/// Treasury uses pull-payment to eliminate reentrancy risk.
contract FeeSplitter is Ownable, Pausable {
IAshStaking public stakingContract;
address public treasury;
uint256 public ownerBps = 5000; // 50%
uint256 public stakerBps = 5000; // 50%
uint256 public constant BASIS = 10000;
// Pull-payment: treasury ETH accumulates here
uint256 public treasuryBalance;
// Failure tracking
uint256 public failureCount;
uint256 public lastFailureTimestamp;
bytes public lastFailureReason;
event Split(uint256 toTreasury, uint256 toStakers);
event TreasuryWithdrawn(address indexed to, uint256 amount);
event StakingContractUpdated(address indexed oldStaking, address indexed newStaking);
event TreasuryUpdated(address indexed oldTreasury, address indexed newTreasury);
event SplitRatioUpdated(uint256 ownerBps, uint256 stakerBps);
event AutoSplitFailed(uint256 amount, bytes reason);
event StakerRewardFailed(uint256 amount, bytes reason);
error InvalidSplit();
error NothingToSplit();
error TransferFailed();
error NothingToWithdraw();
constructor(address _treasury, address _stakingContract) Ownable(msg.sender) {
require(_treasury != address(0), "Invalid treasury");
require(_stakingContract != address(0), "Invalid staking");
treasury = _treasury;
stakingContract = IAshStaking(_stakingContract);
}
/// @notice Distribute all pending ETH according to the split ratio.
/// Treasury portion goes to pull-payment balance.
/// Staker portion sent to AshStaking via notifyReward().
function split() public whenNotPaused {
// Calculate splittable balance (exclude treasury's pending withdrawal)
uint256 balance = address(this).balance - treasuryBalance;
if (balance == 0) revert NothingToSplit();
uint256 toTreasury = (balance * ownerBps) / BASIS;
uint256 toStakers = balance - toTreasury;
// Pull-payment: accumulate treasury portion
if (toTreasury > 0) {
treasuryBalance += toTreasury;
}
// Push staker rewards to staking contract
if (toStakers > 0) {
try stakingContract.notifyReward{value: toStakers}() {
// success
} catch (bytes memory reason) {
// If staking contract reverts (e.g., MinimumRewardRequired),
// buffer the staker portion in treasury for now
treasuryBalance += toStakers;
failureCount++;
lastFailureTimestamp = block.timestamp;
lastFailureReason = reason;
emit StakerRewardFailed(toStakers, reason);
}
}
emit Split(toTreasury, toStakers);
}
/// @notice Treasury withdraws accumulated ETH (pull-payment).
function treasuryWithdraw() external {
if (treasuryBalance == 0) revert NothingToWithdraw();
uint256 amount = treasuryBalance;
treasuryBalance = 0;
(bool ok,) = treasury.call{value: amount}("");
if (!ok) revert TransferFailed();
emit TreasuryWithdrawn(treasury, amount);
}
/// @notice Retry a failed split (admin recovery).
function retrySplit() external onlyOwner {
split();
}
/// @notice Accept ETH from hook. Does NOT auto-split because the hook
/// limits gas to 50k which isn't enough for split().
/// Call split() separately (anyone can call it).
receive() external payable {}
// ── Views ──
function getSplitStatus() external view returns (bool failed, uint256 timestamp, uint256 attempts) {
failed = failureCount > 0;
timestamp = lastFailureTimestamp;
attempts = failureCount;
}
function pendingSplit() external view returns (uint256) {
return address(this).balance - treasuryBalance;
}
// ── Admin ──
function setStakingContract(address _staking) external onlyOwner {
require(_staking != address(0), "Invalid address");
emit StakingContractUpdated(address(stakingContract), _staking);
stakingContract = IAshStaking(_staking);
}
function setTreasury(address _treasury) external onlyOwner {
require(_treasury != address(0), "Invalid address");
emit TreasuryUpdated(treasury, _treasury);
treasury = _treasury;
}
function setSplitRatio(uint256 _ownerBps, uint256 _stakerBps) external onlyOwner {
if (_ownerBps + _stakerBps != BASIS) revert InvalidSplit();
ownerBps = _ownerBps;
stakerBps = _stakerBps;
emit SplitRatioUpdated(_ownerBps, _stakerBps);
}
function pause() external onlyOwner { _pause(); }
function unpause() external onlyOwner { _unpause(); }
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)
pragma solidity ^0.8.20;
import {Context} from "../utils/Context.sol";
/**
* @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.
*
* The initial owner is set to the address provided by the deployer. 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.
*/
abstract contract Ownable is Context {
address private _owner;
/**
* @dev The caller account is not authorized to perform an operation.
*/
error OwnableUnauthorizedAccount(address account);
/**
* @dev The owner is not a valid owner account. (eg. `address(0)`)
*/
error OwnableInvalidOwner(address owner);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the address provided by the deployer as the initial owner.
*/
constructor(address initialOwner) {
if (initialOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(initialOwner);
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
_checkOwner();
_;
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if the sender is not the owner.
*/
function _checkOwner() internal view virtual {
if (owner() != _msgSender()) {
revert OwnableUnauthorizedAccount(_msgSender());
}
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby disabling any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_transferOwnership(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 virtual onlyOwner {
if (newOwner == address(0)) {
revert OwnableInvalidOwner(address(0));
}
_transferOwnership(newOwner);
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Internal function without access restriction.
*/
function _transferOwnership(address newOwner) internal virtual {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.3.0) (utils/Pausable.sol)
pragma solidity ^0.8.20;
import {Context} from "../utils/Context.sol";
/**
* @dev Contract module which allows children to implement an emergency stop
* mechanism that can be triggered by an authorized account.
*
* This module is used through inheritance. It will make available the
* modifiers `whenNotPaused` and `whenPaused`, which can be applied to
* the functions of your contract. Note that they will not be pausable by
* simply including this module, only once the modifiers are put in place.
*/
abstract contract Pausable is Context {
bool private _paused;
/**
* @dev Emitted when the pause is triggered by `account`.
*/
event Paused(address account);
/**
* @dev Emitted when the pause is lifted by `account`.
*/
event Unpaused(address account);
/**
* @dev The operation failed because the contract is paused.
*/
error EnforcedPause();
/**
* @dev The operation failed because the contract is not paused.
*/
error ExpectedPause();
/**
* @dev Modifier to make a function callable only when the contract is not paused.
*
* Requirements:
*
* - The contract must not be paused.
*/
modifier whenNotPaused() {
_requireNotPaused();
_;
}
/**
* @dev Modifier to make a function callable only when the contract is paused.
*
* Requirements:
*
* - The contract must be paused.
*/
modifier whenPaused() {
_requirePaused();
_;
}
/**
* @dev Returns true if the contract is paused, and false otherwise.
*/
function paused() public view virtual returns (bool) {
return _paused;
}
/**
* @dev Throws if the contract is paused.
*/
function _requireNotPaused() internal view virtual {
if (paused()) {
revert EnforcedPause();
}
}
/**
* @dev Throws if the contract is not paused.
*/
function _requirePaused() internal view virtual {
if (!paused()) {
revert ExpectedPause();
}
}
/**
* @dev Triggers stopped state.
*
* Requirements:
*
* - The contract must not be paused.
*/
function _pause() internal virtual whenNotPaused {
_paused = true;
emit Paused(_msgSender());
}
/**
* @dev Returns to normal state.
*
* Requirements:
*
* - The contract must be paused.
*/
function _unpause() internal virtual whenPaused {
_paused = false;
emit Unpaused(_msgSender());
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)
pragma solidity ^0.8.20;
/**
* @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 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.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
function _contextSuffixLength() internal view virtual returns (uint256) {
return 0;
}
}{
"remappings": [
"@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
"forge-std/=lib/forge-std/src/",
"erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/",
"halmos-cheatcodes/=lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/",
"openzeppelin-contracts/=lib/openzeppelin-contracts/"
],
"optimizer": {
"enabled": true,
"runs": 200
},
"metadata": {
"useLiteralContent": false,
"bytecodeHash": "ipfs",
"appendCBOR": true
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"evmVersion": "cancun",
"viaIR": true
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_treasury","type":"address"},{"internalType":"address","name":"_stakingContract","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[],"name":"InvalidSplit","type":"error"},{"inputs":[],"name":"NothingToSplit","type":"error"},{"inputs":[],"name":"NothingToWithdraw","type":"error"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"OwnableInvalidOwner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"OwnableUnauthorizedAccount","type":"error"},{"inputs":[],"name":"TransferFailed","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"AutoSplitFailed","type":"event"},{"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":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"toTreasury","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"toStakers","type":"uint256"}],"name":"Split","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"ownerBps","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"stakerBps","type":"uint256"}],"name":"SplitRatioUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"bytes","name":"reason","type":"bytes"}],"name":"StakerRewardFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldStaking","type":"address"},{"indexed":true,"internalType":"address","name":"newStaking","type":"address"}],"name":"StakingContractUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldTreasury","type":"address"},{"indexed":true,"internalType":"address","name":"newTreasury","type":"address"}],"name":"TreasuryUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TreasuryWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"inputs":[],"name":"BASIS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"failureCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSplitStatus","outputs":[{"internalType":"bool","name":"failed","type":"bool"},{"internalType":"uint256","name":"timestamp","type":"uint256"},{"internalType":"uint256","name":"attempts","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastFailureReason","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastFailureTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownerBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingSplit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"retrySplit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_ownerBps","type":"uint256"},{"internalType":"uint256","name":"_stakerBps","type":"uint256"}],"name":"setSplitRatio","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_staking","type":"address"}],"name":"setStakingContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_treasury","type":"address"}],"name":"setTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"split","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakerBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingContract","outputs":[{"internalType":"contract IAshStaking","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasuryWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60803461017a57601f6110aa38819003918201601f19168301916001600160401b0383118484101761017e57808492604094855283398101031261017a57610052602061004b83610192565b9201610192565b3315610167575f8054336001600160a01b0319821681178355604051949290916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a361138860038190556004556001600160a01b031691821561013257506001600160a01b03169081156100fb5760018060a01b0319600254161760025560018060a01b03196001541617600155604051610f0390816101a78239f35b60405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964207374616b696e6760881b6044820152606490fd5b62461bcd60e51b815260206004820152601060248201526f496e76616c696420747265617375727960801b6044820152606490fd5b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361017a5756fe6080604052600436101561001a575b3615610018575f80fd5b005b5f803560e01c8063077cd21f14610c875780630958424314610bb85780630e03b45114610b915780631a6d1d5714610b745780631c3643c614610b46578063313dab2014610b295780633c34af2a1461088c5780633f4ba83a1461081e578063528cfa981461080157806354b9c343146107e357806357bca42d1461074b5780635c975abb1461072657806361d027b3146106fd578063715018a6146106a35780638456cb59146106425780638da5cb5b1461061b5780639dd373b91461059e578063a79c07f914610580578063b53b270714610562578063ee99205c14610539578063f0f44260146104bc578063f2fde38b1461042e5763f765417614610122575061000e565b346103f557806003193601126103f55761013a610e50565b6005546101478147610da0565b90811561041f57600354808302908382040361040b5761271061016c91048093610da0565b9082806103f8575b50508061019c575b5f80516020610e6e8339815191529160409182519182526020820152a180f35b6001546001600160a01b031683813b156103f5578083926004604051809581936317552f6960e21b83525af191826103dc575b50506103c5576101dd610dad565b6101e982600554610d93565b6005556006545f1981146103b15760010160065542600755805167ffffffffffffffff811161039d5761021d600854610d01565b601f8111610335575b506020601f82116001146102a55761028d5f80516020610e6e833981519152959383604096945f80516020610e8e833981519152948a9161029a575b508160011b915f199060031b1c1916176008555b855191829185835287602084015287830190610d6f565b0390a15b9150915061017c565b90508201515f610262565b600886525f80516020610eae83398151915290601f198316875b81811061031d5750936001845f80516020610e8e8339815191529461028d94604099975f80516020610e6e8339815191529b9910610305575b5050811b01600855610276565b8401515f1960f88460031b161c191690555f806102f8565b919260206001819286890151815501940192016102bf565b60088652601f820160051c5f80516020610eae833981519152019060208310610388575b601f0160051c5f80516020610eae83398151915201905b81811061037d5750610226565b868155600101610370565b5f80516020610eae8339815191529150610359565b634e487b7160e01b85526041600452602485fd5b634e487b7160e01b85526011600452602485fd5b5f80516020610e6e83398151915291604091610291565b816103e691610d39565b6103f157835f6101cf565b8380fd5b80fd5b61040191610d93565b6005555f82610174565b634e487b7160e01b84526011600452602484fd5b63452859e760e01b8352600483fd5b50346103f55760203660031901126103f5576004356001600160a01b038116908190036104b85761045d610e2a565b80156104a45781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b5080fd5b50346103f55760203660031901126103f5576004356001600160a01b038116908190036104b8576104eb610e2a565b6104f6811515610dec565b600254816001600160a01b0382167f4ab5be82436d353e61ca18726e984e561f5c1cc7c6d38b29d2553c790434705a8580a36001600160a01b0319161760025580f35b50346103f557806003193601126103f5576001546040516001600160a01b039091168152602090f35b50346103f557806003193601126103f5576020600454604051908152f35b50346103f557806003193601126103f5576020600754604051908152f35b50346103f55760203660031901126103f5576004356001600160a01b038116908190036104b8576105cd610e2a565b6105d8811515610dec565b600154816001600160a01b0382167f7042586b23181180eb30b4798702d7a0233b7fc2551e89806770e8e5d9392e6a8580a36001600160a01b0319161760015580f35b50346103f557806003193601126103f557546040516001600160a01b039091168152602090f35b50346103f557806003193601126103f55761065b610e2a565b610663610e50565b805460ff60a01b1916600160a01b1781556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602090a180f35b50346103f557806003193601126103f5576106bc610e2a565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346103f557806003193601126103f5576002546040516001600160a01b039091168152602090f35b50346103f557806003193601126103f55760ff6020915460a01c166040519015158152f35b50346103f557806003193601126103f55760055480156107d45781600555818080808460018060a01b03600254165af1610783610dad565b50156107c5576002546040519182526001600160a01b0316907f41fdd680478135993bc53fb2ffaf9560951b57ef62ff6badd02b61e018b4f17f90602090a280f35b6312171d8360e31b8252600482fd5b630686827b60e51b8252600482fd5b50346103f557806003193601126103f5576020600354604051908152f35b50346103f557806003193601126103f55760206040516127108152f35b50346103f557806003193601126103f557610837610e2a565b805460ff8160a01c161561087d5760ff60a01b191681556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa90602090a180f35b638dfc202b60e01b8252600482fd5b5034610aef575f366003190112610aef576108a5610e2a565b6108ad610e50565b6005546108ba8147610da0565b908115610b1a576003548083029083820403610b06576127106108df91048093610da0565b908280610af3575b50508061090e575f80516020610e6e8339815191529160409182519182526020820152a180f35b6001546001600160a01b0316803b15610aef575f82916004604051809481936317552f6960e21b83525af19081610ada575b506103c55761094d610dad565b61095982600554610d93565b6005556006545f1981146103b15760010160065542600755805167ffffffffffffffff811161039d5761098d600854610d01565b601f8111610a72575b506020601f82116001146109fb5761028d5f80516020610e6e833981519152959383604096945f80516020610e8e833981519152948a9161029a57508160011b915f199060031b1c191617600855855191829185835287602084015287830190610d6f565b600886525f80516020610eae83398151915290601f198316875b818110610a5a5750936001845f80516020610e8e8339815191529461028d94604099975f80516020610e6e8339815191529b9910610305575050811b01600855610276565b91926020600181928689015181550194019201610a15565b60088652601f820160051c5f80516020610eae833981519152019060208310610ac5575b601f0160051c5f80516020610eae83398151915201905b818110610aba5750610996565b868155600101610aad565b5f80516020610eae8339815191529150610a96565b610ae79194505f90610d39565b5f925f610940565b5f80fd5b610afc91610d93565b6005555f826108e7565b634e487b7160e01b5f52601160045260245ffd5b63452859e760e01b5f5260045ffd5b34610aef575f366003190112610aef576020600554604051908152f35b34610aef575f366003190112610aef5760606006546007549060405191811515835260208301526040820152f35b34610aef575f366003190112610aef576020600654604051908152f35b34610aef575f366003190112610aef576020610bb04760055490610da0565b604051908152f35b34610aef575f366003190112610aef576040515f600854610bd881610d01565b8084529060018116908115610c635750600114610c18575b610c1483610c0081850382610d39565b604051918291602083526020830190610d6f565b0390f35b91905060085f525f80516020610eae833981519152915f905b808210610c4957509091508101602001610c00610bf0565b919260018160209254838588010152019101909291610c31565b60ff191660208086019190915291151560051b84019091019150610c009050610bf0565b34610aef576040366003190112610aef57600435602435610ca6610e2a565b612710610cb38284610d93565b03610cf257816040917f838c973efdbdbfee637ddb196d01338e0123d020ec5c0e06ec2c1788c936f9f1936003558060045582519182526020820152a1005b63bcd55b0f60e01b5f5260045ffd5b90600182811c92168015610d2f575b6020831014610d1b57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610d10565b90601f8019910116810190811067ffffffffffffffff821117610d5b57604052565b634e487b7160e01b5f52604160045260245ffd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b91908201809211610b0657565b91908203918211610b0657565b3d15610de7573d9067ffffffffffffffff8211610d5b5760405191610ddc601f8201601f191660200184610d39565b82523d5f602084013e565b606090565b15610df357565b60405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606490fd5b5f546001600160a01b03163303610e3d57565b63118cdaa760e01b5f523360045260245ffd5b60ff5f5460a01c16610e5e57565b63d93c066560e01b5f5260045ffdfeb20b10d17e0e2505af41fd37a6a1b46824a76d7d940afce430c7ee4aba19a959952999f86711ac63f6ff77499351656fd3698d17a6eba0af1a3c31e58245cadbf3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3a264697066735822122046a372c0e2a5ae2197367a5fd1746aed3b6ef64966ef74a1410106b10c96472464736f6c634300081a003300000000000000000000000018189287bfbdf3bf5c6dc33052b764893c59c7cc0000000000000000000000006b07e2048bff3b5bd06693f2eca3c329321c94bb
Deployed Bytecode
0x6080604052600436101561001a575b3615610018575f80fd5b005b5f803560e01c8063077cd21f14610c875780630958424314610bb85780630e03b45114610b915780631a6d1d5714610b745780631c3643c614610b46578063313dab2014610b295780633c34af2a1461088c5780633f4ba83a1461081e578063528cfa981461080157806354b9c343146107e357806357bca42d1461074b5780635c975abb1461072657806361d027b3146106fd578063715018a6146106a35780638456cb59146106425780638da5cb5b1461061b5780639dd373b91461059e578063a79c07f914610580578063b53b270714610562578063ee99205c14610539578063f0f44260146104bc578063f2fde38b1461042e5763f765417614610122575061000e565b346103f557806003193601126103f55761013a610e50565b6005546101478147610da0565b90811561041f57600354808302908382040361040b5761271061016c91048093610da0565b9082806103f8575b50508061019c575b5f80516020610e6e8339815191529160409182519182526020820152a180f35b6001546001600160a01b031683813b156103f5578083926004604051809581936317552f6960e21b83525af191826103dc575b50506103c5576101dd610dad565b6101e982600554610d93565b6005556006545f1981146103b15760010160065542600755805167ffffffffffffffff811161039d5761021d600854610d01565b601f8111610335575b506020601f82116001146102a55761028d5f80516020610e6e833981519152959383604096945f80516020610e8e833981519152948a9161029a575b508160011b915f199060031b1c1916176008555b855191829185835287602084015287830190610d6f565b0390a15b9150915061017c565b90508201515f610262565b600886525f80516020610eae83398151915290601f198316875b81811061031d5750936001845f80516020610e8e8339815191529461028d94604099975f80516020610e6e8339815191529b9910610305575b5050811b01600855610276565b8401515f1960f88460031b161c191690555f806102f8565b919260206001819286890151815501940192016102bf565b60088652601f820160051c5f80516020610eae833981519152019060208310610388575b601f0160051c5f80516020610eae83398151915201905b81811061037d5750610226565b868155600101610370565b5f80516020610eae8339815191529150610359565b634e487b7160e01b85526041600452602485fd5b634e487b7160e01b85526011600452602485fd5b5f80516020610e6e83398151915291604091610291565b816103e691610d39565b6103f157835f6101cf565b8380fd5b80fd5b61040191610d93565b6005555f82610174565b634e487b7160e01b84526011600452602484fd5b63452859e760e01b8352600483fd5b50346103f55760203660031901126103f5576004356001600160a01b038116908190036104b85761045d610e2a565b80156104a45781546001600160a01b03198116821783556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b5080fd5b50346103f55760203660031901126103f5576004356001600160a01b038116908190036104b8576104eb610e2a565b6104f6811515610dec565b600254816001600160a01b0382167f4ab5be82436d353e61ca18726e984e561f5c1cc7c6d38b29d2553c790434705a8580a36001600160a01b0319161760025580f35b50346103f557806003193601126103f5576001546040516001600160a01b039091168152602090f35b50346103f557806003193601126103f5576020600454604051908152f35b50346103f557806003193601126103f5576020600754604051908152f35b50346103f55760203660031901126103f5576004356001600160a01b038116908190036104b8576105cd610e2a565b6105d8811515610dec565b600154816001600160a01b0382167f7042586b23181180eb30b4798702d7a0233b7fc2551e89806770e8e5d9392e6a8580a36001600160a01b0319161760015580f35b50346103f557806003193601126103f557546040516001600160a01b039091168152602090f35b50346103f557806003193601126103f55761065b610e2a565b610663610e50565b805460ff60a01b1916600160a01b1781556040513381527f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890602090a180f35b50346103f557806003193601126103f5576106bc610e2a565b80546001600160a01b03198116825581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b50346103f557806003193601126103f5576002546040516001600160a01b039091168152602090f35b50346103f557806003193601126103f55760ff6020915460a01c166040519015158152f35b50346103f557806003193601126103f55760055480156107d45781600555818080808460018060a01b03600254165af1610783610dad565b50156107c5576002546040519182526001600160a01b0316907f41fdd680478135993bc53fb2ffaf9560951b57ef62ff6badd02b61e018b4f17f90602090a280f35b6312171d8360e31b8252600482fd5b630686827b60e51b8252600482fd5b50346103f557806003193601126103f5576020600354604051908152f35b50346103f557806003193601126103f55760206040516127108152f35b50346103f557806003193601126103f557610837610e2a565b805460ff8160a01c161561087d5760ff60a01b191681556040513381527f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa90602090a180f35b638dfc202b60e01b8252600482fd5b5034610aef575f366003190112610aef576108a5610e2a565b6108ad610e50565b6005546108ba8147610da0565b908115610b1a576003548083029083820403610b06576127106108df91048093610da0565b908280610af3575b50508061090e575f80516020610e6e8339815191529160409182519182526020820152a180f35b6001546001600160a01b0316803b15610aef575f82916004604051809481936317552f6960e21b83525af19081610ada575b506103c55761094d610dad565b61095982600554610d93565b6005556006545f1981146103b15760010160065542600755805167ffffffffffffffff811161039d5761098d600854610d01565b601f8111610a72575b506020601f82116001146109fb5761028d5f80516020610e6e833981519152959383604096945f80516020610e8e833981519152948a9161029a57508160011b915f199060031b1c191617600855855191829185835287602084015287830190610d6f565b600886525f80516020610eae83398151915290601f198316875b818110610a5a5750936001845f80516020610e8e8339815191529461028d94604099975f80516020610e6e8339815191529b9910610305575050811b01600855610276565b91926020600181928689015181550194019201610a15565b60088652601f820160051c5f80516020610eae833981519152019060208310610ac5575b601f0160051c5f80516020610eae83398151915201905b818110610aba5750610996565b868155600101610aad565b5f80516020610eae8339815191529150610a96565b610ae79194505f90610d39565b5f925f610940565b5f80fd5b610afc91610d93565b6005555f826108e7565b634e487b7160e01b5f52601160045260245ffd5b63452859e760e01b5f5260045ffd5b34610aef575f366003190112610aef576020600554604051908152f35b34610aef575f366003190112610aef5760606006546007549060405191811515835260208301526040820152f35b34610aef575f366003190112610aef576020600654604051908152f35b34610aef575f366003190112610aef576020610bb04760055490610da0565b604051908152f35b34610aef575f366003190112610aef576040515f600854610bd881610d01565b8084529060018116908115610c635750600114610c18575b610c1483610c0081850382610d39565b604051918291602083526020830190610d6f565b0390f35b91905060085f525f80516020610eae833981519152915f905b808210610c4957509091508101602001610c00610bf0565b919260018160209254838588010152019101909291610c31565b60ff191660208086019190915291151560051b84019091019150610c009050610bf0565b34610aef576040366003190112610aef57600435602435610ca6610e2a565b612710610cb38284610d93565b03610cf257816040917f838c973efdbdbfee637ddb196d01338e0123d020ec5c0e06ec2c1788c936f9f1936003558060045582519182526020820152a1005b63bcd55b0f60e01b5f5260045ffd5b90600182811c92168015610d2f575b6020831014610d1b57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691610d10565b90601f8019910116810190811067ffffffffffffffff821117610d5b57604052565b634e487b7160e01b5f52604160045260245ffd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b91908201809211610b0657565b91908203918211610b0657565b3d15610de7573d9067ffffffffffffffff8211610d5b5760405191610ddc601f8201601f191660200184610d39565b82523d5f602084013e565b606090565b15610df357565b60405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606490fd5b5f546001600160a01b03163303610e3d57565b63118cdaa760e01b5f523360045260245ffd5b60ff5f5460a01c16610e5e57565b63d93c066560e01b5f5260045ffdfeb20b10d17e0e2505af41fd37a6a1b46824a76d7d940afce430c7ee4aba19a959952999f86711ac63f6ff77499351656fd3698d17a6eba0af1a3c31e58245cadbf3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee3a264697066735822122046a372c0e2a5ae2197367a5fd1746aed3b6ef64966ef74a1410106b10c96472464736f6c634300081a0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000018189287bfbdf3bf5c6dc33052b764893c59c7cc0000000000000000000000006b07e2048bff3b5bd06693f2eca3c329321c94bb
-----Decoded View---------------
Arg [0] : _treasury (address): 0x18189287bFBdf3BF5C6Dc33052B764893C59c7cc
Arg [1] : _stakingContract (address): 0x6b07E2048BfF3B5bd06693F2ecA3C329321C94BB
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000018189287bfbdf3bf5c6dc33052b764893c59c7cc
Arg [1] : 0000000000000000000000006b07e2048bff3b5bd06693f2eca3c329321c94bb
Loading...
Loading
Loading...
Loading
Net Worth in USD
$2.09
Net Worth in ETH
0.001045
Token Allocations
ETH
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $1,996.11 | 0.001045 | $2.09 |
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.