Feature Tip: Add private address tag to any address under My Name Tag !
Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 32 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Withdraw | 15048157 | 1258 days ago | IN | 0 ETH | 0.00123752 | ||||
| Withdraw | 15047471 | 1258 days ago | IN | 0 ETH | 0.00138757 | ||||
| Set Calldata Cos... | 15040796 | 1259 days ago | IN | 0 ETH | 0.00204233 | ||||
| Transfer | 15014365 | 1264 days ago | IN | 100 ETH | 0.00132825 | ||||
| Transfer | 14689974 | 1318 days ago | IN | 283.57665346 ETH | 0.0074458 | ||||
| Set Max Gas Cost | 13725590 | 1468 days ago | IN | 0 ETH | 0.00312359 | ||||
| Transfer | 13285218 | 1537 days ago | IN | 50.39902982 ETH | 0.00144703 | ||||
| Transfer | 13271900 | 1539 days ago | IN | 50 ETH | 0.00243011 | ||||
| Transfer | 13263910 | 1540 days ago | IN | 50 ETH | 0.00235911 | ||||
| Transfer | 13244399 | 1543 days ago | IN | 70 ETH | 0.00176905 | ||||
| Transfer | 13233734 | 1545 days ago | IN | 50 ETH | 0.00183879 | ||||
| Transfer | 13227863 | 1546 days ago | IN | 50 ETH | 0.00093185 | ||||
| Transfer | 13213851 | 1548 days ago | IN | 100 ETH | 0.00141019 | ||||
| Transfer | 13211362 | 1548 days ago | IN | 50 ETH | 0.00116621 | ||||
| Transfer | 13206890 | 1549 days ago | IN | 30 ETH | 0.0010837 | ||||
| Transfer | 13201643 | 1550 days ago | IN | 20 ETH | 0.0016 | ||||
| Transfer | 13187396 | 1552 days ago | IN | 30 ETH | 0.00313044 | ||||
| Transfer | 13174501 | 1554 days ago | IN | 20 ETH | 0.00862074 | ||||
| Transfer | 13155991 | 1557 days ago | IN | 20 ETH | 0.00334038 | ||||
| Transfer | 13142130 | 1559 days ago | IN | 20 ETH | 0.00340236 | ||||
| Set Max Gas Cost | 13135969 | 1560 days ago | IN | 0 ETH | 0.00328469 | ||||
| Transfer | 13135850 | 1560 days ago | IN | 20 ETH | 0.00218416 | ||||
| Set Max Refundee... | 13134500 | 1560 days ago | IN | 0 ETH | 0.00404701 | ||||
| Disallow Refunde... | 13134447 | 1560 days ago | IN | 0 ETH | 0.00243795 | ||||
| Disallow Contrac... | 13134431 | 1560 days ago | IN | 0 ETH | 0.00324111 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| Transfer | 15048157 | 1258 days ago | 184.8338042 ETH | ||||
| Transfer | 15047471 | 1258 days ago | 150 ETH | ||||
| Transfer | 15047353 | 1258 days ago | 0.05082075 ETH | ||||
| Transfer | 15047343 | 1258 days ago | 0.05416682 ETH | ||||
| Transfer | 15047336 | 1258 days ago | 0.06243894 ETH | ||||
| Transfer | 15047327 | 1258 days ago | 0.0187109 ETH | ||||
| Transfer | 15047318 | 1258 days ago | 0.01293236 ETH | ||||
| Transfer | 15047308 | 1258 days ago | 0.12528977 ETH | ||||
| Transfer | 15047307 | 1258 days ago | 0.08166756 ETH | ||||
| Transfer | 15047306 | 1258 days ago | 0.10627335 ETH | ||||
| Transfer | 15047160 | 1258 days ago | 0.16580849 ETH | ||||
| Transfer | 15047138 | 1258 days ago | 0.19240658 ETH | ||||
| Transfer | 15047136 | 1258 days ago | 0.18422247 ETH | ||||
| Transfer | 15047133 | 1258 days ago | 0.17794373 ETH | ||||
| Transfer | 15047129 | 1258 days ago | 0.1961728 ETH | ||||
| Transfer | 15047128 | 1258 days ago | 0.17548508 ETH | ||||
| Transfer | 15047113 | 1258 days ago | 0.16061042 ETH | ||||
| Transfer | 15047110 | 1258 days ago | 0.17979386 ETH | ||||
| Transfer | 15047108 | 1258 days ago | 0.1767341 ETH | ||||
| Transfer | 15047106 | 1258 days ago | 0.19010768 ETH | ||||
| Transfer | 15047103 | 1258 days ago | 0.21835548 ETH | ||||
| Transfer | 15047043 | 1258 days ago | 0.21909032 ETH | ||||
| Transfer | 15047004 | 1258 days ago | 0.28127 ETH | ||||
| Transfer | 15046998 | 1258 days ago | 0.36095383 ETH | ||||
| Transfer | 15046997 | 1258 days ago | 0.32679162 ETH |
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
GasRefunder
Compiler Version
v0.8.7+commit.e28d00a7
Optimization Enabled:
Yes with 100 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: Apache-2.0
/*
* Copyright 2021, Offchain Labs, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
pragma solidity ^0.8.7;
import "./IGasRefunder.sol";
import "@openzeppelin/contracts-0.8/access/Ownable.sol";
contract GasRefunder is IGasRefunder, Ownable {
mapping(address => bool) public allowedContracts;
mapping(address => bool) public allowedRefundees;
mapping(address => uint256) public lastContractRefund;
address public disallower;
struct CommonParameters {
uint128 maxRefundeeBalance;
uint32 extraGasMargin;
uint8 calldataCost;
uint64 maxGasTip;
uint64 maxGasCost;
uint32 maxSingleGasUsage;
}
CommonParameters public commonParams;
enum CommonParameterKey {
MAX_REFUNDEE_BALANCE,
EXTRA_GAS_MARGIN,
CALLDATA_COST,
MAX_GAS_TIP,
MAX_GAS_COST,
MAX_SINGLE_GAS_USAGE
}
enum RefundDenyReason {
CONTRACT_NOT_ALLOWED,
REFUNDEE_NOT_ALLOWED,
ALREADY_REFUNDED_THIS_BLOCK,
REFUNDEE_ABOVE_MAX_BALANCE,
OUT_OF_FUNDS
}
event RefundedGasCosts(
address indexed refundee,
address indexed contractAddress,
bool indexed success,
uint256 gas,
uint256 gasPrice,
uint256 amountPaid
);
event RefundGasCostsDenied(
address indexed refundee,
address indexed contractAddress,
RefundDenyReason indexed reason,
uint256 gas
);
event Deposited(address sender, uint256 amount);
event Withdrawn(address initiator, address destination, uint256 amount);
event ContractAllowedSet(address indexed addr, bool indexed allowed);
event RefundeeAllowedSet(address indexed addr, bool indexed allowed);
event DisallowerSet(address indexed addr);
event CommonParameterSet(CommonParameterKey indexed parameter, uint256 value);
constructor() Ownable() {
commonParams = CommonParameters({
maxRefundeeBalance: 0, // no limit
extraGasMargin: 4000, // 4k gas
calldataCost: 12, // Between 4 for zero bytes and 16 for non-zero bytes
maxGasTip: 2 gwei,
maxGasCost: 120 gwei,
maxSingleGasUsage: 2e6 // 2 million gas
});
}
function setDisallower(address addr) external onlyOwner {
disallower = addr;
emit DisallowerSet(addr);
}
function allowContracts(address[] calldata addresses) external onlyOwner {
setContractsAllowedImpl(addresses, true);
}
function disallowContracts(address[] calldata addresses) external {
require(msg.sender == owner() || msg.sender == disallower, "NOT_AUTHORIZED");
setContractsAllowedImpl(addresses, false);
}
function setContractsAllowedImpl(address[] calldata addresses, bool allow) internal {
for (uint256 i = 0; i < addresses.length; i++) {
address addr = addresses[i];
allowedContracts[addr] = allow;
emit ContractAllowedSet(addr, allow);
}
}
function allowRefundees(address[] calldata addresses) external onlyOwner {
setRefundeesAllowedImpl(addresses, true);
}
function disallowRefundees(address[] calldata addresses) external {
require(msg.sender == owner() || msg.sender == disallower, "NOT_AUTHORIZED");
setRefundeesAllowedImpl(addresses, false);
}
function setRefundeesAllowedImpl(address[] calldata addresses, bool allow) internal {
for (uint256 i = 0; i < addresses.length; i++) {
address addr = addresses[i];
allowedRefundees[addr] = allow;
emit RefundeeAllowedSet(addr, allow);
}
}
function setMaxRefundeeBalance(uint128 newValue) external onlyOwner {
commonParams.maxRefundeeBalance = newValue;
emit CommonParameterSet(CommonParameterKey.MAX_REFUNDEE_BALANCE, newValue);
}
function setExtraGasMargin(uint32 newValue) external onlyOwner {
commonParams.extraGasMargin = newValue;
emit CommonParameterSet(CommonParameterKey.EXTRA_GAS_MARGIN, newValue);
}
function setCalldataCost(uint8 newValue) external onlyOwner {
commonParams.calldataCost = newValue;
emit CommonParameterSet(CommonParameterKey.CALLDATA_COST, newValue);
}
function setMaxGasTip(uint64 newValue) external onlyOwner {
commonParams.maxGasTip = newValue;
emit CommonParameterSet(CommonParameterKey.MAX_GAS_TIP, newValue);
}
function setMaxGasCost(uint64 newValue) external onlyOwner {
commonParams.maxGasCost = newValue;
emit CommonParameterSet(CommonParameterKey.MAX_GAS_COST, newValue);
}
function setMaxSingleGasUsage(uint32 newValue) external onlyOwner {
commonParams.maxSingleGasUsage = newValue;
emit CommonParameterSet(CommonParameterKey.MAX_SINGLE_GAS_USAGE, newValue);
}
receive() external payable {
emit Deposited(msg.sender, msg.value);
}
function withdraw(address payable destination, uint256 amount) external onlyOwner {
// It's expected that destination is an EOA
(bool success, ) = destination.call{ value: amount }("");
require(success, "WITHDRAW_FAILED");
emit Withdrawn(msg.sender, destination, amount);
}
function onGasSpent(
address payable refundee,
uint256 gasUsed,
uint256 calldataSize
) external override returns (bool success) {
uint256 startGasLeft = gasleft();
uint256 ownBalance = address(this).balance;
if (ownBalance == 0) {
emit RefundGasCostsDenied(refundee, msg.sender, RefundDenyReason.OUT_OF_FUNDS, gasUsed);
return false;
}
if (!allowedContracts[msg.sender]) {
emit RefundGasCostsDenied(
refundee,
msg.sender,
RefundDenyReason.CONTRACT_NOT_ALLOWED,
gasUsed
);
return false;
}
if (!allowedRefundees[refundee]) {
emit RefundGasCostsDenied(
refundee,
msg.sender,
RefundDenyReason.REFUNDEE_NOT_ALLOWED,
gasUsed
);
return false;
}
if (lastContractRefund[msg.sender] == block.number) {
// There was already a refund this block, don't refund further
emit RefundGasCostsDenied(
refundee,
msg.sender,
RefundDenyReason.ALREADY_REFUNDED_THIS_BLOCK,
gasUsed
);
return false;
}
lastContractRefund[msg.sender] = block.number;
uint256 estGasPrice = block.basefee + commonParams.maxGasTip;
if (tx.gasprice < estGasPrice) {
estGasPrice = tx.gasprice;
}
if (commonParams.maxGasCost != 0 && estGasPrice > commonParams.maxGasCost) {
estGasPrice = commonParams.maxGasCost;
}
// Retrieve these variables before measuring gasleft()
uint256 refundeeBalance = refundee.balance;
uint256 maxRefundeeBalance = commonParams.maxRefundeeBalance;
uint256 maxSingleGasUsage = commonParams.maxSingleGasUsage;
// Add in a bit of a buffer for the tx costs not measured with gasleft
gasUsed +=
startGasLeft +
commonParams.extraGasMargin +
(calldataSize * commonParams.calldataCost);
// Split this up into two statements so that gasleft() comes after the storage loads
gasUsed -= gasleft();
if (maxSingleGasUsage != 0 && gasUsed > maxSingleGasUsage) {
gasUsed = maxSingleGasUsage;
}
uint256 refundAmount = estGasPrice * gasUsed;
if (maxRefundeeBalance != 0 && refundeeBalance + refundAmount > maxRefundeeBalance) {
if (refundeeBalance > maxRefundeeBalance) {
// The refundee is already above their max balance
emit RefundGasCostsDenied(
refundee,
msg.sender,
RefundDenyReason.REFUNDEE_ABOVE_MAX_BALANCE,
gasUsed
);
return false;
} else {
refundAmount = maxRefundeeBalance - refundeeBalance;
}
}
if (refundAmount > ownBalance) {
refundAmount = ownBalance;
}
// It's expected that refundee is an EOA
(success, ) = refundee.call{ value: refundAmount }("");
emit RefundedGasCosts(refundee, msg.sender, success, gasUsed, estGasPrice, refundAmount);
}
}// SPDX-License-Identifier: Apache-2.0
/*
* Copyright 2021, Offchain Labs, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
pragma solidity >=0.6.11 <0.7.0||>=0.8.7 <0.9.0;
interface IGasRefunder {
function onGasSpent(
address payable spender,
uint256 gasUsed,
uint256 calldataSize
) external returns (bool success);
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "../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.
*
* By default, the owner account will be the one that deploys the contract. 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;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_setOwner(_msgSender());
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_setOwner(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 {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_setOwner(newOwner);
}
function _setOwner(address newOwner) private {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @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;
}
}{
"optimizer": {
"enabled": true,
"runs": 100
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"abi"
]
}
},
"metadata": {
"useLiteralContent": true
},
"libraries": {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"enum GasRefunder.CommonParameterKey","name":"parameter","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"CommonParameterSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":true,"internalType":"bool","name":"allowed","type":"bool"}],"name":"ContractAllowedSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"sender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"}],"name":"DisallowerSet","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":true,"internalType":"address","name":"refundee","type":"address"},{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":true,"internalType":"enum GasRefunder.RefundDenyReason","name":"reason","type":"uint8"},{"indexed":false,"internalType":"uint256","name":"gas","type":"uint256"}],"name":"RefundGasCostsDenied","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"refundee","type":"address"},{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":true,"internalType":"bool","name":"success","type":"bool"},{"indexed":false,"internalType":"uint256","name":"gas","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"gasPrice","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountPaid","type":"uint256"}],"name":"RefundedGasCosts","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"},{"indexed":true,"internalType":"bool","name":"allowed","type":"bool"}],"name":"RefundeeAllowedSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"initiator","type":"address"},{"indexed":false,"internalType":"address","name":"destination","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdrawn","type":"event"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"allowContracts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"allowRefundees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"allowedContracts","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"allowedRefundees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"commonParams","outputs":[{"internalType":"uint128","name":"maxRefundeeBalance","type":"uint128"},{"internalType":"uint32","name":"extraGasMargin","type":"uint32"},{"internalType":"uint8","name":"calldataCost","type":"uint8"},{"internalType":"uint64","name":"maxGasTip","type":"uint64"},{"internalType":"uint64","name":"maxGasCost","type":"uint64"},{"internalType":"uint32","name":"maxSingleGasUsage","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"disallowContracts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"disallowRefundees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disallower","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastContractRefund","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"refundee","type":"address"},{"internalType":"uint256","name":"gasUsed","type":"uint256"},{"internalType":"uint256","name":"calldataSize","type":"uint256"}],"name":"onGasSpent","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"newValue","type":"uint8"}],"name":"setCalldataCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setDisallower","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"newValue","type":"uint32"}],"name":"setExtraGasMargin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setMaxGasCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"newValue","type":"uint64"}],"name":"setMaxGasTip","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"newValue","type":"uint128"}],"name":"setMaxRefundeeBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"newValue","type":"uint32"}],"name":"setMaxSingleGasUsage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"destination","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
608060405234801561001057600080fd5b5061001a336100a5565b6040805160c08101825260008152610fa06020820152600c9181019190915263773594006060820152641bf08eb0006080820152621e848060a090910152600580546001600160e81b03191678773594000c00000fa000000000000000000000000000000000179055600680546001600160601b0319166a1e84800000001bf08eb0001790556100f5565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61129e806101046000396000f3fe60806040526004361061012e5760003560e01c8063bffe1780116100ab578063e52074531161006f578063e520745314610433578063efe12b0114610453578063f1e845ca14610473578063f2fde38b14610493578063f3fef3a3146104b3578063f52128eb146104d357600080fd5b8063bffe178014610306578063ca10129514610326578063cd499da314610346578063d513894814610366578063e3db8a491461041357600080fd5b80637edddf45116100f25780637edddf451461022e57806386b988951461024e5780638da5cb5b1461026e578063a89d21731461029b578063bddaf01d146102cb57600080fd5b806325416bc9146101725780632ccb03f214610194578063500de431146101b457806351e0e26b146101d4578063715018a61461021957600080fd5b3661016d57604080513381523460208201527f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4910160405180910390a1005b600080fd5b34801561017e57600080fd5b5061019261018d366004611032565b6104f3565b005b3480156101a057600080fd5b506101926101af3660046110f5565b61053b565b3480156101c057600080fd5b506101926101cf3660046110cf565b6105b7565b3480156101e057600080fd5b506102046101ef366004610fb4565b60016020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561022557600080fd5b5061019261062b565b34801561023a57600080fd5b506101926102493660046110cf565b610666565b34801561025a57600080fd5b506101926102693660046110f5565b6106ba565b34801561027a57600080fd5b50610283610715565b6040516001600160a01b039091168152602001610210565b3480156102a757600080fd5b506102046102b6366004610fb4565b60026020526000908152604090205460ff1681565b3480156102d757600080fd5b506102f86102e6366004610fb4565b60036020526000908152604090205481565b604051908152602001610210565b34801561031257600080fd5b5061019261032136600461111e565b610724565b34801561033257600080fd5b50610192610341366004611032565b61078e565b34801561035257600080fd5b50610192610361366004611032565b6107c9565b34801561037257600080fd5b506005546006546103c5916001600160801b0381169163ffffffff600160801b830481169260ff600160a01b820416926001600160401b03600160a81b90920482169291811691600160401b9091041686565b604080516001600160801b03909716875263ffffffff958616602088015260ff909416938601939093526001600160401b0391821660608601521660808401521660a082015260c001610210565b34801561041f57600080fd5b5061020461042e366004610ffd565b610822565b34801561043f57600080fd5b5061019261044e366004611032565b610b35565b34801561045f57600080fd5b50600454610283906001600160a01b031681565b34801561047f57600080fd5b5061019261048e366004610fb4565b610b8e565b34801561049f57600080fd5b506101926104ae366004610fb4565b610c07565b3480156104bf57600080fd5b506101926104ce366004610fd1565b610ca7565b3480156104df57600080fd5b506101926104ee3660046110a6565b610db9565b336104fc610715565b6001600160a01b03161461052b5760405162461bcd60e51b815260040161052290611141565b60405180910390fd5b61053782826001610e2c565b5050565b33610544610715565b6001600160a01b03161461056a5760405162461bcd60e51b815260040161052290611141565b6006805467ffffffffffffffff19166001600160401b03831617905560045b6040516001600160401b0383168152600080516020611249833981519152906020015b60405180910390a250565b336105c0610715565b6001600160a01b0316146105e65760405162461bcd60e51b815260040161052290611141565b6006805463ffffffff60401b1916600160401b63ffffffff84160217905560055b60405163ffffffff83168152600080516020611249833981519152906020016105ac565b33610634610715565b6001600160a01b03161461065a5760405162461bcd60e51b815260040161052290611141565b6106646000610ecb565b565b3361066f610715565b6001600160a01b0316146106955760405162461bcd60e51b815260040161052290611141565b6005805463ffffffff60801b1916600160801b63ffffffff8416021790556001610607565b336106c3610715565b6001600160a01b0316146106e95760405162461bcd60e51b815260040161052290611141565b6005805467ffffffffffffffff60a81b1916600160a81b6001600160401b038416021790556003610589565b6000546001600160a01b031690565b3361072d610715565b6001600160a01b0316146107535760405162461bcd60e51b815260040161052290611141565b6005805460ff60a01b1916600160a01b60ff841602179055600260405160ff83168152600080516020611249833981519152906020016105ac565b33610797610715565b6001600160a01b0316146107bd5760405162461bcd60e51b815260040161052290611141565b61053782826001610f1b565b6107d1610715565b6001600160a01b0316336001600160a01b031614806107fa57506004546001600160a01b031633145b6108165760405162461bcd60e51b815260040161052290611176565b61053782826000610e2c565b6000805a9050478061087c5760045b60405186815233906001600160a01b038916907f2b8ae00e22d9eaf5a92820a22b947c007aee773fa36502ad7a1c9a464ab4932b9060200160405180910390a4600092505050610b2e565b3360009081526001602052604090205460ff1661089a576000610831565b6001600160a01b03861660009081526002602052604090205460ff166108c1576001610831565b336000908152600360205260409020544314156108df576002610831565b33600090815260036020526040812043905560055461090e90600160a81b90046001600160401b03164861119e565b9050803a101561091b57503a5b6006546001600160401b03161580159061093f57506006546001600160401b031681115b1561095257506006546001600160401b03165b6005546006546001600160a01b03891631916001600160801b03811691600160401b900463ffffffff169061099190600160a01b900460ff16896111b6565b6005546109ab90600160801b900463ffffffff168861119e565b6109b5919061119e565b6109bf908a61119e565b98505a6109cc908a6111d5565b985080158015906109dc57508089115b156109e5578098505b60006109f18a866111b6565b90508215801590610a0a575082610a08828661119e565b115b15610a765782841115610a695760036040518b815233906001600160a01b038e16907f2b8ae00e22d9eaf5a92820a22b947c007aee773fa36502ad7a1c9a464ab4932b9060200160405180910390a46000975050505050505050610b2e565b610a7384846111d5565b90505b85811115610a815750845b6040516001600160a01b038c16908290600081818185875af1925050503d8060008114610aca576040519150601f19603f3d011682016040523d82523d6000602084013e610acf565b606091505b5050604080518c8152602081018890529081018390529098508815159033906001600160a01b038e16907fd0224505f828ccfcbc56ca0590d97442e239a7aa770f712948fd6388356b20de9060600160405180910390a4505050505050505b9392505050565b610b3d610715565b6001600160a01b0316336001600160a01b03161480610b6657506004546001600160a01b031633145b610b825760405162461bcd60e51b815260040161052290611176565b61053782826000610f1b565b33610b97610715565b6001600160a01b031614610bbd5760405162461bcd60e51b815260040161052290611141565b600480546001600160a01b0319166001600160a01b0383169081179091556040517fc388cec0895ad7ee4635898ec92207ca48d42256d4355f7042efef62c368a97990600090a250565b33610c10610715565b6001600160a01b031614610c365760405162461bcd60e51b815260040161052290611141565b6001600160a01b038116610c9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610522565b610ca481610ecb565b50565b33610cb0610715565b6001600160a01b031614610cd65760405162461bcd60e51b815260040161052290611141565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610d23576040519150601f19603f3d011682016040523d82523d6000602084013e610d28565b606091505b5050905080610d6b5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055d7d19052531151608a1b6044820152606401610522565b604080513381526001600160a01b03851660208201529081018390527fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb9060600160405180910390a1505050565b33610dc2610715565b6001600160a01b031614610de85760405162461bcd60e51b815260040161052290611141565b600580546001600160801b0319166001600160801b03831617905560006040516001600160801b0383168152600080516020611249833981519152906020016105ac565b60005b82811015610ec5576000848483818110610e4b57610e4b61121d565b9050602002016020810190610e609190610fb4565b6001600160a01b038116600081815260016020526040808220805460ff19168815159081179091559051939450927fb0918cd965657b8d231f8adba328fa810b6d61d800de9c795d40eb3623498c019190a35080610ebd816111ec565b915050610e2f565b50505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b82811015610ec5576000848483818110610f3a57610f3a61121d565b9050602002016020810190610f4f9190610fb4565b6001600160a01b038116600081815260026020526040808220805460ff19168815159081179091559051939450927ff544cca9d5484bfd447775bd759d12d53f1aa7c5f770be82c55070798ff9c63e9190a35080610fac816111ec565b915050610f1e565b600060208284031215610fc657600080fd5b8135610b2e81611233565b60008060408385031215610fe457600080fd5b8235610fef81611233565b946020939093013593505050565b60008060006060848603121561101257600080fd5b833561101d81611233565b95602085013595506040909401359392505050565b6000806020838503121561104557600080fd5b82356001600160401b038082111561105c57600080fd5b818501915085601f83011261107057600080fd5b81358181111561107f57600080fd5b8660208260051b850101111561109457600080fd5b60209290920196919550909350505050565b6000602082840312156110b857600080fd5b81356001600160801b0381168114610b2e57600080fd5b6000602082840312156110e157600080fd5b813563ffffffff81168114610b2e57600080fd5b60006020828403121561110757600080fd5b81356001600160401b0381168114610b2e57600080fd5b60006020828403121561113057600080fd5b813560ff81168114610b2e57600080fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600e908201526d1393d517d055551213d49256915160921b604082015260600190565b600082198211156111b1576111b1611207565b500190565b60008160001904831182151516156111d0576111d0611207565b500290565b6000828210156111e7576111e7611207565b500390565b600060001982141561120057611200611207565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114610ca457600080fdfeda79b6b81f905f788560507c685a42d5a8ab209ee26538cbcf3ce3caed601f9ba2646970667358221220de8e04e3389eec3de92682e029908c1759b659bf7bfe5d18c0f5f5584631bd2f64736f6c63430008070033
Deployed Bytecode
0x60806040526004361061012e5760003560e01c8063bffe1780116100ab578063e52074531161006f578063e520745314610433578063efe12b0114610453578063f1e845ca14610473578063f2fde38b14610493578063f3fef3a3146104b3578063f52128eb146104d357600080fd5b8063bffe178014610306578063ca10129514610326578063cd499da314610346578063d513894814610366578063e3db8a491461041357600080fd5b80637edddf45116100f25780637edddf451461022e57806386b988951461024e5780638da5cb5b1461026e578063a89d21731461029b578063bddaf01d146102cb57600080fd5b806325416bc9146101725780632ccb03f214610194578063500de431146101b457806351e0e26b146101d4578063715018a61461021957600080fd5b3661016d57604080513381523460208201527f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4910160405180910390a1005b600080fd5b34801561017e57600080fd5b5061019261018d366004611032565b6104f3565b005b3480156101a057600080fd5b506101926101af3660046110f5565b61053b565b3480156101c057600080fd5b506101926101cf3660046110cf565b6105b7565b3480156101e057600080fd5b506102046101ef366004610fb4565b60016020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b34801561022557600080fd5b5061019261062b565b34801561023a57600080fd5b506101926102493660046110cf565b610666565b34801561025a57600080fd5b506101926102693660046110f5565b6106ba565b34801561027a57600080fd5b50610283610715565b6040516001600160a01b039091168152602001610210565b3480156102a757600080fd5b506102046102b6366004610fb4565b60026020526000908152604090205460ff1681565b3480156102d757600080fd5b506102f86102e6366004610fb4565b60036020526000908152604090205481565b604051908152602001610210565b34801561031257600080fd5b5061019261032136600461111e565b610724565b34801561033257600080fd5b50610192610341366004611032565b61078e565b34801561035257600080fd5b50610192610361366004611032565b6107c9565b34801561037257600080fd5b506005546006546103c5916001600160801b0381169163ffffffff600160801b830481169260ff600160a01b820416926001600160401b03600160a81b90920482169291811691600160401b9091041686565b604080516001600160801b03909716875263ffffffff958616602088015260ff909416938601939093526001600160401b0391821660608601521660808401521660a082015260c001610210565b34801561041f57600080fd5b5061020461042e366004610ffd565b610822565b34801561043f57600080fd5b5061019261044e366004611032565b610b35565b34801561045f57600080fd5b50600454610283906001600160a01b031681565b34801561047f57600080fd5b5061019261048e366004610fb4565b610b8e565b34801561049f57600080fd5b506101926104ae366004610fb4565b610c07565b3480156104bf57600080fd5b506101926104ce366004610fd1565b610ca7565b3480156104df57600080fd5b506101926104ee3660046110a6565b610db9565b336104fc610715565b6001600160a01b03161461052b5760405162461bcd60e51b815260040161052290611141565b60405180910390fd5b61053782826001610e2c565b5050565b33610544610715565b6001600160a01b03161461056a5760405162461bcd60e51b815260040161052290611141565b6006805467ffffffffffffffff19166001600160401b03831617905560045b6040516001600160401b0383168152600080516020611249833981519152906020015b60405180910390a250565b336105c0610715565b6001600160a01b0316146105e65760405162461bcd60e51b815260040161052290611141565b6006805463ffffffff60401b1916600160401b63ffffffff84160217905560055b60405163ffffffff83168152600080516020611249833981519152906020016105ac565b33610634610715565b6001600160a01b03161461065a5760405162461bcd60e51b815260040161052290611141565b6106646000610ecb565b565b3361066f610715565b6001600160a01b0316146106955760405162461bcd60e51b815260040161052290611141565b6005805463ffffffff60801b1916600160801b63ffffffff8416021790556001610607565b336106c3610715565b6001600160a01b0316146106e95760405162461bcd60e51b815260040161052290611141565b6005805467ffffffffffffffff60a81b1916600160a81b6001600160401b038416021790556003610589565b6000546001600160a01b031690565b3361072d610715565b6001600160a01b0316146107535760405162461bcd60e51b815260040161052290611141565b6005805460ff60a01b1916600160a01b60ff841602179055600260405160ff83168152600080516020611249833981519152906020016105ac565b33610797610715565b6001600160a01b0316146107bd5760405162461bcd60e51b815260040161052290611141565b61053782826001610f1b565b6107d1610715565b6001600160a01b0316336001600160a01b031614806107fa57506004546001600160a01b031633145b6108165760405162461bcd60e51b815260040161052290611176565b61053782826000610e2c565b6000805a9050478061087c5760045b60405186815233906001600160a01b038916907f2b8ae00e22d9eaf5a92820a22b947c007aee773fa36502ad7a1c9a464ab4932b9060200160405180910390a4600092505050610b2e565b3360009081526001602052604090205460ff1661089a576000610831565b6001600160a01b03861660009081526002602052604090205460ff166108c1576001610831565b336000908152600360205260409020544314156108df576002610831565b33600090815260036020526040812043905560055461090e90600160a81b90046001600160401b03164861119e565b9050803a101561091b57503a5b6006546001600160401b03161580159061093f57506006546001600160401b031681115b1561095257506006546001600160401b03165b6005546006546001600160a01b03891631916001600160801b03811691600160401b900463ffffffff169061099190600160a01b900460ff16896111b6565b6005546109ab90600160801b900463ffffffff168861119e565b6109b5919061119e565b6109bf908a61119e565b98505a6109cc908a6111d5565b985080158015906109dc57508089115b156109e5578098505b60006109f18a866111b6565b90508215801590610a0a575082610a08828661119e565b115b15610a765782841115610a695760036040518b815233906001600160a01b038e16907f2b8ae00e22d9eaf5a92820a22b947c007aee773fa36502ad7a1c9a464ab4932b9060200160405180910390a46000975050505050505050610b2e565b610a7384846111d5565b90505b85811115610a815750845b6040516001600160a01b038c16908290600081818185875af1925050503d8060008114610aca576040519150601f19603f3d011682016040523d82523d6000602084013e610acf565b606091505b5050604080518c8152602081018890529081018390529098508815159033906001600160a01b038e16907fd0224505f828ccfcbc56ca0590d97442e239a7aa770f712948fd6388356b20de9060600160405180910390a4505050505050505b9392505050565b610b3d610715565b6001600160a01b0316336001600160a01b03161480610b6657506004546001600160a01b031633145b610b825760405162461bcd60e51b815260040161052290611176565b61053782826000610f1b565b33610b97610715565b6001600160a01b031614610bbd5760405162461bcd60e51b815260040161052290611141565b600480546001600160a01b0319166001600160a01b0383169081179091556040517fc388cec0895ad7ee4635898ec92207ca48d42256d4355f7042efef62c368a97990600090a250565b33610c10610715565b6001600160a01b031614610c365760405162461bcd60e51b815260040161052290611141565b6001600160a01b038116610c9b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610522565b610ca481610ecb565b50565b33610cb0610715565b6001600160a01b031614610cd65760405162461bcd60e51b815260040161052290611141565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610d23576040519150601f19603f3d011682016040523d82523d6000602084013e610d28565b606091505b5050905080610d6b5760405162461bcd60e51b815260206004820152600f60248201526e15d2551211149055d7d19052531151608a1b6044820152606401610522565b604080513381526001600160a01b03851660208201529081018390527fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb9060600160405180910390a1505050565b33610dc2610715565b6001600160a01b031614610de85760405162461bcd60e51b815260040161052290611141565b600580546001600160801b0319166001600160801b03831617905560006040516001600160801b0383168152600080516020611249833981519152906020016105ac565b60005b82811015610ec5576000848483818110610e4b57610e4b61121d565b9050602002016020810190610e609190610fb4565b6001600160a01b038116600081815260016020526040808220805460ff19168815159081179091559051939450927fb0918cd965657b8d231f8adba328fa810b6d61d800de9c795d40eb3623498c019190a35080610ebd816111ec565b915050610e2f565b50505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60005b82811015610ec5576000848483818110610f3a57610f3a61121d565b9050602002016020810190610f4f9190610fb4565b6001600160a01b038116600081815260026020526040808220805460ff19168815159081179091559051939450927ff544cca9d5484bfd447775bd759d12d53f1aa7c5f770be82c55070798ff9c63e9190a35080610fac816111ec565b915050610f1e565b600060208284031215610fc657600080fd5b8135610b2e81611233565b60008060408385031215610fe457600080fd5b8235610fef81611233565b946020939093013593505050565b60008060006060848603121561101257600080fd5b833561101d81611233565b95602085013595506040909401359392505050565b6000806020838503121561104557600080fd5b82356001600160401b038082111561105c57600080fd5b818501915085601f83011261107057600080fd5b81358181111561107f57600080fd5b8660208260051b850101111561109457600080fd5b60209290920196919550909350505050565b6000602082840312156110b857600080fd5b81356001600160801b0381168114610b2e57600080fd5b6000602082840312156110e157600080fd5b813563ffffffff81168114610b2e57600080fd5b60006020828403121561110757600080fd5b81356001600160401b0381168114610b2e57600080fd5b60006020828403121561113057600080fd5b813560ff81168114610b2e57600080fd5b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252600e908201526d1393d517d055551213d49256915160921b604082015260600190565b600082198211156111b1576111b1611207565b500190565b60008160001904831182151516156111d0576111d0611207565b500290565b6000828210156111e7576111e7611207565b500390565b600060001982141561120057611200611207565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b0381168114610ca457600080fdfeda79b6b81f905f788560507c685a42d5a8ab209ee26538cbcf3ce3caed601f9ba2646970667358221220de8e04e3389eec3de92682e029908c1759b659bf7bfe5d18c0f5f5584631bd2f64736f6c63430008070033
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.