You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/content/docs/learn/deep-dive/dusk-evm.md
+46-35Lines changed: 46 additions & 35 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,7 +11,6 @@ DuskEVM enables developers to deploy smart contracts using standard EVM tooling
11
11
The separation of execution environments like DuskEVM from DuskDS introduces modularity into Dusk’s architecture, enabling scalability, extensibility, and protocol composability.
12
12
:::
13
13
14
-
15
14
:::note[Note]
16
15
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.
17
16
:::
@@ -20,13 +19,11 @@ EVM-equivalence means that DuskEVM executes transactions using the exact same ru
20
19
21
20
With the introduction of DuskEVM, Dusk has expanded into a modular stack, providing a clean separation between settlement and execution environments:
|**DuskDS**| Settlement and data availability layer |
25
+
|**DuskEVM**| EVM execution environment |
26
+
|**DuskVM**| WASM execution environment using Phoenix or Moonlight |
30
27
31
28
DuskDS provides consensus, data availability, and settlement for the disintermediate trading of securities and other regulated assets.
32
29
@@ -40,16 +37,14 @@ Dusk's modular architecture makes Dusk highly extensible and composable, as new
40
37
41
38
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.
42
39
43
-
DuskEVM leverages the <ahref="https://docs.optimism.io/stack/getting-started"target="_blank">OP Stack</a> and supports <ahref="https://www.eip4844.com/"target="_blank">EIP-4844</a> (Proto-Danksharding)
40
+
DuskEVM leverages the <ahref="https://docs.optimism.io/stack/getting-started"target="_blank">OP Stack</a> and supports <ahref="https://www.eip4844.com/"target="_blank">EIP-4844</a> (Proto-Danksharding).
44
41
45
42
While DuskEVM uses the OP Stack architecture, it settles directly using DuskDS rather than Ethereum. This required no modification to <ahref="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/ethereum-optimism/optimism"target="_blank">Optimism</a> core components and it has been implemented by adding additional services.
46
43
47
-
48
44
DuskEVM leverages DuskDS to store blobs, enabling developers to use EVM tooling while relying on DuskDS for settlement and data availability.
49
45
50
-
51
46
:::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.
53
48
:::
54
49
55
50
## Architecture
@@ -58,43 +53,59 @@ The diagram below illustrates Dusk’s evolution from a monolithic design to a m
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.
> **Note:** Our testnet currently acts as a devnet.
67
72
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 <ahref="https://github.com/ethereum-optimism/optimism/tree/v1.1.4/op-batcher"target="_blank">op-batcher</a>.
78
77
79
-
### Opcodes
78
+
The transaction needs to be executed to modify the state (by <ahref="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/ethereum-optimism/op-geth"target="_blank">op-geth</a>). Afterwards, <ahref="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 <ahref="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.
|`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. |
84
93
|`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.
87
95
88
96
:::note[Note]
89
97
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).
90
98
:::
91
99
100
+
## Verify a contract on the explorer (Blockscout)
92
101
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 <ahref="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:
97
103
98
-
The transaction needs to be executed to modify the state (by <ahref="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/ethereum-optimism/op-geth"target="_blank">op-geth</a>). Afterwards, <ahref="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.
More information about the batching process can be seen in the <ahref="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