Artifacts
DISCLAIMER // NFA // DYOR
This analysis is based on decompiled bytecode and observations of the contract behavior. We are not smart contract security experts. This document aims to explain what the contract appears to do based on the code, but should not be considered a comprehensive security audit or financial advice. Always verify critical information independently and consult with blockchain security professionals for important decisions.
⊙ generated by robots | curated by humans
| METADATA | |
|---|---|
| Contract Address | 0xe88BAab9192a3Cb2C0a50182AB911506e5aDc304 (etherscan) |
| Network | Ethereum Mainnet |
| Analysis Date | 2025-12-26 |
Runtime Bytecode
The deployed contract bytecode fetched from the blockchain.
Source: Etherscan - Contract Code
Command:
Artifact:
0x608060405234801561000f575f5ffd5b5060043610610114575f3560e01c8063715018a6116100a057806395d89b411161006f57806395d89b41146102be5780639c1f80a9146102dc578063a9059cbb146102f8578063dd62ed3e14610328578063f2fde38b1461035857610114565b8063715018a61461025a57806381d136cb146102645780638da5cb5b14610282578063902d55a5146102a057610114565b806323b872dd116100e757806323b872dd146101a2578063313ce567146101d2578063392e53cd146101f057806342966c681461020e57806370a082311461022a57610114565b806306fdde0314610118578063095ea7b31461013657806318160ddd146101665780631ed77dc814610184575b5f5ffd5b610120610374565b60405161012d9190611163565b60405180910390f35b610150600480360381019061014b9190611214565b610404565b60405161015d919061126c565b60405180910390f35b61016e610426565b60405161017b9190611294565b60405180910390f35b61018c61042f565b60405161019991906112bc565b60405180910390f35b6101bc60048036038101906101b791906112d5565b610454565b6040516101c9919061126c565b60405180910390f35b6101da610482565b6040516101e79190611340565b60405180910390f35b6101f861048a565b604051610205919061126c565b60405180910390f35b61022860048036038101906102239190611359565b61049f565b005b610244600480360381019061023f9190611384565b6104ac565b6040516102519190611294565b60405180910390f35b6102626104f2565b005b61026c610505565b6040516102799190611294565b60405180910390f35b61028a61050b565b60405161029791906112bc565b60405180910390f35b6102a8610532565b6040516102b59190611294565b60405180910390f35b6102c6610538565b6040516102d39190611163565b60405180910390f35b6102f660048036038101906102f191906113af565b6105c8565b005b610312600480360381019061030d9190611214565b6107fe565b60405161031f919061126c565b60405180910390f35b610342600480360381019061033d91906113ff565b610820565b60405161034f9190611294565b60405180910390f35b610372600480360381019061036d9190611384565b6108a2565b005b6060600480546103839061146a565b80601f01602080910402602001604051908101604052809291908181526020018280546103af9061146a565b80156103fa5780601f106103d1576101008083540402835291602001916103fa565b820191905f5260205f20905b8154815290600101906020018083116103dd57829003601f168201915b5050505050905090565b5f5f61040e610926565b905061041b81858561092d565b600191505092915050565b5f600354905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f61045e610926565b905061046b85828561093f565b6104768585856109d2565b60019150509392505050565b5f6012905090565b5f60095f9054906101000a900460ff16905090565b6104a93382610ac2565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6104fa610b41565b6105035f610bc8565b565b60085481565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60065481565b6060600580546105479061146a565b80601f01602080910402602001604051908101604052809291908181526020018280546105739061146a565b80156105be5780601f10610595576101008083540402835291602001916105be565b820191905f5260205f20905b8154815290600101906020018083116105a157829003601f168201915b5050505050905090565b6105d0610b41565b60095f9054906101000a900460ff161561061f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610616906114e4565b60405180910390fd5b5f8311610661576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065890611572565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036106cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c690611600565b60405180910390fd5b82811115610712576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107099061168e565b60405180910390fd5b600160095f6101000a81548160ff021916908315150217905550826006819055508160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806008819055505f5f90505f821115610791576107908383610c89565b5b5f826006546107a091906116d9565b90505f8111156107b8576107b43382610c89565b8091505b7f6eb1745ba8cc014fcbca9874907ae2ee201b237985437cdbf663cada05d4fa5c6006548585856040516107ef949392919061170c565b60405180910390a15050505050565b5f5f610808610926565b90506108158185856109d2565b600191505092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6108aa610b41565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361091a575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161091191906112bc565b60405180910390fd5b61092381610bc8565b50565b5f33905090565b61093a8383836001610d08565b505050565b5f61094a8484610820565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156109cc57818110156109bd578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016109b49392919061174f565b60405180910390fd5b6109cb84848484035f610d08565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a42575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610a3991906112bc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ab2575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610aa991906112bc565b60405180910390fd5b610abd838383610ed7565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b32575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610b2991906112bc565b60405180910390fd5b610b3d825f83610ed7565b5050565b610b49610926565b73ffffffffffffffffffffffffffffffffffffffff16610b6761050b565b73ffffffffffffffffffffffffffffffffffffffff1614610bc657610b8a610926565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610bbd91906112bc565b60405180910390fd5b565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cf9575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610cf091906112bc565b60405180910390fd5b610d045f8383610ed7565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610d78575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610d6f91906112bc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610de8575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610ddf91906112bc565b60405180910390fd5b8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610ed1578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ec89190611294565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f27578060035f828254610f1b9190611784565b92505081905550610ff7565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610fb1578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610fa89392919061174f565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361103e578060035f8282540392505081905550611089565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516110e69190611294565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611135826110f3565b61113f81856110fd565b935061114f81856020860161110d565b6111588161111b565b840191505092915050565b5f6020820190508181035f83015261117b818461112b565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6111b082611187565b9050919050565b6111c0816111a6565b81146111ca575f5ffd5b50565b5f813590506111db816111b7565b92915050565b5f819050919050565b6111f3816111e1565b81146111fd575f5ffd5b50565b5f8135905061120e816111ea565b92915050565b5f5f6040838503121561122a57611229611183565b5b5f611237858286016111cd565b925050602061124885828601611200565b9150509250929050565b5f8115159050919050565b61126681611252565b82525050565b5f60208201905061127f5f83018461125d565b92915050565b61128e816111e1565b82525050565b5f6020820190506112a75f830184611285565b92915050565b6112b6816111a6565b82525050565b5f6020820190506112cf5f8301846112ad565b92915050565b5f5f5f606084860312156112ec576112eb611183565b5b5f6112f9868287016111cd565b935050602061130a868287016111cd565b925050604061131b86828701611200565b9150509250925092565b5f60ff82169050919050565b61133a81611325565b82525050565b5f6020820190506113535f830184611331565b92915050565b5f6020828403121561136e5761136d611183565b5b5f61137b84828501611200565b91505092915050565b5f6020828403121561139957611398611183565b5b5f6113a6848285016111cd565b91505092915050565b5f5f5f606084860312156113c6576113c5611183565b5b5f6113d386828701611200565b93505060206113e4868287016111cd565b92505060406113f586828701611200565b9150509250925092565b5f5f6040838503121561141557611414611183565b5b5f611422858286016111cd565b9250506020611433858286016111cd565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061148157607f821691505b6020821081036114945761149361143d565b5b50919050565b7f4d696e74696e6720616c726561647920696e697469616c697a656400000000005f82015250565b5f6114ce601b836110fd565b91506114d98261149a565b602082019050919050565b5f6020820190508181035f8301526114fb816114c2565b9050919050565b7f546f74616c20737570706c79206d7573742062652067726561746572207468615f8201527f6e207a65726f0000000000000000000000000000000000000000000000000000602082015250565b5f61155c6026836110fd565b915061156782611502565b604082019050919050565b5f6020820190508181035f83015261158981611550565b9050919050565b7f50726573616c652077616c6c65742063616e6e6f74206265207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6115ea6025836110fd565b91506115f582611590565b604082019050919050565b5f6020820190508181035f830152611617816115de565b9050919050565b7f50726573616c6520616c6c6f636174696f6e206578636565647320746f74616c5f8201527f20737570706c7900000000000000000000000000000000000000000000000000602082015250565b5f6116786027836110fd565b91506116838261161e565b604082019050919050565b5f6020820190508181035f8301526116a58161166c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6116e3826111e1565b91506116ee836111e1565b9250828203905081811115611706576117056116ac565b5b92915050565b5f60808201905061171f5f830187611285565b61172c60208301866112ad565b6117396040830185611285565b6117466060830184611285565b95945050505050565b5f6060820190506117625f8301866112ad565b61176f6020830185611285565b61177c6040830184611285565b949350505050565b5f61178e826111e1565b9150611799836111e1565b92508282019050808211156117b1576117b06116ac565b5b9291505056fea2646970667358221220c69d87556cc16178135265799c83db1b0e011c295b3743340bde9e0d0898c91364736f6c63430008210033
Creation Bytecode
The full bytecode used to deploy the contract, including constructor code and arguments.
Source: Etherscan - Creation TX
Command:
export ETH_RPC_URL=https://eth.llamarpc.com
cast tx 0xf9b0e3fa2be36dfb405ae5d51ad439c3d5a95c09d41d40fe4db303af1e1a2bf2 input
Artifact:
0x608060405234801561000f575f5ffd5b506040518060400160405280600881526020017f53656e74696e656c0000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f53454e5400000000000000000000000000000000000000000000000000000000815250335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100ed575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100e4919061023d565b60405180910390fd5b6100fc8161013d60201b60201c565b50816004908161010c91906104a4565b50806005908161011c91906104a4565b5050505f60095f6101000a81548160ff021916908315150217905550610573565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610227826101fe565b9050919050565b6102378161021d565b82525050565b5f6020820190506102505f83018461022e565b92915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806102d157607f821691505b6020821081036102e4576102e361028d565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026103467fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261030b565b610350868361030b565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61039461038f61038a84610368565b610371565b610368565b9050919050565b5f819050919050565b6103ad8361037a565b6103c16103b98261039b565b848454610317565b825550505050565b5f5f905090565b6103d86103c9565b6103e38184846103a4565b505050565b5f5b82811015610409576103fe5f8284016103d0565b6001810190506103ea565b505050565b601f82111561045c578282111561045b57610428816102ea565b610431836102fc565b61043a856102fc565b6020861015610447575f90505b808301610456828403826103e8565b505050505b5b505050565b5f82821c905092915050565b5f61047c5f1984600802610461565b1980831691505092915050565b5f610494838361046d565b9150826002028217905092915050565b6104ad82610256565b67ffffffffffffffff8111156104c6576104c5610260565b5b6104d082546102ba565b6104db82828561040e565b5f60209050601f83116001811461050c575f84156104fa578287015190505b6105048582610489565b86555061056b565b601f19841661051a866102ea565b5f5b828110156105415784890151825560018201915060208501945060208101905061051c565b8683101561055e578489015161055a601f89168261046d565b8355505b6001600288020188555050505b505050505050565b6117ed806105805f395ff3fe608060405234801561000f575f5ffd5b5060043610610114575f3560e01c8063715018a6116100a057806395d89b411161006f57806395d89b41146102be5780639c1f80a9146102dc578063a9059cbb146102f8578063dd62ed3e14610328578063f2fde38b1461035857610114565b8063715018a61461025a57806381d136cb146102645780638da5cb5b14610282578063902d55a5146102a057610114565b806323b872dd116100e757806323b872dd146101a2578063313ce567146101d2578063392e53cd146101f057806342966c681461020e57806370a082311461022a57610114565b806306fdde0314610118578063095ea7b31461013657806318160ddd146101665780631ed77dc814610184575b5f5ffd5b610120610374565b60405161012d9190611163565b60405180910390f35b610150600480360381019061014b9190611214565b610404565b60405161015d919061126c565b60405180910390f35b61016e610426565b60405161017b9190611294565b60405180910390f35b61018c61042f565b60405161019991906112bc565b60405180910390f35b6101bc60048036038101906101b791906112d5565b610454565b6040516101c9919061126c565b60405180910390f35b6101da610482565b6040516101e79190611340565b60405180910390f35b6101f861048a565b604051610205919061126c565b60405180910390f35b61022860048036038101906102239190611359565b61049f565b005b610244600480360381019061023f9190611384565b6104ac565b6040516102519190611294565b60405180910390f35b6102626104f2565b005b61026c610505565b6040516102799190611294565b60405180910390f35b61028a61050b565b60405161029791906112bc565b60405180910390f35b6102a8610532565b6040516102b59190611294565b60405180910390f35b6102c6610538565b6040516102d39190611163565b60405180910390f35b6102f660048036038101906102f191906113af565b6105c8565b005b610312600480360381019061030d9190611214565b6107fe565b60405161031f919061126c565b60405180910390f35b610342600480360381019061033d91906113ff565b610820565b60405161034f9190611294565b60405180910390f35b610372600480360381019061036d9190611384565b6108a2565b005b6060600480546103839061146a565b80601f01602080910402602001604051908101604052809291908181526020018280546103af9061146a565b80156103fa5780601f106103d1576101008083540402835291602001916103fa565b820191905f5260205f20905b8154815290600101906020018083116103dd57829003601f168201915b5050505050905090565b5f5f61040e610926565b905061041b81858561092d565b600191505092915050565b5f600354905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f5f61045e610926565b905061046b85828561093f565b6104768585856109d2565b60019150509392505050565b5f6012905090565b5f60095f9054906101000a900460ff16905090565b6104a93382610ac2565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6104fa610b41565b6105035f610bc8565b565b60085481565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60065481565b6060600580546105479061146a565b80601f01602080910402602001604051908101604052809291908181526020018280546105739061146a565b80156105be5780601f10610595576101008083540402835291602001916105be565b820191905f5260205f20905b8154815290600101906020018083116105a157829003601f168201915b5050505050905090565b6105d0610b41565b60095f9054906101000a900460ff161561061f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610616906114e4565b60405180910390fd5b5f8311610661576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161065890611572565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036106cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c690611600565b60405180910390fd5b82811115610712576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107099061168e565b60405180910390fd5b600160095f6101000a81548160ff021916908315150217905550826006819055508160075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806008819055505f5f90505f821115610791576107908383610c89565b5b5f826006546107a091906116d9565b90505f8111156107b8576107b43382610c89565b8091505b7f6eb1745ba8cc014fcbca9874907ae2ee201b237985437cdbf663cada05d4fa5c6006548585856040516107ef949392919061170c565b60405180910390a15050505050565b5f5f610808610926565b90506108158185856109d2565b600191505092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6108aa610b41565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361091a575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161091191906112bc565b60405180910390fd5b61092381610bc8565b50565b5f33905090565b61093a8383836001610d08565b505050565b5f61094a8484610820565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8110156109cc57818110156109bd578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016109b49392919061174f565b60405180910390fd5b6109cb84848484035f610d08565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610a42575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610a3991906112bc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ab2575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610aa991906112bc565b60405180910390fd5b610abd838383610ed7565b505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b32575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401610b2991906112bc565b60405180910390fd5b610b3d825f83610ed7565b5050565b610b49610926565b73ffffffffffffffffffffffffffffffffffffffff16610b6761050b565b73ffffffffffffffffffffffffffffffffffffffff1614610bc657610b8a610926565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610bbd91906112bc565b60405180910390fd5b565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cf9575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401610cf091906112bc565b60405180910390fd5b610d045f8383610ed7565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610d78575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610d6f91906112bc565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610de8575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610ddf91906112bc565b60405180910390fd5b8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508015610ed1578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610ec89190611294565b60405180910390a35b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f27578060035f828254610f1b9190611784565b92505081905550610ff7565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610fb1578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610fa89392919061174f565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361103e578060035f8282540392505081905550611089565b8060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516110e69190611294565b60405180910390a3505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611135826110f3565b61113f81856110fd565b935061114f81856020860161110d565b6111588161111b565b840191505092915050565b5f6020820190508181035f83015261117b818461112b565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6111b082611187565b9050919050565b6111c0816111a6565b81146111ca575f5ffd5b50565b5f813590506111db816111b7565b92915050565b5f819050919050565b6111f3816111e1565b81146111fd575f5ffd5b50565b5f8135905061120e816111ea565b92915050565b5f5f6040838503121561122a57611229611183565b5b5f611237858286016111cd565b925050602061124885828601611200565b9150509250929050565b5f8115159050919050565b61126681611252565b82525050565b5f60208201905061127f5f83018461125d565b92915050565b61128e816111e1565b82525050565b5f6020820190506112a75f830184611285565b92915050565b6112b6816111a6565b82525050565b5f6020820190506112cf5f8301846112ad565b92915050565b5f5f5f606084860312156112ec576112eb611183565b5b5f6112f9868287016111cd565b935050602061130a868287016111cd565b925050604061131b86828701611200565b9150509250925092565b5f60ff82169050919050565b61133a81611325565b82525050565b5f6020820190506113535f830184611331565b92915050565b5f6020828403121561136e5761136d611183565b5b5f61137b84828501611200565b91505092915050565b5f6020828403121561139957611398611183565b5b5f6113a6848285016111cd565b91505092915050565b5f5f5f606084860312156113c6576113c5611183565b5b5f6113d386828701611200565b93505060206113e4868287016111cd565b92505060406113f586828701611200565b9150509250925092565b5f5f6040838503121561141557611414611183565b5b5f611422858286016111cd565b9250506020611433858286016111cd565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061148157607f821691505b6020821081036114945761149361143d565b5b50919050565b7f4d696e74696e6720616c726561647920696e697469616c697a656400000000005f82015250565b5f6114ce601b836110fd565b91506114d98261149a565b602082019050919050565b5f6020820190508181035f8301526114fb816114c2565b9050919050565b7f546f74616c20737570706c79206d7573742062652067726561746572207468615f8201527f6e207a65726f0000000000000000000000000000000000000000000000000000602082015250565b5f61155c6026836110fd565b915061156782611502565b604082019050919050565b5f6020820190508181035f83015261158981611550565b9050919050565b7f50726573616c652077616c6c65742063616e6e6f74206265207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6115ea6025836110fd565b91506115f582611590565b604082019050919050565b5f6020820190508181035f830152611617816115de565b9050919050565b7f50726573616c6520616c6c6f636174696f6e206578636565647320746f74616c5f8201527f20737570706c7900000000000000000000000000000000000000000000000000602082015250565b5f6116786027836110fd565b91506116838261161e565b604082019050919050565b5f6020820190508181035f8301526116a58161166c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6116e3826111e1565b91506116ee836111e1565b9250828203905081811115611706576117056116ac565b5b92915050565b5f60808201905061171f5f830187611285565b61172c60208301866112ad565b6117396040830185611285565b6117466060830184611285565b95945050505050565b5f6060820190506117625f8301866112ad565b61176f6020830185611285565b61177c6040830184611285565b949350505050565b5f61178e826111e1565b9150611799836111e1565b92508282019050808211156117b1576117b06116ac565b5b9291505056fea2646970667358221220c69d87556cc16178135265799c83db1b0e011c295b3743340bde9e0d0898c91364736f6c63430008210033
Reconstructed Source Code
Solidity source code reconstructed from bytecode analysis. This is an approximation based on function selectors, storage layout, and error messages found in the bytecode.
Not Verified Source
This is a reconstruction based on bytecode analysis and may not exactly match the original source code. It is provided for educational and analysis purposes only.
Source: Reconstructed from bytecode analysis using function selectors, storage slots, and error message strings.
Artifact:
// SPDX-License-Identifier: UNLICENSED
// Reconstructed from bytecode - NOT verified source code
// Contract: 0xe88BAab9192a3Cb2C0a50182AB911506e5aDc304
// Compiler: Solidity 0.8.33
pragma solidity ^0.8.21;
/**
* @title Sentinel (SENT) Token
* @notice ERC-20 token with deferred minting initialization pattern
* @dev Reconstructed from bytecode analysis. Structure inferred from:
* - Function selectors
* - Storage slot values
* - Error messages in bytecode
*/
contract Sentinel {
// =============================================================
// STORAGE LAYOUT
// =============================================================
// Slot 0: Owner address (Ownable pattern)
address private _owner;
// Slot 1: balances mapping
mapping(address => uint256) private _balances;
// Slot 2: allowances mapping
mapping(address => mapping(address => uint256)) private _allowances;
// Slot 3: totalSupply
uint256 private _totalSupply;
// Slot 4: name (string)
string private _name;
// Slot 5: symbol (string)
string private _symbol;
// Slot 6: TOTAL_SUPPLY (immutable-like constant set at init)
uint256 public TOTAL_SUPPLY;
// Slot 7: presaleWallet
address public presaleWallet;
// Slot 8: presaleAllocation
uint256 public presaleAllocation;
// Slot 9: isInitialized (packed bool)
bool private _isInitialized;
// =============================================================
// EVENTS
// =============================================================
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
// Custom event for minting initialization (selector: 0x6eb1745b)
event MintingInitialized(
uint256 totalSupply,
address presaleWallet,
uint256 presaleAllocation,
uint256 ownerAllocation
);
// =============================================================
// CONSTRUCTOR
// =============================================================
/**
* @notice Deploys the token with name "Sentinel" and symbol "SENT"
* @dev Sets deployer as owner but does NOT mint any tokens
* Tokens are minted via initializeMinting() call
*/
constructor() {
_name = "Sentinel";
_symbol = "SENT";
_owner = msg.sender;
_isInitialized = false;
emit OwnershipTransferred(address(0), msg.sender);
}
// =============================================================
// ERC-20 VIEW FUNCTIONS
// =============================================================
/// @notice Returns the token name
function name() public view returns (string memory) {
return _name;
}
/// @notice Returns the token symbol
function symbol() public view returns (string memory) {
return _symbol;
}
/// @notice Returns 18 decimals (standard)
function decimals() public pure returns (uint8) {
return 18;
}
/// @notice Returns the current total supply
function totalSupply() public view returns (uint256) {
return _totalSupply;
}
/// @notice Returns balance of an account
function balanceOf(address account) public view returns (uint256) {
return _balances[account];
}
/// @notice Returns the allowance granted by owner to spender
function allowance(address owner_, address spender) public view returns (uint256) {
return _allowances[owner_][spender];
}
/// @notice Returns initialization status
function isInitialized() public view returns (bool) {
return _isInitialized;
}
// =============================================================
// ERC-20 STATE-CHANGING
// =============================================================
/**
* @notice Transfer tokens to recipient
* @param to Recipient address
* @param amount Amount to transfer
* @return success Always returns true on success, reverts otherwise
*/
function transfer(address to, uint256 amount) public returns (bool) {
_transfer(msg.sender, to, amount);
return true;
}
/**
* @notice Approve spender to spend tokens on behalf of caller
* @param spender Address authorized to spend
* @param amount Amount authorized
* @return success Always returns true on success
*/
function approve(address spender, uint256 amount) public returns (bool) {
_approve(msg.sender, spender, amount, true);
return true;
}
/**
* @notice Transfer tokens from one address to another (requires allowance)
* @param from Source address
* @param to Destination address
* @param amount Amount to transfer
* @return success Always returns true on success, reverts otherwise
*/
function transferFrom(address from, address to, uint256 amount) public returns (bool) {
_spendAllowance(from, msg.sender, amount);
_transfer(from, to, amount);
return true;
}
/**
* @notice Burn tokens from caller's balance
* @param amount Amount to burn
*/
function burn(uint256 amount) public {
_burn(msg.sender, amount);
}
// =============================================================
// ADMIN FUNCTIONS
// =============================================================
/**
* @notice Initialize token minting - can only be called once
* @dev Owner-only function that:
* 1. Sets the total supply
* 2. Sets the presale wallet
* 3. Sets the presale allocation
* 4. Mints presale allocation to presale wallet
* 5. Mints remaining tokens to owner
* @param _totalSupplyAmount Total token supply
* @param _presaleWallet Address to receive presale allocation
* @param _presaleAlloc Amount allocated to presale
*/
function initializeMinting(
uint256 _totalSupplyAmount,
address _presaleWallet,
uint256 _presaleAlloc
) public onlyOwner {
// Can only initialize once
require(!_isInitialized, "Minting already initialized");
// Validate parameters
require(_totalSupplyAmount > 0, "Total supply must be greater than zero");
require(_presaleWallet != address(0), "Presale wallet cannot be zero address");
require(_presaleAlloc <= _totalSupplyAmount, "Presale allocation exceeds total supply");
// Mark as initialized
_isInitialized = true;
// Store values
TOTAL_SUPPLY = _totalSupplyAmount;
presaleWallet = _presaleWallet;
presaleAllocation = _presaleAlloc;
// Mint presale allocation if > 0
uint256 ownerAllocation = 0;
if (_presaleAlloc > 0) {
_mint(_presaleWallet, _presaleAlloc);
}
// Mint remaining to owner
ownerAllocation = _totalSupplyAmount - _presaleAlloc;
if (ownerAllocation > 0) {
_mint(msg.sender, ownerAllocation);
}
emit MintingInitialized(_totalSupplyAmount, _presaleWallet, _presaleAlloc, ownerAllocation);
}
// =============================================================
// OWNERSHIP (OWNABLE)
// =============================================================
/// @notice Returns the current owner
function owner() public view returns (address) {
return _owner;
}
/// @notice Modifier to restrict access to owner only
modifier onlyOwner() {
require(msg.sender == _owner, "OwnableUnauthorizedAccount");
_;
}
/**
* @notice Transfer ownership to a new address
* @param newOwner Address of the new owner
*/
function transferOwnership(address newOwner) public onlyOwner {
require(newOwner != address(0), "OwnableInvalidOwner");
_transferOwnership(newOwner);
}
/**
* @notice Renounce ownership - makes contract ownerless
* @dev WARNING: This is irreversible
*/
function renounceOwnership() public onlyOwner {
_transferOwnership(address(0));
}
// =============================================================
// INTERNAL FUNCTIONS
// =============================================================
function _transfer(address from, address to, uint256 amount) internal {
require(from != address(0), "ERC20InvalidSender");
require(to != address(0), "ERC20InvalidReceiver");
_update(from, to, amount);
}
function _approve(address owner_, address spender, uint256 amount, bool emitEvent) internal {
require(owner_ != address(0), "ERC20InvalidApprover");
require(spender != address(0), "ERC20InvalidSpender");
_allowances[owner_][spender] = amount;
if (emitEvent) {
emit Approval(owner_, spender, amount);
}
}
function _spendAllowance(address owner_, address spender, uint256 amount) internal {
uint256 currentAllowance = allowance(owner_, spender);
if (currentAllowance != type(uint256).max) {
require(currentAllowance >= amount, "ERC20InsufficientAllowance");
_approve(owner_, spender, currentAllowance - amount, false);
}
}
function _mint(address to, uint256 amount) internal {
require(to != address(0), "ERC20InvalidReceiver");
_update(address(0), to, amount);
}
function _burn(address from, uint256 amount) internal {
require(from != address(0), "ERC20InvalidSender");
_update(from, address(0), amount);
}
function _update(address from, address to, uint256 amount) internal {
if (from == address(0)) {
// Mint: increase total supply
_totalSupply += amount;
} else {
// Transfer/Burn: decrease sender balance
uint256 fromBalance = _balances[from];
require(fromBalance >= amount, "ERC20InsufficientBalance");
unchecked {
_balances[from] = fromBalance - amount;
}
}
if (to == address(0)) {
// Burn: decrease total supply
unchecked {
_totalSupply -= amount;
}
} else {
// Transfer/Mint: increase recipient balance
unchecked {
_balances[to] += amount;
}
}
emit Transfer(from, to, amount);
}
function _transferOwnership(address newOwner) internal {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}