Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions deliveries/nullifier-prime-milestone_1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Milestone Delivery :mailbox:

**The delivery is according to the official [milestone delivery guidelines](https://github.com/w3f/Grants-Program/blob/master/docs/Support%20Docs/milestone-deliverables-guidelines.md).**

* **Application Document:** https://github.com/w3f/Grants-Program/blob/master/applications/np-compliant_and_programmable_privacy.md
* **Milestone Number:** 1

**Context**

Milestone 1 focuses on implementing core protocol-level data structures and transaction types to enable privacy primitives within an EVM-compatible Substrate chain. Concretely, we introduce Merkle trees for deposit commitments, define a new Shield transaction type and integrate these with a fork of the EVM execution engine (SputnikVM). We also provide a node template

Primary code branches for this milestone:

- Frontier fork (Substrate EVM integration): [NP-Eng/frontier (Add-shielding)](https://github.com/NP-Eng/frontier/tree/Add-shielding)
- EVM engine fork (SputnikVM): [NP-Eng/evm (v0.x)](https://github.com/NP-Eng/evm/tree/v0.x)

**Deliverables**

| Number | Deliverable | Link | Notes |
| ------------- | ------------- | ------------- | ------------- |
| 0a. | License | [Frontier — LICENSE](https://github.com/NP-Eng/frontier/blob/master/LICENSE-APACHE2) · [EVM — LICENSE](https://github.com/NP-Eng/evm/blob/v0.x/LICENSE) | |
| 0b. & 0c. | Documentation and testing guide | [Frontier — SHIELDING_POOL.md](https://github.com/NP-Eng/frontier/blob/Add-shielding/docs/SHIELDING_POOL.md), [Frontier — SHIELDING_INTEGRATION.md](https://github.com/NP-Eng/frontier/blob/Add-shielding/docs/SHIELDING_INTEGRATION.md) | |
| 0d. | Docker | [Dockerfile](https://github.com/NP-Eng/frontier/blob/Add-shielding/Dockerfile), [Docker instructions](https://github.com/NP-Eng/frontier/blob/Add-shielding/README-Docker.md)| |
| 1. | Merkle tree implementation | [Merkle trees backend](https://github.com/NP-Eng/evm/blob/Add-shielding/src/backend/merkle_tree.rs) | |
| 2. | Shield transaction type | [EVM](https://github.com/NP-Eng/evm/blob/Add-shielding/src/backend/mod.rs#L57) | |
| 3. | Block header modification | - | No change to the block header. The Merkle tree holding the shielding pool is stored in the state so it is represented in the block header as part of the state root hash |
| 4. | Modified EVM engine (SputnikVM) | [EVM — v0.x](https://github.com/NP-Eng/evm/tree/v0.x) | |
| 5. | Benchmarks | [EVM](https://github.com/rust-ethereum/evm/blob/414aecf69988ec320c4ae66c7c57b30dc0fab2f3/benches/loop.rs) | |
| 6. | Node template | - | No change to the node template. The "shielding" functionality follows the normal transaction templates |
| 7. | Tests | [Frontier — Shielding tests](https://github.com/NP-Eng/frontier/blob/Add-shielding/examples/test-shielding.js) | |