More Info
Private Name Tags
ContractCreator
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Latest 1 internal transaction
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
552078 | 72 days ago | Contract Creation | 0 ETH |
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Source Code Verified (Exact Match)
Contract Name:
PopJrVesting
Compiler Version
v0.8.24+commit.e11b9ed9
ZkSolc Version
v1.5.7
Optimization Enabled:
Yes with Mode 3
Other Settings:
cancun EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT pragma solidity 0.8.24; import {IERC20} from "./interfaces/IERC20.sol"; contract PopJrVesting { // July 4th, 2043 uint64 public constant INITIAL_UNLOCK = 2319598800; // 60 years + 14 leap days (2100 is not a leap year) uint64 public constant VESTING_PERIOD = 60 * 365 days + 14 days; uint16 public constant INITIAL_UNLOCK_BPS = 500; uint16 private constant BPS = 10_000; // pop-punk.eth to transfer to Pop Jr address public constant INITIAL_OWNER = 0x3d4aaFbe86059d17C6263332c560f18C4F1Fec34; IERC20 public constant POP_JR = IERC20(0x0b0C9F8D13e17F4E8c07255605E75Eb0b4800097); address public owner = INITIAL_OWNER; address public pendingOwner; uint8 public transfersRemaining = 3; uint64 public lastClaim = INITIAL_UNLOCK; uint256 private initialUnlockBalance; error NotAuthorized(); function transferOwnership(address newOwner) external { if (msg.sender != owner) revert NotAuthorized(); if (transfersRemaining == 0) revert NotAuthorized(); pendingOwner = newOwner; } function cancelOwnershipTransfer() external { if (msg.sender != owner) revert NotAuthorized(); pendingOwner = address(0); } function acceptOwnership() external { if (msg.sender != pendingOwner) revert NotAuthorized(); owner = msg.sender; pendingOwner = address(0); unchecked { --transfersRemaining; } } function claim() external { if (msg.sender != owner) revert NotAuthorized(); if (block.timestamp < INITIAL_UNLOCK) revert NotAuthorized(); (uint256 startBalance, uint256 unlockAmount) = calculateUnlockAmount(block.timestamp); if (unlockAmount == 0) revert NotAuthorized(); if (lastClaim == INITIAL_UNLOCK) { initialUnlockBalance = startBalance; } lastClaim = uint64(block.timestamp); POP_JR.transfer(owner, unlockAmount); } function calculateUnlockAmount(uint256 timestamp) public view returns (uint256 startBalance, uint256 unlockedAmount) { startBalance = initialUnlockBalance; uint256 remainingBalance = POP_JR.balanceOf(address(this)); if (startBalance == 0) { if (timestamp > INITIAL_UNLOCK) { unlockedAmount = remainingBalance * INITIAL_UNLOCK_BPS / BPS; remainingBalance = remainingBalance - unlockedAmount; } startBalance = remainingBalance; } uint256 _lastClaim = lastClaim; if (timestamp > _lastClaim) { uint256 elapsedTime = timestamp - INITIAL_UNLOCK; if (elapsedTime > VESTING_PERIOD) { unlockedAmount += remainingBalance; } else { uint256 remainingTime = VESTING_PERIOD - elapsedTime; uint256 balanceToRemain = startBalance * remainingTime / VESTING_PERIOD; unlockedAmount += (remainingBalance - balanceToRemain); } } } }
//SPDX-License-Identifier: MIT pragma solidity 0.8.24; interface IERC20 { event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); function totalSupply() external view returns (uint256); function balanceOf(address account) external view returns (uint256); function transfer(address to, uint256 value) external returns (bool); function allowance(address owner, address spender) external view returns (uint256); function approve(address spender, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); }
{ "viaIR": false, "codegen": "yul", "remappings": [ "forge-std/=lib/forge-std/src/" ], "evmVersion": "cancun", "outputSelection": { "*": { "*": [ "abi", "metadata" ], "": [ "ast" ] } }, "optimizer": { "enabled": true, "mode": "3", "fallback_to_optimizing_for_size": false, "disable_system_request_memoization": true }, "metadata": {}, "libraries": {}, "enableEraVMExtensions": false, "forceEVMLA": false }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"name":"NotAuthorized","type":"error"},{"inputs":[],"name":"INITIAL_OWNER","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INITIAL_UNLOCK","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"INITIAL_UNLOCK_BPS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"POP_JR","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"VESTING_PERIOD","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"acceptOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"calculateUnlockAmount","outputs":[{"internalType":"uint256","name":"startBalance","type":"uint256"},{"internalType":"uint256","name":"unlockedAmount","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cancelOwnershipTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lastClaim","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transfersRemaining","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
9c4d535b0000000000000000000000000000000000000000000000000000000000000000010000bd446ae1a1900a06abea315369bda68663daa47555e0d7393dcf7ecca800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x00020000000000020000008003000039000000400030043f0000000100200190000000390000c13d00000060021002700000008903200197000000040030008c000000e70000413d000000000201043b000000e0022002700000008f0020009c0000004a0000213d000000990020009c000000580000a13d0000009a0020009c0000007c0000213d0000009d0020009c0000009f0000613d0000009e0020009c000000e70000c13d0000000001000416000000000001004b000000e70000c13d000000000100041a000000a3021001970000000001000411000000000021004b000000f20000c13d000200000002001d000000a90100004100000000001004430000000001000414000000890010009c0000008901008041000000c001100210000000aa011001c70000800b02000039021f021a0000040f0000000100200190000000f60000613d000000000101043b000000ab0010009c000000310000a13d000100000001001d021f01750000040f0000000106000029000000000002004b000000fc0000c13d000000400100043d000000b4020000410000000000210435000000890010009c00000089010080410000004001100210000000b5011001c700000221000104300000000001000416000000000001004b000000e70000c13d000000000100041a0000008a011001970000008b011001c7000000000010041b0000000101000039000000000201041a0000008c022001970000008d022001c7000000000021041b0000002001000039000001000010044300000120000004430000008e01000041000002200001042e000000900020009c0000006f0000a13d000000910020009c000000940000213d000000940020009c000000a60000613d000000950020009c000000e70000c13d0000000001000416000000000001004b000000e70000c13d0000000101000039000000000101041a000000d00000013d0000009f0020009c000000b00000613d000000a00020009c000000b70000613d000000a10020009c000000e70000c13d000000240030008c000000e70000413d0000000002000416000000000002004b000000e70000c13d0000000401100370000000000101043b021f01750000040f000000400300043d000000200430003900000000002404350000000000130435000000890030009c00000089030080410000004001300210000000b7011001c7000002200001042e000000960020009c000000c50000613d000000970020009c000000cc0000613d000000980020009c000000e70000c13d0000000001000416000000000001004b000000e70000c13d0000008b01000041000000800010043f000000a201000041000002200001042e0000009b0020009c000000d40000613d0000009c0020009c000000e70000c13d0000000001000416000000000001004b000000e70000c13d0000000101000039000000000201041a000000a3042001970000000003000411000000000043004b000000f20000c13d000000000400041a0000008a04400197000000000334019f000000000030041b000000a703200197000000a80220009a000000a402200197000000000232019f000000000021041b0000000001000019000002200001042e000000920020009c000000de0000613d000000930020009c000000e70000c13d0000000001000416000000000001004b000000e70000c13d000001f401000039000000800010043f000000a201000041000002200001042e0000000001000416000000000001004b000000e70000c13d000000b601000041000000800010043f000000a201000041000002200001042e0000000001000416000000000001004b000000e70000c13d0000000101000039000000000101041a000000a801100270000000a501100197000000800010043f000000a201000041000002200001042e0000000001000416000000000001004b000000e70000c13d000000b901000041000000800010043f000000a201000041000002200001042e0000000001000416000000000001004b000000e70000c13d000000000100041a000000a3011001970000000002000411000000000012004b000000f20000c13d0000000101000039000000000201041a0000008a02200197000000000021041b0000000001000019000002200001042e0000000001000416000000000001004b000000e70000c13d000000a601000041000000800010043f000000a201000041000002200001042e0000000001000416000000000001004b000000e70000c13d000000000100041a000000a301100197000000800010043f000000a201000041000002200001042e0000000001000416000000000001004b000000e70000c13d0000000101000039000000000101041a000000a001100270000000ff0110018f000000800010043f000000a201000041000002200001042e000000240030008c000000e70000413d0000000002000416000000000002004b000000e70000c13d0000000401100370000000000101043b000000a30010009c000000e90000a13d00000000010000190000022100010430000000000200041a000000a3022001970000000003000411000000000023004b000000f20000c13d0000000102000039000000000302041a000000a400300198000000f70000c13d000000b401000041000000800010043f000000b8010000410000022100010430000000000001042f0000008a03300197000000000113019f000000000012041b0000000001000019000002200001042e0000000103000039000000000403041a000000ac05400197000000ad0050009c000001030000c13d0000000205000039000000000015041b000000ae01400197000000a804600210000000ac04400197000000000141019f000000000013041b000000400300043d000100000003001d00000024013000390000000000210435000000af010000410000000000130435000000040130003900000002020000290000000000210435000000890030009c0000008901000041000000000103401900000040011002100000000002000414000000890020009c0000008902008041000000c002200210000000000112019f000000b0011001c7000000a602000041021f02150000040f000000010b00002900000060031002700000008903300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b00190000012d0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000001290000c13d000000000006004b0000013a0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f00000000006504350000000100200190000001510000613d0000001f01400039000000600210018f0000000001b20019000000000021004b00000000020000390000000102004039000000a50010009c0000016f0000213d00000001002001900000016f0000c13d000000400010043f000000200030008c000000e70000413d00000000010b0433000000000001004b0000000002000039000000010200c039000000000021004b000000e70000c13d0000000001000019000002200001042e0000001f0530018f000000b106300198000000400200043d00000000046200190000015c0000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000001580000c13d000000000005004b000001690000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000000890020009c00000089020080410000004002200210000000000112019f0000022100010430000000b201000041000000000010043f0000004101000039000000040010043f000000b30100004100000221000104300003000000000002000100000001001d0000000201000039000000000101041a000200000001001d000000400300043d000300000003001d000000ba010000410000000000130435000000040130003900000000020004100000000000210435000000890030009c0000008901000041000000000103401900000040011002100000000002000414000000890020009c0000008902008041000000c002200210000000000112019f000000b3011001c7000000a602000041021f021a0000040f000000030b00002900000060031002700000008903300197000000200030008c000000200400003900000000040340190000001f0640018f000000200740019000000000057b00190000019d0000613d000000000801034f00000000090b0019000000008a08043c0000000009a90436000000000059004b000001990000c13d000000000006004b000001aa0000613d000000000771034f0000000306600210000000000805043300000000086801cf000000000868022f000000000707043b0000010006600089000000000767022f00000000066701cf000000000686019f00000000006504350000000100200190000001e80000613d0000001f01400039000000600210018f0000000004b20019000000000024004b00000000020000390000000102004039000000a50040009c000000020100002900000001050000290000020c0000213d00000001002001900000020c0000c13d000000400040043f0000001f0030008c000002120000a13d00000000020b0433000000000001004b00000000030200190000000006000019000001ce0000c13d000000b60050009c000000000302001900000000010200190000000006000019000001ce0000a13d000001f4012000c9000000000002004b000001cb0000613d00000000032100d9000001f40030008c000002060000c13d000027100610011a000000000362004900000000010300190000000104000039000000000404041a000000a804400270000000a504400197000000000054004b000001e60000813d000000b60450009c000002060000413d000000b90040009c000001e50000213d000000bb0450009900000000024100a9000000000001004b000001df0000613d00000000051200d9000000000054004b000002060000c13d000000b90220012a000000000223004b000002060000413d000000000062001a000002060000413d0000000002620019000000000001042d0000000002060019000000000001042d0000001f0530018f000000b106300198000000400200043d0000000004620019000001f30000613d000000000701034f0000000008020019000000007907043c0000000008980436000000000048004b000001ef0000c13d000000000005004b000002000000613d000000000161034f0000000305500210000000000604043300000000065601cf000000000656022f000000000101043b0000010005500089000000000151022f00000000015101cf000000000161019f00000000001404350000006001300210000000890020009c00000089020080410000004002200210000000000112019f0000022100010430000000b201000041000000000010043f0000001101000039000000040010043f000000b3010000410000022100010430000000b201000041000000000010043f0000004101000039000000040010043f000000b301000041000002210001043000000000010000190000022100010430000000000001042f00000218002104210000000102000039000000000001042d0000000002000019000000000001042d0000021d002104230000000102000039000000000001042d0000000002000019000000000001042d0000021f00000432000002200001042e00000221000104300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000000000003d4aafbe86059d17c6263332c560f18c4f1fec34ffffff000000000000000000ffffffffffffffffffffffffffffffffffffffff000000000000008a4244d00300000000000000000000000000000000000000000000000200000000000000000000000000000040000001000000000000000000000000000000000000000000000000000000000000000000000000007f6596d300000000000000000000000000000000000000000000000000000000a8adb56300000000000000000000000000000000000000000000000000000000f2fde38a00000000000000000000000000000000000000000000000000000000f2fde38b00000000000000000000000000000000000000000000000000000000f7e1d1d400000000000000000000000000000000000000000000000000000000a8adb56400000000000000000000000000000000000000000000000000000000e30c3978000000000000000000000000000000000000000000000000000000007f6596d4000000000000000000000000000000000000000000000000000000008da5cb5b00000000000000000000000000000000000000000000000000000000a36250d8000000000000000000000000000000000000000000000000000000004b3a5fa7000000000000000000000000000000000000000000000000000000006ef1a113000000000000000000000000000000000000000000000000000000006ef1a1140000000000000000000000000000000000000000000000000000000079ba5097000000000000000000000000000000000000000000000000000000004b3a5fa8000000000000000000000000000000000000000000000000000000004e71d92d000000000000000000000000000000000000000000000000000000000197d9720000000000000000000000000000000000000000000000000000000023452b9c0000000000000000000000000000000000000000000000000000000035bb8d160000000000000000000000000000000000000020000000800000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff0000000000000000000000ff0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffff0000000000000000000000000b0c9f8d13e17f4e8c07255605e75eb0b4800097ffffffffffffffffffffff000000000000000000000000000000000000000000ffffffffffffffffffffff010000000000000000000000000000000000000000796b89b91644bc98cd93958e4c9038275d622183e25ac5af08cc6b5d955391320200000200000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000008a4244cf000000ffffffffffffffff000000000000000000000000000000000000000000000000000000008a4244d0000000000000000000000000000000000000000000ffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffa9059cbb00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004400000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffe04e487b71000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000024000000000000000000000000ea8e4eb5000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000008a4244d0000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000040000008000000000000000000000000000000000000000000000000000000000000000000000000070da870070a082310000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fb1ccbd0cb8ff02e6fda17171a8042e67f5b4d0cdd4b784a46fcf1641517afe7f6370222
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.