// SPDX-License-Identifier: MIT
pragma solidity ^0.8.26;
import {Owned} from "./access/Owned.sol";
import {IDeepShiftToken} from "./interfaces/IDeepShiftToken.sol";
/// @notice Deep Shift ORE. Miners remain ordinary game records, never NFTs.
/// @dev Historical issuance never decreases, so burns cannot reopen the cap.
contract DeepShiftToken is Owned, IDeepShiftToken {
error CapExceeded();
error UnauthorizedMinter();
error InsufficientBalance();
error InsufficientAllowance();
error InvalidRecipient();
error AlreadyBootstrapped();
error OnlyBootstrapper();
error OnlyLaunchCoordinator();
error AlreadyLaunched();
error NotBootstrapped();
error GameNotLive();
string public constant name = "Deep Shift";
string public constant symbol = "ORE";
uint8 public constant decimals = 18;
uint256 public constant MAX_HISTORICAL_ISSUANCE = 69_000_000 ether;
uint256 public constant TREASURY_ALLOCATION = 3_105_000 ether; // 4.5%
uint256 public constant LP_TOKEN_ALLOCATION = 981_870 ether; // 1.423%
uint256 public constant MARKET_MAKER_ALLOCATION = 1_001_190 ether; // 1.451%
uint256 public constant GROSS_PRE_LP_ISSUANCE = TREASURY_ALLOCATION + LP_TOKEN_ALLOCATION + MARKET_MAKER_ALLOCATION; // 7.374%
uint256 public constant MINING_EMISSION_ALLOCATION = MAX_HISTORICAL_ISSUANCE - GROSS_PRE_LP_ISSUANCE; // 92.626%
uint256 public launchBlock;
uint256 public launchTimestamp;
uint256 public totalSupply;
uint256 public historicalMinted;
mapping(address => uint256) public balanceOf;
mapping(address => mapping(address => uint256)) public allowance;
address public bootstrapper;
address public minter;
address public launchCoordinator;
bool public bootstrapped;
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
event MinterConfigured(address indexed minter);
event LaunchActivated(uint256 indexed launchBlock, address indexed coordinator);
event Bootstrapped(
address indexed treasuryVestingVault,
address indexed marketMaker,
address indexed launchCoordinator,
address miningMinter
);
constructor(address initialOwner, address initialBootstrapper) Owned(initialOwner) {
if (initialBootstrapper == address(0)) revert InvalidRecipient();
bootstrapper = initialBootstrapper;
}
function bootstrap(address treasuryVestingVault, address marketMaker, address coordinator, address miningMinter)
external
{
if (msg.sender != bootstrapper) revert OnlyBootstrapper();
if (bootstrapped) revert AlreadyBootstrapped();
if (
treasuryVestingVault == address(0) || marketMaker == address(0) || coordinator == address(0)
|| miningMinter == address(0)
) revert InvalidRecipient();
bootstrapped = true;
bootstrapper = address(0);
minter = miningMinter;
launchCoordinator = coordinator;
emit MinterConfigured(miningMinter);
_mint(treasuryVestingVault, TREASURY_ALLOCATION);
_mint(marketMaker, MARKET_MAKER_ALLOCATION);
_mint(coordinator, LP_TOKEN_ALLOCATION);
if (historicalMinted != GROSS_PRE_LP_ISSUANCE) revert CapExceeded();
emit Bootstrapped(treasuryVestingVault, marketMaker, coordinator, miningMinter);
}
/// @notice Permanently fixes the mining epoch to the Uniswap V3 LP launch block.
function activateLaunch() external {
if (msg.sender != launchCoordinator) revert OnlyLaunchCoordinator();
if (!bootstrapped) revert NotBootstrapped();
if (launchBlock != 0) revert AlreadyLaunched();
launchBlock = block.number;
launchTimestamp = block.timestamp;
emit LaunchActivated(block.number, msg.sender);
}
function mint(address to, uint256 amount) external {
if (msg.sender != minter) revert UnauthorizedMinter();
if (launchBlock == 0) revert GameNotLive();
if (to == address(0)) revert InvalidRecipient();
if (amount > MAX_HISTORICAL_ISSUANCE - historicalMinted) revert CapExceeded();
_mint(to, amount);
}
function burn(uint256 amount) external {
_burn(msg.sender, amount);
}
function burnFrom(address from, uint256 amount) external {
uint256 permitted = allowance[from][msg.sender];
if (permitted != type(uint256).max) {
if (permitted < amount) revert InsufficientAllowance();
unchecked {
allowance[from][msg.sender] = permitted - amount;
}
emit Approval(from, msg.sender, allowance[from][msg.sender]);
}
_burn(from, amount);
}
function approve(address spender, uint256 amount) external returns (bool) {
allowance[msg.sender][spender] = amount;
emit Approval(msg.sender, spender, amount);
return true;
}
function transfer(address to, uint256 amount) external returns (bool) {
_transfer(msg.sender, to, amount);
return true;
}
function transferFrom(address from, address to, uint256 amount) external returns (bool) {
uint256 permitted = allowance[from][msg.sender];
if (permitted != type(uint256).max) {
if (permitted < amount) revert InsufficientAllowance();
unchecked {
allowance[from][msg.sender] = permitted - amount;
}
emit Approval(from, msg.sender, allowance[from][msg.sender]);
}
_transfer(from, to, amount);
return true;
}
function _transfer(address from, address to, uint256 amount) private {
// Before the explicit liquidity command, only the bound coordinator may
// move ORE into the official PositionManager. This prevents the staged
// empty pool from being seeded or price-manipulated with launch inventory.
if (launchBlock == 0 && from != launchCoordinator) revert GameNotLive();
if (to == address(0)) revert InvalidRecipient();
if (balanceOf[from] < amount) revert InsufficientBalance();
unchecked {
balanceOf[from] -= amount;
balanceOf[to] += amount;
}
emit Transfer(from, to, amount);
}
function _burn(address from, uint256 amount) private {
if (launchBlock == 0) revert GameNotLive();
if (balanceOf[from] < amount) revert InsufficientBalance();
unchecked {
balanceOf[from] -= amount;
totalSupply -= amount;
}
emit Transfer(from, address(0), amount);
}
function _mint(address to, uint256 amount) private {
if (to == address(0)) revert InvalidRecipient();
if (amount > MAX_HISTORICAL_ISSUANCE - historicalMinted) revert CapExceeded();
historicalMinted += amount;
totalSupply += amount;
balanceOf[to] += amount;
emit Transfer(address(0), to, amount);
}
}[
{
"type": "constructor",
"inputs": [
{
"name": "initialOwner",
"type": "address",
"internalType": "address"
},
{
"name": "initialBootstrapper",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "nonpayable"
},
{
"name": "AlreadyBootstrapped",
"type": "error",
"inputs": []
},
{
"name": "AlreadyLaunched",
"type": "error",
"inputs": []
},
{
"name": "CapExceeded",
"type": "error",
"inputs": []
},
{
"name": "GameNotLive",
"type": "error",
"inputs": []
},
{
"name": "InsufficientAllowance",
"type": "error",
"inputs": []
},
{
"name": "InsufficientBalance",
"type": "error",
"inputs": []
},
{
"name": "InvalidRecipient",
"type": "error",
"inputs": []
},
{
"name": "NotBootstrapped",
"type": "error",
"inputs": []
},
{
"name": "OnlyBootstrapper",
"type": "error",
"inputs": []
},
{
"name": "OnlyLaunchCoordinator",
"type": "error",
"inputs": []
},
{
"name": "OnlyOwner",
"type": "error",
"inputs": []
},
{
"name": "UnauthorizedMinter",
"type": "error",
"inputs": []
},
{
"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": "Bootstrapped",
"type": "event",
"inputs": [
{
"name": "treasuryVestingVault",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "marketMaker",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "launchCoordinator",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "miningMinter",
"type": "address",
"indexed": false,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "LaunchActivated",
"type": "event",
"inputs": [
{
"name": "launchBlock",
"type": "uint256",
"indexed": true,
"internalType": "uint256"
},
{
"name": "coordinator",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "MinterConfigured",
"type": "event",
"inputs": [
{
"name": "minter",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"anonymous": false
},
{
"name": "OwnershipTransferred",
"type": "event",
"inputs": [
{
"name": "previousOwner",
"type": "address",
"indexed": true,
"internalType": "address"
},
{
"name": "newOwner",
"type": "address",
"indexed": true,
"internalType": "address"
}
],
"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": "GROSS_PRE_LP_ISSUANCE",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "LP_TOKEN_ALLOCATION",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "MARKET_MAKER_ALLOCATION",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "MAX_HISTORICAL_ISSUANCE",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "MINING_EMISSION_ALLOCATION",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "TREASURY_ALLOCATION",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "activateLaunch",
"type": "function",
"inputs": [],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "allowance",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
},
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "approve",
"type": "function",
"inputs": [
{
"name": "spender",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "balanceOf",
"type": "function",
"inputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "bootstrap",
"type": "function",
"inputs": [
{
"name": "treasuryVestingVault",
"type": "address",
"internalType": "address"
},
{
"name": "marketMaker",
"type": "address",
"internalType": "address"
},
{
"name": "coordinator",
"type": "address",
"internalType": "address"
},
{
"name": "miningMinter",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "bootstrapped",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "view"
},
{
"name": "bootstrapper",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "burn",
"type": "function",
"inputs": [
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "burnFrom",
"type": "function",
"inputs": [
{
"name": "from",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "decimals",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint8",
"internalType": "uint8"
}
],
"stateMutability": "view"
},
{
"name": "historicalMinted",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "launchBlock",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "launchCoordinator",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "launchTimestamp",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "uint256",
"internalType": "uint256"
}
],
"stateMutability": "view"
},
{
"name": "mint",
"type": "function",
"inputs": [
{
"name": "to",
"type": "address",
"internalType": "address"
},
{
"name": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [],
"stateMutability": "nonpayable"
},
{
"name": "minter",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "name",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"stateMutability": "view"
},
{
"name": "owner",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"name": "symbol",
"type": "function",
"inputs": [],
"outputs": [
{
"name": "",
"type": "string",
"internalType": "string"
}
],
"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": "amount",
"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": "amount",
"type": "uint256",
"internalType": "uint256"
}
],
"outputs": [
{
"name": "",
"type": "bool",
"internalType": "bool"
}
],
"stateMutability": "nonpayable"
},
{
"name": "transferOwnership",
"type": "function",
"inputs": [
{
"name": "newOwner",
"type": "address",
"internalType": "address"
}
],
"outputs": [],
"stateMutability": "nonpayable"
}
]0x60806040526004361015610011575f80fd5b5f803560e01c806306fdde0314610cb55780630754617214610c8d57806307fd9e0614610903578063095ea7b31461088a5780630dc235ec1461086657806316d2399d1461084957806318160ddd1461082c57806323b872dd1461076f5780632e1cd7501461074a578063313ce5671461072f57806335142c8c1461070a57806340c10f19146105d157806342966c68146105b457806357215c011461058e57806365cf7c9b1461057157806370a0823114610539578063786e08381461051157806379cc67901461044d5780638a3aded1146104255780638da5cb5b146103fe57806395d89b4114610398578063a9059cbb14610367578063baff2fc51461033e578063bf1ad7e014610318578063d00efb2f146102fa578063dd62ed3e146102a7578063e3a8d88a14610282578063ecf91842146101ee5763f2fde38b14610159575f80fd5b346101eb5760203660031901126101eb57610172610d30565b81546001600160a01b03811691338390036101dc576001600160a01b03169182156101cd5782907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08580a36001600160a01b03191617815580f35b63d92e233d60e01b8452600484fd5b635fc483c560e01b8452600484fd5b80fd5b50346101eb57806003193601126101eb576009546001600160a01b03811633036102735760a01c60ff16156102645760015461025557436001554260025533437f2d94fe1c0a583f788889ab72e579a66fbabd9458427c8aa4e3af4ef7e30ad2678380a380f35b6319f4db0f60e31b8152600490fd5b6306e27ae160e41b8152600490fd5b636f26301f60e01b8252600482fd5b50346101eb57806003193601126101eb57602060405169cfeb4783cdc8f8f800008152f35b50346101eb5760403660031901126101eb5760406102c3610d30565b916102cc610d46565b9260018060a01b031681526006602052209060018060a01b03165f52602052602060405f2054604051908152f35b50346101eb57806003193601126101eb576020600154604051908152f35b50346101eb57806003193601126101eb5760206040516a0291826324acf132a000008152f35b34610363575f3660031901126103635760206040516a34dde135b4ad487d9000008152f35b5f80fd5b346103635760403660031901126103635761038d610383610d30565b6024359033610d69565b602060405160018152f35b34610363575f36600319011261036357604051604081019080821067ffffffffffffffff8311176103ea576103e69160405260038152624f524560e81b602082015260405191829182610d06565b0390f35b634e487b7160e01b5f52604160045260245ffd5b34610363575f366003190112610363575f546040516001600160a01b039091168152602090f35b34610363575f366003190112610363576009546040516001600160a01b039091168152602090f35b3461036357604036600319011261036357610466610d30565b6001600160a01b0381165f8181526006602090815260408083203384529091529020549160243591600184016104a3575b6104a18383610e08565b005b828410610502575f81815260066020908152604080832033808552908352928190209686900396879055519586526104a1959192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259190a383610497565b6313be252b60e01b5f5260045ffd5b34610363575f366003190112610363576007546040516001600160a01b039091168152602090f35b34610363576020366003190112610363576001600160a01b0361055a610d30565b165f526005602052602060405f2054604051908152f35b34610363575f366003190112610363576020600254604051908152f35b34610363575f3660031901126103635760206a04357049088ec3e7700000604051908152f35b34610363576020366003190112610363576104a160043533610e08565b34610363576040366003190112610363576105ea610d30565b60085460243591906001600160a01b031633036106fb57600154156106ec576001600160a01b03169081156106dd576004546a3913517ebd3c0c65000000036a3913517ebd3c0c6500000081116106c95781116106ba5760045490816a3913517ebd3c0c65000000036a3913517ebd3c0c6500000081116106c95781116106ba576020816106875f80516020610e62833981519152935f95610d5c565b60045561069681600354610d5c565b60035584845260058252604084206106af828254610d5c565b9055604051908152a3005b63a4875a4960e01b5f5260045ffd5b634e487b7160e01b5f52601160045260245ffd5b634e46966960e11b5f5260045ffd5b632f9107b560e01b5f5260045ffd5b63955c501b60e01b5f5260045ffd5b34610363575f36600319011261036357602060ff60095460a01c166040519015158152f35b34610363575f36600319011261036357602060405160128152f35b34610363575f3660031901126103635760206040516a3913517ebd3c0c650000008152f35b3461036357606036600319011261036357610788610d30565b610790610d46565b6001600160a01b0382165f818152600660209081526040808320338452909152902054926044359291600185016107cd575b5061038d9350610d69565b838510610502575f818152600660209081526040808320338085529083529281902097879003978890555196875261038d969192917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259190a3846107c2565b34610363575f366003190112610363576020600354604051908152f35b34610363575f366003190112610363576020600454604051908152f35b34610363575f36600319011261036357602060405169d4029e601409bbd800008152f35b34610363576040366003190112610363576108a3610d30565b335f8181526006602090815260408083206001600160a01b03909516808452948252918290206024359081905591519182527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a3602060405160018152f35b346103635760803660031901126103635761091c610d30565b610924610d46565b6044356001600160a01b0381169290839003610363576064356001600160a01b0381169290839003610363576007546001600160a01b0381163303610c7e576009549260ff8460a01c16610c6f576001600160a01b031692831591828015610c5e575b8015610c56575b8015610c4e575b6106dd576001600160a01b031990811660075560088054909116861790556001600160a81b0319168517600160a01b17600955837fdf21bac22f6aff277bfdfaafb4853c2c3edd0070f1222592fb499b71fdfca2295f80a26106dd57600454806a3913517ebd3c0c65000000036a3913517ebd3c0c6500000081116106c9576a0291826324acf132a00000116106ba576a0291826324acf132a0000081018091116106c9576004556003546a0291826324acf132a0000081018091116106c957600355815f52600560205260405f208054906a0291826324acf132a0000082018092116106c95755815f5f80516020610e6283398151915260206040516a0291826324acf132a000008152a36001600160a01b03169182156106dd57600454806a3913517ebd3c0c65000000036a3913517ebd3c0c6500000081116106c95769d4029e601409bbd80000116106ba5769d4029e601409bbd8000081018091116106c95760045560035469d4029e601409bbd8000081018091116106c957600355825f52600560205260405f2080549069d4029e601409bbd8000082018092116106c95755825f5f80516020610e62833981519152602060405169d4029e601409bbd800008152a383156106dd57600454806a3913517ebd3c0c65000000036a3913517ebd3c0c6500000081116106c95769cfeb4783cdc8f8f80000116106ba5769cfeb4783cdc8f8f8000081018091116106c95760045560035469cfeb4783cdc8f8f8000081018091116106c957600355835f52600560205260405f2080549069cfeb4783cdc8f8f8000082018092116106c95755835f5f80516020610e62833981519152602060405169cfeb4783cdc8f8f800008152a36004546a04357049088ec3e7700000036106ba5760207f6152ef9fd5f46aa919e4f3138f6cc749b7ea243839cbf72fd39726c93af867a691604051908152a4005b508515610995565b50861561098e565b506001600160a01b03841615610987565b635c03d07560e11b5f5260045ffd5b6312e1500960e31b5f5260045ffd5b34610363575f366003190112610363576008546040516001600160a01b039091168152602090f35b34610363575f36600319011261036357604051604081019080821067ffffffffffffffff8311176103ea576103e691604052600a8152691119595c0814da1a599d60b21b6020820152604051918291825b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361036357565b602435906001600160a01b038216820361036357565b919082018092116106c957565b91906001541580610df0575b6106ec576001600160a01b03169182156106dd5760018060a01b031690815f5260056020528060405f205410610de15760205f80516020610e6283398151915291835f526005825260405f20818154039055845f526005825260405f20818154019055604051908152a3565b631e9acf1760e31b5f5260045ffd5b506009546001600160a01b0384811691161415610d75565b600154156106ec576001600160a01b03165f818152600560205260409020548211610de1575f80516020610e6283398151915260205f9383855260058252604085208181540390558060035403600355604051908152a356feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220072b7a0c112a9a0f7afea58b1c53a0b70ab4bb9423320a213c0dab0d09d9c33264736f6c634300081a0033
| Token | Symbol | Balance | Price | Value |
|---|---|---|---|---|
| no token holdings | ||||
| Type | Age | Block | Details |
|---|---|---|---|
| no cross-chain L1↔L2 transactions for this address | |||
| Transaction Hash | Method | Block | Age | From | To | Amount | Token | ||
|---|---|---|---|---|---|---|---|---|---|
| no token transfers for this address yet | |||||||||
| Block | Age | Parent Transaction Hash | Type | Method | From | To | Value | |
|---|---|---|---|---|---|---|---|---|
| no internal transactions found for this address yet (traced blocks + on-demand) | ||||||||
| Transaction Hash | Method ? | Block | Age | From | To | Amount | Txn Fee ? | ||
|---|---|---|---|---|---|---|---|---|---|
| 0x85108d…439f13 | Approve | 39,155,070 | 1 hr agoMon, 17 Aug 2026 21:20:22 UTC | 0xddac…308c | IN | Deep Shift | $0.000 ETH | 0.00000093 | |
| 0x302d4c…6dd08f | Approve | 39,140,919 | 1 hr agoMon, 17 Aug 2026 20:56:43 UTC | 0xb540…50a5 | IN | Deep Shift | $0.000 ETH | 0.00000092 | |
| 0x2033a6…497545 | Approve | 39,077,088 | 3 hrs agoMon, 17 Aug 2026 19:09:58 UTC | 0x985f…e9e2 | IN | Deep Shift | $0.000 ETH | 0.00000093 | |
| 0x3d34f7…dd6de5 | Approve | 39,069,405 | 3 hrs agoMon, 17 Aug 2026 18:57:08 UTC | 0x6a00…15f9 | IN | Deep Shift | $0.000 ETH | 0.00000094 | |
| 0x0d55b7…a99412 | Approve | 39,061,700 | 3 hrs agoMon, 17 Aug 2026 18:44:15 UTC | 0xa572…a6ba | IN | Deep Shift | $0.000 ETH | 0.00000093 | |
| 0x4d40b6…5d784f | Approve | 39,061,697 | 3 hrs agoMon, 17 Aug 2026 18:44:15 UTC | 0x2825…9343 | IN | Deep Shift | $0.000 ETH | 0.00000092 | |
| 0xd00cf6…10ede0 | Approve | 39,061,462 | 3 hrs agoMon, 17 Aug 2026 18:43:51 UTC | 0xeb1a…0e51 | IN | Deep Shift | $0.000 ETH | 0.00000093 | |
| 0x252cf9…8010ae | Approve | 39,060,468 | 3 hrs agoMon, 17 Aug 2026 18:42:12 UTC | 0xb6e0…0596 | IN | Deep Shift | $0.000 ETH | 0.00000092 | |
| 0x4e8bda…f31e17 | Approve | 39,056,409 | 3 hrs agoMon, 17 Aug 2026 18:35:25 UTC | 0xeedc…88ae | IN | Deep Shift | $0.000 ETH | 0.00000094 | |
| 0xd2f452…3bef2d | Approve | 39,056,286 | 3 hrs agoMon, 17 Aug 2026 18:35:13 UTC | 0x878e…c1a4 | IN | Deep Shift | $0.000 ETH | 0.00000094 | |
| 0xae19fe…602534 | Approve | 39,051,223 | 4 hrs agoMon, 17 Aug 2026 18:26:45 UTC | 0x3333…0d1d | IN | Deep Shift | $0.000 ETH | 0.00000093 | |
| 0x823c72…0646ff | Approve | 39,049,282 | 4 hrs agoMon, 17 Aug 2026 18:23:31 UTC | 0x359f…c8f8 | IN | Deep Shift | $0.000 ETH | 0.00000093 | |
| 0x7226cb…7d5cbb | Approve | 39,048,345 | 4 hrs agoMon, 17 Aug 2026 18:21:56 UTC | 0x8250…e080 | IN | Deep Shift | $0.000 ETH | 0.00000093 | |
| 0x6fce15…0a94f2 | Approve | 39,048,315 | 4 hrs agoMon, 17 Aug 2026 18:21:53 UTC | 0xec95…2d2b | IN | Deep Shift | $0.000 ETH | 0.00000092 | |
| 0xd0d13b…0cd6d6 | Transfer | 39,048,121 | 4 hrs agoMon, 17 Aug 2026 18:21:34 UTC | 0x9c60…2177 | IN | Deep Shift | $0.000 ETH | 0.00000107 | |
| 0x7fefff…398832 | Approve | 39,047,403 | 4 hrs agoMon, 17 Aug 2026 18:20:22 UTC | aether.hood | IN | Deep Shift | $0.000 ETH | 0.00000092 | |
| 0xec0132…f1866a | Approve | 39,044,892 | 4 hrs agoMon, 17 Aug 2026 18:16:10 UTC | 0x985f…e9e2 | IN | Deep Shift | $0.000 ETH | 0.00000095 | |
| 0x910dc3…32fa8f | Approve | 39,044,007 | 4 hrs agoMon, 17 Aug 2026 18:14:41 UTC | 0x72ab…5208 | IN | Deep Shift | $0.000 ETH | 0.00000095 | |
| 0xb47586…e2163e | Approve | 39,043,631 | 4 hrs agoMon, 17 Aug 2026 18:14:04 UTC | 0xd50d…4502 | IN | Deep Shift | $0.000 ETH | 0.00000095 | |
| 0xd44926…4fe1ff | Approve | 39,043,012 | 4 hrs agoMon, 17 Aug 2026 18:13:01 UTC | 0xb163…672b | IN | Deep Shift | $0.000 ETH | 0.00000094 | |
| 0xff6cf1…e91a5c | Approve | 39,042,920 | 4 hrs agoMon, 17 Aug 2026 18:12:52 UTC | 0x4708…ee8d | IN | Deep Shift | $0.000 ETH | 0.00000094 | |
| 0x3c4b0b…09683d | Approve | 39,042,759 | 4 hrs agoMon, 17 Aug 2026 18:12:36 UTC | 0x62e5…5645 | IN | Deep Shift | $0.000 ETH | 0.00000093 | |
| 0xc3fda7…2ca7b9 | Approve | 39,041,888 | 4 hrs agoMon, 17 Aug 2026 18:11:10 UTC | 0xdf48…23af | IN | Deep Shift | $0.000 ETH | 0.00000092 | |
| 0x029ecb…4a6795 | Approve | 39,041,517 | 4 hrs agoMon, 17 Aug 2026 18:10:32 UTC | 0x821c…aee1 | IN | Deep Shift | $0.000 ETH | 0.00000093 | |
| 0xb886eb…141b4d | Approve | 39,041,348 | 4 hrs agoMon, 17 Aug 2026 18:10:15 UTC | 0xd335…2676 | IN | Deep Shift | $0.000 ETH | 0.00000092 |
| Txn Hash | Age | Event | Topics / Data |
|---|---|---|---|
| 0x85108d…439f13 | 1 hr agoMon, 17 Aug 2026 21:20:22 UTC | Approval | [0] 0x000000000000…d10f308c [1] 0x000000000000…211389c7 data: 0xffffffffffffffffff…ffffffff |
| 0xa831cc…b77ae9 | 1 hr agoMon, 17 Aug 2026 21:19:50 UTC | Transfer | [0] 0x000000000000…43e40951 [1] 0x000000000000…d10f308c data: 0x000000000000000000…29d816a3 |
| 0x302d4c…6dd08f | 1 hr agoMon, 17 Aug 2026 20:56:43 UTC | Approval | [0] 0x000000000000…064a50a5 [1] 0x000000000000…959e5cb2 data: 0xffffffffffffffffff…ffffffff |
| 0x350ad4…7d76bc | 3 hrs agoMon, 17 Aug 2026 19:24:58 UTC | Transfer | [0] 0x000000000000…d113f996 [1] 0x000000000000…43e40951 data: 0x000000000000000000…8bed3121 |
| 0x350ad4…7d76bc | 3 hrs agoMon, 17 Aug 2026 19:24:58 UTC | Transfer | [0] 0x000000000000…d113f996 [1] 0x000000000000…43e40951 data: 0x000000000000000000…8fcef12e |
| 0x350ad4…7d76bc | 3 hrs agoMon, 17 Aug 2026 19:24:58 UTC | Transfer | [0] 0x000000000000…d113f996 [1] 0x000000000000…43e40951 data: 0x000000000000000000…fa6fddb1 |
| 0x350ad4…7d76bc | 3 hrs agoMon, 17 Aug 2026 19:24:58 UTC | Transfer | [0] 0x000000000000…9188bcef [1] 0x000000000000…d113f996 data: 0x000000000000000000…162c0000 |
| 0x265f30…bc59bc | 3 hrs agoMon, 17 Aug 2026 19:15:24 UTC | Transfer | [0] 0x000000000000…e9b05d31 [1] 0x000000000000…43e40951 data: 0x000000000000000000…dfd73d62 |
| 0x265f30…bc59bc | 3 hrs agoMon, 17 Aug 2026 19:15:24 UTC | Transfer | [0] 0x000000000000…ca14e9e2 [1] 0x000000000000…e9b05d31 data: 0x000000000000000000…dfd73d62 |
| 0xf6fe60…1a5da7 | 3 hrs agoMon, 17 Aug 2026 19:14:35 UTC | Transfer | [0] 0x000000000000…43e40951 [1] 0x000000000000…ca14e9e2 data: 0x000000000000000000…dfd73d62 |
| 0xaf0ef1…921b57 | 3 hrs agoMon, 17 Aug 2026 19:09:59 UTC | Transfer | [0] 0x000000000000…e9b05d31 [1] 0x000000000000…43e40951 data: 0x000000000000000000…fa832ef0 |
| 0xaf0ef1…921b57 | 3 hrs agoMon, 17 Aug 2026 19:09:59 UTC | Transfer | [0] 0x000000000000…ca14e9e2 [1] 0x000000000000…e9b05d31 data: 0x000000000000000000…fa832ef0 |
| 0x2033a6…497545 | 3 hrs agoMon, 17 Aug 2026 19:09:58 UTC | Approval | [0] 0x000000000000…ca14e9e2 [1] 0x000000000000…e1a4f53d data: 0xffffffffffffffffff…ffffffff |
| 0x04accc…7826e8 | 3 hrs agoMon, 17 Aug 2026 19:04:17 UTC | Transfer | [0] 0x000000000000…43e40951 [1] 0x000000000000…ca14e9e2 data: 0x000000000000000000…ba60ce45 |
| 0x5d58b6…d51e28 | 3 hrs agoMon, 17 Aug 2026 18:57:08 UTC | Transfer | [0] 0x000000000000…dfdb15f9 [1] 0x000000000000…43e40951 data: 0x000000000000000000…1feac984 |
| 0x5d58b6…d51e28 | 3 hrs agoMon, 17 Aug 2026 18:57:08 UTC | Approval | [0] 0x000000000000…dfdb15f9 [1] 0x000000000000…262c40dc data: 0x000000000000000000…00000000 |
| 0x3d34f7…dd6de5 | 3 hrs agoMon, 17 Aug 2026 18:57:08 UTC | Approval | [0] 0x000000000000…dfdb15f9 [1] 0x000000000000…262c40dc data: 0x000000000000000000…1feac984 |
| 0x320dc9…811376 | 3 hrs agoMon, 17 Aug 2026 18:50:19 UTC | Transfer | [0] 0x000000000000…43e40951 [1] 0x000000000000…1b5faee1 data: 0x000000000000000000…9c6a7683 |
| 0x99dbf7…2ae459 | 3 hrs agoMon, 17 Aug 2026 18:48:41 UTC | Transfer | [0] 0x000000000000…43e40951 [1] 0x000000000000…1b5faee1 data: 0x000000000000000000…01e6fb56 |
| 0xbb555f…8a95ce | 3 hrs agoMon, 17 Aug 2026 18:44:15 UTC | Transfer | [0] 0x000000000000…43e40951 [1] 0x000000000000…7290afa9 data: 0x000000000000000000…7387756d |
| 0x548abf…e0b92d | 3 hrs agoMon, 17 Aug 2026 18:44:15 UTC | Transfer | [0] 0x000000000000…8376dd7b [1] 0x000000000000…43e40951 data: 0x000000000000000000…b6702046 |
| 0x548abf…e0b92d | 3 hrs agoMon, 17 Aug 2026 18:44:15 UTC | Transfer | [0] 0x000000000000…43e40951 [1] 0x000000000000…8376dd7b data: 0x000000000000000000…b6702046 |
| 0x63affc…b890d9 | 3 hrs agoMon, 17 Aug 2026 18:44:15 UTC | Transfer | [0] 0x000000000000…573aa6ba [1] 0x000000000000…43e40951 data: 0x000000000000000000…8e54d8b4 |
| 0x63affc…b890d9 | 3 hrs agoMon, 17 Aug 2026 18:44:15 UTC | Approval | [0] 0x000000000000…573aa6ba [1] 0x000000000000…262c40dc data: 0x000000000000000000…00000000 |
| 0x0d55b7…a99412 | 3 hrs agoMon, 17 Aug 2026 18:44:15 UTC | Approval | [0] 0x000000000000…573aa6ba [1] 0x000000000000…262c40dc data: 0x000000000000000000…8e54d8b4 |
| Transaction Hash | Method | Block | Age | From | To | Type | Item | ||
|---|---|---|---|---|---|---|---|---|---|
| no NFT transfers for this address yet | |||||||||