Address Contract Verified
Address
0x6969Ad43Eb54B657B81eA019A805937Ccc5a541C
Balance
0 ETH
Nonce
1
Code Size
1236 bytes
Creator
0x9e3c17d3...C228 at tx 0x66a5b8ee...9e2dd6
Indexed Transactions
0
Contract Bytecode
1236 bytes
0x608060405234801561001057600080fd5b50600436106100725760003560e01c80638da5cb5b116100505780638da5cb5b146100a7578063ab518e6e146100d0578063f2fde38b146100e357600080fd5b806340a0b4ec146100775780636ac385a21461008c578063715018a61461009f575b600080fd5b61008a6100853660046103ca565b6100f6565b005b61008a61009a3660046103fa565b6101f0565b61008a6102bc565b6000546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b6001546100b4906001600160a01b031681565b61008a6100f13660046103ca565b6102d0565b6100fe610327565b6001600160a01b038116610199576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603960248201527f4261746368436c61696d3a20436c61696d5661756c742061646472657373206360448201527f616e6e6f7420626520746865207a65726f20616464726573730000000000000060648201526084015b60405180910390fd5b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517fe8be4a3b4254e4bf5ece73e698ebf93c5d0e46b71dcb1375e8165b6884e10f3e90600090a250565b8060005b818110156102b6576001546001600160a01b031663a166334085858481811061021f5761021f61046f565b905060200201602081019061023491906103ca565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e084901b1681526001600160a01b039091166004820152336024820152604401600060405180830381600087803b15801561029357600080fd5b505af11580156102a7573d6000803e3d6000fd5b505050508060010190506101f4565b50505050565b6102c4610327565b6102ce600061036d565b565b6102d8610327565b6001600160a01b03811661031b576040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260006004820152602401610190565b6103248161036d565b50565b6000546001600160a01b031633146102ce576040517f118cdaa7000000000000000000000000000000000000000000000000000000008152336004820152602401610190565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156103dc57600080fd5b81356001600160a01b03811681146103f357600080fd5b9392505050565b6000806020838503121561040d57600080fd5b823567ffffffffffffffff8082111561042557600080fd5b818501915085601f83011261043957600080fd5b81358181111561044857600080fd5b8660208260051b850101111561045d57600080fd5b60209290920196919550909350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fdfea2646970667358221220ab5c8032b7aecbc485d09bb98661db2f089674801d2ace3b1a40af9ad7c71f2e64736f6c63430008170033
Verified Source Code Full Match
Compiler: v0.8.23+commit.f704f362
EVM: paris
Optimization: Yes (1000 runs)
Ownable.sol 100 lines
// 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);
}
}
Context.sol 28 lines
// 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;
}
}
IClaimVault.sol 16 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;
/**
* @title Claim Vault Interface
* @author A Q T I S / @AQTIS-Team
* @notice Interface for claim vault
*/
interface IClaimVault {
function claimRewards(address lst) external;
function claimRewardsFor(address lst, address user) external;
function getLSTs() external view returns (address[] memory);
}
BatchClaimUsers.sol 34 lines
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;
import {Ownable} from "node_modules/@openzeppelin/contracts/access/Ownable.sol";
import {IClaimVault} from "../interfaces/IClaimVault.sol";
contract BatchClaimUsers is Ownable {
IClaimVault public claimVault;
event ClaimVaultUpdated(address indexed newClaimVault);
constructor(address _claimVault) Ownable(msg.sender) {
claimVault = IClaimVault(_claimVault);
}
/**
* @dev Claims rewards for multiple LST addresses and sends them to the caller.
* @param lsts Array of LST contract addresses for which to claim rewards.
*/
function claimRewardsForMultiple(address[] calldata lsts) external {
uint256 len = lsts.length;
for (uint i; i < len; ++i) {
claimVault.claimRewardsFor(lsts[i], msg.sender);
}
}
// ======= Permissioned Functions ======= //
function updateClaimVault(address _newClaimVault) external onlyOwner {
require(_newClaimVault != address(0), "BatchClaim: ClaimVault address cannot be the zero address");
claimVault = IClaimVault(_newClaimVault);
emit ClaimVaultUpdated(_newClaimVault);
}
}
Read Contract
claimVault 0xab518e6e → address
owner 0x8da5cb5b → address
Write Contract 4 functions
These functions modify contract state and require a wallet transaction to execute.
claimRewardsForMultiple 0x6ac385a2
address[] lsts
renounceOwnership 0x715018a6
No parameters
transferOwnership 0xf2fde38b
address newOwner
updateClaimVault 0x40a0b4ec
address _newClaimVault
Recent Transactions
No transactions found for this address