| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| no token holdings | ||||
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
import {PoolKey} from "./lib/v4-core/src/types/PoolKey.sol";
import {Currency} from "./lib/v4-core/src/types/Currency.sol";
import {IHooks} from "./lib/v4-core/src/interfaces/IHooks.sol";
import {IPoolManager} from "./lib/v4-core/src/interfaces/IPoolManager.sol";
import {BeforeSwapDelta, toBeforeSwapDelta} from "./lib/v4-core/src/types/BeforeSwapDelta.sol";
import {BalanceDelta} from "./lib/v4-core/src/types/BalanceDelta.sol";
import {ModifyLiquidityParams, SwapParams} from "./lib/v4-core/src/types/PoolOperation.sol";
import {PoolId, PoolIdLibrary} from "./lib/v4-core/src/types/PoolId.sol";
import {ICASHCATBRRRTaxHook} from "./CASHCATBRRRTaxInterfaces.sol";
interface IV4TaxProcessor {
function processAccumulatedFees() external returns (uint256 nativeProcessed, uint256 rewardDeposited);
function processAutomaticWork() external returns (bool feesProcessed, uint256 payments);
}
interface IV4ShareDistributor {
function setShare(address holder, uint256 amount) external;
}
/// @title CASHCATBRRR
/// @notice Fixed-supply ERC-20 that is also the one immutable native-tax V4 hook for its PoolKey.
/// @dev Wallet transfers are ordinary ERC-20 transfers. Only the native ETH side of the bound pool's swaps is taxed.
/// The address must be CREATE2-deployed with the four swap permission bits required by v4-core.
contract CASHCATBRRR is ERC20, IHooks, ICASHCATBRRRTaxHook {
bytes32 public constant launchFingerprint = 0x0437b393e7e08d91385f938a98e6d8a0f0d895a1693a88830c1166b57251889f;
using PoolIdLibrary for PoolKey;
uint256 public constant EXPECTED_CHAIN_ID = 4_663;
uint256 public constant BPS_DENOMINATOR = 10_000;
uint256 public constant FIXED_SUPPLY = 1_000_000_000 ether;
uint256 public constant DEFAULT_PROCESSING_THRESHOLD = 0.01 ether;
uint256 public constant MAXIMUM_PROCESSING_THRESHOLD = 1 ether;
uint256 public constant MAXIMUM_TAX_BPS = 1_000;
uint24 public constant MAXIMUM_POOL_FEE = 1_000_000;
uint160 public constant REQUIRED_HOOK_PERMISSION_BITS = uint160((1 << 7) | (1 << 6) | (1 << 3) | (1 << 2));
uint160 public constant HOOK_PERMISSION_MASK = uint160((1 << 14) - 1);
uint256 public constant DEFAULT_INLINE_GAS_LIMIT = 900_000;
uint256 public constant DEFAULT_POST_PROCESS_GAS_RESERVE = 200_000;
address public immutable deployer;
address public immutable marketingWallet;
address public immutable rewardToken;
address public immutable controller;
address public immutable distributor;
IPoolManager public immutable manager;
PoolId public immutable poolId;
Currency public immutable currency0;
Currency public immutable currency1;
uint24 public immutable poolFee;
int24 public immutable poolTickSpacing;
uint16 public immutable buyTaxBps;
uint16 public immutable sellTaxBps;
uint256 public processingThreshold;
uint16 public immutable marketingBps;
bool public immutable inlineProcessingEnabled;
bytes32 public immutable inlineProcessingProofHash;
bool public immutable inlineNestedUnlockSafe;
uint256 public immutable inlineGasLimit;
uint256 public immutable postProcessGasReserve;
/// @notice Hash of the reviewed build inputs/dependency provenance supplied at launch.
/// @dev This is deliberately distinct from runtimeHash(), which reports this contract's
/// actual extcodehash. Embedding an expected extcodehash as an immutable would create
/// an infeasible self-referential hash fixed point.
bytes32 public immutable buildProvenanceHash;
bytes32 public immutable permissionHash;
uint256 public accruedNativeTax;
uint256 public totalNativeTaxCollected;
uint256 public totalNativeTaxProcessed;
bool public processingReady;
bool private _processingInProgress;
address public constant BURN_ADDRESS = 0x000000000000000000000000000000000000dEaD;
error WrongChain(uint256 actualChainId);
error ZeroAddress();
error InvalidConfiguration();
error InvalidPoolKey();
error UnauthorizedPoolManager(address caller);
error UnauthorizedController(address caller);
error InvalidPool(address supplied);
error NativeTaxTooLarge(uint256 amount);
error NativeTaxUnavailable(uint256 requested, uint256 available);
error NativeTransferFailed();
error InlineProcessingGasTooLow();
error SupplyImmutable();
event NativeTaxAccrued(
address indexed trader,
bool indexed nativeIsInput,
bool indexed exactInput,
uint256 nativeSideAmount,
uint256 taxAmount,
uint256 accruedAfter
);
event ProcessingReady(uint256 indexed accruedTax, uint256 threshold);
event ProcessingRetry(uint256 indexed accruedTax, bytes32 indexed reasonHash);
event InlineProcessingAttempt(bool success, uint256 accruedAfter);
event NativeTaxReleased(address indexed controller, uint256 amount, uint256 accruedAfter);
event ProcessingThresholdUpdated(uint256 previousThreshold, uint256 newThreshold, bool processingReady);
event ShareSynchronized(address indexed holder, uint256 amount);
event ShareSyncDeferred(address indexed holder, uint256 amount);
modifier onlyPoolManager() {
if (msg.sender != address(manager)) revert UnauthorizedPoolManager(msg.sender);
_;
}
modifier onlyController() {
if (msg.sender != controller) revert UnauthorizedController(msg.sender);
_;
}
struct LaunchConfig {
string name;
string symbol;
address deployer;
address marketingWallet;
address rewardToken;
address controller;
address distributor;
address poolManager;
PoolKey poolKey;
uint16 buyTaxBps;
uint16 sellTaxBps;
uint256 processingThreshold;
uint16 marketingBps;
bool inlineProcessingEnabled;
bytes32 inlineProcessingProofHash;
bool inlineNestedUnlockSafe;
uint256 inlineGasLimit;
uint256 postProcessGasReserve;
bytes32 runtimeHash;
bytes32 permissionHash;
}
constructor(LaunchConfig memory config) ERC20(config.name, config.symbol) {
if (config.processingThreshold == 0) config.processingThreshold = DEFAULT_PROCESSING_THRESHOLD;
if (block.chainid != EXPECTED_CHAIN_ID) revert WrongChain(block.chainid);
if (
config.deployer == address(0) || config.marketingWallet == address(0) || config.rewardToken == address(0)
|| config.controller == address(0) || config.distributor == address(0)
|| config.poolManager == address(0)
) revert ZeroAddress();
if (
config.buyTaxBps > MAXIMUM_TAX_BPS || config.sellTaxBps > MAXIMUM_TAX_BPS || config.marketingBps == 0
|| config.marketingBps >= BPS_DENOMINATOR || config.processingThreshold == 0
|| config.processingThreshold > MAXIMUM_PROCESSING_THRESHOLD || config.postProcessGasReserve == 0
|| config.runtimeHash == bytes32(0) || config.permissionHash == bytes32(0)
) revert InvalidConfiguration();
if (
Currency.unwrap(config.poolKey.currency0) != address(0)
|| Currency.unwrap(config.poolKey.currency1) != address(this)
|| (address(config.poolKey.hooks) != address(0) && address(config.poolKey.hooks) != address(this))
) {
revert InvalidPoolKey();
}
if (
config.poolKey.fee > MAXIMUM_POOL_FEE || config.poolKey.tickSpacing <= 0
|| config.poolKey.tickSpacing > type(int16).max
) revert InvalidPoolKey();
if (
config.inlineProcessingEnabled
&& (!config.inlineNestedUnlockSafe || config.inlineProcessingProofHash == bytes32(0))
) {
revert InvalidConfiguration();
}
if ((uint160(address(this)) & HOOK_PERMISSION_MASK) != REQUIRED_HOOK_PERMISSION_BITS) {
revert InvalidConfiguration();
}
deployer = config.deployer;
marketingWallet = config.marketingWallet;
rewardToken = config.rewardToken;
controller = config.controller;
distributor = config.distributor;
manager = IPoolManager(config.poolManager);
currency0 = config.poolKey.currency0;
currency1 = config.poolKey.currency1;
poolFee = config.poolKey.fee;
poolTickSpacing = config.poolKey.tickSpacing;
poolId = PoolKey({
currency0: config.poolKey.currency0,
currency1: config.poolKey.currency1,
fee: config.poolKey.fee,
tickSpacing: config.poolKey.tickSpacing,
hooks: IHooks(address(this))
}).toId();
buyTaxBps = config.buyTaxBps;
sellTaxBps = config.sellTaxBps;
processingThreshold = config.processingThreshold;
marketingBps = config.marketingBps;
inlineProcessingEnabled = config.inlineProcessingEnabled;
inlineProcessingProofHash = config.inlineProcessingProofHash;
inlineNestedUnlockSafe = config.inlineNestedUnlockSafe;
inlineGasLimit = config.inlineGasLimit == 0 ? DEFAULT_INLINE_GAS_LIMIT : config.inlineGasLimit;
postProcessGasReserve = config.postProcessGasReserve;
buildProvenanceHash = config.runtimeHash;
permissionHash = config.permissionHash;
_mint(config.deployer, FIXED_SUPPLY);
}
/// @notice The intrinsic hash of the deployed token/hook runtime bytecode.
/// @dev CASHCATBRRR independently compares this value with eth_getCode at the same confirmed
/// block, so a constructor-supplied self-attestation cannot satisfy the gate.
function runtimeHash() external view returns (bytes32) {
return address(this).codehash;
}
function poolKey() public view returns (PoolKey memory key) {
key = PoolKey({
currency0: currency0,
currency1: currency1,
fee: poolFee,
tickSpacing: poolTickSpacing,
hooks: IHooks(address(this))
});
}
function poolManager() external view override returns (address) {
return address(manager);
}
function hookPermissionBits() external pure returns (uint160) {
return REQUIRED_HOOK_PERMISSION_BITS;
}
function hasRequiredHookPermissions() public view returns (bool) {
return (uint160(address(this)) & HOOK_PERMISSION_MASK) == REQUIRED_HOOK_PERMISSION_BITS;
}
function fixedSupply() external pure returns (uint256) {
return FIXED_SUPPLY;
}
function maximumTaxBps() external pure returns (uint256) {
return MAXIMUM_TAX_BPS;
}
function beforeInitialize(address, PoolKey calldata, uint160) external pure override returns (bytes4) {
return IHooks.beforeInitialize.selector;
}
function afterInitialize(address, PoolKey calldata, uint160, int24) external pure override returns (bytes4) {
return IHooks.afterInitialize.selector;
}
function beforeAddLiquidity(address, PoolKey calldata, ModifyLiquidityParams calldata, bytes calldata)
external
pure
override
returns (bytes4)
{
return IHooks.beforeAddLiquidity.selector;
}
function afterAddLiquidity(
address,
PoolKey calldata,
ModifyLiquidityParams calldata,
BalanceDelta,
BalanceDelta,
bytes calldata
) external pure override returns (bytes4, BalanceDelta) {
return (IHooks.afterAddLiquidity.selector, BalanceDelta.wrap(0));
}
function beforeRemoveLiquidity(address, PoolKey calldata, ModifyLiquidityParams calldata, bytes calldata)
external
pure
override
returns (bytes4)
{
return IHooks.beforeRemoveLiquidity.selector;
}
function afterRemoveLiquidity(
address,
PoolKey calldata,
ModifyLiquidityParams calldata,
BalanceDelta,
BalanceDelta,
bytes calldata
) external pure override returns (bytes4, BalanceDelta) {
return (IHooks.afterRemoveLiquidity.selector, BalanceDelta.wrap(0));
}
function beforeSwap(address, PoolKey calldata key, SwapParams calldata params, bytes calldata)
external
override
onlyPoolManager
returns (bytes4, BeforeSwapDelta, uint24)
{
_requireBoundPool(key);
if (params.amountSpecified == 0) return (IHooks.beforeSwap.selector, BeforeSwapDelta.wrap(0), 0);
bool nativeInput = _isNativeInput(key, params.zeroForOne);
bool exactInput = params.amountSpecified < 0;
bool nativeSpecified = exactInput ? nativeInput : !nativeInput;
if (!nativeSpecified) return (IHooks.beforeSwap.selector, BeforeSwapDelta.wrap(0), 0);
uint256 nativeSideAmount = _absolute(params.amountSpecified);
uint256 tax = _tax(nativeSideAmount, nativeInput ? buyTaxBps : sellTaxBps);
if (tax != 0) manager.take(Currency.wrap(address(0)), controller, tax);
return (IHooks.beforeSwap.selector, toBeforeSwapDelta(_toInt128(tax), 0), 0);
}
function afterSwap(
address sender,
PoolKey calldata key,
SwapParams calldata params,
BalanceDelta delta,
bytes calldata
) external override onlyPoolManager returns (bytes4, int128) {
_requireBoundPool(key);
bool nativeInput = _isNativeInput(key, params.zeroForOne);
bool exactInput = params.amountSpecified < 0;
bool nativeSpecified = exactInput ? nativeInput : !nativeInput;
uint256 nativeSideAmount;
uint256 tax;
if (nativeSpecified) {
nativeSideAmount = _absolute(params.amountSpecified);
tax = _tax(nativeSideAmount, nativeInput ? buyTaxBps : sellTaxBps);
} else {
int128 nativeDelta = Currency.unwrap(key.currency0) == address(0) ? delta.amount0() : delta.amount1();
nativeSideAmount = _absolute(nativeDelta);
tax = _tax(nativeSideAmount, nativeInput ? buyTaxBps : sellTaxBps);
}
if (tax == 0) return (IHooks.afterSwap.selector, 0);
if (!nativeSpecified) manager.take(Currency.wrap(address(0)), controller, tax);
_recordTax(sender, nativeInput, exactInput, nativeSideAmount, tax);
if (nativeSpecified) return (IHooks.afterSwap.selector, 0);
return (IHooks.afterSwap.selector, _toInt128(tax));
}
function beforeDonate(address, PoolKey calldata, uint256, uint256, bytes calldata)
external
pure
override
returns (bytes4)
{
return IHooks.beforeDonate.selector;
}
function afterDonate(address, PoolKey calldata, uint256, uint256, bytes calldata)
external
pure
override
returns (bytes4)
{
return IHooks.afterDonate.selector;
}
function releaseNativeTax(uint256 amount) external override onlyController {
if (amount == 0 || amount > accruedNativeTax) revert NativeTaxUnavailable(amount, accruedNativeTax);
accruedNativeTax -= amount;
totalNativeTaxProcessed += amount;
if (accruedNativeTax < processingThreshold) processingReady = false;
emit NativeTaxReleased(controller, amount, accruedNativeTax);
}
function setProcessingThreshold(uint256 amount) external override onlyController {
if (amount == 0 || amount > MAXIMUM_PROCESSING_THRESHOLD) revert InvalidConfiguration();
uint256 previous = processingThreshold;
processingThreshold = amount;
processingReady = accruedNativeTax >= amount;
emit ProcessingThresholdUpdated(previous, amount, processingReady);
}
function syncShare(address holder) external {
if (holder == address(0) || _isSystemAccount(holder)) return;
_syncShare(holder);
}
function _update(address from, address to, uint256 value) internal override {
if (to == address(0) || (from == address(0) && totalSupply() != 0)) revert SupplyImmutable();
super._update(from, to, value);
if (from == address(0)) return;
if (from != address(0) && !_isSystemAccount(from)) _syncShare(from);
if (to != address(0) && !_isSystemAccount(to)) _syncShare(to);
}
function _syncShare(address holder) private {
uint256 amount = balanceOf(holder);
// The production factory deploys the distributor first. Retaining the
// no-code deferral keeps deterministic address construction possible,
// while any deployed distributor failure now reverts instead of being
// silently swallowed and corrupting holder accounting.
if (distributor.code.length == 0) {
emit ShareSyncDeferred(holder, amount);
return;
}
IV4ShareDistributor(distributor).setShare(holder, amount);
emit ShareSynchronized(holder, amount);
}
function _recordTax(address trader, bool nativeInput, bool exactInput, uint256 nativeSideAmount, uint256 tax)
private
{
accruedNativeTax += tax;
totalNativeTaxCollected += tax;
emit NativeTaxAccrued(trader, nativeInput, exactInput, nativeSideAmount, tax, accruedNativeTax);
if (accruedNativeTax >= processingThreshold && !processingReady) {
processingReady = true;
emit ProcessingReady(accruedNativeTax, processingThreshold);
}
// A sell is the fully on-chain crank for both tax conversion and the
// bounded payout queue. The controller also drains already-allocated
// rewards when the tax threshold has not been reached, so a payout is
// never forced to wait for another reward purchase.
if (
!nativeInput && inlineProcessingEnabled && !_processingInProgress
&& gasleft() > inlineGasLimit + postProcessGasReserve
) {
_processingInProgress = true;
(bool success, bytes memory returndata) =
controller.call{gas: inlineGasLimit}(abi.encodeCall(IV4TaxProcessor.processAutomaticWork, ()));
_processingInProgress = false;
if (!success) emit ProcessingRetry(accruedNativeTax, keccak256(returndata));
emit InlineProcessingAttempt(success, accruedNativeTax);
}
}
function _requireBoundPool(PoolKey calldata key) private view {
if (PoolId.unwrap(key.toId()) != PoolId.unwrap(poolId) || address(key.hooks) != address(this)) {
revert InvalidPool(address(key.hooks));
}
}
function _isNativeInput(PoolKey calldata key, bool zeroForOne) private pure returns (bool) {
Currency input = zeroForOne ? key.currency0 : key.currency1;
return Currency.unwrap(input) == address(0);
}
function _tax(uint256 amount, uint256 rateBps) private pure returns (uint256) {
return (amount * rateBps) / BPS_DENOMINATOR;
}
function _absolute(int256 value) private pure returns (uint256) {
// forge-lint: disable-next-line(unsafe-typecast)
return value < 0 ? uint256(-value) : uint256(value);
}
function _toInt128(uint256 amount) private pure returns (int128 result) {
if (amount > uint256(type(uint128).max) / 2) revert NativeTaxTooLarge(amount);
// forge-lint: disable-next-line(unsafe-typecast)
result = int128(int256(amount));
}
function _isSystemAccount(address account) private view returns (bool) {
return account == address(this) || account == address(manager) || account == controller
|| account == distributor || account == marketingWallet || account == BURN_ADDRESS;
}
function isSystemBalanceExcluded(address account) external view returns (bool) {
return _isSystemAccount(account);
}
receive() external payable {
if (msg.sender != address(manager)) revert UnauthorizedPoolManager(msg.sender);
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "config",
"type": "tuple",
"components": [
{
"name": "name",
"type": "string",
"internalType": "string"
},
{
"name": "symbol",
"type": "string",
"internalType": "string"
},
{
"name": "deployer",
"type": "address",
"internalType": "address"
},
{
"name": "marketingWallet",
"type": "address",
"internalType": "address"
},
{
"name": "rewardToken",
"type": "address",
"internalType": "address"
},
{
"name": "controller",
"type": "address",
"internalType": "address"
},
{
"name": "distributor",
"type": "address",
"internalType": "address"
},
{
"name": "poolManager",
"type": "address",
"internalType": "address"
},
{
"name": "poolKey",
"type": "tuple",
"components": [
{
"name": "currency0",
"type": "address",
"internalType": "Currency"
},
{
"name": "currency1",
"type": "address",
"internalType": "Currency"
},
{
"name": "fee",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "tickSpacing",
"type": "int24",
"internalType": "int24"
},
{
"name": "hooks",
"type": "address",
"internalType": "contract IHooks"
}
],
"internalType": "struct PoolKey"
},
{
"name": "buyTaxBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "sellTaxBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "processingThreshold",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "marketingBps",
"type": "uint16",
"internalType": "uint16"
},
{
"name": "inlineProcessingEnabled",
"type": "bool",
"internalType": "bool"
},
{
"name": "inlineProcessingProofHash",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "inlineNestedUnlockSafe",
"type": "bool",
"internalType": "bool"
},
{
"name": "inlineGasLimit",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "postProcessGasReserve",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "runtimeHash",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "permissionHash",
"type": "bytes32",
"internalType": "bytes32"
}
],
"internalType": "struct CASHCATBRRR.LaunchConfig"
}
],
"stateMutability": "nonpayable"
},
{
"name": "ERC20InsufficientAllowance",
"type": "error",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "allowance",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "needed",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "ERC20InsufficientBalance",
"type": "error",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
},
{
"name": "balance",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "needed",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "ERC20InvalidApprover",
"type": "error",
"inputs": [
{
"name": "approver",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC20InvalidReceiver",
"type": "error",
"inputs": [
{
"name": "receiver",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC20InvalidSender",
"type": "error",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "ERC20InvalidSpender",
"type": "error",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "InlineProcessingGasTooLow",
"type": "error",
"inputs": []
},
{
"name": "InvalidConfiguration",
"type": "error",
"inputs": []
},
{
"name": "InvalidPool",
"type": "error",
"inputs": [
{
"name": "supplied",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "InvalidPoolKey",
"type": "error",
"inputs": []
},
{
"name": "NativeTaxTooLarge",
"type": "error",
"inputs": [
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "NativeTaxUnavailable",
"type": "error",
"inputs": [
{
"name": "requested",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "available",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "NativeTransferFailed",
"type": "error",
"inputs": []
},
{
"name": "SupplyImmutable",
"type": "error",
"inputs": []
},
{
"name": "UnauthorizedController",
"type": "error",
"inputs": [
{
"name": "caller",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "UnauthorizedPoolManager",
"type": "error",
"inputs": [
{
"name": "caller",
"type": "address",
"internalType": "address"
}
]
},
{
"name": "WrongChain",
"type": "error",
"inputs": [
{
"name": "actualChainId",
"type": "uint256",
"internalType": "uint256"
}
]
},
{
"name": "ZeroAddress",
"type": "error",
"inputs": []
},
{
"name": "Approval",
"type": "event",
"inputs": [
{
"name": "owner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "spender",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "InlineProcessingAttempt",
"type": "event",
"inputs": [
{
"name": "success",
"type": "bool",
"indexed": false,
"internalType": "bool"
},
{
"name": "accruedAfter",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "NativeTaxAccrued",
"type": "event",
"inputs": [
{
"name": "trader",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "nativeIsInput",
"type": "bool",
"indexed": true,
"internalType": "bool"
},
{
"name": "exactInput",
"type": "bool",
"indexed": true,
"internalType": "bool"
},
{
"name": "nativeSideAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "taxAmount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "accruedAfter",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "NativeTaxReleased",
"type": "event",
"inputs": [
{
"name": "controller",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "accruedAfter",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "ProcessingReady",
"type": "event",
"inputs": [
{
"name": "accruedTax",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "threshold",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "ProcessingRetry",
"type": "event",
"inputs": [
{
"name": "accruedTax",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "reasonHash",
"type": "bytes32",
"indexed": true,
"internalType": "bytes32"
}
],
"anonymous": false
},
{
"name": "ProcessingThresholdUpdated",
"type": "event",
"inputs": [
{
"name": "previousThreshold",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "newThreshold",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
},
{
"name": "processingReady",
"type": "bool",
"indexed": false,
"internalType": "bool"
}
],
"anonymous": false
},
{
"name": "ShareSyncDeferred",
"type": "event",
"inputs": [
{
"name": "holder",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "ShareSynchronized",
"type": "event",
"inputs": [
{
"name": "holder",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "Transfer",
"type": "event",
"inputs": [
{
"name": "from",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "to",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"indexed": false,
"internalType": "uint256"
}
],
"anonymous": false
},
{
"name": "BPS_DENOMINATOR",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "BURN_ADDRESS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "DEFAULT_INLINE_GAS_LIMIT",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "DEFAULT_POST_PROCESS_GAS_RESERVE",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "DEFAULT_PROCESSING_THRESHOLD",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "EXPECTED_CHAIN_ID",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "FIXED_SUPPLY",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "HOOK_PERMISSION_MASK",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint160",
"internalType": "uint160"
}
],
"stateMutability": "view"
},
{
"name": "MAXIMUM_POOL_FEE",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint24",
"internalType": "uint24"
}
],
"stateMutability": "view"
},
{
"name": "MAXIMUM_PROCESSING_THRESHOLD",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "MAXIMUM_TAX_BPS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "REQUIRED_HOOK_PERMISSION_BITS",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint160",
"internalType": "uint160"
}
],
"stateMutability": "view"
},
{
"name": "accruedNativeTax",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "afterAddLiquidity",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "tuple",
"components": [
{
"name": "currency0",
"type": "address",
"internalType": "Currency"
},
{
"name": "currency1",
"type": "address",
"internalType": "Currency"
},
{
"name": "fee",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "tickSpacing",
"type": "int24",
"internalType": "int24"
},
{
"name": "hooks",
"type": "address",
"internalType": "contract IHooks"
}
],
"internalType": "struct PoolKey"
},
{
"name": "",
"type": "tuple",
"components": [
{
"name": "tickLower",
"type": "int24",
"internalType": "int24"
},
{
"name": "tickUpper",
"type": "int24",
"internalType": "int24"
},
{
"name": "liquidityDelta",
"type": "int256",
"internalType": "int256"
},
{
"name": "salt",
"type": "bytes32",
"internalType": "bytes32"
}
],
"internalType": "struct ModifyLiquidityParams"
},
{
"name": "",
"type": "int256",
"internalType": "BalanceDelta"
},
{
"name": "",
"type": "int256",
"internalType": "BalanceDelta"
},
{
"name": "",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "bytes4",
"internalType": "bytes4"
},
{
"name": "",
"type": "int256",
"internalType": "BalanceDelta"
}
],
"stateMutability": "pure"
},
{
"name": "afterDonate",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "tuple",
"components": [
{
"name": "currency0",
"type": "address",
"internalType": "Currency"
},
{
"name": "currency1",
"type": "address",
"internalType": "Currency"
},
{
"name": "fee",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "tickSpacing",
"type": "int24",
"internalType": "int24"
},
{
"name": "hooks",
"type": "address",
"internalType": "contract IHooks"
}
],
"internalType": "struct PoolKey"
},
{
"name": "",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "bytes4",
"internalType": "bytes4"
}
],
"stateMutability": "pure"
},
{
"name": "afterInitialize",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "tuple",
"components": [
{
"name": "currency0",
"type": "address",
"internalType": "Currency"
},
{
"name": "currency1",
"type": "address",
"internalType": "Currency"
},
{
"name": "fee",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "tickSpacing",
"type": "int24",
"internalType": "int24"
},
{
"name": "hooks",
"type": "address",
"internalType": "contract IHooks"
}
],
"internalType": "struct PoolKey"
},
{
"name": "",
"type": "uint160",
"internalType": "uint160"
},
{
"name": "",
"type": "int24",
"internalType": "int24"
}
],
"outputs": [
{
"name": "",
"type": "bytes4",
"internalType": "bytes4"
}
],
"stateMutability": "pure"
},
{
"name": "afterRemoveLiquidity",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "tuple",
"components": [
{
"name": "currency0",
"type": "address",
"internalType": "Currency"
},
{
"name": "currency1",
"type": "address",
"internalType": "Currency"
},
{
"name": "fee",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "tickSpacing",
"type": "int24",
"internalType": "int24"
},
{
"name": "hooks",
"type": "address",
"internalType": "contract IHooks"
}
],
"internalType": "struct PoolKey"
},
{
"name": "",
"type": "tuple",
"components": [
{
"name": "tickLower",
"type": "int24",
"internalType": "int24"
},
{
"name": "tickUpper",
"type": "int24",
"internalType": "int24"
},
{
"name": "liquidityDelta",
"type": "int256",
"internalType": "int256"
},
{
"name": "salt",
"type": "bytes32",
"internalType": "bytes32"
}
],
"internalType": "struct ModifyLiquidityParams"
},
{
"name": "",
"type": "int256",
"internalType": "BalanceDelta"
},
{
"name": "",
"type": "int256",
"internalType": "BalanceDelta"
},
{
"name": "",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "bytes4",
"internalType": "bytes4"
},
{
"name": "",
"type": "int256",
"internalType": "BalanceDelta"
}
],
"stateMutability": "pure"
},
{
"name": "afterSwap",
"type": "function",
"inputs": [
{
"name": "sender",
"type": "address",
"internalType": "address"
},
{
"name": "key",
"type": "tuple",
"components": [
{
"name": "currency0",
"type": "address",
"internalType": "Currency"
},
{
"name": "currency1",
"type": "address",
"internalType": "Currency"
},
{
"name": "fee",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "tickSpacing",
"type": "int24",
"internalType": "int24"
},
{
"name": "hooks",
"type": "address",
"internalType": "contract IHooks"
}
],
"internalType": "struct PoolKey"
},
{
"name": "params",
"type": "tuple",
"components": [
{
"name": "zeroForOne",
"type": "bool",
"internalType": "bool"
},
{
"name": "amountSpecified",
"type": "int256",
"internalType": "int256"
},
{
"name": "sqrtPriceLimitX96",
"type": "uint160",
"internalType": "uint160"
}
],
"internalType": "struct SwapParams"
},
{
"name": "delta",
"type": "int256",
"internalType": "BalanceDelta"
},
{
"name": "",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "bytes4",
"internalType": "bytes4"
},
{
"name": "",
"type": "int128",
"internalType": "int128"
}
],
"stateMutability": "nonpayable"
},
{
"name": "allowance",
"type": "function",
"inputs": [
{
"name": "owner",
"type": "address",
"internalType": "address"
},
{
"name": "spender",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "approve",
"type": "function",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "balanceOf",
"type": "function",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "beforeAddLiquidity",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "tuple",
"components": [
{
"name": "currency0",
"type": "address",
"internalType": "Currency"
},
{
"name": "currency1",
"type": "address",
"internalType": "Currency"
},
{
"name": "fee",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "tickSpacing",
"type": "int24",
"internalType": "int24"
},
{
"name": "hooks",
"type": "address",
"internalType": "contract IHooks"
}
],
"internalType": "struct PoolKey"
},
{
"name": "",
"type": "tuple",
"components": [
{
"name": "tickLower",
"type": "int24",
"internalType": "int24"
},
{
"name": "tickUpper",
"type": "int24",
"internalType": "int24"
},
{
"name": "liquidityDelta",
"type": "int256",
"internalType": "int256"
},
{
"name": "salt",
"type": "bytes32",
"internalType": "bytes32"
}
],
"internalType": "struct ModifyLiquidityParams"
},
{
"name": "",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "bytes4",
"internalType": "bytes4"
}
],
"stateMutability": "pure"
},
{
"name": "beforeDonate",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "tuple",
"components": [
{
"name": "currency0",
"type": "address",
"internalType": "Currency"
},
{
"name": "currency1",
"type": "address",
"internalType": "Currency"
},
{
"name": "fee",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "tickSpacing",
"type": "int24",
"internalType": "int24"
},
{
"name": "hooks",
"type": "address",
"internalType": "contract IHooks"
}
],
"internalType": "struct PoolKey"
},
{
"name": "",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "",
"type": "uint256",
"internalType": "uint256"
},
{
"name": "",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "bytes4",
"internalType": "bytes4"
}
],
"stateMutability": "pure"
},
{
"name": "beforeInitialize",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "tuple",
"components": [
{
"name": "currency0",
"type": "address",
"internalType": "Currency"
},
{
"name": "currency1",
"type": "address",
"internalType": "Currency"
},
{
"name": "fee",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "tickSpacing",
"type": "int24",
"internalType": "int24"
},
{
"name": "hooks",
"type": "address",
"internalType": "contract IHooks"
}
],
"internalType": "struct PoolKey"
},
{
"name": "",
"type": "uint160",
"internalType": "uint160"
}
],
"outputs": [
{
"name": "",
"type": "bytes4",
"internalType": "bytes4"
}
],
"stateMutability": "pure"
},
{
"name": "beforeRemoveLiquidity",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "tuple",
"components": [
{
"name": "currency0",
"type": "address",
"internalType": "Currency"
},
{
"name": "currency1",
"type": "address",
"internalType": "Currency"
},
{
"name": "fee",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "tickSpacing",
"type": "int24",
"internalType": "int24"
},
{
"name": "hooks",
"type": "address",
"internalType": "contract IHooks"
}
],
"internalType": "struct PoolKey"
},
{
"name": "",
"type": "tuple",
"components": [
{
"name": "tickLower",
"type": "int24",
"internalType": "int24"
},
{
"name": "tickUpper",
"type": "int24",
"internalType": "int24"
},
{
"name": "liquidityDelta",
"type": "int256",
"internalType": "int256"
},
{
"name": "salt",
"type": "bytes32",
"internalType": "bytes32"
}
],
"internalType": "struct ModifyLiquidityParams"
},
{
"name": "",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "bytes4",
"internalType": "bytes4"
}
],
"stateMutability": "pure"
},
{
"name": "beforeSwap",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "key",
"type": "tuple",
"components": [
{
"name": "currency0",
"type": "address",
"internalType": "Currency"
},
{
"name": "currency1",
"type": "address",
"internalType": "Currency"
},
{
"name": "fee",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "tickSpacing",
"type": "int24",
"internalType": "int24"
},
{
"name": "hooks",
"type": "address",
"internalType": "contract IHooks"
}
],
"internalType": "struct PoolKey"
},
{
"name": "params",
"type": "tuple",
"components": [
{
"name": "zeroForOne",
"type": "bool",
"internalType": "bool"
},
{
"name": "amountSpecified",
"type": "int256",
"internalType": "int256"
},
{
"name": "sqrtPriceLimitX96",
"type": "uint160",
"internalType": "uint160"
}
],
"internalType": "struct SwapParams"
},
{
"name": "",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "bytes4",
"internalType": "bytes4"
},
{
"name": "",
"type": "int256",
"internalType": "BeforeSwapDelta"
},
{
"name": "",
"type": "uint24",
"internalType": "uint24"
}
],
"stateMutability": "nonpayable"
},
{
"name": "buildProvenanceHash",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"name": "buyTaxBps",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "controller",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "currency0",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "Currency"
}
],
"stateMutability": "view"
},
{
"name": "currency1",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "Currency"
}
],
"stateMutability": "view"
},
{
"name": "decimals",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "uint8"
}
],
"stateMutability": "view"
},
{
"name": "deployer",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "distributor",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "fixedSupply",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "pure"
},
{
"name": "hasRequiredHookPermissions",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "hookPermissionBits",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint160",
"internalType": "uint160"
}
],
"stateMutability": "pure"
},
{
"name": "inlineGasLimit",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "inlineNestedUnlockSafe",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "inlineProcessingEnabled",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "inlineProcessingProofHash",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"name": "isSystemBalanceExcluded",
"type": "function",
"inputs": [
{
"name": "account",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "launchFingerprint",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"name": "manager",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IPoolManager"
}
],
"stateMutability": "view"
},
{
"name": "marketingBps",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "marketingWallet",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "maximumTaxBps",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "pure"
},
{
"name": "name",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "permissionHash",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"name": "poolFee",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint24",
"internalType": "uint24"
}
],
"stateMutability": "view"
},
{
"name": "poolId",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "PoolId"
}
],
"stateMutability": "view"
},
{
"name": "poolKey",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "key",
"type": "tuple",
"components": [
{
"name": "currency0",
"type": "address",
"internalType": "Currency"
},
{
"name": "currency1",
"type": "address",
"internalType": "Currency"
},
{
"name": "fee",
"type": "uint24",
"internalType": "uint24"
},
{
"name": "tickSpacing",
"type": "int24",
"internalType": "int24"
},
{
"name": "hooks",
"type": "address",
"internalType": "contract IHooks"
}
],
"internalType": "struct PoolKey"
}
],
"stateMutability": "view"
},
{
"name": "poolManager",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "poolTickSpacing",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "int24",
"internalType": "int24"
}
],
"stateMutability": "view"
},
{
"name": "postProcessGasReserve",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "processingReady",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "processingThreshold",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "releaseNativeTax",
"type": "function",
"inputs": [
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "rewardToken",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "runtimeHash",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bytes32",
"internalType": "bytes32"
}
],
"stateMutability": "view"
},
{
"name": "sellTaxBps",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint16",
"internalType": "uint16"
}
],
"stateMutability": "view"
},
{
"name": "setProcessingThreshold",
"type": "function",
"inputs": [
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "symbol",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "syncShare",
"type": "function",
"inputs": [
{
"name": "holder",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "totalNativeTaxCollected",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "totalNativeTaxProcessed",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "totalSupply",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "transfer",
"type": "function",
"inputs": [
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "transferFrom",
"type": "function",
"inputs": [
{
"name": "from",
"type": "address",
"internalType": "address"
},
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "value",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"type": "receive",
"stateMutability": "payable"
}
]0x6080604052600436106103ed575f3560e01c806375f0a8741161020a578063c1ffb3df1161011e578063dd62ed3e116100a8578063f77c479111610078578063f77c479114610fb9578063f7c618c114610fec578063f9c901601461101f578063fccc281314611032578063ff99574b14611047575f5ffd5b8063dd62ed3e14610f01578063ddfc94f014610f45578063e1a4521814610f78578063e1b4af6914610f8d575f5ffd5b8063d1fd89c5116100ee578063d1fd89c514610e43578063d534c1f214610e58578063d5f3948814610e73578063dc4c90d314610ea6578063dc98354e14610ed8575f5ffd5b8063c1ffb3df14610da9578063c473413a14610dbe578063c969943e14610df1578063cffd129c14610e10575f5ffd5b80639f063efc1161019f578063a9c5fc7e1161016f578063a9c5fc7e14610cd0578063b41a329714610ce9578063b47b2fb114610d08578063b6a8b0fa14610d4a578063bfe1092814610d76575f5ffd5b80639f063efc14610c56578063a48f3e9414610c85578063a9059cbb14610c9b578063a99d715814610cba575f5ffd5b8063945cc37b116101da578063945cc37b14610bc357806395d89b4114610bf6578063965bed8c14610c0a5780639e783a5e14610c3d575f5ffd5b806375f0a87414610b3657806379f1232b14610b69578063915b8de614610b9c57806393ee1cb714610bb0575f5ffd5b80633845b2061161030157806366e3540a116102965780636ea9419d116102665780636ea9419d14610a685780636fe7e6eb14610a7d57806370a0823114610aa75780637164cf9b14610adb578063759d36e214610b21575f5ffd5b806366e3540a146109815780636737b603146109c75780636c2bbe7e146109fa5780636ce15f2414610a49575f5ffd5b806341c08676116102d157806341c08676146108d5578063458d4f31146108ea578063481c6a7514610904578063575e24b414610937575f5ffd5b80633845b2061461084657806338f00d511461085b5780633e0dc34e1461088e57806340b90d6e146108c1575f5ffd5b806318160ddd1161038257806321d0ee701161035257806321d0ee701461076a57806323b872dd146107ae578063259982e5146107cd5780632aedc7b7146107f8578063313ce5671461082b575f5ffd5b806318160ddd146105d7578063182148ef146105eb5780631b2080dc146107355780631e70872e14610754575f5ffd5b8063089fe6aa116103bd578063089fe6aa146104f75780630919fac51461053e578063095ea7b31461055d57806310d737b81461058c575f5ffd5b8063011abb351461044857806303b145fa1461048e57806306bc264a146104a357806306fdde03146104d6575f5ffd5b3661044457336001600160a01b037f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e4095116146104425760405163876c5df960e01b81523360048201526024015b60405180910390fd5b005b5f5ffd5b348015610453575f5ffd5b5061047b7f13ca516dc3435143217268b66230894a38ef2b1f9f64ef166e6f2671cc01a94381565b6040519081526020015b60405180910390f35b348015610499575f5ffd5b5061047b6103e881565b3480156104ae575f5ffd5b5061047b7fa80eaec0dbea2d02801cfbf15f4de4773a1cdb6a443e07e0c97f16a77f6a830e81565b3480156104e1575f5ffd5b506104ea611065565b6040516104859190612247565b348015610502575f5ffd5b5061052a7f000000000000000000000000000000000000000000000000000000000000271081565b60405162ffffff9091168152602001610485565b348015610549575f5ffd5b5061044261055836600461227c565b6110f5565b348015610568575f5ffd5b5061057c6105773660046122b7565b6111d8565b6040519015158152602001610485565b348015610597575f5ffd5b506105bf7f0000000000000000000000004f33b30ffc77070bf4b45d0bf238dc00b20d40cc81565b6040516001600160a01b039091168152602001610485565b3480156105e2575f5ffd5b5060025461047b565b3480156105f6575f5ffd5b506106e26040805160a0810182525f80825260208201819052918101829052606081018290526080810191909152506040805160a0810182526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811682527f0000000000000000000000004f33b30ffc77070bf4b45d0bf238dc00b20d40cc16602082015262ffffff7f000000000000000000000000000000000000000000000000000000000000271016918101919091527f00000000000000000000000000000000000000000000000000000000000000c860020b606082015230608082015290565b604051610485919081516001600160a01b03908116825260208084015182169083015260408084015162ffffff169083015260608084015160020b90830152608092830151169181019190915260a00190565b348015610740575f5ffd5b5061057c61074f3660046122e1565b6111f1565b34801561075f575f5ffd5b5061047b620dbba081565b348015610775575f5ffd5b50610795610784366004612367565b63021d0ee760e41b95945050505050565b6040516001600160e01b03199091168152602001610485565b3480156107b9575f5ffd5b5061057c6107c83660046123de565b6111fb565b3480156107d8575f5ffd5b506107956107e7366004612367565b63259982e560e01b95945050505050565b348015610803575f5ffd5b5061047b7f0437b393e7e08d91385f938a98e6d8a0f0d895a1693a88830c1166b57251889f81565b348015610836575f5ffd5b5060405160128152602001610485565b348015610851575f5ffd5b5061047b60055481565b348015610866575f5ffd5b5061057c7f000000000000000000000000000000000000000000000000000000000000000181565b348015610899575f5ffd5b5061047b7ffd4f8d9e932c1e10b238e41d45fa0ade3e3b8f4295b3942c8bb95baf1db4c8c881565b3480156108cc575f5ffd5b506103e861047b565b3480156108e0575f5ffd5b5061047b60085481565b3480156108f5575f5ffd5b5061047b662386f26fc1000081565b34801561090f575f5ffd5b506105bf7f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e4095181565b348015610942575f5ffd5b5061095661095136600461242c565b61121e565b604080516001600160e01b03199094168452602084019290925262ffffff1690820152606001610485565b34801561098c575f5ffd5b506109b47f000000000000000000000000000000000000000000000000000000000000251c81565b60405161ffff9091168152602001610485565b3480156109d2575f5ffd5b5061047b7fb9dee78766edf9f3d34061d04944088e3651dba6698f62a7c5c9b942307636a081565b348015610a05575f5ffd5b50610a29610a14366004612486565b633615df3f60e11b5f97509795505050505050565b604080516001600160e01b03199093168352602083019190915201610485565b348015610a54575f5ffd5b50610442610a633660046122e1565b61142d565b348015610a73575f5ffd5b5061047b60065481565b348015610a88575f5ffd5b50610795610a97366004612522565b636fe7e6eb60e01b949350505050565b348015610ab2575f5ffd5b5061047b610ac13660046122e1565b6001600160a01b03165f9081526020819052604090205490565b348015610ae6575f5ffd5b50610b0e7f00000000000000000000000000000000000000000000000000000000000000c881565b60405160029190910b8152602001610485565b348015610b2c575f5ffd5b5061047b60075481565b348015610b41575f5ffd5b506105bf7f00000000000000000000000046681d1de7b5dd86ef74f17fabce67a46466807e81565b348015610b74575f5ffd5b506105bf7f000000000000000000000000000000000000000000000000000000000000000081565b348015610ba7575f5ffd5b506105bf60cc81565b348015610bbb575f5ffd5b5060cc6105bf565b348015610bce575f5ffd5b5061047b7f000000000000000000000000000000000000000000000000000000000098968081565b348015610c01575f5ffd5b506104ea61145b565b348015610c15575f5ffd5b5061057c7f000000000000000000000000000000000000000000000000000000000000000181565b348015610c48575f5ffd5b5060cc613fff30161461057c565b348015610c61575f5ffd5b50610a29610c70366004612486565b6327c18fbf60e21b5f97509795505050505050565b348015610c90575f5ffd5b5061052a620f424081565b348015610ca6575f5ffd5b5061057c610cb53660046122b7565b61146a565b348015610cc5575f5ffd5b5061047b62030d4081565b348015610cdb575f5ffd5b5060095461057c9060ff1681565b348015610cf4575f5ffd5b50610442610d0336600461227c565b611477565b348015610d13575f5ffd5b50610d27610d22366004612579565b6115b2565b604080516001600160e01b03199093168352600f9190910b602083015201610485565b348015610d55575f5ffd5b50610795610d643660046125fa565b635b54587d60e11b9695505050505050565b348015610d81575f5ffd5b506105bf7f00000000000000000000000073ec0cd1f3386a6e34e745eb4178fb98abed8b4781565b348015610db4575f5ffd5b5061047b61123781565b348015610dc9575f5ffd5b506109b47f00000000000000000000000000000000000000000000000000000000000001f481565b348015610dfc575f5ffd5b5061047b6b033b2e3c9fd0803ce800000081565b348015610e1b575f5ffd5b506109b47f00000000000000000000000000000000000000000000000000000000000003e881565b348015610e4e575f5ffd5b506105bf613fff81565b348015610e63575f5ffd5b5061047b670de0b6b3a764000081565b348015610e7e575f5ffd5b506105bf7f00000000000000000000000046681d1de7b5dd86ef74f17fabce67a46466807e81565b348015610eb1575f5ffd5b507f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e409516105bf565b348015610ee3575f5ffd5b50610795610ef2366004612654565b636e4c1aa760e11b9392505050565b348015610f0c575f5ffd5b5061047b610f1b36600461269b565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610f50575f5ffd5b5061047b7f000000000000000000000000000000000000000000000000000000000007a12081565b348015610f83575f5ffd5b5061047b61271081565b348015610f98575f5ffd5b50610795610fa73660046125fa565b63e1b4af6960e01b9695505050505050565b348015610fc4575f5ffd5b506105bf7f0000000000000000000000002f05184013cd59d0d8c1cd9745d730af5212176781565b348015610ff7575f5ffd5b506105bf7f000000000000000000000000020bfc650a365f8bb26819deaabf3e21291018b481565b34801561102a575f5ffd5b50303f61047b565b34801561103d575f5ffd5b506105bf61dead81565b348015611052575f5ffd5b506b033b2e3c9fd0803ce800000061047b565b606060038054611074906126d2565b80601f01602080910402602001604051908101604052809291908181526020018280546110a0906126d2565b80156110eb5780601f106110c2576101008083540402835291602001916110eb565b820191905f5260205f20905b8154815290600101906020018083116110ce57829003601f168201915b5050505050905090565b336001600160a01b037f0000000000000000000000002f05184013cd59d0d8c1cd9745d730af521217671614611140576040516311ca4b2760e31b8152336004820152602401610439565b8015806111545750670de0b6b3a764000081115b156111725760405163c52a9bd360e01b815260040160405180910390fd5b60058054908290556006546009805460ff1916918411159182179055604080518381526020810185905260ff9092161515908201527f631492636224ee27719dd14570ef87b2c862264c203d0f9a84c770c920aa660a9060600160405180910390a15050565b5f336111e5818585611814565b60019150505b92915050565b5f6111eb82611826565b5f3361120885828561193d565b6112138585856119b9565b506001949350505050565b5f8080336001600160a01b037f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e40951161461126c5760405163876c5df960e01b8152336004820152602401610439565b61127587611a16565b85602001355f0361129457506315d7892d60e21b91505f905080611422565b5f6112ab886112a660208a018a612704565b611aaf565b90505f6020880135811390816112c25782156112c4565b825b9050806112e457506315d7892d60e21b94505f9350839250611422915050565b5f6112f28a60200135611aea565b90505f61134f8286611324577f00000000000000000000000000000000000000000000000000000000000003e8611346565b7f00000000000000000000000000000000000000000000000000000000000001f45b61ffff16611b01565b905080156113fb57604051630b0d9c0960e01b81525f60048201526001600160a01b037f0000000000000000000000002f05184013cd59d0d8c1cd9745d730af5212176781166024830152604482018390527f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e409511690630b0d9c09906064015f604051808303815f87803b1580156113e4575f5ffd5b505af11580156113f6573d5f5f3e3d5ffd5b505050505b6315d7892d60e21b61141561140f83611b20565b60801b90565b5f97509750975050505050505b955095509592505050565b6001600160a01b0381161580611447575061144781611826565b1561144f5750565b61145881611b63565b50565b606060048054611074906126d2565b5f336111e58185856119b9565b336001600160a01b037f0000000000000000000000002f05184013cd59d0d8c1cd9745d730af5212176716146114c2576040516311ca4b2760e31b8152336004820152602401610439565b8015806114d0575060065481115b156114fc5760065460405163219b1ef360e11b8152610439918391600401918252602082015260400190565b8060065f82825461150d9190612737565b925050819055508060085f828254611525919061274a565b90915550506005546006541015611541576009805460ff191690555b7f0000000000000000000000002f05184013cd59d0d8c1cd9745d730af521217676001600160a01b03167fbe3f6c64082ec61f21ff4b3b34b37d7e30ba898f1f983e47aecde6ca0845503a826006546040516115a7929190918252602082015260400190565b60405180910390a250565b5f80336001600160a01b037f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e4095116146115ff5760405163876c5df960e01b8152336004820152602401610439565b61160887611a16565b5f61161a886112a660208a018a612704565b90505f602088013581139081611631578215611633565b825b90505f5f82156116825761164a8b60200135611aea565b915061167b8286611324577f00000000000000000000000000000000000000000000000000000000000003e8611346565b90506116fb565b5f8061169160208f018f6122e1565b6001600160a01b0316146116ae576116a98b600f0b90565b6116b8565b6116b88b60801d90565b90506116c681600f0b611aea565b92506116f78387611324577f00000000000000000000000000000000000000000000000000000000000003e8611346565b9150505b805f0361171a575063b47b2fb160e01b95505f94506118099350505050565b826117c357604051630b0d9c0960e01b81525f60048201526001600160a01b037f0000000000000000000000002f05184013cd59d0d8c1cd9745d730af5212176781166024830152604482018390527f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e409511690630b0d9c09906064015f604051808303815f87803b1580156117ac575f5ffd5b505af11580156117be573d5f5f3e3d5ffd5b505050505b6117d08d86868585611ca5565b82156117ee575063b47b2fb160e01b95505f94506118099350505050565b63b47b2fb160e01b6117ff82611b20565b9650965050505050505b965096945050505050565b6118218383836001611f92565b505050565b5f6001600160a01b03821630148061186f57507f0000000000000000000000008366a39cc670b4001a1121b8f6a443a643e409516001600160a01b0316826001600160a01b0316145b806118ab57507f0000000000000000000000002f05184013cd59d0d8c1cd9745d730af521217676001600160a01b0316826001600160a01b0316145b806118e757507f00000000000000000000000073ec0cd1f3386a6e34e745eb4178fb98abed8b476001600160a01b0316826001600160a01b0316145b8061192357507f00000000000000000000000046681d1de7b5dd86ef74f17fabce67a46466807e6001600160a01b0316826001600160a01b0316145b806111eb57506001600160a01b03821661dead1492915050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198110156119b357818110156119a557604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610439565b6119b384848484035f611f92565b50505050565b6001600160a01b0383166119e257604051634b637e8f60e11b81525f6004820152602401610439565b6001600160a01b038216611a0b5760405163ec442f0560e01b81525f6004820152602401610439565b611821838383612064565b7ffd4f8d9e932c1e10b238e41d45fa0ade3e3b8f4295b3942c8bb95baf1db4c8c8611a50611a493684900384018461276f565b60a0902090565b141580611a75575030611a6960a08301608084016122e1565b6001600160a01b031614155b1561145857611a8a60a08201608083016122e1565b604051630f4c971b60e21b81526001600160a01b039091166004820152602401610439565b5f5f82611acb57611ac660408501602086016122e1565b611ad8565b611ad860208501856122e1565b6001600160a01b031615949350505050565b5f5f8212611af857816111eb565b6111eb82612809565b5f612710611b0f8385612823565b611b19919061283a565b9392505050565b5f611b3c60026fffffffffffffffffffffffffffffffff61283a565b821115611b5f5760405163345e643960e01b815260048101839052602401610439565b5090565b6001600160a01b038181165f90815260208190526040812054917f00000000000000000000000073ec0cd1f3386a6e34e745eb4178fb98abed8b47163b9003611bed57816001600160a01b03167f06bea5a872b20469fdafc87fc98e3ac3b6c625b5a5030eec62737497b2cf71b082604051611be191815260200190565b60405180910390a25050565b604051630a5b654b60e11b81526001600160a01b038381166004830152602482018390527f00000000000000000000000073ec0cd1f3386a6e34e745eb4178fb98abed8b4716906314b6ca96906044015f604051808303815f87803b158015611c54575f5ffd5b505af1158015611c66573d5f5f3e3d5ffd5b50505050816001600160a01b03167fd0155e433e8d6eb42df0cda6c7d9439679ec584191e7f3037e8a19a03623009682604051611be191815260200190565b8060065f828254611cb6919061274a565b925050819055508060075f828254611cce919061274a565b909155505060065460408051848152602081018490529081019190915283151590851515906001600160a01b038816907f4ea2c7adb560afe95cb0a2bad0eb53293aa711c7aa9474b5ad02d60bfb04e4f49060600160405180910390a460055460065410158015611d42575060095460ff16155b15611d95576009805460ff191660011790556006546005546040517f85c5b485f86c1a9a3928a19da88e89d3f377db8a3fb0b0af914cb2e71cf269fb91611d8c9190815260200190565b60405180910390a25b83158015611dc057507f00000000000000000000000000000000000000000000000000000000000000015b8015611dd45750600954610100900460ff16155b8015611e285750611e257f000000000000000000000000000000000000000000000000000000000007a1207f000000000000000000000000000000000000000000000000000000000098968061274a565b5a115b15611f8b576009805461ff00191661010017905560408051600481526024810182526020810180516001600160e01b031663fa13ae5b60e01b17905290515f9182916001600160a01b037f0000000000000000000000002f05184013cd59d0d8c1cd9745d730af5212176716917f000000000000000000000000000000000000000000000000000000000098968091611ec19190612859565b5f604051808303815f8787f1925050503d805f8114611efb576040519150601f19603f3d011682016040523d82523d5f602084013e611f00565b606091505b506009805461ff0019169055909250905081611f4957805160208201206006546040517f1a7f452f46e2821b4998626f23e0b9900bddb60e1288dc819c0bbcfef8f83b57905f90a35b60065460408051841515815260208101929092527f25234507f33d1dc516165d31e4ee8032feb7a70bcc1196f3e5df10064bb24057910160405180910390a150505b5050505050565b6001600160a01b038416611fbb5760405163e602df0560e01b81525f6004820152602401610439565b6001600160a01b038316611fe457604051634a1406b160e11b81525f6004820152602401610439565b6001600160a01b038085165f90815260016020908152604080832093871683529290522082905580156119b357826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405161205691815260200190565b60405180910390a350505050565b6001600160a01b038216158061208d57506001600160a01b03831615801561208d575060025415155b156120ab5760405163e548b7b760e01b815260040160405180910390fd5b6120b6838383612121565b6001600160a01b0383166120c957505050565b6001600160a01b038316158015906120e757506120e583611826565b155b156120f5576120f583611b63565b6001600160a01b03821615801590612113575061211182611826565b155b156118215761182182611b63565b6001600160a01b03831661214b578060025f828254612140919061274a565b909155506121bb9050565b6001600160a01b0383165f908152602081905260409020548181101561219d5760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610439565b6001600160a01b0384165f9081526020819052604090209082900390555b6001600160a01b0382166121d7576002805482900390556121f5565b6001600160a01b0382165f9081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161223a91815260200190565b60405180910390a3505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6020828403121561228c575f5ffd5b5035919050565b6001600160a01b0381168114611458575f5ffd5b80356122b281612293565b919050565b5f5f604083850312156122c8575f5ffd5b82356122d381612293565b946020939093013593505050565b5f602082840312156122f1575f5ffd5b8135611b1981612293565b5f60a0828403121561230c575f5ffd5b50919050565b5f6080828403121561230c575f5ffd5b5f5f83601f840112612332575f5ffd5b50813567ffffffffffffffff811115612349575f5ffd5b602083019150836020828501011115612360575f5ffd5b9250929050565b5f5f5f5f5f610160868803121561237c575f5ffd5b853561238781612293565b945061239687602088016122fc565b93506123a58760c08801612312565b925061014086013567ffffffffffffffff8111156123c1575f5ffd5b6123cd88828901612322565b969995985093965092949392505050565b5f5f5f606084860312156123f0575f5ffd5b83356123fb81612293565b9250602084013561240b81612293565b929592945050506040919091013590565b5f6060828403121561230c575f5ffd5b5f5f5f5f5f6101408688031215612441575f5ffd5b853561244c81612293565b945061245b87602088016122fc565b935061246a8760c0880161241c565b925061012086013567ffffffffffffffff8111156123c1575f5ffd5b5f5f5f5f5f5f5f6101a0888a03121561249d575f5ffd5b87356124a881612293565b96506124b78960208a016122fc565b95506124c68960c08a01612312565b94506101408801359350610160880135925061018088013567ffffffffffffffff8111156124f2575f5ffd5b6124fe8a828b01612322565b989b979a50959850939692959293505050565b8035600281900b81146122b2575f5ffd5b5f5f5f5f6101008587031215612536575f5ffd5b843561254181612293565b935061255086602087016122fc565b925060c085013561256081612293565b915061256e60e08601612511565b905092959194509250565b5f5f5f5f5f5f610160878903121561258f575f5ffd5b863561259a81612293565b95506125a988602089016122fc565b94506125b88860c0890161241c565b9350610120870135925061014087013567ffffffffffffffff8111156125dc575f5ffd5b6125e889828a01612322565b979a9699509497509295939492505050565b5f5f5f5f5f5f6101208789031215612610575f5ffd5b863561261b81612293565b955061262a88602089016122fc565b945060c0870135935060e0870135925061010087013567ffffffffffffffff8111156125dc575f5ffd5b5f5f5f60e08486031215612666575f5ffd5b833561267181612293565b925061268085602086016122fc565b915060c084013561269081612293565b809150509250925092565b5f5f604083850312156126ac575f5ffd5b82356126b781612293565b915060208301356126c781612293565b809150509250929050565b600181811c908216806126e657607f821691505b60208210810361230c57634e487b7160e01b5f52602260045260245ffd5b5f60208284031215612714575f5ffd5b81358015158114611b19575f5ffd5b634e487b7160e01b5f52601160045260245ffd5b818103818111156111eb576111eb612723565b808201808211156111eb576111eb612723565b803562ffffff811681146122b2575f5ffd5b5f60a0828403128015612780575f5ffd5b5060405160a0810167ffffffffffffffff811182821017156127b057634e487b7160e01b5f52604160045260245ffd5b6040526127bc836122a7565b81526127ca602084016122a7565b60208201526127db6040840161275d565b60408201526127ec60608401612511565b60608201526127fd608084016122a7565b60808201529392505050565b5f600160ff1b820161281d5761281d612723565b505f0390565b80820281158282048414176111eb576111eb612723565b5f8261285457634e487b7160e01b5f52601260045260245ffd5b500490565b5f82518060208501845e5f92019182525091905056fea2646970667358221220387cf16424d9c794be878bbd8c8c00cf836c6cab771206f5427173baa05226c264736f6c63430008240033
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| no token transfers for this address yet | |||||||||
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0x4d1b33…995e69 | 13 days agoTue, 04 Aug 2026 23:28:46 UTC | Transfer | [0] 0x000000000000…43e40951 [1] 0x000000000000…6466807e data: 0x000000000000000000…a1fffe26 |
| 0x804e28…6e7baa | 13 days agoTue, 04 Aug 2026 23:28:46 UTC | Transfer | [0] 0x000000000000…43e40951 [1] 0x000000000000…6466807e data: 0x000000000000000000…2dfffd28 |
| 0xac0d38…9e9dfd | 13 days agoTue, 04 Aug 2026 23:28:46 UTC | Transfer | [0] 0x000000000000…43e40951 [1] 0x000000000000…6466807e data: 0x000000000000000000…e3fff888 |
| 0x936e96…8b3ab5 | 13 days agoTue, 04 Aug 2026 23:28:45 UTC | Transfer | [0] 0x000000000000…43e40951 [1] 0x000000000000…6466807e data: 0x000000000000000000…e3fff158 |
| 0xf8386c…4507f2 | 13 days agoTue, 04 Aug 2026 23:28:45 UTC | Transfer | [0] 0x000000000000…43e40951 [1] 0x000000000000…6466807e data: 0x000000000000000000…9a43ca8e |
| 0x11929f…42e90e | 13 days agoTue, 04 Aug 2026 23:28:42 UTC | Transfer | [0] 0x000000000000…43e40951 [1] 0x000000000000…6466807e data: 0x000000000000000000…92de7095 |
| 0x811b7a…428501 | 13 days agoTue, 04 Aug 2026 23:28:41 UTC | Transfer | [0] 0x000000000000…43e40951 [1] 0x000000000000…6466807e data: 0x000000000000000000…ac9dbe92 |
| 0x983d18…d357fd | 13 days agoTue, 04 Aug 2026 23:28:37 UTC | 0xd0155e…0096 | [0] 0x000000000000…81080f8a data: 0x000000000000000000…00000000 |
| 0x983d18…d357fd | 13 days agoTue, 04 Aug 2026 23:28:37 UTC | Transfer | [0] 0x000000000000…81080f8a [1] 0x000000000000…43e40951 data: 0x000000000000000000…cf9feb51 |
| 0x983d18…d357fd | 13 days agoTue, 04 Aug 2026 23:28:37 UTC | 0x4ea2c7…e4f4 | [0] 0x000000000000…db8c0904 [1] 0x000000000000…00000000 [2] 0x000000000000…00000001 data: 0x000000000000000000…71451a1c |
| 0xdece07…1249fd | 13 days agoTue, 04 Aug 2026 23:28:36 UTC | 0xd0155e…0096 | [0] 0x000000000000…786624db data: 0x000000000000000000…00000000 |
| 0xdece07…1249fd | 13 days agoTue, 04 Aug 2026 23:28:36 UTC | Transfer | [0] 0x000000000000…786624db [1] 0x000000000000…43e40951 data: 0x000000000000000000…1d59a01b |
| 0xdece07…1249fd | 13 days agoTue, 04 Aug 2026 23:28:36 UTC | 0x4ea2c7…e4f4 | [0] 0x000000000000…db8c0904 [1] 0x000000000000…00000000 [2] 0x000000000000…00000001 data: 0x000000000000000000…b1a1b43d |
| 0x45d774…09940d | 13 days agoTue, 04 Aug 2026 23:28:36 UTC | 0xd0155e…0096 | [0] 0x000000000000…6b33bc7d data: 0x000000000000000000…00000000 |
| 0x45d774…09940d | 13 days agoTue, 04 Aug 2026 23:28:36 UTC | Transfer | [0] 0x000000000000…6b33bc7d [1] 0x000000000000…43e40951 data: 0x000000000000000000…98dadbd1 |
| 0x45d774…09940d | 13 days agoTue, 04 Aug 2026 23:28:36 UTC | 0x4ea2c7…e4f4 | [0] 0x000000000000…db8c0904 [1] 0x000000000000…00000000 [2] 0x000000000000…00000001 data: 0x000000000000000000…1bf96913 |
| 0x70c500…7876b2 | 13 days agoTue, 04 Aug 2026 23:28:36 UTC | 0xd0155e…0096 | [0] 0x000000000000…4bf9f942 data: 0x000000000000000000…00000000 |
| 0x70c500…7876b2 | 13 days agoTue, 04 Aug 2026 23:28:36 UTC | Transfer | [0] 0x000000000000…4bf9f942 [1] 0x000000000000…43e40951 data: 0x000000000000000000…8d565b43 |
| 0x70c500…7876b2 | 13 days agoTue, 04 Aug 2026 23:28:36 UTC | 0x4ea2c7…e4f4 | [0] 0x000000000000…db8c0904 [1] 0x000000000000…00000000 [2] 0x000000000000…00000001 data: 0x000000000000000000…cd16b0fd |
| 0xf47d02…33e3ac | 13 days agoTue, 04 Aug 2026 23:28:21 UTC | 0xd0155e…0096 | [0] 0x000000000000…fdb182ae data: 0x000000000000000000…00000000 |
| 0xf47d02…33e3ac | 13 days agoTue, 04 Aug 2026 23:28:21 UTC | Transfer | [0] 0x000000000000…fdb182ae [1] 0x000000000000…43e40951 data: 0x000000000000000000…4c3db62d |
| 0xf47d02…33e3ac | 13 days agoTue, 04 Aug 2026 23:28:21 UTC | 0x4ea2c7…e4f4 | [0] 0x000000000000…db8c0904 [1] 0x000000000000…00000000 [2] 0x000000000000…00000001 data: 0x000000000000000000…d8ce4516 |
| 0x8b8f12…49fb77 | 13 days agoTue, 04 Aug 2026 23:28:21 UTC | Approval | [0] 0x000000000000…fdb182ae [1] 0x000000000000…3ac78ba3 data: 0xffffffffffffffffff…ffffffff |
| 0x16163c…8c1bde | 13 days agoTue, 04 Aug 2026 23:28:20 UTC | 0xd0155e…0096 | [0] 0x000000000000…6b2fabfa data: 0x000000000000000000…00000000 |
| 0x16163c…8c1bde | 13 days agoTue, 04 Aug 2026 23:28:20 UTC | Transfer | [0] 0x000000000000…6b2fabfa [1] 0x000000000000…43e40951 data: 0x000000000000000000…9ba14aac |
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x8b8f12…49fb77 | Approve | 28,019,011 | 13 days agoTue, 04 Aug 2026 23:28:21 UTC | 0x8f55…82ae | IN | CashCatBrrr | $0.000 ETH | 0.00000101 | |
| 0xf34731…036d46 | Approve | 28,019,001 | 13 days agoTue, 04 Aug 2026 23:28:20 UTC | 0x7fee…abfa | IN | CashCatBrrr | $0.000 ETH | 0.00000101 | |
| 0x02f668…d873c3 | Approve | 28,018,991 | 13 days agoTue, 04 Aug 2026 23:28:19 UTC | 0xfcd1…a135 | IN | CashCatBrrr | $0.000 ETH | 0.00000101 | |
| 0x1a07bb…59d6ce | Approve | 28,018,979 | 13 days agoTue, 04 Aug 2026 23:28:18 UTC | 0xe490…9919 | IN | CashCatBrrr | $0.000 ETH | 0.00000100 | |
| 0x64801a…0c41f1 | Approve | 28,018,756 | 13 days agoTue, 04 Aug 2026 23:27:55 UTC | 0xd026…af41 | IN | CashCatBrrr | $0.000 ETH | 0.00000101 | |
| 0x2b0160…e75f8d | Approve | 28,018,713 | 13 days agoTue, 04 Aug 2026 23:27:51 UTC | 0x1d84…8435 | IN | CashCatBrrr | $0.000 ETH | 0.00000101 | |
| 0x9ee5d2…8daa0c | Approve | 28,018,556 | 13 days agoTue, 04 Aug 2026 23:27:35 UTC | 0xb875…abb6 | IN | CashCatBrrr | $0.000 ETH | 0.00000101 | |
| 0xf48bdd…43b2ef | Approve | 28,018,378 | 13 days agoTue, 04 Aug 2026 23:27:17 UTC | 0xb000…f08d | IN | CashCatBrrr | $0.000 ETH | 0.00000102 | |
| 0x28ec96…72d396 | Approve | 28,018,282 | 13 days agoTue, 04 Aug 2026 23:27:08 UTC | 0x6560…f8b5 | IN | CashCatBrrr | $0.000 ETH | 0.00000103 | |
| 0xfc6142…9ed7d7 | Approve | 28,018,243 | 13 days agoTue, 04 Aug 2026 23:27:04 UTC | 0x3d3f…791c | IN | CashCatBrrr | $0.000 ETH | 0.00000102 | |
| 0xb69920…680404 | Approve | 28,018,205 | 13 days agoTue, 04 Aug 2026 23:27:00 UTC | 0x96c0…1592 | IN | CashCatBrrr | $0.000 ETH | 0.00000101 | |
| 0x230281…562561 | Approve | 28,018,166 | 13 days agoTue, 04 Aug 2026 23:26:56 UTC | 0x1adc…731b | IN | CashCatBrrr | $0.000 ETH | 0.00000101 | |
| 0xc05efa…0ab8a1 | Approve | 28,018,152 | 13 days agoTue, 04 Aug 2026 23:26:54 UTC | 0x01a7…078f | IN | CashCatBrrr | $0.000 ETH | 0.00000102 | |
| 0x917013…40fc31 | Approve | 28,018,031 | 13 days agoTue, 04 Aug 2026 23:26:42 UTC | 0xc856…ac12 | IN | CashCatBrrr | $0.000 ETH | 0.00000101 | |
| 0x72a60d…071ad7 | Approve | 28,017,919 | 13 days agoTue, 04 Aug 2026 23:26:31 UTC | 0xf06e…9c31 | IN | CashCatBrrr | $0.000 ETH | 0.00000101 | |
| 0xc3ab18…069209 | Approve | 28,017,820 | 13 days agoTue, 04 Aug 2026 23:26:21 UTC | 0xe24d…8018 | IN | CashCatBrrr | $0.000 ETH | 0.00000101 | |
| 0x81b8ce…4deff0 | Approve | 28,017,812 | 13 days agoTue, 04 Aug 2026 23:26:20 UTC | 0x340c…1021 | IN | CashCatBrrr | $0.000 ETH | 0.00000102 | |
| 0x8532ac…854a6d | Approve | 28,017,801 | 13 days agoTue, 04 Aug 2026 23:26:19 UTC | 0x3244…05c0 | IN | CashCatBrrr | $0.000 ETH | 0.00000102 | |
| 0x378563…b6211b | Approve | 28,017,670 | 13 days agoTue, 04 Aug 2026 23:26:06 UTC | 0x7cf4…394e | IN | CashCatBrrr | $0.000 ETH | 0.00000101 | |
| 0x1858b7…45e9fd | Approve | 28,017,663 | 13 days agoTue, 04 Aug 2026 23:26:05 UTC | 0xf6ec…c8fb | IN | CashCatBrrr | $0.000 ETH | 0.00000102 | |
| 0x556fef…20155c | Approve | 28,017,543 | 13 days agoTue, 04 Aug 2026 23:25:53 UTC | 0x1e19…c92e | IN | CashCatBrrr | $0.000 ETH | 0.00000101 | |
| 0xd3ec3d…d5cc07 | Approve | 28,017,486 | 13 days agoTue, 04 Aug 2026 23:25:47 UTC | 0xfd4e…e1b4 | IN | CashCatBrrr | $0.000 ETH | 0.00000101 | |
| 0x7b59d4…0f33b8 | Approve | 28,017,330 | 13 days agoTue, 04 Aug 2026 23:25:32 UTC | 0xbe74…e3d4 | IN | CashCatBrrr | $0.000 ETH | 0.00000100 | |
| 0x638596…7f5848 | Approve | 28,017,325 | 13 days agoTue, 04 Aug 2026 23:25:31 UTC | 0x99fd…008c | IN | CashCatBrrr | $0.000 ETH | 0.00000102 | |
| 0xa19320…0f75c3 | Approve | 28,017,249 | 13 days agoTue, 04 Aug 2026 23:25:25 UTC | 0xc810…0f8a | IN | CashCatBrrr | $0.000 ETH | 0.00000101 |
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| 28,016,019 | 13 days agoTue, 04 Aug 2026 23:23:21 UTC | 0x22c5b2…bc36f1 | CREATE | deploy | 0x04b9…e44d | IN | 0x4f33…40cc | 0 ETH |