Skip to content
Open
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
55 changes: 55 additions & 0 deletions use-cases/programmable-policy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@


| title | primary\_domain | secondary\_domain |
| :---- | :---- | :---- |
| Compliant privacy via programmable policy | Identity & Compliance | |

## 1\) Use case

Institutional users need privacy tooling to keep competitive information (trading strategies, portfolio composition, risk exposure, vendor payments, etc.) confidential when transacting onchain. But the same privacy mechanisms that protect legitimate institutional activity can also be leveraged by malicious actors, creating business, legal, and regulatory risks.

As a result, institutions using privacy-enhanced protocols and chains (e.g. private vaults, shielded transfer systems, privacy L2s), or issuing stablecoins and other RWA tokens that may circulate through such environments, need tools that allow them to manage business and regulatory risk. More specifically, they need tools enabling them to avoid transacting with or commingling funds with high-risk entities, even when privacy features are in use.

## 2\) Additional Business Context



Comment on lines +13 to +16
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fill Additional Business Context or add the template TODO guidance.

This section is currently empty. Add concise business context and explicitly note that confidential details belong in a linked context/ document.

As per coding guidelines, use cases must include the template’s “Additional Business Context” section with guidance to move business-sensitive details to context/.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@use-cases/programmable-policy.md` around lines 13 - 16, The "Additional
Business Context" section is empty — populate the “Additional Business Context”
header with a concise summary of the business goals, scope, stakeholders,
constraints, and intended outcomes for the programmable-policy use case, and
append a single-line template guidance/TODO that instructs authors to move any
confidential or sensitive details into a linked context/ document (e.g., "For
confidential details, see context/<doc-name>"). Update the section around the
"Additional Business Context" header so it contains both the brief business
context and the explicit redirect to context/ for sensitive information.

## 3\) Actors

Issuer, Investor, Payer/Payee, Compliance/Monitoring, Law enforcement, Regulator, Privacy protocol operator

## 4\) Problems

### Problem 1: Preventing commingling of funds with malicious actors when using privacy protocols

Institutions may use DeFi protocols with privacy enhancements (e.g. [private vaults](https://github.com/ethereum/iptf-map/blob/master/patterns/pattern-private-vaults.md)) to complete onchain investments, payments, and other financial operations without exposing their strategy or risk exposure. This can be done using encryption protocols on Ethereum mainnet or protocols on privacy L2s. However, privacy enhancements can make it harder for institutions to avoid commingling of funds with deposits from malicious actors, as is mandated by regulations and/or internal risk management requirements.

**Requirements:**

- Must allow protocol operators to prevent commingling of funds and deny deposits from malicious actors at the smart contract level while still preserving privacy

**Constraints:**

- Any solution must not compromise privacy or introduce significant latency or UX detractions for compliant users

## 5\) Recommended approaches

Operators of privacy protocols and privacy L2s can set programmable policies restricting high-risk or malicious actors from using their tools – those policies are then integrated and enforced at the smart contract level.

For example, a privacy project operator may decide to implement a policy restricting all addresses on the OFAC sanctions list and addresses with exposure to certain high-risk activity (e.g. terrorism financing, darknet market sales, etc.) from depositing funds to their project.

If the project in question is a privacy-enhanced application on Ethereum mainnet, the application team can integrate this policy into its smart contracts and automatically prevent restricted addresses from depositing funds. This provides more consistent compliance enforcement than the common framework of front-end compliance checks, which can be bypassed via direct contract calls. If the project is a privacy L2, the operator can integrate their programmable policy with the bridge contract, and prevent restricted addresses from moving funds to the chain at all.

In both cases, the application calls the policy platform, which returns a cryptographic attestation confirming whether or not the transaction adheres to the application team’s policy. If it does adhere, the transaction proceeds with the attestation attached, which allows the deposit to be executed. If the transaction doesn’t adhere to the policy, the address is unable to deposit funds to the protocol, thereby significantly reducing commingling risk for institutions using the protocol compliantly. Compliant users deposit funds unimpeded, and face no degradation of privacy guarantees.

Comment on lines +41 to +44
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion | 🟠 Major

Move implementation sequence details to an approach/pattern doc and keep this card higher-level.

This block is too implementation-specific for a use-case card. Keep the use case focused on problem, requirements, and acceptance criteria; link out for the step-by-step mechanism.

As per coding guidelines, use-case files should stay brief (single-page scope) and link to deeper approaches rather than duplicating detailed implementation.

🧰 Tools
🪛 LanguageTool

[style] ~43-~43: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’.
Context: ... a cryptographic attestation confirming whether or not the transaction adheres to the applicat...

(WHETHER)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@use-cases/programmable-policy.md` around lines 41 - 44, The paragraphs
describing the step-by-step implementation (the smart contract/bridge
integration and the cryptographic attestation flow) are too
implementation-specific for the use-case card; remove or condense those two
detailed paragraphs in programmable-policy.md into a brief high-level summary of
the mechanism and acceptance criteria, and replace them with a link to a new or
existing approach/pattern doc that contains the full sequence (e.g., detailed
steps for "integrate this policy into smart contracts and automatically prevent
restricted addresses" and the "policy platform returns a cryptographic
attestation" flow). Create the separate approach/pattern document to hold the
detailed integration sequence, include identifiers for the smart contract
integration and bridge/attestation steps, and ensure the use-case card stays one
page with problem, requirements, acceptance criteria, and a pointer to the
deep-dive doc.

## 6\) Open questions

- N/A
Comment on lines +45 to +47
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Replace N/A with actionable open questions linked to GitHub issues.

The template expects bullet-pointed open questions with issue links. If none exist yet, add at least one tracking issue and link it here.

As per coding guidelines, “Open Questions” should be bullet points with links to GH issues.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@use-cases/programmable-policy.md` around lines 45 - 47, Replace the
placeholder "N/A" under the "## 6) Open questions" section with one or more
bullet-pointed open questions each linking to a GitHub issue; if no issues exist
yet, create a tracking issue (e.g., "track programmable policy edge-cases" or
similar) and insert its link as the first bullet, then add any additional
specific questions (e.g., "How should conflicts between policy rules be
resolved?") with their issue links so the section follows the project's
guideline for actionable, linked open questions.


## 7\) Notes and links

- Relevant use cases where programmable policy can enhance compliance:
- [Private stablecoins](https://github.com/ethereum/iptf-map/blob/master/use-cases/private-stablecoins.md)
- [Private RWA Tokenization](https://github.com/ethereum/iptf-map/blob/master/patterns/pattern-private-vaults.md)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Fix the “Private RWA Tokenization” link target.

The label suggests a use-case/topic-specific document, but it points to patterns/pattern-private-vaults.md. Please update to the intended target (or rename the label) to avoid misleading navigation.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@use-cases/programmable-policy.md` at line 53, The markdown link labeled
"Private RWA Tokenization" currently points to
patterns/pattern-private-vaults.md; update the link in
use-cases/programmable-policy.md so the label and target match—either change the
target URL to the correct document for "Private RWA Tokenization" (e.g., the
appropriate patterns/pattern-... .md file) or rename the link label to "Private
Vaults" to reflect patterns/pattern-private-vaults.md; ensure the link text
"Private RWA Tokenization" and the target path
patterns/pattern-private-vaults.md are consistent.

- [Private Bonds](https://github.com/ethereum/iptf-map/blob/master/use-cases/private-bonds.md)
- Predicate programmable policy platform [docs](https://docs.predicate.io/v2/essentials/overview)
Loading
Loading