Forkchoice Ethereum Mainnet

Address Contract Partially Verified

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

Contract Bytecode

12610 bytes
0x608060405260043610610117575f3560e01c806370a082311161009f5780638f9a55c0116100635780638f9a55c01461035257806395d89b411461037c578063a9059cbb146103a6578063bf474bed146103e2578063dd62ed3e1461040c5761011e565b806370a0823114610296578063715018a6146102d25780637d1db4a5146102e85780638129fc1c146103125780638da5cb5b146103285761011e565b806314228b0b116100e657806314228b0b146101c857806318160ddd146101de57806323b872dd14610208578063313ce56714610244578063667f65261461026e5761011e565b806301339c211461012257806306fdde0314610138578063095ea7b3146101625780630faee56f1461019e5761011e565b3661011e57005b5f80fd5b34801561012d575f80fd5b50610136610448565b005b348015610143575f80fd5b5061014c6105bb565b604051610159919061228c565b60405180910390f35b34801561016d575f80fd5b506101886004803603810190610183919061233d565b6105f8565b6040516101959190612395565b60405180910390f35b3480156101a9575f80fd5b506101b2610615565b6040516101bf91906123bd565b60405180910390f35b3480156101d3575f80fd5b506101dc610634565b005b3480156101e9575f80fd5b506101f261077a565b6040516101ff91906123bd565b60405180910390f35b348015610213575f80fd5b5061022e600480360381019061022991906123d6565b61079c565b60405161023b9190612395565b60405180910390f35b34801561024f575f80fd5b50610258610870565b6040516102659190612441565b60405180910390f35b348015610279575f80fd5b50610294600480360381019061028f919061245a565b610878565b005b3480156102a1575f80fd5b506102bc60048036038101906102b79190612498565b6109c0565b6040516102c991906123bd565b60405180910390f35b3480156102dd575f80fd5b506102e6610a06565b005b3480156102f3575f80fd5b506102fc610b54565b60405161030991906123bd565b60405180910390f35b34801561031d575f80fd5b50610326610b5a565b005b348015610333575f80fd5b5061033c61109d565b60405161034991906124d2565b60405180910390f35b34801561035d575f80fd5b506103666110c4565b60405161037391906123bd565b60405180910390f35b348015610387575f80fd5b506103906110ca565b60405161039d919061228c565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c7919061233d565b611107565b6040516103d99190612395565b60405180910390f35b3480156103ed575f80fd5b506103f6611124565b60405161040391906123bd565b60405180910390f35b348015610417575f80fd5b50610432600480360381019061042d91906124eb565b611142565b60405161043f91906123bd565b60405180910390f35b6104506111c4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146104dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d390612573565b60405180910390fd5b600b60149054906101000a900460ff161561052c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610523906125db565b60405180910390fd5b6001600b60176101000a81548160ff0219169083151502179055506001600b60146101000a81548160ff0219169083151502179055507f029ed388f3dd39b342f312d7b12cba9e3065871bf0fb668cc5457f217b15dd7c600b60149054906101000a900460ff16600b60179054906101000a900460ff166040516105b19291906125f9565b60405180910390a1565b60606040518060400160405280600881526020017f5268796f6c697465000000000000000000000000000000000000000000000000815250905090565b5f61060b6106046111c4565b84846111cb565b6001905092915050565b6009600a610623919061277c565b620186a061063191906127c6565b81565b61063c6111c4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bf90612573565b60405180910390fd5b5f600b60156101000a81548160ff0219169083151502179055506009600a6106f0919061277c565b629896806106fe91906127c6565b6008819055506009600a610712919061277c565b6298968061072091906127c6565b6009819055507f69ada53addde5123341ce3a822c5f66292103b2771e41e1f3c00c2de8a63a7f96009600a610755919061277c565b6298968061076391906127c6565b60405161077091906123bd565b60405180910390a1565b5f6009600a610789919061277c565b6298968061079791906127c6565b905090565b5f6107a8848484611359565b610865846107b46111c4565b610860856040518060600160405280602881526020016130e56028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108176111c4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611d069092919063ffffffff16565b6111cb565b600190509392505050565b5f6009905090565b6108806111c4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461090c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090390612573565b60405180910390fd5b601e821115801561091e5750601e8111155b80156109365750600b60149054906101000a900460ff165b610975576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096c90612851565b60405180910390fd5b81600581905550806006819055507f78009e5656a5c60b3c047015fb856b2efbc6f42beed76119406d7d4e3fc161f482826040516109b492919061286f565b60405180910390a15050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a0e6111c4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9190612573565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60085481565b610b626111c4565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be590612573565b60405180910390fd5b600b60149054906101000a900460ff1615610c3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c35906128e0565b60405180910390fd5b5f610c9b610c846064610c7660146009600a610c5a919061277c565b62989680610c6891906127c6565b611d6890919063ffffffff16565b611ddf90919063ffffffff16565b610c8d306109c0565b611e2890919063ffffffff16565b9050737a250d5630b4cf539739df2c5dacb4c659f2488d600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610d3830600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610d25919061277c565b62989680610d3391906127c6565b6111cb565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610da2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dc69190612912565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e4c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e709190612912565b6040518363ffffffff1660e01b8152600401610e8d92919061293d565b6020604051808303815f875af1158015610ea9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ecd9190612912565b600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730845f80610f566111c4565b426040518863ffffffff1660e01b8152600401610f78969594939291906129a6565b60606040518083038185885af1158015610f94573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610fb99190612a19565b505050600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611059929190612a69565b6020604051808303815f875af1158015611075573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110999190612aba565b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60095481565b60606040518060400160405280600381526020017f524f450000000000000000000000000000000000000000000000000000000000815250905090565b5f61111a6111136111c4565b8484611359565b6001905092915050565b6009600a611132919061277c565b61271061113f91906127c6565b81565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561123357505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611272576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126990612b2f565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161134c91906123bd565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156113c157505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b611400576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f790612b97565b60405180910390fd5b5f8111611442576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143990612c25565b60405180910390fd5b5f61144b61109d565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156114b9575061148961109d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a5657600b60149054906101000a900460ff166115ad5760035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061156d575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b6115ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a390612c8d565b60405180910390fd5b5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156116565750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156116a9575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561177957600b60159054906101000a900460ff161561176157600854821115611708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ff90612cf5565b60405180910390fd5b60095482611715856109c0565b61171f9190612d13565b1115611760576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175790612d90565b60405180910390fd5b5b60075f81548092919061177390612dae565b91905055505b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561180157503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561184757611840606461183260286007541161181f576014611823565b6006545b85611d6890919063ffffffff16565b611ddf90919063ffffffff16565b9050611912565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118cf57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156119115761190e60646119006028600754116118ed5760146118f1565b6005545b85611d6890919063ffffffff16565b611ddf90919063ffffffff16565b90505b5b5f61191c306109c0565b9050600b60169054906101000a900460ff161580156119875750600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561199f5750600b60179054906101000a900460ff165b80156119c457506009600a6119b4919061277c565b6127106119c191906127c6565b81115b80156119d257506014600754115b15611a54575f6009600a6119e6919061277c565b620186a06119f491906127c6565b8211611a005781611a1d565b6009600a611a0e919061277c565b620186a0611a1c91906127c6565b5b90505f818511611a2d5784611a2f565b815b9050611a3a81611e71565b5f4790505f811115611a5057611a4f476120dc565b5b5050505b505b5f811115611b5557611aae8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461214490919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b4c91906123bd565b60405180910390a35b611ba58260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e2890919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611c48611bfc8284611e2890919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461214490919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611ceb8486611e2890919063ffffffff16565b604051611cf891906123bd565b60405180910390a350505050565b5f838311158290611d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d44919061228c565b60405180910390fd5b505f8385611d5b9190612df5565b9050809150509392505050565b5f808303611d78575f9050611dd9565b5f8284611d8591906127c6565b9050828482611d949190612e55565b14611dd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dcb90612ef5565b60405180910390fd5b809150505b92915050565b5f611e2083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506121a1565b905092915050565b5f611e6983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611d06565b905092915050565b6001600b60166101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611ea857611ea7612f13565b5b604051908082528060200260200182016040528015611ed65781602001602082028036833780820191505090505b50905030815f81518110611eed57611eec612f40565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f91573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fb59190612912565b81600181518110611fc957611fc8612f40565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061202f30600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846111cb565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612091959493929190613024565b5f604051808303815f87803b1580156120a8575f80fd5b505af11580156120ba573d5f803e3d5ffd5b50505050505f600b60166101000a81548160ff02191690831515021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612140573d5f803e3d5ffd5b5050565b5f8082846121529190612d13565b905083811015612197576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218e906130c6565b60405180910390fd5b8091505092915050565b5f80831182906121e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121de919061228c565b60405180910390fd5b505f83856121f59190612e55565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561223957808201518184015260208101905061221e565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61225e82612202565b612268818561220c565b935061227881856020860161221c565b61228181612244565b840191505092915050565b5f6020820190508181035f8301526122a48184612254565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6122d9826122b0565b9050919050565b6122e9816122cf565b81146122f3575f80fd5b50565b5f81359050612304816122e0565b92915050565b5f819050919050565b61231c8161230a565b8114612326575f80fd5b50565b5f8135905061233781612313565b92915050565b5f8060408385031215612353576123526122ac565b5b5f612360858286016122f6565b925050602061237185828601612329565b9150509250929050565b5f8115159050919050565b61238f8161237b565b82525050565b5f6020820190506123a85f830184612386565b92915050565b6123b78161230a565b82525050565b5f6020820190506123d05f8301846123ae565b92915050565b5f805f606084860312156123ed576123ec6122ac565b5b5f6123fa868287016122f6565b935050602061240b868287016122f6565b925050604061241c86828701612329565b9150509250925092565b5f60ff82169050919050565b61243b81612426565b82525050565b5f6020820190506124545f830184612432565b92915050565b5f80604083850312156124705761246f6122ac565b5b5f61247d85828601612329565b925050602061248e85828601612329565b9150509250929050565b5f602082840312156124ad576124ac6122ac565b5b5f6124ba848285016122f6565b91505092915050565b6124cc816122cf565b82525050565b5f6020820190506124e55f8301846124c3565b92915050565b5f8060408385031215612501576125006122ac565b5b5f61250e858286016122f6565b925050602061251f858286016122f6565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61255d60208361220c565b915061256882612529565b602082019050919050565b5f6020820190508181035f83015261258a81612551565b9050919050565b7f74726164696e6720616c7265616479206f70656e0000000000000000000000005f82015250565b5f6125c560148361220c565b91506125d082612591565b602082019050919050565b5f6020820190508181035f8301526125f2816125b9565b9050919050565b5f60408201905061260c5f830185612386565b6126196020830184612386565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156126a25780860481111561267e5761267d612620565b5b600185161561268d5780820291505b808102905061269b8561264d565b9450612662565b94509492505050565b5f826126ba5760019050612775565b816126c7575f9050612775565b81600181146126dd57600281146126e757612716565b6001915050612775565b60ff8411156126f9576126f8612620565b5b8360020a9150848211156127105761270f612620565b5b50612775565b5060208310610133831016604e8410600b841016171561274b5782820a90508381111561274657612745612620565b5b612775565b6127588484846001612659565b9250905081840481111561276f5761276e612620565b5b81810290505b9392505050565b5f6127868261230a565b915061279183612426565b92506127be7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846126ab565b905092915050565b5f6127d08261230a565b91506127db8361230a565b92508282026127e98161230a565b91508282048414831517612800576127ff612620565b5b5092915050565b7f457863656564732076616c7565000000000000000000000000000000000000005f82015250565b5f61283b600d8361220c565b915061284682612807565b602082019050919050565b5f6020820190508181035f8301526128688161282f565b9050919050565b5f6040820190506128825f8301856123ae565b61288f60208301846123ae565b9392505050565b7f696e697420616c72656164792063616c6c6564000000000000000000000000005f82015250565b5f6128ca60138361220c565b91506128d582612896565b602082019050919050565b5f6020820190508181035f8301526128f7816128be565b9050919050565b5f8151905061290c816122e0565b92915050565b5f60208284031215612927576129266122ac565b5b5f612934848285016128fe565b91505092915050565b5f6040820190506129505f8301856124c3565b61295d60208301846124c3565b9392505050565b5f819050919050565b5f819050919050565b5f61299061298b61298684612964565b61296d565b61230a565b9050919050565b6129a081612976565b82525050565b5f60c0820190506129b95f8301896124c3565b6129c660208301886123ae565b6129d36040830187612997565b6129e06060830186612997565b6129ed60808301856124c3565b6129fa60a08301846123ae565b979650505050505050565b5f81519050612a1381612313565b92915050565b5f805f60608486031215612a3057612a2f6122ac565b5b5f612a3d86828701612a05565b9350506020612a4e86828701612a05565b9250506040612a5f86828701612a05565b9150509250925092565b5f604082019050612a7c5f8301856124c3565b612a8960208301846123ae565b9392505050565b612a998161237b565b8114612aa3575f80fd5b50565b5f81519050612ab481612a90565b92915050565b5f60208284031215612acf57612ace6122ac565b5b5f612adc84828501612aa6565b91505092915050565b7f45524332303a20617070726f766520746865207a65726f2061646472657373005f82015250565b5f612b19601f8361220c565b9150612b2482612ae5565b602082019050919050565b5f6020820190508181035f830152612b4681612b0d565b9050919050565b7f45524332303a207472616e7366657220746865207a65726f20616464726573735f82015250565b5f612b8160208361220c565b9150612b8c82612b4d565b602082019050919050565b5f6020820190508181035f830152612bae81612b75565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612c0f60298361220c565b9150612c1a82612bb5565b604082019050919050565b5f6020820190508181035f830152612c3c81612c03565b9050919050565b7f74726164696e67206973206e6f7420796574206f70656e0000000000000000005f82015250565b5f612c7760178361220c565b9150612c8282612c43565b602082019050919050565b5f6020820190508181035f830152612ca481612c6b565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612cdf60198361220c565b9150612cea82612cab565b602082019050919050565b5f6020820190508181035f830152612d0c81612cd3565b9050919050565b5f612d1d8261230a565b9150612d288361230a565b9250828201905080821115612d4057612d3f612620565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612d7a601a8361220c565b9150612d8582612d46565b602082019050919050565b5f6020820190508181035f830152612da781612d6e565b9050919050565b5f612db88261230a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612dea57612de9612620565b5b600182019050919050565b5f612dff8261230a565b9150612e0a8361230a565b9250828203905081811115612e2257612e21612620565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612e5f8261230a565b9150612e6a8361230a565b925082612e7a57612e79612e28565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f612edf60218361220c565b9150612eea82612e85565b604082019050919050565b5f6020820190508181035f830152612f0c81612ed3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612f9f816122cf565b82525050565b5f612fb08383612f96565b60208301905092915050565b5f602082019050919050565b5f612fd282612f6d565b612fdc8185612f77565b9350612fe783612f87565b805f5b83811015613017578151612ffe8882612fa5565b975061300983612fbc565b925050600181019050612fea565b5085935050505092915050565b5f60a0820190506130375f8301886123ae565b6130446020830187612997565b81810360408301526130568186612fc8565b905061306560608301856124c3565b61307260808301846123ae565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6130b0601b8361220c565b91506130bb8261307c565b602082019050919050565b5f6020820190508181035f8301526130dd816130a4565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122039a4b3c8ebc981ffab01d62795fe80311a8cd106dbcf0a9bf5d6fa3fdba20a2964736f6c63430008140033

Verified Source Code Partial Match

Compiler: v0.8.20+commit.a1b79de6 EVM: shanghai Optimization: No
Rhyolite.sol 331 lines
// Website  : https://rhyolite.network
// Telegram : https://t.me/rhyoliteportal


// SPDX-License-Identifier: MIT
pragma solidity 0.8.20;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    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);
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
}

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 factory() external pure returns (address);
    function WETH() 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);
}

contract Rhyolite is Context, IERC20, Ownable {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    address payable private  _taxWallet;
    address private constant deadAddress = address(0xdead);

    uint256 private constant _initialBuyTax =20;
    uint256 private constant _initialSellTax=20;
    uint256 private constant _reduceBuyTaxAt=40;
    uint256 private constant _reduceSellTaxAt=40;
    uint256 private constant _preventSwapBefore=20;
    uint256 private _finalBuyTax=10;
    uint256 private _finalSellTax=20;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 10000000 * 10**_decimals;
    string private constant _name   = unicode"Rhyolite";
    string private constant _symbol = unicode"ROE";
    uint256 public constant _taxSwapThreshold = 10000 * 10**_decimals;
    uint256 public constant _maxTaxSwap = 100000 * 10**_decimals;
    uint256 public _maxTxAmount = 100000 * 10**_decimals;
    uint256 public _maxWalletSize = 100000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private limitEffect = true;
    bool private inSwap = false;
    bool private swapEnabled = false;

    event FinalTax (uint256 _valueBuy, uint256 _valueSell);
    event Launch (bool _tradingOpen,bool _swapEnabled);
    event maxAmount(uint256 _value);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor (address taxWallet) {
         _taxWallet = payable (taxWallet);
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[_taxWallet] = true;
        _isExcludedFromFee[deadAddress]= true;
        _isExcludedFromFee[address(this)] = true;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0) && spender != address(0), "ERC20: approve the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0) && to != address(0), "ERC20: transfer the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;

        if (from != owner() && to != owner()) {

            if (!tradingOpen) {
                require( 
                  _isExcludedFromFee[from] || _isExcludedFromFee[to],
                  "trading is not yet open"
                );
            } 

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                if (limitEffect) {
                    require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                    require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                } 
                _buyCount++;
            }
            
            if ( to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul 
                ((_buyCount>_reduceSellTaxAt)
                    ?_finalSellTax:_initialSellTax).div(100
                );
            } else if (from == uniswapV2Pair && to!= address(this) ){
                taxAmount = amount.mul
                ((_buyCount>_reduceBuyTaxAt)
                    ?_finalBuyTax:_initialBuyTax).div(100
                );
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (
                !inSwap && 
                to == uniswapV2Pair && 
                swapEnabled && 
                contractTokenBalance>_taxSwapThreshold && 
                _buyCount>_preventSwapBefore
            ){
                uint256 getMin = (contractTokenBalance > _maxTaxSwap)?_maxTaxSwap:contractTokenBalance;
                uint256 amountToSwap = (amount>getMin)?getMin:amount;
                swapTokensForEth(amountToSwap);
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function initialize () external onlyOwner {
        require(!tradingOpen,"init already called");
        uint256 tokenAmount = balanceOf(address(this)).sub(_tTotal.mul(_initialBuyTax).div(100));
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory())
            .createPair(address(this), uniswapV2Router.WETH()
        );
        uniswapV2Router.addLiquidityETH{value: address(this).balance} (
            address(this),
            tokenAmount,
            0,
            0,
            _msgSender(),
            block.timestamp
        );
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); 
    }

    function launch() external onlyOwner {
        require(!tradingOpen,"trading already open");
        swapEnabled = true;
        tradingOpen = true;
        emit Launch (tradingOpen,swapEnabled);
    }

    function toggleLimits () external onlyOwner {
        limitEffect = false;
        _maxTxAmount= _tTotal;
        _maxWalletSize= _tTotal;
        emit maxAmount (_tTotal);
    }
    
    function setTax (uint256 _valueBuy, uint256 _valueSell) external onlyOwner {
        require(_valueBuy <= 30 && _valueSell <= 30 && tradingOpen, "Exceeds value");
        _finalBuyTax = _valueBuy;
        _finalSellTax = _valueSell;
        emit FinalTax(_valueBuy, _valueSell);
    }

    receive() external payable {}
}

Read Contract

_maxTaxSwap 0x0faee56f → uint256
_maxTxAmount 0x7d1db4a5 → uint256
_maxWalletSize 0x8f9a55c0 → uint256
_taxSwapThreshold 0xbf474bed → uint256
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256

Write Contract 8 functions

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

approve 0x095ea7b3
address spender
uint256 amount
returns: bool
initialize 0x8129fc1c
No parameters
launch 0x01339c21
No parameters
renounceOwnership 0x715018a6
No parameters
setTax 0x667f6526
uint256 _valueBuy
uint256 _valueSell
toggleLimits 0x14228b0b
No parameters
transfer 0xa9059cbb
address recipient
uint256 amount
returns: bool
transferFrom 0x23b872dd
address sender
address recipient
uint256 amount
returns: bool

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 →