Ethereum & DogeOS Differences
A number of technical details differ between Ethereum mainnet’s EVM and DogeOS’s modified design for a zkEVM. Below you can see those differences as they exist on DogeOS and DogeOS Chikyū Testnet.
For open-source contributors and infrastructure builders, please contact our team for additional support.
EVM Opcodes
| Opcode | Solidity equivalent | DogeOS Behavior |
|---|---|---|
COINBASE | block.coinbase | Returns the pre-deployed fee vault contract address. |
DIFFICULTY / PREVRANDAO | block.difficulty | Returns 0. |
SELFDESTRUCT | selfdestruct | Disabled. If the opcode is encountered, the transaction will be reverted.1 |
We support the prague EVM target and the latest Solidity version 0.8.30.
EVM Precompiles
The RIPEMD-160 (address 0x3) blake2f (address 0x9), and point evaluation (address 0x0a) precompiles are currently not supported. Calls to unsupported precompiled contracts will revert. We plan to enable these precompiles in future hard forks.
The modexp precompile is supported but only supports inputs of size less than or equal to 32 bytes (i.e. u256).
The other EVM precompiles are all supported: ecPairing, ecRecover, identity, ecAdd, ecMul.
Transaction Ordering
Similarly to Ethereum, the DogeOS sequencer aims to prioritize executable transactions based on their “tip” (priority fee). In most cases, transactions will be included in the next block in decreasing order of their tips.
However, just like in Ethereum, this ordering is not guaranteed by the protocol, and some blocks might diverge from it. In particular, during periods of low mempool congestion, the sequencer will process transactions on a first-come-first-served basis, so some transactions might precede others with higher tip in the same block.
Reorgs and Finality
In order to support maximum capacity under load and keep gas prices low, the maximum reorg depth has been set to 17 blocks. Transaction ordering should be unchanged after this threshold.
For absolute ordering certainty, you can wait for blocks to be finalized (which occurs after a proof and withddrawal fulfillment transactions is completed on Dogecoin).
Transaction Fees
The fee charged to DogeOS transactions:
- Execution fee: similar to Ethereum, the amount of the DogeOS execution fee equals to
gas_used * effective_gas_price, covering the following costs:- DogeOS sequencer execution & congestion costs
- Data and Finality fee: additional fee on top of execution fee. The Data and Finality fee covers the cost of sending data to Celestia for data availability and updating the Dogecoin bridge. Because we roll up the tx data to Celestia, the fee is calculated based on the size of tx data.
For more information, see Transaction Fees on DogeOS.
Footnotes
-
Will change to adopt Ethereum’s solution in the future. ↩