Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 1,316 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Withdraw V1Token... | 21847237 | 393 days ago | IN | 0 ETH | 0.00008702 | ||||
| Withdraw V2Token... | 21847077 | 393 days ago | IN | 0 ETH | 0.00007438 | ||||
| Deposit | 21847035 | 393 days ago | IN | 0 ETH | 0.00003021 | ||||
| Pause | 21847021 | 393 days ago | IN | 0 ETH | 0.00003476 | ||||
| Deposit | 21846502 | 393 days ago | IN | 0 ETH | 0.00025136 | ||||
| Deposit | 21839816 | 394 days ago | IN | 0 ETH | 0.00009133 | ||||
| Claim | 21834692 | 395 days ago | IN | 0 ETH | 0.00012176 | ||||
| Deposit | 21834684 | 395 days ago | IN | 0 ETH | 0.00012114 | ||||
| Claim | 21833612 | 395 days ago | IN | 0 ETH | 0.00019413 | ||||
| Withdraw V1Token... | 21833096 | 395 days ago | IN | 0 ETH | 0.00004937 | ||||
| Claim | 21832835 | 395 days ago | IN | 0 ETH | 0.00030757 | ||||
| Deposit | 21832831 | 395 days ago | IN | 0 ETH | 0.00027082 | ||||
| Claim | 21832637 | 395 days ago | IN | 0 ETH | 0.00021076 | ||||
| Deposit | 21832623 | 395 days ago | IN | 0 ETH | 0.00018897 | ||||
| Claim | 21830968 | 395 days ago | IN | 0 ETH | 0.00045407 | ||||
| Claim | 21829512 | 395 days ago | IN | 0 ETH | 0.00009827 | ||||
| Deposit | 21829497 | 395 days ago | IN | 0 ETH | 0.0000697 | ||||
| Claim | 21827752 | 395 days ago | IN | 0 ETH | 0.00027985 | ||||
| Deposit | 21827749 | 395 days ago | IN | 0 ETH | 0.00021785 | ||||
| Claim | 21827051 | 396 days ago | IN | 0 ETH | 0.00012251 | ||||
| Deposit | 21827047 | 396 days ago | IN | 0 ETH | 0.00009691 | ||||
| Claim | 21826739 | 396 days ago | IN | 0 ETH | 0.00011625 | ||||
| Deposit | 21826735 | 396 days ago | IN | 0 ETH | 0.00009932 | ||||
| Claim | 21825876 | 396 days ago | IN | 0 ETH | 0.00017163 | ||||
| Deposit | 21825874 | 396 days ago | IN | 0 ETH | 0.00012825 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
CraiMigrationDapp
Compiler Version
v0.8.28+commit.7893614a
Optimization Enabled:
Yes with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.28;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/utils/Pausable.sol";
import "@openzeppelin/contracts/utils/ReentrancyGuard.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
contract CraiMigrationDapp is Ownable, Pausable, ReentrancyGuard {
// Custom errors
error BridgeClosed();
error InvalidAmount();
error NoClaimableTokens();
error ClaimPeriodEnded();
error TransferFailed();
error NotInSnapshot();
error ExceedsSnapshotBalance();
error V2NotSet();
error ClaimNotStarted();
error InvalidAddress();
error InvalidPeriod();
// State variables
IERC20 public immutable v1Token;
IERC20 public v2Token;
uint256 public claimEnd;
bool public claimPhase;
uint256 public totalBridged;
uint256 public totalClaimed;
// Mappings
mapping(address => uint256) public snapshotBalances;
mapping(address => uint256) public deposited;
mapping(address => uint256) public hasClaimed;
// Events
event TokensDeposited(address indexed user, uint256 amount);
event TokensClaimed(address indexed user, uint256 amount);
event V2TokenSet(address indexed token);
event ClaimPhaseStarted(uint256 endTime);
event SnapshotUpdated(address indexed holder, uint256 amount);
event V1TokensWithdrawn(uint256 amount);
event V2TokensWithdrawn(uint256 amount);
event ClaimPeriodUpdated(uint256 newEndTime);
constructor(address _v1Token, address initialOwner) Ownable(initialOwner) {
v1Token = IERC20(_v1Token);
}
// User Functions
function deposit(uint256 amount) external whenNotPaused nonReentrant {
if (amount == 0) revert InvalidAmount();
uint256 snapshotBalance = snapshotBalances[msg.sender];
if (snapshotBalance == 0) revert NotInSnapshot();
uint256 totalDeposited = deposited[msg.sender] + amount;
if (totalDeposited > snapshotBalance) revert ExceedsSnapshotBalance();
deposited[msg.sender] = totalDeposited;
totalBridged += amount;
bool success = v1Token.transferFrom(msg.sender, address(this), amount);
if (!success) revert TransferFailed();
emit TokensDeposited(msg.sender, amount);
}
function claim() external whenNotPaused nonReentrant {
if (address(v2Token) == address(0)) revert V2NotSet();
if (!claimPhase) revert ClaimNotStarted();
if (block.timestamp > claimEnd) revert ClaimPeriodEnded();
if (hasClaimed[msg.sender] == deposited[msg.sender])
revert NoClaimableTokens();
uint256 amount = deposited[msg.sender] - hasClaimed[msg.sender];
if (amount == 0) revert NoClaimableTokens();
hasClaimed[msg.sender] += amount;
totalClaimed += amount;
bool success = v2Token.transfer(msg.sender, amount);
if (!success) revert TransferFailed();
emit TokensClaimed(msg.sender, amount);
}
// Admin Functions
function bulkUpdateSnapshot(
address[] calldata holders,
uint256[] calldata amounts
) external onlyOwner {
if (holders.length != amounts.length) revert InvalidAmount();
for (uint256 i = 0; i < holders.length; i++) {
if (holders[i] == address(0)) revert InvalidAddress();
snapshotBalances[holders[i]] = amounts[i];
emit SnapshotUpdated(holders[i], amounts[i]);
}
}
function updateSnapshotBalance(
address holder,
uint256 amount
) external onlyOwner {
if (holder == address(0)) revert InvalidAddress();
snapshotBalances[holder] = amount;
emit SnapshotUpdated(holder, amount);
}
function setV2Token(address _v2Token) external onlyOwner {
v2Token = IERC20(_v2Token);
emit V2TokenSet(_v2Token);
}
function startClaimPhase(uint256 claimPeriod) external onlyOwner {
if (address(v2Token) == address(0)) revert V2NotSet();
if (claimPeriod == 0) revert InvalidPeriod();
claimPhase = true;
claimEnd = block.timestamp + claimPeriod;
emit ClaimPhaseStarted(claimEnd);
}
function updateClaimPeriod(uint256 newEndTime) external onlyOwner {
if (newEndTime <= block.timestamp) revert InvalidPeriod();
claimEnd = newEndTime;
emit ClaimPeriodUpdated(newEndTime);
}
function withdrawV1Tokens() external onlyOwner {
uint256 balance = v1Token.balanceOf(address(this));
bool success = v1Token.transfer(msg.sender, balance);
if (!success) revert TransferFailed();
emit V1TokensWithdrawn(balance);
}
function withdrawV2Tokens() external onlyOwner {
if (address(v2Token) == address(0)) revert V2NotSet();
uint256 balance = v2Token.balanceOf(address(this));
bool success = v2Token.transfer(msg.sender, balance);
if (!success) revert TransferFailed();
emit V2TokensWithdrawn(balance);
}
// Emergency Functions
function pause() external onlyOwner {
_pause();
}
function unpause() external onlyOwner {
_unpause();
}
// View Functions
function getSnapshotBalance(address user) external view returns (uint256) {
return snapshotBalances[user];
}
function getDepositedAmount(address user) external view returns (uint256) {
return deposited[user];
}
function hasUserClaimed(address user) external view returns (uint256) {
return hasClaimed[user];
}
}// 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.1.0) (token/ERC20/IERC20.sol)
pragma solidity ^0.8.20;
/**
* @dev Interface of the ERC-20 standard as defined in the ERC.
*/
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 value of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the value of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves a `value` amount of 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 value) 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 a `value` amount of tokens 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 value) external returns (bool);
/**
* @dev Moves a `value` amount of tokens from `from` to `to` using the
* allowance mechanism. `value` 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 value) external returns (bool);
}// 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;
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v5.0.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 Initializes the contract in unpaused state.
*/
constructor() {
_paused = false;
}
/**
* @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.1.0) (utils/ReentrancyGuard.sol)
pragma solidity ^0.8.20;
/**
* @dev Contract module that helps prevent reentrant calls to a function.
*
* Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
* available, which can be applied to functions to make sure there are no nested
* (reentrant) calls to them.
*
* Note that because there is a single `nonReentrant` guard, functions marked as
* `nonReentrant` may not call one another. This can be worked around by making
* those functions `private`, and then adding `external` `nonReentrant` entry
* points to them.
*
* TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at,
* consider using {ReentrancyGuardTransient} instead.
*
* TIP: If you would like to learn more about reentrancy and alternative ways
* to protect against it, check out our blog post
* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
*/
abstract contract ReentrancyGuard {
// Booleans are more expensive than uint256 or any type that takes up a full
// word because each write operation emits an extra SLOAD to first read the
// slot's contents, replace the bits taken up by the boolean, and then write
// back. This is the compiler's defense against contract upgrades and
// pointer aliasing, and it cannot be disabled.
// The values being non-zero value makes deployment a bit more expensive,
// but in exchange the refund on every call to nonReentrant will be lower in
// amount. Since refunds are capped to a percentage of the total
// transaction's gas, it is best to keep them low in cases like this one, to
// increase the likelihood of the full refund coming into effect.
uint256 private constant NOT_ENTERED = 1;
uint256 private constant ENTERED = 2;
uint256 private _status;
/**
* @dev Unauthorized reentrant call.
*/
error ReentrancyGuardReentrantCall();
constructor() {
_status = NOT_ENTERED;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and making it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
_nonReentrantBefore();
_;
_nonReentrantAfter();
}
function _nonReentrantBefore() private {
// On the first call to nonReentrant, _status will be NOT_ENTERED
if (_status == ENTERED) {
revert ReentrancyGuardReentrantCall();
}
// Any calls to nonReentrant after this point will fail
_status = ENTERED;
}
function _nonReentrantAfter() private {
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_status = NOT_ENTERED;
}
/**
* @dev Returns true if the reentrancy guard is currently set to "entered", which indicates there is a
* `nonReentrant` function in the call stack.
*/
function _reentrancyGuardEntered() internal view returns (bool) {
return _status == ENTERED;
}
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"evmVersion": "paris",
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_v1Token","type":"address"},{"internalType":"address","name":"initialOwner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BridgeClosed","type":"error"},{"inputs":[],"name":"ClaimNotStarted","type":"error"},{"inputs":[],"name":"ClaimPeriodEnded","type":"error"},{"inputs":[],"name":"EnforcedPause","type":"error"},{"inputs":[],"name":"ExceedsSnapshotBalance","type":"error"},{"inputs":[],"name":"ExpectedPause","type":"error"},{"inputs":[],"name":"InvalidAddress","type":"error"},{"inputs":[],"name":"InvalidAmount","type":"error"},{"inputs":[],"name":"InvalidPeriod","type":"error"},{"inputs":[],"name":"NoClaimableTokens","type":"error"},{"inputs":[],"name":"NotInSnapshot","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":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"TransferFailed","type":"error"},{"inputs":[],"name":"V2NotSet","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newEndTime","type":"uint256"}],"name":"ClaimPeriodUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"endTime","type":"uint256"}],"name":"ClaimPhaseStarted","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":true,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SnapshotUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensClaimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TokensDeposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"V1TokensWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"}],"name":"V2TokenSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"V2TokensWithdrawn","type":"event"},{"inputs":[{"internalType":"address[]","name":"holders","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"bulkUpdateSnapshot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimEnd","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimPhase","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"deposited","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getDepositedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"getSnapshotBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"hasClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"hasUserClaimed","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":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_v2Token","type":"address"}],"name":"setV2Token","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"snapshotBalances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"claimPeriod","type":"uint256"}],"name":"startClaimPhase","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalBridged","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalClaimed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newEndTime","type":"uint256"}],"name":"updateClaimPeriod","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSnapshotBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"v1Token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"v2Token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdrawV1Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawV2Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
60a060405234801561001057600080fd5b5060405161137838038061137883398101604081905261002f916100f7565b806001600160a01b03811661005e57604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b6100678161008b565b50506000805460ff60a01b19169055600180556001600160a01b031660805261012a565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80516001600160a01b03811681146100f257600080fd5b919050565b6000806040838503121561010a57600080fd5b610113836100db565b9150610121602084016100db565b90509250929050565b60805161121e61015a6000396000818161036201528181610b2201528181610bbf0152610d6a015261121e6000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80637f2d56b8116100f9578063a25afbe711610097578063cb13cddb11610071578063cb13cddb14610397578063d54ad2a1146103b7578063e9081ec7146103c0578063f2fde38b146103e957600080fd5b8063a25afbe714610350578063af456cf81461035d578063b6b55f251461038457600080fd5b80638da5cb5b116100d35780638da5cb5b146102fb5780639d5179421461030c5780639ef19d601461031f578063a195b69c1461032757600080fd5b80637f2d56b8146102cd5780638456cb59146102e0578063857dab89146102e857600080fd5b80634e71d92d1161016657806367a1791a1161014057806367a1791a1461027c578063715018a61461028557806373b2e80e1461028d57806374d83be5146102ad57600080fd5b80634e71d92d1461022d5780635c975abb14610235578063646b45b71461025357600080fd5b8063086f09b5146101ae5780630dbbc0aa146101c35780630dd70613146101f357806328a1cca1146102065780633ccfa92f1461020e5780633f4ba83a14610225575b600080fd5b6101c16101bc366004611017565b6103fc565b005b6002546101d6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101c161020136600461104c565b6104a1565b6101c16104f3565b61021760035481565b6040519081526020016101ea565b6101c1610664565b6101c1610676565b600054600160a01b900460ff165b60405190151581526020016101ea565b61021761026136600461104c565b6001600160a01b031660009081526007602052604090205490565b61021760055481565b6101c161088a565b61021761029b36600461104c565b60096020526000908152604090205481565b6102176102bb36600461104c565b60076020526000908152604090205481565b6101c16102db3660046110ba565b61089c565b6101c1610a0d565b6101c16102f636600461112b565b610a1d565b6000546001600160a01b03166101d6565b6101c161031a366004611017565b610aa5565b6101c1610b02565b61021761033536600461104c565b6001600160a01b031660009081526009602052604090205490565b6004546102439060ff1681565b6101d67f000000000000000000000000000000000000000000000000000000000000000081565b6101c1610392366004611017565b610c7c565b6102176103a536600461104c565b60086020526000908152604090205481565b61021760065481565b6102176103ce36600461104c565b6001600160a01b031660009081526008602052604090205490565b6101c16103f736600461104c565b610e43565b610404610e83565b6002546001600160a01b031661042d5760405163f46f17cd60e01b815260040160405180910390fd5b8060000361044e576040516302e8f35960e31b815260040160405180910390fd5b6004805460ff19166001179055610465814261116b565b60038190556040519081527f10e6e502ed45e7cc44ec7f44380e991d5651824cdee186a8c73b487aefcfc0fe906020015b60405180910390a150565b6104a9610e83565b600280546001600160a01b0319166001600160a01b0383169081179091556040517f628a529a4f3aa58ba413cfb0d3b90ebef77a18b4f79775d6d71809425a1af12d90600090a250565b6104fb610e83565b6002546001600160a01b03166105245760405163f46f17cd60e01b815260040160405180910390fd5b6002546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801561056d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105919190611184565b60025460405163a9059cbb60e01b8152336004820152602481018390529192506000916001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156105e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060c919061119d565b90508061062c576040516312171d8360e31b815260040160405180910390fd5b6040518281527f6f6d0190d69d16030238e8faf86f3662e187b5bda90f0991012142fa07571b14906020015b60405180910390a15050565b61066c610e83565b610674610eb0565b565b61067e610f05565b610686610f30565b6002546001600160a01b03166106af5760405163f46f17cd60e01b815260040160405180910390fd5b60045460ff166106d257604051635874e70f60e11b815260040160405180910390fd5b6003544211156106f55760405163e3ea984960e01b815260040160405180910390fd5b336000908152600860209081526040808320546009909252909120540361072f5760405163b8d485a560e01b815260040160405180910390fd5b33600090815260096020908152604080832054600890925282205461075491906111bf565b9050806000036107775760405163b8d485a560e01b815260040160405180910390fd5b336000908152600960205260408120805483929061079690849061116b565b9250508190555080600660008282546107af919061116b565b909155505060025460405163a9059cbb60e01b8152336004820152602481018390526000916001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082a919061119d565b90508061084a576040516312171d8360e31b815260040160405180910390fd5b60405182815233907f896e034966eaaf1adc54acc0f257056febbd300c9e47182cf761982cf1f5e4309060200160405180910390a2505061067460018055565b610892610e83565b6106746000610f5a565b6108a4610e83565b8281146108c45760405163162908e360e11b815260040160405180910390fd5b60005b83811015610a065760008585838181106108e3576108e36111d2565b90506020020160208101906108f8919061104c565b6001600160a01b03160361091f5760405163e6c4247b60e01b815260040160405180910390fd5b828282818110610931576109316111d2565b905060200201356007600087878581811061094e5761094e6111d2565b9050602002016020810190610963919061104c565b6001600160a01b0316815260208101919091526040016000205584848281811061098f5761098f6111d2565b90506020020160208101906109a4919061104c565b6001600160a01b03167f750fc22e71227a7fc5e776880ab95ee53ba7e86aa18f5f94717b684b8c72f52d8484848181106109e0576109e06111d2565b905060200201356040516109f691815260200190565b60405180910390a26001016108c7565b5050505050565b610a15610e83565b610674610faa565b610a25610e83565b6001600160a01b038216610a4c5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b03821660008181526007602052604090819020839055517f750fc22e71227a7fc5e776880ab95ee53ba7e86aa18f5f94717b684b8c72f52d90610a999084815260200190565b60405180910390a25050565b610aad610e83565b428111610acd576040516302e8f35960e31b815260040160405180910390fd5b60038190556040518181527f3f20a009f17f2ae49d568ae2ae4b958feae59ab94a76605bafdae03dbe15659390602001610496565b610b0a610e83565b6040516370a0823160e01b81523060048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401602060405180830381865afa158015610b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b959190611184565b60405163a9059cbb60e01b8152336004820152602481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303816000875af1158015610c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2c919061119d565b905080610c4c576040516312171d8360e31b815260040160405180910390fd5b6040518281527f0fec4f75933261b93c2539c1a95f31425b3347ab2d3cc570af2737dafc065b1890602001610658565b610c84610f05565b610c8c610f30565b80600003610cad5760405163162908e360e11b815260040160405180910390fd5b3360009081526007602052604081205490819003610cde57604051633802147960e11b815260040160405180910390fd5b33600090815260086020526040812054610cf990849061116b565b905081811115610d1c57604051631be1823560e21b815260040160405180910390fd5b33600090815260086020526040812082905560058054859290610d4090849061116b565b90915550506040516323b872dd60e01b8152336004820152306024820152604481018490526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610dbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddf919061119d565b905080610dff576040516312171d8360e31b815260040160405180910390fd5b60405184815233907f59062170a285eb80e8c6b8ced60428442a51910635005233fc4ce084a475845e9060200160405180910390a2505050610e4060018055565b50565b610e4b610e83565b6001600160a01b038116610e7a57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610e4081610f5a565b6000546001600160a01b031633146106745760405163118cdaa760e01b8152336004820152602401610e71565b610eb8610fed565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600054600160a01b900460ff16156106745760405163d93c066560e01b815260040160405180910390fd5b600260015403610f5357604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610fb2610f05565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610ee83390565b600054600160a01b900460ff1661067457604051638dfc202b60e01b815260040160405180910390fd5b60006020828403121561102957600080fd5b5035919050565b80356001600160a01b038116811461104757600080fd5b919050565b60006020828403121561105e57600080fd5b61106782611030565b9392505050565b60008083601f84011261108057600080fd5b50813567ffffffffffffffff81111561109857600080fd5b6020830191508360208260051b85010111156110b357600080fd5b9250929050565b600080600080604085870312156110d057600080fd5b843567ffffffffffffffff8111156110e757600080fd5b6110f38782880161106e565b909550935050602085013567ffffffffffffffff81111561111357600080fd5b61111f8782880161106e565b95989497509550505050565b6000806040838503121561113e57600080fd5b61114783611030565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561117e5761117e611155565b92915050565b60006020828403121561119657600080fd5b5051919050565b6000602082840312156111af57600080fd5b8151801515811461106757600080fd5b8181038181111561117e5761117e611155565b634e487b7160e01b600052603260045260246000fdfea26469706673582212202564939eeff49436125b2e116235c12f1aba565bf41fc555527a364269c6e41364736f6c634300081c00330000000000000000000000003f66ae0c8e9fb57f661af4ba8c8445d36ec5d7f70000000000000000000000001e4762f6b7cb0272b7dfd574ab8d21441b4ba178
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101a95760003560e01c80637f2d56b8116100f9578063a25afbe711610097578063cb13cddb11610071578063cb13cddb14610397578063d54ad2a1146103b7578063e9081ec7146103c0578063f2fde38b146103e957600080fd5b8063a25afbe714610350578063af456cf81461035d578063b6b55f251461038457600080fd5b80638da5cb5b116100d35780638da5cb5b146102fb5780639d5179421461030c5780639ef19d601461031f578063a195b69c1461032757600080fd5b80637f2d56b8146102cd5780638456cb59146102e0578063857dab89146102e857600080fd5b80634e71d92d1161016657806367a1791a1161014057806367a1791a1461027c578063715018a61461028557806373b2e80e1461028d57806374d83be5146102ad57600080fd5b80634e71d92d1461022d5780635c975abb14610235578063646b45b71461025357600080fd5b8063086f09b5146101ae5780630dbbc0aa146101c35780630dd70613146101f357806328a1cca1146102065780633ccfa92f1461020e5780633f4ba83a14610225575b600080fd5b6101c16101bc366004611017565b6103fc565b005b6002546101d6906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6101c161020136600461104c565b6104a1565b6101c16104f3565b61021760035481565b6040519081526020016101ea565b6101c1610664565b6101c1610676565b600054600160a01b900460ff165b60405190151581526020016101ea565b61021761026136600461104c565b6001600160a01b031660009081526007602052604090205490565b61021760055481565b6101c161088a565b61021761029b36600461104c565b60096020526000908152604090205481565b6102176102bb36600461104c565b60076020526000908152604090205481565b6101c16102db3660046110ba565b61089c565b6101c1610a0d565b6101c16102f636600461112b565b610a1d565b6000546001600160a01b03166101d6565b6101c161031a366004611017565b610aa5565b6101c1610b02565b61021761033536600461104c565b6001600160a01b031660009081526009602052604090205490565b6004546102439060ff1681565b6101d67f0000000000000000000000003f66ae0c8e9fb57f661af4ba8c8445d36ec5d7f781565b6101c1610392366004611017565b610c7c565b6102176103a536600461104c565b60086020526000908152604090205481565b61021760065481565b6102176103ce36600461104c565b6001600160a01b031660009081526008602052604090205490565b6101c16103f736600461104c565b610e43565b610404610e83565b6002546001600160a01b031661042d5760405163f46f17cd60e01b815260040160405180910390fd5b8060000361044e576040516302e8f35960e31b815260040160405180910390fd5b6004805460ff19166001179055610465814261116b565b60038190556040519081527f10e6e502ed45e7cc44ec7f44380e991d5651824cdee186a8c73b487aefcfc0fe906020015b60405180910390a150565b6104a9610e83565b600280546001600160a01b0319166001600160a01b0383169081179091556040517f628a529a4f3aa58ba413cfb0d3b90ebef77a18b4f79775d6d71809425a1af12d90600090a250565b6104fb610e83565b6002546001600160a01b03166105245760405163f46f17cd60e01b815260040160405180910390fd5b6002546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa15801561056d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105919190611184565b60025460405163a9059cbb60e01b8152336004820152602481018390529192506000916001600160a01b039091169063a9059cbb906044016020604051808303816000875af11580156105e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061060c919061119d565b90508061062c576040516312171d8360e31b815260040160405180910390fd5b6040518281527f6f6d0190d69d16030238e8faf86f3662e187b5bda90f0991012142fa07571b14906020015b60405180910390a15050565b61066c610e83565b610674610eb0565b565b61067e610f05565b610686610f30565b6002546001600160a01b03166106af5760405163f46f17cd60e01b815260040160405180910390fd5b60045460ff166106d257604051635874e70f60e11b815260040160405180910390fd5b6003544211156106f55760405163e3ea984960e01b815260040160405180910390fd5b336000908152600860209081526040808320546009909252909120540361072f5760405163b8d485a560e01b815260040160405180910390fd5b33600090815260096020908152604080832054600890925282205461075491906111bf565b9050806000036107775760405163b8d485a560e01b815260040160405180910390fd5b336000908152600960205260408120805483929061079690849061116b565b9250508190555080600660008282546107af919061116b565b909155505060025460405163a9059cbb60e01b8152336004820152602481018390526000916001600160a01b03169063a9059cbb906044016020604051808303816000875af1158015610806573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082a919061119d565b90508061084a576040516312171d8360e31b815260040160405180910390fd5b60405182815233907f896e034966eaaf1adc54acc0f257056febbd300c9e47182cf761982cf1f5e4309060200160405180910390a2505061067460018055565b610892610e83565b6106746000610f5a565b6108a4610e83565b8281146108c45760405163162908e360e11b815260040160405180910390fd5b60005b83811015610a065760008585838181106108e3576108e36111d2565b90506020020160208101906108f8919061104c565b6001600160a01b03160361091f5760405163e6c4247b60e01b815260040160405180910390fd5b828282818110610931576109316111d2565b905060200201356007600087878581811061094e5761094e6111d2565b9050602002016020810190610963919061104c565b6001600160a01b0316815260208101919091526040016000205584848281811061098f5761098f6111d2565b90506020020160208101906109a4919061104c565b6001600160a01b03167f750fc22e71227a7fc5e776880ab95ee53ba7e86aa18f5f94717b684b8c72f52d8484848181106109e0576109e06111d2565b905060200201356040516109f691815260200190565b60405180910390a26001016108c7565b5050505050565b610a15610e83565b610674610faa565b610a25610e83565b6001600160a01b038216610a4c5760405163e6c4247b60e01b815260040160405180910390fd5b6001600160a01b03821660008181526007602052604090819020839055517f750fc22e71227a7fc5e776880ab95ee53ba7e86aa18f5f94717b684b8c72f52d90610a999084815260200190565b60405180910390a25050565b610aad610e83565b428111610acd576040516302e8f35960e31b815260040160405180910390fd5b60038190556040518181527f3f20a009f17f2ae49d568ae2ae4b958feae59ab94a76605bafdae03dbe15659390602001610496565b610b0a610e83565b6040516370a0823160e01b81523060048201526000907f0000000000000000000000003f66ae0c8e9fb57f661af4ba8c8445d36ec5d7f76001600160a01b0316906370a0823190602401602060405180830381865afa158015610b71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b959190611184565b60405163a9059cbb60e01b8152336004820152602481018290529091506000906001600160a01b037f0000000000000000000000003f66ae0c8e9fb57f661af4ba8c8445d36ec5d7f7169063a9059cbb906044016020604051808303816000875af1158015610c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2c919061119d565b905080610c4c576040516312171d8360e31b815260040160405180910390fd5b6040518281527f0fec4f75933261b93c2539c1a95f31425b3347ab2d3cc570af2737dafc065b1890602001610658565b610c84610f05565b610c8c610f30565b80600003610cad5760405163162908e360e11b815260040160405180910390fd5b3360009081526007602052604081205490819003610cde57604051633802147960e11b815260040160405180910390fd5b33600090815260086020526040812054610cf990849061116b565b905081811115610d1c57604051631be1823560e21b815260040160405180910390fd5b33600090815260086020526040812082905560058054859290610d4090849061116b565b90915550506040516323b872dd60e01b8152336004820152306024820152604481018490526000907f0000000000000000000000003f66ae0c8e9fb57f661af4ba8c8445d36ec5d7f76001600160a01b0316906323b872dd906064016020604051808303816000875af1158015610dbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddf919061119d565b905080610dff576040516312171d8360e31b815260040160405180910390fd5b60405184815233907f59062170a285eb80e8c6b8ced60428442a51910635005233fc4ce084a475845e9060200160405180910390a2505050610e4060018055565b50565b610e4b610e83565b6001600160a01b038116610e7a57604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b610e4081610f5a565b6000546001600160a01b031633146106745760405163118cdaa760e01b8152336004820152602401610e71565b610eb8610fed565b6000805460ff60a01b191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600054600160a01b900460ff16156106745760405163d93c066560e01b815260040160405180910390fd5b600260015403610f5357604051633ee5aeb560e01b815260040160405180910390fd5b6002600155565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610fb2610f05565b6000805460ff60a01b1916600160a01b1790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610ee83390565b600054600160a01b900460ff1661067457604051638dfc202b60e01b815260040160405180910390fd5b60006020828403121561102957600080fd5b5035919050565b80356001600160a01b038116811461104757600080fd5b919050565b60006020828403121561105e57600080fd5b61106782611030565b9392505050565b60008083601f84011261108057600080fd5b50813567ffffffffffffffff81111561109857600080fd5b6020830191508360208260051b85010111156110b357600080fd5b9250929050565b600080600080604085870312156110d057600080fd5b843567ffffffffffffffff8111156110e757600080fd5b6110f38782880161106e565b909550935050602085013567ffffffffffffffff81111561111357600080fd5b61111f8782880161106e565b95989497509550505050565b6000806040838503121561113e57600080fd5b61114783611030565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561117e5761117e611155565b92915050565b60006020828403121561119657600080fd5b5051919050565b6000602082840312156111af57600080fd5b8151801515811461106757600080fd5b8181038181111561117e5761117e611155565b634e487b7160e01b600052603260045260246000fdfea26469706673582212202564939eeff49436125b2e116235c12f1aba565bf41fc555527a364269c6e41364736f6c634300081c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000003f66ae0c8e9fb57f661af4ba8c8445d36ec5d7f70000000000000000000000001e4762f6b7cb0272b7dfd574ab8d21441b4ba178
-----Decoded View---------------
Arg [0] : _v1Token (address): 0x3F66aE0c8E9Fb57f661aF4Ba8C8445D36ec5d7F7
Arg [1] : initialOwner (address): 0x1E4762F6b7cB0272B7DfD574Ab8d21441B4Ba178
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000003f66ae0c8e9fb57f661af4ba8c8445d36ec5d7f7
Arg [1] : 0000000000000000000000001e4762f6b7cb0272b7dfd574ab8d21441b4ba178
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 ]
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.