Skip to content
Merged
Show file tree
Hide file tree
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
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ Use `[repo]` for repository-wide changes (CI, templates, docs).
### [private-bond]
- **Added**: `custom-utxo` approach — EVM-based UTXO model with Noir ZK circuits
- **Added**: `privacy-l2` approach — Aztec L2 native privacy implementation
- **Added**: Shared `REQUIREMENTS.md` derived from iptf-map use case
- **Added**: Shared `REQUIREMENTS.md` derived from ethsystems/map use case

### [repo]
- **Added**: Project documentation (`CLAUDE.md`, `CONTRIBUTING.md`)
Expand Down
10 changes: 5 additions & 5 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Project context and guidelines for working in this repository.

## Project Overview

This repository contains proofs of concept for IPTF privacy primitives. The mission is to accelerate institutional Ethereum adoption by demonstrating how financial institutions can use Ethereum privately.
This repository contains proofs of concept for EthSystems privacy primitives. The mission is to accelerate institutional Ethereum adoption by demonstrating how financial institutions can use Ethereum privately.

## Target Audience

Expand Down Expand Up @@ -75,15 +75,15 @@ The shared `REQUIREMENTS.md` captures what needs to be achieved; each approach's

## Methodology

Each PoC starts from an [iptf-map use case](https://github.com/ethereum/iptf-map/tree/master/use-cases) and its corresponding [approach](https://github.com/ethereum/iptf-map/tree/master/approaches). The workflow:
Each PoC starts from an [ethsystems/map use case](https://github.com/ethsystems/map/tree/master/use-cases) and its corresponding [approach](https://github.com/ethsystems/map/tree/master/approaches). The workflow:

1. **Use Case (iptf-map):** Defines the business problem, actors, constraints, privacy needs
2. **Approach (iptf-map):** Recommends architecture, discusses trade-offs for different audiences
1. **Use Case (ethsystems/map):** Defines the business problem, actors, constraints, privacy needs
2. **Approach (ethsystems/map):** Recommends architecture, discusses trade-offs for different audiences
3. `REQUIREMENTS.md`: Translates use case + approach into concrete, actionable requirements for the PoC
4. `SPEC.md`: Designs the protocol that satisfies the requirements
5. **Implementation**: Code that demonstrates the spec

**REQUIREMENTS.md** is the bridge between iptf-map context and our technical spec. It extracts:
**REQUIREMENTS.md** is the bridge between ethsystems/map context and our technical spec. It extracts:

- Functional requirements by lifecycle phase (issuance, trading, redemption, etc.)
- Privacy requirements (what's confidential vs public, regulatory access)
Expand Down
18 changes: 9 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# IPTF PoCs
# EthSystems PoCs

Proof of concept implementations for [IPTF](https://iptf.ethereum.org).
Proof of concept implementations for [EthSystems](https://ethsystems.org).

> **Warning:** These are research prototypes, not production-ready code. Do not use in production without thorough security audits.

Expand Down Expand Up @@ -30,11 +30,11 @@ Each PoC is independent—own language and tooling. No shared dependencies betwe

| Name | Privacy Primitive | Approaches | Status | Writeup |
|------|-------------------|------------|--------|---------|
| [private-payment](./pocs/private-payment/) | Confidential stablecoin transfers | Shielded Pool (Noir), Plasma (Intmax2), Resilient Disbursement Rails | Complete | [Shielded Pool](https://iptf.ethereum.org/2026/02/19/building-private-transfers-on-ethereum/), [Plasma](https://iptf.ethereum.org/2026/02/26/private-stablecoins-with-plasma/) |
| [private-bond](./pocs/private-bond/) | Confidential bond transfers | Custom UTXO (Noir), Privacy L2 (Aztec), FHE (Zama) | Complete | [Part 1 — Custom UTXO](https://iptf.ethereum.org/2026/01/21/building-private-bonds-on-ethereum/), [Part 2 — Aztec](https://iptf.ethereum.org/2026/02/05/private-bonds-on-privacy-l2s/), [Part 3 — FHE](https://iptf.ethereum.org/2026/02/12/private-bonds-with-fhe/) |
| [private-trade-settlement](./pocs/private-trade-settlement/) | Confidential atomic DvP | TEE Swap | Complete | [Part 1](https://iptf.ethereum.org/2026/03/05/private-crosschain-atomic-swap-part-1/), [Part 2](https://iptf.ethereum.org/2026/03/18/private-crosschain-atomic-swap-part-2/) |
| [private-identity](./pocs/private-identity/) | Anonymous credentials | Resilient (vOPRF) | Complete | [Resilient Plural Identity](https://iptf.ethereum.org/2026/04/14/resilient-plural-identity/) |
| [diy-validium](./pocs/diy-validium/) | Confidential institutional payments | Validium (RISC Zero) | Complete | [DIY Validium](https://iptf.ethereum.org/2026/03/18/diy-validium/) |
| [private-payment](./pocs/private-payment/) | Confidential stablecoin transfers | Shielded Pool (Noir), Plasma (Intmax2), Resilient Disbursement Rails | Complete | [Shielded Pool](https://ethsystems.org/blog/building-private-transfers-on-ethereum-with-shielded-pools/), [Plasma](https://ethsystems.org/blog/building-private-transfers-on-ethereum-with-plasma/) |
| [private-bond](./pocs/private-bond/) | Confidential bond transfers | Custom UTXO (Noir), Privacy L2 (Aztec), FHE (Zama) | Complete | [Part 1 — Custom UTXO](https://ethsystems.org/blog/building-private-bonds-on-ethereum/), [Part 2 — Aztec](https://ethsystems.org/blog/building-private-bonds-on-ethereum-part-2/), [Part 3 — FHE](https://ethsystems.org/blog/building-private-bonds-on-ethereum-part-3/) |
| [private-trade-settlement](./pocs/private-trade-settlement/) | Confidential atomic DvP | TEE Swap | Complete | [Part 1](https://ethsystems.org/blog/private-crosschain-atomic-swaps-part-1-of-2/), [Part 2](https://ethsystems.org/blog/private-crosschain-atomic-swaps-part-2-of-2/) |
| [private-identity](./pocs/private-identity/) | Anonymous credentials | Resilient (vOPRF) | Complete | [Resilient Plural Identity](https://ethsystems.org/blog/resilient-plural-identity/) |
| [diy-validium](./pocs/diy-validium/) | Confidential institutional payments | Validium (RISC Zero) | Complete | [DIY Validium](https://ethsystems.org/blog/diy-validium-private-logic-on-public-rails/) |

## Libraries

Expand All @@ -54,5 +54,5 @@ Third-party dependencies retain their own licenses.

## See Also

- [iptf.ethereum.org](https://iptf.ethereum.org/) — Writeups and documentation
- [iptf-map](https://github.com/ethereum/iptf-map) — Mapping of privacy primitives
- [ethsystems.org](https://ethsystems.org/) — Writeups and documentation
- [ethsystems/map](https://github.com/ethsystems/map) — Mapping of privacy primitives
4 changes: 2 additions & 2 deletions pocs/_template/REQUIREMENTS.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
title: "{{poc_name}} Requirements"
use_cases:
- "[link to iptf-map use case]"
approach: "[link to iptf-map approach]"
- "[link to ethsystems/map use case]"
approach: "[link to ethsystems/map approach]"
---

# {{poc_name}} Requirements
Expand Down
4 changes: 2 additions & 2 deletions pocs/_template/SPEC.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ status: Draft
version: 0.1.0
authors: []
created: YYYY-MM-DD
iptf_use_case: "[link to iptf-map use case]"
iptf_approach: "[link to iptf-map approach]"
ethsystems_use_case: "[link to ethsystems/map use case]"
ethsystems_approach: "[link to ethsystems/map approach]"
---

# [Protocol Name]: Protocol Specification
Expand Down
4 changes: 2 additions & 2 deletions pocs/civic-participation/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,5 @@ See each approach's README for specific limitations:

## References

- [Resilient Civic Participation Use Case (iptf-map)](https://github.com/ethereum/iptf-map/blob/master/use-cases/resilient-civic-participation.md)
- [Civic Participation Approach (iptf-map)](https://github.com/ethereum/iptf-map/blob/master/approaches/approach-civic-participation.md)
- [Resilient Civic Participation Use Case (ethsystems/map)](https://github.com/ethsystems/map/blob/master/use-cases/resilient-civic-participation.md)
- [Civic Participation Approach (ethsystems/map)](https://github.com/ethsystems/map/blob/master/approaches/approach-civic-participation.md)
4 changes: 2 additions & 2 deletions pocs/civic-participation/REQUIREMENTS.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
title: "Civic Participation Requirements"
use_cases:
- "https://github.com/ethereum/iptf-map/blob/master/use-cases/resilient-civic-participation.md"
approach: "https://github.com/ethereum/iptf-map/blob/master/approaches/approach-civic-participation.md"
- "https://github.com/ethsystems/map/blob/master/use-cases/resilient-civic-participation.md"
approach: "https://github.com/ethsystems/map/blob/master/approaches/approach-civic-participation.md"
---

# Civic Participation Requirements
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,6 @@ Out of scope:
## References

- [SPEC.md](./SPEC.md): full protocol specification.
- [Resilient Civic Participation use case](https://github.com/ethereum/iptf-map/blob/master/use-cases/resilient-civic-participation.md) (iptf-map).
- [Civic Participation approach](https://github.com/ethereum/iptf-map/blob/master/approaches/approach-civic-participation.md) (iptf-map).
- [Resilient Civic Participation use case](https://github.com/ethsystems/map/blob/master/use-cases/resilient-civic-participation.md) (ethsystems/map).
- [Civic Participation approach](https://github.com/ethsystems/map/blob/master/approaches/approach-civic-participation.md) (ethsystems/map).
- [ResilientIdentity SPEC](../../private-identity/resilient-private-identity/SPEC.md): the credential layer this PoC composes with.
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ status: Draft
version: 0.1.0
authors: ["Aaryamann"]
created: 2026-05-18
iptf_use_case: "https://github.com/ethereum/iptf-map/blob/master/use-cases/resilient-civic-participation.md"
iptf_approach: "https://github.com/ethereum/iptf-map/blob/master/approaches/approach-civic-participation.md"
ethsystems_use_case: "https://github.com/ethsystems/map/blob/master/use-cases/resilient-civic-participation.md"
ethsystems_approach: "https://github.com/ethsystems/map/blob/master/approaches/approach-civic-participation.md"
---

# Resilient Civic Participation: Protocol Specification
Expand Down
4 changes: 2 additions & 2 deletions pocs/diy-validium/REQUIREMENTS.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
title: "DIY Validium Requirements"
use_cases:
- "https://github.com/ethereum/iptf-map/blob/master/use-cases/private-payments.md"
approach: "https://github.com/ethereum/iptf-map/blob/master/approaches/approach-private-payments.md"
- "https://github.com/ethsystems/map/blob/master/use-cases/private-payments.md"
approach: "https://github.com/ethsystems/map/blob/master/approaches/approach-private-payments.md"
---

# DIY Validium Requirements
Expand Down
4 changes: 2 additions & 2 deletions pocs/diy-validium/SPEC.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ status: Draft
version: 0.1.0
authors: ["Oskar"]
created: 2026-01-29
iptf_use_case: "[Private institutional payments](https://github.com/ethereum/iptf-map/tree/master/use-cases)"
iptf_approach: "[Validium with ZK proofs](https://github.com/ethereum/iptf-map/tree/master/approaches)"
ethsystems_use_case: "[Private institutional payments](https://github.com/ethsystems/map/tree/master/use-cases)"
ethsystems_approach: "[Validium with ZK proofs](https://github.com/ethsystems/map/tree/master/approaches)"
---

# DIY Validium: Protocol Specification
Expand Down
4 changes: 2 additions & 2 deletions pocs/private-bond/REQUIREMENTS.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
---
title: "Private Bond Requirements"
use_cases:
- "https://github.com/ethereum/iptf-map/blob/master/use-cases/use-case-private-bonds.md"
approach: "https://github.com/ethereum/iptf-map/blob/master/approaches/approach-private-bonds.md"
- "https://github.com/ethsystems/map/blob/master/use-cases/use-case-private-bonds.md"
approach: "https://github.com/ethsystems/map/blob/master/approaches/approach-private-bonds.md"
---

# Confidential Bond Protocol Requirements
Expand Down
6 changes: 3 additions & 3 deletions pocs/private-bond/custom-utxo/SPEC.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ status: Complete
version: 1.0.0
authors: ["Yanis"]
created: 2026-01-16
iptf_use_case: "https://github.com/ethereum/iptf-map/blob/master/use-cases/use-case-private-bonds.md"
iptf_approach: "https://github.com/ethereum/iptf-map/blob/master/approaches/approach-private-bonds.md"
ethsystems_use_case: "https://github.com/ethsystems/map/blob/master/use-cases/use-case-private-bonds.md"
ethsystems_approach: "https://github.com/ethsystems/map/blob/master/approaches/approach-private-bonds.md"
---

# Private Institutional Bond: Protocol Specification
Expand Down Expand Up @@ -37,7 +37,7 @@ The Shielded Identity enables proof generation and memo encryption without revea
Each bond contract includes a public `bondId` (bytes32) for reconciliation with off-chain systems. This identifier can be:

- **ISIN/CUSIP hash**: `keccak256(abi.encodePacked("US0378331005"))` for standard securities identifiers
- **BDT hash**: `keccak256(abi.encode(bdtData))` where `bdtData` follows the [ICMA Bond Data Taxonomy](https://github.com/ethereum/iptf-map/blob/master/patterns/pattern-icma-bdt-data-model.md)
- **BDT hash**: `keccak256(abi.encode(bdtData))` where `bdtData` follows the [ICMA Bond Data Taxonomy](https://github.com/ethsystems/map/blob/master/patterns/pattern-icma-bdt-data-model.md)

The `bondId` is public and immutable, enabling external systems (custodians, CSDs, regulators) to match on-chain contracts to off-chain bond records.

Expand Down
6 changes: 3 additions & 3 deletions pocs/private-bond/fhe/SPEC.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ status: Draft
version: 0.1.0
authors: ["Yanis"]
created: 2026-01-28
iptf_use_case: "https://github.com/ethereum/iptf-map/blob/master/use-cases/use-case-private-bonds.md"
iptf_approach: "https://github.com/ethereum/iptf-map/blob/master/approaches/approach-private-bonds.md"
ethsystems_use_case: "https://github.com/ethsystems/map/blob/master/use-cases/use-case-private-bonds.md"
ethsystems_approach: "https://github.com/ethsystems/map/blob/master/approaches/approach-private-bonds.md"
---

# Private Institutional Bond on Zama fhEVM
Expand Down Expand Up @@ -51,7 +51,7 @@ In fhEVM, encrypted values (`euint64`, `ebool`) are useless without decryption r
Each bond contract includes a public `bondId` (bytes32) for reconciliation with off-chain systems. This identifier can be:

- **ISIN/CUSIP hash**: `keccak256(abi.encodePacked("US0378331005"))` for standard securities identifiers
- **BDT hash**: `keccak256(abi.encode(bdtData))` where `bdtData` follows the [ICMA Bond Data Taxonomy](https://github.com/ethereum/iptf-map/blob/master/patterns/pattern-icma-bdt-data-model.md)
- **BDT hash**: `keccak256(abi.encode(bdtData))` where `bdtData` follows the [ICMA Bond Data Taxonomy](https://github.com/ethsystems/map/blob/master/patterns/pattern-icma-bdt-data-model.md)

The `bondId` is public and immutable, enabling external systems (custodians, CSDs, regulators) to match on-chain contracts to off-chain bond records.

Expand Down
4 changes: 2 additions & 2 deletions pocs/private-bond/privacy-l2/SPEC.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ status: Complete
version: 1.0.0
authors: ["Yanis"]
created: 2026-01-23
iptf_use_case: "https://github.com/ethereum/iptf-map/blob/master/use-cases/use-case-private-bonds.md"
iptf_approach: "https://github.com/ethereum/iptf-map/blob/master/approaches/approach-private-bonds.md"
ethsystems_use_case: "https://github.com/ethsystems/map/blob/master/use-cases/use-case-private-bonds.md"
ethsystems_approach: "https://github.com/ethsystems/map/blob/master/approaches/approach-private-bonds.md"
---

# Private Institutional Bond on Aztec L2
Expand Down
6 changes: 3 additions & 3 deletions pocs/private-identity/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,6 @@ See each approach's README for specific limitations:

## References

- [Private Identity Use Case (iptf-map)](https://github.com/ethereum/iptf-map/blob/master/use-cases/private-identity.md)
- [Resilient Identity Continuity Use Case (iptf-map)](https://github.com/ethereum/iptf-map/blob/master/use-cases/resilient-identity-continuity.md)
- [Private Identity Approach (iptf-map)](https://github.com/ethereum/iptf-map/blob/master/approaches/approach-private-identity.md)
- [Private Identity Use Case (ethsystems/map)](https://github.com/ethsystems/map/blob/master/use-cases/private-identity.md)
- [Resilient Identity Continuity Use Case (ethsystems/map)](https://github.com/ethsystems/map/blob/master/use-cases/resilient-identity-continuity.md)
- [Private Identity Approach (ethsystems/map)](https://github.com/ethsystems/map/blob/master/approaches/approach-private-identity.md)
8 changes: 4 additions & 4 deletions pocs/private-identity/REQUIREMENTS.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
---
title: "Private Identity Requirements"
use_cases:
- "https://github.com/ethereum/iptf-map/blob/master/use-cases/private-identity.md"
- "https://github.com/ethereum/iptf-map/blob/master/use-cases/resilient-identity-continuity.md"
approach: "https://github.com/ethereum/iptf-map/blob/master/approaches/approach-private-identity.md"
- "https://github.com/ethsystems/map/blob/master/use-cases/private-identity.md"
- "https://github.com/ethsystems/map/blob/master/use-cases/resilient-identity-continuity.md"
approach: "https://github.com/ethsystems/map/blob/master/approaches/approach-private-identity.md"
---

# Private Identity Requirements
Expand All @@ -12,7 +12,7 @@ approach: "https://github.com/ethereum/iptf-map/blob/master/approaches/approach-

On-chain access control currently requires revealing identity. Addresses are linked to real-world entities, and every authorization check produces a public, correlatable record. Institutions need to gate access to on-chain resources based on verified properties of the caller without exposing who the caller is or what credentials they hold.

> From [Private Identity](https://github.com/ethereum/iptf-map/blob/master/use-cases/private-identity.md): "Current methods expose addresses and create linkability. The framework requires hiding prover identities and inter-verifier links while allowing auditor access and enabling replay attack resilience."
> From [Private Identity](https://github.com/ethsystems/map/blob/master/use-cases/private-identity.md): "Current methods expose addresses and create linkability. The framework requires hiding prover identities and inter-verifier links while allowing auditor access and enabling replay attack resilience."

## 2. Functional Requirements (MUST)

Expand Down
4 changes: 2 additions & 2 deletions pocs/private-identity/resilient-private-identity/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -163,8 +163,8 @@ sequenceDiagram

- [Resilient Private Identity SPEC](./SPEC.md)
- [Private Identity Requirements](../REQUIREMENTS.md)
- [Private Identity Use Case (iptf-map)](https://github.com/ethereum/iptf-map/blob/master/use-cases/private-identity.md)
- [Private Identity Approach (iptf-map)](https://github.com/ethereum/iptf-map/blob/master/approaches/approach-private-identity.md)
- [Private Identity Use Case (ethsystems/map)](https://github.com/ethsystems/map/blob/master/use-cases/private-identity.md)
- [Private Identity Approach (ethsystems/map)](https://github.com/ethsystems/map/blob/master/approaches/approach-private-identity.md)
- [Semaphore Protocol](https://semaphore.pse.dev/)
- [RFC 9497: Oblivious Pseudorandom Functions](https://www.rfc-editor.org/rfc/rfc9497)
- [zk-creds (Rosenberg et al., 2023)](https://eprint.iacr.org/2022/878)
6 changes: 3 additions & 3 deletions pocs/private-identity/resilient-private-identity/SPEC.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ version: 0.4.0
authors: []
created: 2026-03-31
updated: 2026-04-04
iptf_use_case: "https://github.com/ethereum/iptf-map/blob/master/use-cases/private-identity.md"
iptf_approach: "https://github.com/ethereum/iptf-map/blob/master/approaches/approach-private-identity.md"
ethsystems_use_case: "https://github.com/ethsystems/map/blob/master/use-cases/private-identity.md"
ethsystems_approach: "https://github.com/ethsystems/map/blob/master/approaches/approach-private-identity.md"
---

# Resilient Private Identity: Protocol Specification
Expand Down Expand Up @@ -762,4 +762,4 @@ Verification keys are embedded in the generated Solidity contracts and are immut
- [zk-promises: Anonymous Moderation, Reputation, and Blocking from Anonymous Credentials with Callbacks (Shih et al., 2025)](https://eprint.iacr.org/2024/1260)
- [World ID](https://worldcoin.org/world-id)
- [PLUME: ECDSA Nullifiers (Aayush Gupta, ERC-7524)](https://aayushg.com/thesis.pdf)
- [EF IPTF Map](https://github.com/ethereum/iptf-map)
- [EthSystems Map](https://github.com/ethsystems/map)
4 changes: 2 additions & 2 deletions pocs/private-payment/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,6 @@ See each approach's README for specific limitations:

## References

- [IPTF-MAP: Private Payments Use Case](https://github.com/ethereum/iptf-map/blob/master/use-cases/private-payments.md)
- [IPTF-MAP: Private Payments Approach](https://github.com/ethereum/iptf-map/blob/master/approaches/approach-private-payments.md)
- [EthSystems Map: Private Payments Use Case](https://github.com/ethsystems/map/blob/master/use-cases/private-payments.md)
- [EthSystems Map: Private Payments Approach](https://github.com/ethsystems/map/blob/master/approaches/approach-private-payments.md)
- [Intmax2: A ZK-rollup with Minimal Onchain Data and Computation Costs](https://eprint.iacr.org/2025/021)
Loading