Ethereum
0x1d8f8f00cfa6758d7be78336684788fb0ee0fa46
Decompiled Solidity recovered from this contract's runtime bytecode. Best-effort reconstruction — confirm behaviour against on-chain state.
Decompilation outputEthereum · 0x1d8f8f00…0ee0fa4611.0 KB1.6 s
This result is permanently available athttps://decompiler.exvul.com/ethereum/0x1d8f8f00cfa6758d7be78336684788fb0ee0fa46
621 lines · Click a variable or keyword to highlight its references · Click a line number to copy its link; Shift-click to copy a block link
//decompiled by exvvul decompiler tool contact@exvul.com https://x.com/exvulsec// SPDX-License-Identifier: MIT >=0.8.0; { ( => ) ; // STORAGE[0x0] ( => ) ; // STORAGE[0x1] ( => ) ; // STORAGE[0x2] ( => ) ; // STORAGE[0x3] ( => ) ; // STORAGE[0x4] ( => ) ; // STORAGE[0x5] ( => ) ; // STORAGE[0x6] ( => ) ; // STORAGE[0x7] ( => ) ; // STORAGE[0x8] ; // STORAGE[0x9] ; // STORAGE[0xa] ; ; ; ; ; (, ); ( , , ); () { // Synthetic compatibility routes preserve original selectors for unresolved names. ((.. >= 4) && (. == 0x986e791a)) { // Route to Unknown_986e791a(uint256) after replacing only msg.sig. ((0x9f5a2740)); ; } ((.. >= 4) && (. == 0xabfdcced)) { // Route to Unknown_abfdcced(uint256,uint256) after replacing only msg.sig. ((0xbf4614a5)); ; } ((.. >= 4) && (. == 0xc031a180)) { // Route to Unknown_c031a180(uint256) after replacing only msg.sig. ((0xbce514f6)); ; } (); } ( ) { (!(0x01 == (!(!(( / 0x010000000000000000000000000000000000000000)))))) { = [(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]; (![(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]) { = . == ; } (, "Invalid or outdated network contract attempting access during deployment"); } { ([(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))], "Invalid or outdated network contract"); } [] = 0; } ( ) { (!(0x01 == (!(!(( / 0x010000000000000000000000000000000000000000)))))) { = [(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]; (![(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]) { = . == ; } (, "Invalid or outdated network contract attempting access during deployment"); } { ([(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))], "Invalid or outdated network contract"); } [] = (0); } () () { !(!(( / 0x010000000000000000000000000000000000000000))); } () { (. == (()), "Confirmation must come from new guardian address"); = (); = & (0xffffffffffffffffffffffff0000000000000000000000000000000000000000); (, ( | ( & (0xffffffffffffffffffffffff0000000000000000000000000000000000000000)))); } ( ) { (!(0x01 == (!(!(( / 0x010000000000000000000000000000000000000000)))))) { = [(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]; (![(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]) { = . == ; } (, "Invalid or outdated network contract attempting access during deployment"); } { ([(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))], "Invalid or outdated network contract"); } [] = ; } ( , ) { ( <= 0x100000000); (!(((0x04 + ) + 0x20) > (0x04 + (.. - 0x04)))); (!((. > 0x0100000000) | ((0x20 + (0x04 + )) + (. * 0x01) > (0x04 + (.. - 0x04))))); (!(0x01 == (!(!(( / 0x010000000000000000000000000000000000000000)))))) { = [(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]; (![(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]) { = . == ; } (, "Invalid or outdated network contract attempting access during deployment"); } { ([(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))], "Invalid or outdated network contract"); } ; ; ; (. != 0x0) { ; ; ; (0x1f < .) { = 0x01 + ( + ); = 0x20 + (0x04 + ); = (.((.(, 0x01)))); = ; = (.((.(, 0x01)))); = 0x20 + (0x04 + ); () { ((0x20 + (0x04 + )) + <= ) { ; } = .[]; = 0x01 + ; = 0x20 + ; } = (0x20 + (0x04 + )) + ; = ; = ; = ; = ; = ; } { = (.[0x20 + (0x04 + )] & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00)) | ( + ); = 0x20 + (0x04 + ); = (.((.(, 0x01)))); = ; } = ; = ; = ; } { = 0; = 0x20 + (0x04 + ); = (.((.(, 0x01)))); = ; } = ; = (.((.(, 0x01)))) + ((0x1f + (((0x0100 * (!(0x01 & ))) - 0x01) & / 0x02)) / 0x20); () { ( <= ) { ; } = 0; ( <= (0x01 + )) { ; } = 0; = 0x01 + (0x01 + ); = ; } } ( , ) { (!(0x01 == (!(!(( / 0x010000000000000000000000000000000000000000)))))) { = [(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]; (![(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]) { = . == ; } (, "Invalid or outdated network contract attempting access during deployment"); } { ([(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))], "Invalid or outdated network contract"); } [] = ; } ( , ) { (!(0x01 == (!(!(( / 0x010000000000000000000000000000000000000000)))))) { = [(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]; (![(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]) { = . == ; } (, "Invalid or outdated network contract attempting access during deployment"); } { ([(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))], "Invalid or outdated network contract"); } [] = ; } ( ) () { (!(([]))) { ; } ([]); } ( ) { (); } ( , ) { ( <= 0x100000000); (!(((0x04 + ) + 0x20) > (0x04 + (.. - 0x04)))); (!((. > 0x0100000000) | ((0x20 + (0x04 + )) + (. * 0x01) > (0x04 + (.. - 0x04))))); (!(0x01 == (!(!(( / 0x010000000000000000000000000000000000000000)))))) { = [(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]; (![(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]) { = . == ; } (, "Invalid or outdated network contract attempting access during deployment"); } { ([(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))], "Invalid or outdated network contract"); } ; ; ; (. != 0x0) { ; ; ; (0x1f < .) { [] = 0x01 + ( + ); = 0x20 + (0x04 + ); = (.((.(, 0)))); = ; = (.((.(, 0)))); = 0x20 + (0x04 + ); () { ((0x20 + (0x04 + )) + <= ) { ; } = .[]; = 0x01 + ; = 0x20 + ; } = (0x20 + (0x04 + )) + ; = ; = ; = ; = ; = ; } { [] = (.[0x20 + (0x04 + )] & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00)) | ( + ); = 0x20 + (0x04 + ); = (.((.(, 0)))); = ; } = ; = ; = ; } { [] = 0; = 0x20 + (0x04 + ); = (.((.(, 0)))); = ; } = (.((.(, 0)))); = ((.((.(, 0))))) + ((0x1f + (((0x0100 * (!(0x01 & []))) - 0x01) & [] / 0x02)) / 0x20); () { ( <= ) { ; } = 0; ( <= (0x01 + )) { ; } = 0; = 0x01 + (0x01 + ); = ; } } ( ) { (. == , "Is not guardian account"); = | (0xffffffffffffffffffffffff0000000000000000000000000000000000000000 & ); } ( ) { (!(0x01 == (!(!(( / 0x010000000000000000000000000000000000000000)))))) { = [(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]; (![(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]) { = . == ; } (, "Invalid or outdated network contract attempting access during deployment"); } { ([(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))], "Invalid or outdated network contract"); } [] = 0; } ( ) ( ) { ; = 0x20 + ( + (0x20 * ((([] & (((!([] & (0x01))) * 0x0100) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) / 0x02) + 0x1f) / 0x20))); = ([] & (((!([] & (0x01))) * 0x0100) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)) / 0x02; = (.(, 0)); = + 0x20; ([] & (((!([] & (0x01))) * 0x0100) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) / 0x02 != 0) { = ( + 0x20) + ([] & (((!([] & (0x01))) * 0x0100) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) / 0x02); ; = ; ; = (( + 0x20) + ([] & (((!([] & (0x01))) * 0x0100) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) / 0x02)) + (0x1f & ( - (( + 0x20) + ([] & (((!([] & (0x01))) * 0x0100) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) / 0x02)))); (0x1f < ([] & (((!([] & (0x01))) * 0x0100) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) / 0x02)) { = 0x20 + ( + 0x20); = 0x01 + ((.((.(, 0))))); () { (( + 0x20) + ([] & ((!([] & (0x01)) * 0x0100) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) / 0x02) <= ) { ; } = 0x20 + ; = 0x01 + ; } } { = ([] & (((!([] & (0x01))) * 0x0100) + 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)) / 0x02; = (.(, 0)); = 0x20 + ( + 0x20); } = ; = ; = ; } = 0; () { (!( < .)) { ; } = 0x20 + ; } = . + ( + 0x40); (0x1f & (.)) { = 0x20 + ((. + ( + 0x40)) - (0x1f & (.))); } .(0x20, .); } ( , , ) { ( != (0), "Invalid withdrawal address"); (!(([]))) { (. == , "Only a tx from a node's withdrawal address can update it"); (!) { [] = | (0xffffffffffffffffffffffff0000000000000000000000000000000000000000 & []); } { [] = | (0xffffffffffffffffffffffff0000000000000000000000000000000000000000 & []); (, , .); } } (. == (([])), "Only a tx from a node's withdrawal address can update it"); (!) { [] = | (0xffffffffffffffffffffffff0000000000000000000000000000000000000000 & []); } { [] = | (0xffffffffffffffffffffffff0000000000000000000000000000000000000000 & []); (, , .); } } ( , ) { (!(0x01 == (!(!(( / 0x010000000000000000000000000000000000000000)))))) { = [(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]; (![(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]) { = . == ; } (, "Invalid or outdated network contract attempting access during deployment"); } { ([(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))], "Invalid or outdated network contract"); } [] = | (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00 & []); } ( , ) { (!(0x01 == (!(!(( / 0x010000000000000000000000000000000000000000)))))) { = [(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]; (![(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]) { = . == ; } (, "Invalid or outdated network contract attempting access during deployment"); } { ([(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))], "Invalid or outdated network contract"); } (!(( + []) < []), "SafeMath: addition overflow"); [] = + []; } ( ) { (. == [], "Confirmation must come from the pending withdrawal address"); [] = (0); [] = (.) | (0xffffffffffffffffffffffff0000000000000000000000000000000000000000 & []); (, ., .); } ( ) ( ) { ; = 0x20 + ( + (0x20 * ((([] & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + (0x0100 * (!([] & (0x01))))) / 0x02) + 0x1f) / 0x20))); ([] & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + (0x0100 * (!([] & (0x01))))) / 0x02 == 0) { = 0; () { (!( < .)) { ; } = 0x20 + ; } = . + ( + 0x40); (0x1f & (.)) { = 0x20 + ((. + ( + 0x40)) - (0x1f & (.))); } } { (0x1f < ([] & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + (0x0100 * (!([] & (0x01))))) / 0x02)) { = 0x20 + ( + 0x20); = 0x01 + ((.((.(, 0x01))))); () { (( + 0x20) + ([] & (0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff + (0x0100 * !([] & (0x01)))) / 0x02) <= ) { ; } = 0x20 + ; = 0x01 + ; } = 0; () { (!( < .)) { ; } = 0x20 + ; } = . + ( + 0x40); (0x1f & (.)) { = 0x20 + ((. + ( + 0x40)) - (0x1f & (.))); } } { = 0; () { (!( < .)) { ; } = 0x20 + ; } = . + ( + 0x40); (0x1f & (.)) { = 0x20 + ((. + ( + 0x40)) - (0x1f & (.))); } } } .(0x20, .); } ( , ) { (!(0x01 == (!(!(( / 0x010000000000000000000000000000000000000000)))))) { = [(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]; (![(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]) { = . == ; } (, "Invalid or outdated network contract attempting access during deployment"); } { ([(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))], "Invalid or outdated network contract"); } [] = | (0xffffffffffffffffffffffff0000000000000000000000000000000000000000 & []); } ( , ) { (!(0x01 == (!(!(( / 0x010000000000000000000000000000000000000000)))))) { = [(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]; (![(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]) { = . == ; } (, "Invalid or outdated network contract attempting access during deployment"); } { ([(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))], "Invalid or outdated network contract"); } [] = ; } ( ) { (!(0x01 == (!(!(( / 0x010000000000000000000000000000000000000000)))))) { = [(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]; (![(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]) { = . == ; } (, "Invalid or outdated network contract attempting access during deployment"); } { ([(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))], "Invalid or outdated network contract"); } [] = 0; } ( , ) { (!(0x01 == (!(!(( / 0x010000000000000000000000000000000000000000)))))) { = [(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]; (![(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]) { = . == ; } (, "Invalid or outdated network contract attempting access during deployment"); } { ([(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))], "Invalid or outdated network contract"); } (!( > []), "SafeMath: subtraction overflow"); [] = [] - ; } ( ) { (); } () { (. == , "Is not guardian account"); = 0x010000000000000000000000000000000000000000 | (0xffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff & ); } ( ) { // Decompilation incomplete: helper effect provenance is conservative. (!(0x01 == (!(!(( / 0x010000000000000000000000000000000000000000)))))) { = [(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]; (![(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]) { = . == ; } (, "Invalid or outdated network contract attempting access during deployment"); } { ([(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))], "Invalid or outdated network contract"); } [] = 0; (0x1f < (((0x0100 * (!(0x01 & []))) - 0x01) & [] / 0x02)) { = (.((.(, 0x01)))); = ((.((.(, 0x01))))) + ((0x1f + (((0x0100 * (!(0x01 & []))) - 0x01) & [] / 0x02)) / 0x20); () { ( <= ) { ; } = 0; ( <= (0x01 + )) { ; } = 0; = (0x01 + (0x01 + )); = ; ; } } } ( ) { // Decompilation incomplete: helper effect provenance is conservative. (!(0x01 == (!(!(( / 0x010000000000000000000000000000000000000000)))))) { = [(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]; (![(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))]) { = . == ; } (, "Invalid or outdated network contract attempting access during deployment"); } { ([(.(0x636f6e74726163742e6578697374730000000000000000000000000000000000, (. << 0x60)))], "Invalid or outdated network contract"); } [] = 0; (0x1f < (((0x0100 * (!(0x01 & []))) - 0x01) & [] / 0x02)) { = (.((.(, 0)))); = ((.((.(, 0))))) + ((0x1f + (((0x0100 * (!(0x01 & []))) - 0x01) & [] / 0x02)) / 0x20); () { ( <= ) { ; } = 0; ( <= (0x01 + )) { ; } = 0; = (0x01 + (0x01 + )); = ; ; } } } ( ) { { := (0x40) (, 0, ()) (, (((), 0x00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffff), (224, (, 0xffffffff)))) := ((), (), , (), 0, 0) := () (, 0, ) 0 { (, ) } { (, ) } } } // Note: This selector table is synthetic and is not part of the original Solidity source. // It records the recovered selector-to-signature mapping without executable behavior. // 0x0b9adc57 => deleteBytes32(bytes32) // 0x0e14a376 => deleteAddress(bytes32) // 0x1bed5241 => getDeployedStatus() // 0x1e0ea61e => confirmGuardian() // 0x21f8a721 => getAddress(bytes32) // 0x2c62ff2d => deleteBool(bytes32) // 0x2e28d084 => setBytes(bytes32,bytes) // 0x3e49bed0 => setInt(bytes32,int256) // 0x4e91db08 => setBytes32(bytes32,bytes32) // 0x5b49ff62 => getNodeWithdrawalAddress(address) // 0x616b59f6 => deleteBytes(bytes32) // 0x6e899550 => setString(bytes32,string) // 0x7ae1cfca => getBool(bytes32) // 0x8a0dac4a => setGuardian(address) // 0x8c160095 => deleteInt(bytes32) // 0x986e791a => Unknown_986e791a(uint256) // 0xa543ccea => setWithdrawalAddress(address,address,bool) // 0xa6ed563e => getBytes32(bytes32) // 0xa75b87d2 => getGuardian() // 0xabfdcced => Unknown_abfdcced(uint256,uint256) // 0xadb353dc => addUint(bytes32,uint256) // 0xbd02d0f5 => getUint(bytes32) // 0xbd439126 => confirmWithdrawalAddress(address) // 0xc031a180 => Unknown_c031a180(uint256) // 0xca446dd9 => setAddress(bytes32,address) // 0xdc97d962 => getInt(bytes32) // 0xe2a4853a => setUint(bytes32,uint256) // 0xe2b202bf => deleteUint(bytes32) // 0xebb9d8c9 => subUint(bytes32,uint256) // 0xf6bb3cc4 => deleteString(bytes32) // 0xfd412513 => getNodePendingWithdrawalAddress(address) // 0xfebffd99 => setDeployedStatus()}