Is there a reliable way of disassembling bytecode into opcodes across different EVM versions, to make it agnostic to the EVM version used during compilation?

As the second best option - is there a disassembler, that allows you to specify the EVM version to use? I did plenty of research on line but haven't found anything like this. I'm currently using evmdasm: https://github.com/ethereum/evmdasm

But it was not updated for a long time, so, as an example of the problem - with the release of Shanghai, and introduction of PUSH0, for contracts, compiled with Shanghai EVM version I have opcode UNKNOWN_0x5f(basically unrecognized opcode 0x5f), while same operation in contract compiled using Paris version, will look like PUSH1 0x00.

1 Answer 1


For anyone interested. I found an existing package, that allows you to select evm version to use during disassembling:

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.