Source Code
Overview
ETH Balance
0 ETH
ETH Value
$0.00Latest 25 from a total of 9,321 transactions
| Transaction Hash |
|
Block
|
From
|
To
|
|||||
|---|---|---|---|---|---|---|---|---|---|
| Claim | 426950390 | 2 days ago | IN | 0 ETH | 0.00005012 | ||||
| Claim | 426950148 | 2 days ago | IN | 0 ETH | 0.00005023 | ||||
| Claim | 426777541 | 2 days ago | IN | 0 ETH | 0.00005082 | ||||
| Claim | 426517414 | 3 days ago | IN | 0 ETH | 0.00005441 | ||||
| Claim | 426183821 | 4 days ago | IN | 0 ETH | 0.00005003 | ||||
| Claim | 426172764 | 4 days ago | IN | 0 ETH | 0.00005003 | ||||
| Claim | 426137227 | 4 days ago | IN | 0 ETH | 0.00004989 | ||||
| Claim | 426018211 | 5 days ago | IN | 0 ETH | 0.00005019 | ||||
| Claim | 425436534 | 6 days ago | IN | 0 ETH | 0.0000997 | ||||
| Claim | 425421068 | 6 days ago | IN | 0 ETH | 0.00005017 | ||||
| Claim | 425390966 | 6 days ago | IN | 0 ETH | 0.00005004 | ||||
| Claim | 425387089 | 6 days ago | IN | 0 ETH | 0.00009973 | ||||
| Claim | 425133370 | 7 days ago | IN | 0 ETH | 0.00005001 | ||||
| Claim | 425132828 | 7 days ago | IN | 0 ETH | 0.00005005 | ||||
| Claim | 425053024 | 7 days ago | IN | 0 ETH | 0.00005004 | ||||
| Claim | 424799374 | 8 days ago | IN | 0 ETH | 0.00005782 | ||||
| Claim | 424765995 | 8 days ago | IN | 0 ETH | 0.00005008 | ||||
| Claim | 424759877 | 8 days ago | IN | 0 ETH | 0.00005042 | ||||
| Claim | 424757105 | 8 days ago | IN | 0 ETH | 0.00005012 | ||||
| Claim | 424756152 | 8 days ago | IN | 0 ETH | 0.00005012 | ||||
| Claim | 424754744 | 8 days ago | IN | 0 ETH | 0.00005011 | ||||
| Claim | 424751876 | 8 days ago | IN | 0 ETH | 0.00005 | ||||
| Claim | 424747511 | 8 days ago | IN | 0 ETH | 0.00004999 | ||||
| Claim | 424745632 | 8 days ago | IN | 0 ETH | 0.00005033 | ||||
| Claim | 424743741 | 8 days ago | IN | 0 ETH | 0.00005 |
Cross-Chain Transactions
Loading...
Loading
Contract Name:
ClaimHelper
Compiler Version
v0.8.20+commit.a1b79de6
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED
// Copyright (c) Eywa.Fi, 2021-2023 - all rights reserved
pragma solidity ^0.8.17;
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
import "./interfaces/IVestingManager.sol";
import "./interfaces/IManagedVestingWallet.sol";
import "./interfaces/IWalletFactory.sol";
contract ClaimHelper is ReentrancyGuard {
struct VestingData {
address manager;
uint256 amount;
bytes32[] proof;
}
address public EYWA;
constructor(address token) {
require(token != address(0), "ClaimHelper: zero address");
EYWA = token;
}
function claim(
address beneficiary,
VestingData[] calldata data
) external nonReentrant {
for (uint256 i; i < data.length; ++i) {
IVestingByWhitelist impl = IVestingByWhitelist(data[i].manager);
try impl.claim(beneficiary, data[i].amount, data[i].proof) {
} catch Error(string memory reason) {
revert(reason);
} catch Panic(uint256) {
revert("ClaimHelper: something went wrong");
} catch (bytes memory) {
revert("ClaimHelper: something went wrong");
}
}
}
function releasable(
address beneficiary,
address factory,
address[] calldata managers
) external view returns (uint256[] memory amounts) {
IWalletFactory factoryImpl = IWalletFactory(factory);
amounts = new uint256[](managers.length);
for (uint256 i; i < managers.length; ++i) {
address wallet = factoryImpl.walletFor(beneficiary, managers[i], 0, true);
if (wallet != address(0)) {
IVestingWallet walletImpl = IVestingWallet(wallet);
amounts[i] = walletImpl.releasable(EYWA);
}
}
}
}// SPDX-License-Identifier: MIT
// OpenZeppelin Contracts (last updated v4.9.0) (security/ReentrancyGuard.sol)
pragma solidity ^0.8.0;
/**
* @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 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;
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
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
// 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;
}
}// SPDX-License-Identifier: UNLICENSED
// Copyright (c) Eywa.Fi, 2021-2023 - all rights reserved
pragma solidity ^0.8.17;
import "./IWalletFactory.sol";
interface IVestingWallet {
function start() external view returns (uint256);
function duration() external view returns (uint256);
function cliff(uint64 timestamp) external view returns (uint256);
function beneficiary() external view returns (address);
function releasable(address token) external view returns (uint256);
function released(address token) external view returns (uint256);
}
interface IManagedVestingWallet is IVestingWallet {
function vestingManager() external view returns (address);
}
interface ITransferableVestingWallet1 is IManagedVestingWallet {
function pinnedTo() external view returns (uint256);
function pin(uint256 tokenId_) external;
function unpin(uint256 tokenId_) external;
function merge(address to) external;
function increaseReleased(address token, uint256 amount) external;
}
interface ITransferableVestingWallet2 is ITransferableVestingWallet1 {
function transfer(address beneficiary_, uint8 v, bytes32 r, bytes32 s, uint256 deadline) external;
function transfer(address beneficiary_) external;
}// SPDX-License-Identifier: UNLICENSED
// Copyright (c) Eywa.Fi, 2021-2023 - all rights reserved
pragma solidity ^0.8.17;
import "./IWalletFactory.sol";
interface IVestingManager {
function PERCENTAGE_DENOM() external view returns (uint256);
function token() external view returns (address);
function NFT() external view returns (address);
function DAO() external view returns (address);
function start() external view returns (uint64);
function duration() external view returns (uint64);
function allowMultipleReleases() external view returns (bool);
function cliff(uint256 timestamp) external view returns (uint256);
function setStart(uint64) external;
function setDuration(uint64) external;
function addCliff(uint256 timestamp, uint256 cliff_) external;
function removeCliff(uint256 cliffId) external;
function setNFT(address NFT_) external;
function setDAO(address DAO_) external;
function walletFactory() external view returns (address);
function attachWallet(address currentBeneficiary, address newBeneficiary) external;
function getBeneficiaryWallets(address) external view returns (address[] memory wallets);
}
interface IVestingByWhitelist is IVestingManager {
function claim(address beneficiary, uint256 amount, bytes32[] calldata merkleProof) external;
}
interface IVestingByNFT is IVestingManager {
function claim(address beneficiary, uint256 amount, uint256 tokenId) external returns (address);
function transferToWallet(address wallet, uint256 amount) external;
}// SPDX-License-Identifier: UNLICENSED
// Copyright (c) Eywa.Fi, 2021-2023 - all rights reserved
pragma solidity ^0.8.17;
interface IWalletFactory {
function walletFor(address beneficiary, address vestingManager, uint256 idx, bool strict) external view returns (address);
function createWallet(address beneficiary, address vestingManager, uint256 idx) external returns (address);
function walletToIdx(address wallet) external returns (uint256);
function isValidWallet(address wallet) external returns (bool);
}{
"optimizer": {
"enabled": true,
"runs": 200
},
"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":"token","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"EYWA","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"beneficiary","type":"address"},{"components":[{"internalType":"address","name":"manager","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes32[]","name":"proof","type":"bytes32[]"}],"internalType":"struct ClaimHelper.VestingData[]","name":"data","type":"tuple[]"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"beneficiary","type":"address"},{"internalType":"address","name":"factory","type":"address"},{"internalType":"address[]","name":"managers","type":"address[]"}],"name":"releasable","outputs":[{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"stateMutability":"view","type":"function"}]Contract Creation Code
608060405234801561000f575f80fd5b506040516109eb3803806109eb83398101604081905261002e916100b1565b60015f556001600160a01b03811661008c5760405162461bcd60e51b815260206004820152601960248201527f436c61696d48656c7065723a207a65726f206164647265737300000000000000604482015260640160405180910390fd5b600180546001600160a01b0319166001600160a01b03929092169190911790556100de565b5f602082840312156100c1575f80fd5b81516001600160a01b03811681146100d7575f80fd5b9392505050565b610900806100eb5f395ff3fe608060405234801561000f575f80fd5b506004361061003f575f3560e01c80632dbb963a146100435780634cd47f3914610058578063e5eb1ac414610088575b5f80fd5b6100566100513660046104fd565b6100a8565b005b60015461006b906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61009b61009636600461054e565b61028a565b60405161007f91906105af565b6100b0610447565b5f5b8181101561027b575f8383838181106100cd576100cd6105f2565b90506020028101906100df9190610606565b6100ed906020810190610624565b9050806001600160a01b0316633d13f87486868686818110610111576101116105f2565b90506020028101906101239190610606565b60200135878787818110610139576101396105f2565b905060200281019061014b9190610606565b610159906040810190610646565b6040518563ffffffff1660e01b8152600401610178949392919061068c565b5f604051808303815f87803b15801561018f575f80fd5b505af19250505080156101a0575060015b61026a576101ac6106dc565b806308c379a0036101ee57506101c0610742565b806101cb5750610223565b8060405162461bcd60e51b81526004016101e591906107cb565b60405180910390fd5b634e487b710361022357610200610816565b9061020b5750610223565b60405162461bcd60e51b81526004016101e590610833565b3d80801561024c576040519150601f19603f3d011682016040523d82523d5f602084013e610251565b606091505b5060405162461bcd60e51b81526004016101e590610833565b5061027481610874565b90506100b2565b5061028560015f55565b505050565b6060838267ffffffffffffffff8111156102a6576102a66106f5565b6040519080825280602002602001820160405280156102cf578160200160208202803683370190505b5091505f5b8381101561043d575f826001600160a01b031663cea4bb8b898888868181106102ff576102ff6105f2565b90506020020160208101906103149190610624565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201525f604482015260016064820152608401602060405180830381865afa15801561036a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061038e9190610898565b90506001600160a01b0381161561042c576001546040516351fc756760e11b81526001600160a01b039182166004820152829182169063a3f8eace90602401602060405180830381865afa1580156103e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061040c91906108b3565b85848151811061041e5761041e6105f2565b602002602001018181525050505b5061043681610874565b90506102d4565b5050949350505050565b60025f54036104985760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101e5565b60025f55565b6001600160a01b03811681146104b2575f80fd5b50565b5f8083601f8401126104c5575f80fd5b50813567ffffffffffffffff8111156104dc575f80fd5b6020830191508360208260051b85010111156104f6575f80fd5b9250929050565b5f805f6040848603121561050f575f80fd5b833561051a8161049e565b9250602084013567ffffffffffffffff811115610535575f80fd5b610541868287016104b5565b9497909650939450505050565b5f805f8060608587031215610561575f80fd5b843561056c8161049e565b9350602085013561057c8161049e565b9250604085013567ffffffffffffffff811115610597575f80fd5b6105a3878288016104b5565b95989497509550505050565b602080825282518282018190525f9190848201906040850190845b818110156105e6578351835292840192918401916001016105ca565b50909695505050505050565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e1983360301811261061a575f80fd5b9190910192915050565b5f60208284031215610634575f80fd5b813561063f8161049e565b9392505050565b5f808335601e1984360301811261065b575f80fd5b83018035915067ffffffffffffffff821115610675575f80fd5b6020019150600581901b36038213156104f6575f80fd5b6001600160a01b03851681526020810184905260606040820181905281018290525f6001600160fb1b038311156106c1575f80fd5b8260051b808560808501379190910160800195945050505050565b5f60033d11156106f25760045f803e505f5160e01c5b90565b634e487b7160e01b5f52604160045260245ffd5b601f8201601f1916810167ffffffffffffffff8111828210171561073b57634e487b7160e01b5f52604160045260245ffd5b6040525050565b5f60443d101561074f5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561077f57505050505090565b82850191508151818111156107975750505050505090565b843d87010160208285010111156107b15750505050505090565b6107c060208286010187610709565b509095945050505050565b5f6020808352835180828501525f5b818110156107f6578581018301518582016040015282016107da565b505f604082860101526040601f19601f8301168501019250505092915050565b5f8060233d111561082f57602060045f3e50505f516001905b9091565b60208082526021908201527f436c61696d48656c7065723a20736f6d657468696e672077656e742077726f6e6040820152606760f81b606082015260800190565b5f6001820161089157634e487b7160e01b5f52601160045260245ffd5b5060010190565b5f602082840312156108a8575f80fd5b815161063f8161049e565b5f602082840312156108c3575f80fd5b505191905056fea264697066735822122058e3369d23328924246bf30b4de3fd229c615ae696971123d505659c5037a87264736f6c634300081400330000000000000000000000007a10f506e4c7658e6ad15fdf0443d450b7fa80d7
Deployed Bytecode
0x608060405234801561000f575f80fd5b506004361061003f575f3560e01c80632dbb963a146100435780634cd47f3914610058578063e5eb1ac414610088575b5f80fd5b6100566100513660046104fd565b6100a8565b005b60015461006b906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b61009b61009636600461054e565b61028a565b60405161007f91906105af565b6100b0610447565b5f5b8181101561027b575f8383838181106100cd576100cd6105f2565b90506020028101906100df9190610606565b6100ed906020810190610624565b9050806001600160a01b0316633d13f87486868686818110610111576101116105f2565b90506020028101906101239190610606565b60200135878787818110610139576101396105f2565b905060200281019061014b9190610606565b610159906040810190610646565b6040518563ffffffff1660e01b8152600401610178949392919061068c565b5f604051808303815f87803b15801561018f575f80fd5b505af19250505080156101a0575060015b61026a576101ac6106dc565b806308c379a0036101ee57506101c0610742565b806101cb5750610223565b8060405162461bcd60e51b81526004016101e591906107cb565b60405180910390fd5b634e487b710361022357610200610816565b9061020b5750610223565b60405162461bcd60e51b81526004016101e590610833565b3d80801561024c576040519150601f19603f3d011682016040523d82523d5f602084013e610251565b606091505b5060405162461bcd60e51b81526004016101e590610833565b5061027481610874565b90506100b2565b5061028560015f55565b505050565b6060838267ffffffffffffffff8111156102a6576102a66106f5565b6040519080825280602002602001820160405280156102cf578160200160208202803683370190505b5091505f5b8381101561043d575f826001600160a01b031663cea4bb8b898888868181106102ff576102ff6105f2565b90506020020160208101906103149190610624565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201525f604482015260016064820152608401602060405180830381865afa15801561036a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061038e9190610898565b90506001600160a01b0381161561042c576001546040516351fc756760e11b81526001600160a01b039182166004820152829182169063a3f8eace90602401602060405180830381865afa1580156103e8573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061040c91906108b3565b85848151811061041e5761041e6105f2565b602002602001018181525050505b5061043681610874565b90506102d4565b5050949350505050565b60025f54036104985760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016101e5565b60025f55565b6001600160a01b03811681146104b2575f80fd5b50565b5f8083601f8401126104c5575f80fd5b50813567ffffffffffffffff8111156104dc575f80fd5b6020830191508360208260051b85010111156104f6575f80fd5b9250929050565b5f805f6040848603121561050f575f80fd5b833561051a8161049e565b9250602084013567ffffffffffffffff811115610535575f80fd5b610541868287016104b5565b9497909650939450505050565b5f805f8060608587031215610561575f80fd5b843561056c8161049e565b9350602085013561057c8161049e565b9250604085013567ffffffffffffffff811115610597575f80fd5b6105a3878288016104b5565b95989497509550505050565b602080825282518282018190525f9190848201906040850190845b818110156105e6578351835292840192918401916001016105ca565b50909695505050505050565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e1983360301811261061a575f80fd5b9190910192915050565b5f60208284031215610634575f80fd5b813561063f8161049e565b9392505050565b5f808335601e1984360301811261065b575f80fd5b83018035915067ffffffffffffffff821115610675575f80fd5b6020019150600581901b36038213156104f6575f80fd5b6001600160a01b03851681526020810184905260606040820181905281018290525f6001600160fb1b038311156106c1575f80fd5b8260051b808560808501379190910160800195945050505050565b5f60033d11156106f25760045f803e505f5160e01c5b90565b634e487b7160e01b5f52604160045260245ffd5b601f8201601f1916810167ffffffffffffffff8111828210171561073b57634e487b7160e01b5f52604160045260245ffd5b6040525050565b5f60443d101561074f5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561077f57505050505090565b82850191508151818111156107975750505050505090565b843d87010160208285010111156107b15750505050505090565b6107c060208286010187610709565b509095945050505050565b5f6020808352835180828501525f5b818110156107f6578581018301518582016040015282016107da565b505f604082860101526040601f19601f8301168501019250505092915050565b5f8060233d111561082f57602060045f3e50505f516001905b9091565b60208082526021908201527f436c61696d48656c7065723a20736f6d657468696e672077656e742077726f6e6040820152606760f81b606082015260800190565b5f6001820161089157634e487b7160e01b5f52601160045260245ffd5b5060010190565b5f602082840312156108a8575f80fd5b815161063f8161049e565b5f602082840312156108c3575f80fd5b505191905056fea264697066735822122058e3369d23328924246bf30b4de3fd229c615ae696971123d505659c5037a87264736f6c63430008140033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000007a10f506e4c7658e6ad15fdf0443d450b7fa80d7
-----Decoded View---------------
Arg [0] : token (address): 0x7A10F506E4c7658e6AD15Fdf0443d450B7FA80D7
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a10f506e4c7658e6ad15fdf0443d450b7fa80d7
Loading...
Loading
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 35 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.