Skip to content

Commit e9d8d3e

Browse files
authored
Merge pull request #102 from dusk-network/add-duskevm-docs
DuskEVM network, gas & explorer contract verify docs
2 parents 8ad4639 + 6f52d5a commit e9d8d3e

File tree

1 file changed

+46
-35
lines changed

1 file changed

+46
-35
lines changed

src/content/docs/learn/deep-dive/dusk-evm.md

Lines changed: 46 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ DuskEVM enables developers to deploy smart contracts using standard EVM tooling
1111
The separation of execution environments like DuskEVM from DuskDS introduces modularity into Dusk’s architecture, enabling scalability, extensibility, and protocol composability.
1212
:::
1313

14-
1514
:::note[Note]
1615
EVM-equivalence means that DuskEVM executes transactions using the exact same rules as Ethereum clients. This allows Ethereum smart contracts, tools, and infrastructure to run on DuskEVM without any changes or custom integrations.
1716
:::
@@ -20,13 +19,11 @@ EVM-equivalence means that DuskEVM executes transactions using the exact same ru
2019

2120
With the introduction of DuskEVM, Dusk has expanded into a modular stack, providing a clean separation between settlement and execution environments:
2221

23-
| Layer | Description |
24-
|------------------|-----------------------------------------------------------------------------|
25-
| **DuskDS** | Settlement and data availability layer.|
26-
| **DuskEVM** | EVM execution environment |
27-
| **DuskVM** | Execution environment using Phoenix |
28-
29-
22+
| Layer | Description |
23+
|------------------|--------------------------------------------------------|
24+
| **DuskDS** | Settlement and data availability layer |
25+
| **DuskEVM** | EVM execution environment |
26+
| **DuskVM** | WASM execution environment using Phoenix or Moonlight |
3027

3128
DuskDS provides consensus, data availability, and settlement for the disintermediate trading of securities and other regulated assets.
3229

@@ -40,16 +37,14 @@ Dusk's modular architecture makes Dusk highly extensible and composable, as new
4037

4138
The Ethereum Virtual Machine (EVM) is a general-purpose, stack-based, stateless execution environment that processes smart contract logic. As the EVM is independent of consensus and data availability, it can be instantiated independently.
4239

43-
DuskEVM leverages the <a href="https://docs.optimism.io/stack/getting-started" target="_blank">OP Stack</a> and supports <a href="https://www.eip4844.com/" target="_blank">EIP-4844</a> (Proto-Danksharding)
40+
DuskEVM leverages the <a href="https://docs.optimism.io/stack/getting-started" target="_blank">OP Stack</a> and supports <a href="https://www.eip4844.com/" target="_blank">EIP-4844</a> (Proto-Danksharding).
4441

4542
While DuskEVM uses the OP Stack architecture, it settles directly using DuskDS rather than Ethereum. This required no modification to <a href="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/ethereum-optimism/optimism" target="_blank">Optimism</a> core components and it has been implemented by adding additional services.
4643

47-
4844
DuskEVM leverages DuskDS to store blobs, enabling developers to use EVM tooling while relying on DuskDS for settlement and data availability.
4945

50-
5146
:::note[Note]
52-
DuskEVM currently inherits a 7-day challenge period from the OP Stack. This is a temporary limitation, as future upgrades will introduce one-block finality.
47+
DuskEVM currently inherits a 7-day finalization period from the OP Stack. This is a temporary limitation, as future upgrades will introduce one-block finality.
5348
:::
5449

5550
## Architecture
@@ -58,43 +53,59 @@ The diagram below illustrates Dusk’s evolution from a monolithic design to a m
5853

5954
![Dusk's modular architecture](../../../../assets/modular_vs_monolithic.png)
6055

61-
:::note[Note]
62-
DuskEVM currently inherits a 7-day challenge period from the OP Stack. This is a temporary limitation, as future upgrades will introduce one-block finality.
63-
:::
56+
## Network Information
6457

58+
| Field | **Mainnet** | **Testnet** | **Devnet** |
59+
|---|---|---|---|
60+
| **Live** | No | Yes | No |
61+
| **Chain name** | DuskEVM | DuskEVM Testnet | DuskEVM Devnet |
62+
| **Chain ID** | 744 | 310 | 311 |
63+
| **Native token** | DUSK (18) | DUSK (18) | DUSK (18) |
64+
| **RPC (HTTPS)** | `https://rpc.evm.dusk.network` | `https://rpc.testnet.evm.dusk.network` | `https://rpc.devnet.evm.dusk.network` |
65+
| **RPC (WSS)** | `wss://wss.evm.dusk.network` | `wss:/wss.testnet.evm.dusk.network` | `wss://wss.devnet.evm.dusk.network` |
66+
| **Explorer** | `https://explorer.evm.dusk.network/` | `https://explorer.testnet.evm.dusk.network/` | `https://explorer.devnet.evm.dusk.network/` |
67+
| **Explorer TX prefix** | `/tx/` | `/tx/` | `/tx/` |
68+
| **Explorer account prefix** | `/address/` | `/address/` | `/address/` |
69+
| **Avg. block time** | ~2s | ~2s | ~2s |
6570

66-
## Specifications
71+
> **Note:** Our testnet currently acts as a devnet.
6772
68-
### Parameters
69-
| Feature | Superchain |
70-
|---------------------------|-------------------|
71-
| **Parent chain** | DuskDS |
72-
| **Throughput** | 32.5M gas/s |
73-
| **Gas limit** | TBA |
74-
| **Blocktimes** | TBA |
75-
| **Data availability support** | DuskDS |
76-
| **Gas token support** | DUSK |
77-
| **EVM compatibility** | Equivalent |
73+
## Transactions Flow
74+
75+
The process for a rollup transaction has two requirements:
76+
The transaction needs to be written to DuskDS, tipically by the <a href="https://github.com/ethereum-optimism/optimism/tree/v1.1.4/op-batcher" target="_blank">op-batcher</a>.
7877

79-
### Opcodes
78+
The transaction needs to be executed to modify the state (by <a href="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/ethereum-optimism/op-geth" target="_blank">op-geth</a>). Afterwards, <a href="https://github.com/ethereum-optimism/optimism/tree/develop/op-proposer" target="_blank">op-proposer</a> writes a commitment to the post-transaction state to [DuskDS](/learn/core-components#duskds) . Note that op-proposer does not need to write a commitment after each transaction to DuskDS; it is OK to commit to the state after a block of transactions.
79+
80+
More information about the batching process can be seen in the <a href="https://specs.optimism.io/protocol/derivation.html?utm_source=op-docs&utm_medium=docs#batch-submission" target="_blank">OP stack specs</a>.
81+
82+
## Gas & Fees
83+
84+
On OP‑Stack chains like DuskEVM, every transaction has two cost components: an L2 execution fee (EIP‑1559 base fee + optional priority tip) and an L1 data availability fee. The execution fee pays for running your transaction on the DuskEVM execution layer. The L1 data availability fee covers the cost of publishing your transaction data to DuskDS as blobs for batch posting.
85+
86+
These costs ultimately reflect operator expenses: running the sequencer/batcher infrastructure, posting data to DuskDS, and maintaining archival/monitoring services. As L1 data prices or blob base fees fluctuate, the L1 portion of your fee moves accordingly; the priority tip influences how quickly the private sequencer includes your transaction. Wallets and SDKs typically estimate the total fee automatically; advanced users can query the chain’s gas‑price oracle or estimator to preview both the execution and L1 components.
87+
88+
## Opcodes
8089

8190
| Opcode | Solidity Equivalent | Behavior |
8291
|-------------|---------------------|--------------------------------------------------------------------------------------------------------------------------------------------------|
8392
| `COINBASE` | `block.coinbase` | Returns the address of the current Sequencer's fee wallet. Effectively the same as Ethereum, but typically does not change from block to block. |
8493
| `PREVRANDAO`| `block.prevrandao` | Returns the PREVRANDAO (the most recent RANDAO) value of DuskDS at the current DuskDS origin block. |
85-
| `ORIGIN` | `tx.origin` | If the tx is a **DuskDS ⇒ DuskEVM** tx from a DuskDS smart contract, `tx.origin` is set to the **aliased address** of the originator. Else b
86-
94+
| `ORIGIN` | `tx.origin` | If the tx is a **DuskDS ⇒ DuskEVM** tx from a DuskDS smart contract, `tx.origin` is set to the **aliased address** of the originator.
8795

8896
:::note[Note]
8997
DuskEVM does not have a public mempool, as it is currently only visible to the Sequencer. The Sequencer executes transactions from the mempool in priority fee order (highest fee first).
9098
:::
9199

100+
## Verify a contract on the explorer (Blockscout)
92101

93-
## Transactions Flow
94-
95-
The process for a rollup transaction has two requirements:
96-
The transaction needs to be written to DuskDS, tipically by the <a href="https://github.com/ethereum-optimism/optimism/tree/v1.1.4/op-batcher" target="_blank">op-batcher</a>.
102+
DuskEVM uses [Blockscout](https://www.blockscout.com/) as its block explorer. For verification, follow the official Blockscout documentation and choose the method that fits your workflow:
97103

98-
The transaction needs to be executed to modify the state (by <a href="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/ethereum-optimism/op-geth" target="_blank">op-geth</a>). Afterwards, <a href="https://github.com/ethereum-optimism/optimism/tree/develop/op-proposer" target="_blank">op-proposer</a> writes a commitment to the post-transaction state to [DuskDS](/learn/core-components#duskds) . Note that op-proposer does not need to write a commitment after each transaction to DuskDS; it is OK to commit to the state after a block of transactions.
104+
- Blockscout UI (Verify & Publish): step‑by‑step web flow for source code / Standard JSON input.
105+
<a href="https://docs.blockscout.com/devs/verification" target="_blank" rel="noreferrer">docs.blockscout.com/devs/verification</a>
106+
- Hardhat verification plugin: verify from your Hardhat project directly against a Blockscout instance.
107+
<a href="https://docs.blockscout.com/devs/verification/hardhat-verification-plugin" target="_blank" rel="noreferrer">Hardhat verification plugin docs</a>
108+
- Foundry (Forge): use `--verifier blockscout` and point `--verifier-url` to your Blockscout API.
109+
<a href="https://docs.blockscout.com/devs/verification/foundry-verification" target="_blank" rel="noreferrer">Foundry + Blockscout docs</a>
99110

100-
More information about the batching process can be seen in the <a href="https://specs.optimism.io/protocol/derivation.html?utm_source=op-docs&utm_medium=docs#batch-submission" target="_blank">OP stack specs</a>.
111+
> **Tips:** Match the compiler version and optimizer settings used at deploy time, and include constructor arguments (ABI‑encoded) or a file when required.

0 commit comments

Comments
 (0)