Skip to content

zama-ai/confidential-agentic-payment-stack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

232 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

x402fhe

Confidential agentic payments stack for AI agents.

x402fhe gives agents the primitives they need to participate in a real economy:

  • pay websites and APIs through FHEx402
  • own an on-chain identity
  • pay humans and other agents through encrypted escrow and settlement
  • build reputation from paid interactions
  • operate with private amounts using Zama fhEVM

The repo is live on Sepolia today with Zama's canonical wrapper stack and includes the full operator surface: core SDK, Express paywall, OpenClaw skill, frontend UI, facilitator, DFNS MPC, direct Ledger, supervised Ledger bridge, and live demo flows.

Why This Repo Is Interesting

  • FHEx402 is only one layer: the repo is not just an API payment client, it is a broader agentic commerce stack.
  • Agents can do real economic work: identity, confidential balances, website payments, escrow, settlement, and proof-linked reputation all live in one system.
  • Private payments, standard shape: the HTTP protocol still looks like x402, but the transfer amount stays encrypted on-chain.
  • Real deployment, not just mocks: the repo ships local mock-FHE tests and a separate live Sepolia verification story.
  • Multiple operator surfaces: core SDK, Express paywall, OpenClaw skill, browser UI, and supervised signing paths.

Current Status

Layer Status Detail
Smart contracts Deployed on Sepolia 4 contracts (verifier, escrow, identity, reputation) wired to Zama's canonical Sepolia token stack. Contract suite covers the local mock path; docs/SEPOLIA-E2E.md tracks live-network coverage separately.
TypeScript SDK Usable now fheFetch (auto-402 client), fhePaywall (Express middleware), FhePaymentHandler, SilentFailureGuard, facilitator client, and real on-chain payment execution through FhePayingClient.
OpenClaw skill Usable now 16 commands including delegation (grant-view, revoke-view, view-as), balance --of, and 2 demo orchestrators (research-and-visualize, review-and-rate). Command surface is documented in packages/openclaw-skill/README.md.
FHE session Encrypt + decrypt working ZamaFheSession wraps @zama-fhe/sdk v2.3.0-alpha.2 (vendored). Encryption is local TFHE. CLI decryption (balance --decrypt) verified on live Sepolia via Zama KMS. Falls back to stub mode when the SDK is unavailable.
Wallets Multiple signer modes Local private keys and DFNS MPC work across the core/runtime stack. Direct browser-attended Ledger support is available through @x402fhe/core/browser + @x402fhe/ui/ledger, and supervised OpenClaw Ledger signing is available through the localhost bridge apps.
UI components Native React SDK path live @x402fhe/ui composes QueryClientProvider + ZamaProvider through X402FheProvider, useEncryptedBalance() is backed by native useConfidentialBalance(), and the reference frontend supports browser wallets plus Ledger in attended mode.
Payment client Real on-chain TXs FhePayingClient submits confidentialTransferAndCall on-chain. Budget tracking + receipts. A standalone Sepolia HTTP E2E script exercises fheFetch -> 402 -> pay -> fhePaywall -> facilitator -> 200.
Live demo Dry-run verified Three Telegram demos: (1) "Wallet Basics" — wrap + confidential transfer + balance (no servers needed), (2) "Private API Shopping" — 3 chained fheFetch payments, (3) "Agent Identity + Paid Work + Feedback" — paid code review + proof-linked reputation. See docs/DEMO.md.
Mainnet Architecture-ready, not deployed Contracts compile for mainnet and the docs cover the intended shape, but the public deployment and operator story is Sepolia-first today.

Node.js >= 22 required. The fast local suites are healthy, the live Sepolia path is documented separately in docs/SEPOLIA-E2E.md, and standards alignment is tracked in docs/ERC-COMPLIANCE.md.


What Agents Can Do With x402FHE

With this stack, an agent can:

  1. Pay a website or API through FHEx402 using confidential on-chain payments.
  2. Own an identity through the on-chain agent identity registry.
  3. Fund a job and pay a human or another agent through encrypted escrow and settlement.
  4. Collect reputation from paid work through proof-linked feedback.
  5. Choose the right signing model using local keys, DFNS MPC, browser wallets, direct Ledger, or supervised Ledger approvals.

The Agentic Payments Stack

x402fhe is best understood as five layers working together:

  • Payment rail: FHEx402 for confidential website and API payments.
  • Wallet layer: user keys, DFNS MPC, browser wallets, Ledger, and Ledger bridge.
  • Identity layer: portable on-chain agent identity.
  • Commerce layer: encrypted escrow, job funding, and settlement.
  • Reputation layer: proof-linked feedback for paid interactions.

Get To First Success

If you want the quickest honest "this works" path as an agent operator:

git clone [email protected]:bea7892046/fhex402.git && cd fhex402
pnpm install

export WALLET_MODE=user
export USER_PRIVATE_KEY=0x...
export RPC_URL=https://ethereum-sepolia-rpc.publicnode.com
export CHAIN=sepolia

pnpm exec tsx packages/openclaw-skill/scripts/info.ts

Success looks like:

  • JSON output
  • walletType: "user"
  • chainId: 11155111
  • Sepolia contract addresses for cUSDC, verifier, identity, reputation, and escrow

If you are evaluating the repo itself rather than using it yet:

pnpm exec tsc --noEmit
pnpm --filter @x402fhe/core test
pnpm --filter @x402fhe/sdk test

Choose Your Path

I want to... Use this Wallet mode First command Success signal Read next
Let my agent pay websites and APIs @x402fhe/sdk + @x402fhe/core user or dfns run the OpenClaw info smoke test, then adapt examples/basic-payment/index.ts first fheFetch can pay a 402-gated endpoint packages/sdk, examples/basic-payment/index.ts
Monetize my API for agents fhePaywall + facilitator server wallet of your choice wire examples/express-server/index.ts to your route server returns 402 with x402FHE payment requirements packages/sdk/src/fhePaywall.ts, apps/facilitator
Give my agent an identity and reputation @x402fhe/openclaw-skill identity + feedback commands user, dfns, or ledger-bridge pnpm exec tsx packages/openclaw-skill/scripts/register-agent.ts --uri https://agent.example/meta.json agent NFT is minted and can later receive proof-linked feedback packages/openclaw-skill/README.md, docs/ARCHITECTURE.md
Let agents pay humans or other agents escrow + commerce contracts through the OpenClaw skill user, dfns, or ledger-bridge pnpm exec tsx packages/openclaw-skill/scripts/create-job.ts --provider 0xProvider... --evaluator 0xEvaluator... --expiry 24 --description \"Build API\" escrow job is created and can then be funded with fund-job.ts packages/openclaw-skill/README.md, docs/ARCHITECTURE.md
Run the full stack inside OpenClaw @x402fhe/openclaw-skill user, dfns, or ledger-bridge pnpm exec tsx packages/openclaw-skill/scripts/info.ts chain + wallet + contract JSON prints cleanly packages/openclaw-skill/README.md
Supervise an agent with Ledger localhost Ledger bridge ledger-bridge start bridge daemon + browser UI, then run info request appears locally and is approved on-device docs/LEDGER-BRIDGE.md
Explore the browser app and UI kit @x402fhe/ui + apps/frontend injected browser wallet or direct Ledger pnpm --filter @x402fhe/core build && pnpm --filter @x402fhe/ui build && pnpm --filter @x402fhe/frontend exec next dev -p 3005 dashboard reaches Provider ready and shows wallet / encrypted-balance shell docs/UI-SURFACES.md, apps/frontend, packages/ui
Rehearse the live demo story demo stack + OpenClaw orchestrators usually user or ledger-bridge follow the demo runbook each stage has a clear presenter success signal docs/DEMO.md, docs/DEMO-CHECKLIST.md

Wallet Modes

Not every signer mode is meant for every runtime:

Wallet mode Best fit Human needed at signing time? Supported here
User private key local development, scripts, simple agents No core, sdk, skill, facilitator
DFNS MPC unattended agent/runtime flows No core, sdk, skill, facilitator
Browser wallet reference frontend and browser UX Usually yes frontend + UI
Ledger attended browser UX Yes @x402fhe/core/browser + @x402fhe/ui/ledger
Ledger bridge supervised local agent approvals Yes OpenClaw skill + apps/ledger-bridge + apps/ledger-bridge-ui

Simple Decision Rule

  • Use USER_PRIVATE_KEY for local development and quick scripts.
  • Use DFNS MPC for unattended agent runtimes.
  • Use direct Ledger when the human is using the browser UI directly.
  • Use WALLET_MODE=ledger-bridge when OpenClaw should stay headless but a human still approves every signature locally.

Short mental model:

  • DFNS = unattended production signer
  • User private key = simplest local dev signer
  • Browser wallet = injected wallet like MetaMask or Rabby in the reference frontend
  • Direct Ledger = human uses the frontend directly
  • Ledger bridge = agent proposes, human approves, Ledger signs

Important frontend note:

  • The current reference frontend does not use Privy yet.
  • Connect browser wallet means an injected EIP-1193 wallet exposed as window.ethereum.
  • If you usually onboard wallets with Privy, treat apps/frontend as a lower-level reference shell, not the final production auth UX.

Three Copy-Paste Wallet Setups

1. Local development with a raw private key

export WALLET_MODE=user
export USER_PRIVATE_KEY=0x...
export RPC_URL=https://ethereum-sepolia-rpc.publicnode.com
export CHAIN=sepolia
pnpm exec tsx packages/openclaw-skill/scripts/info.ts

2. Unattended agent with DFNS MPC

export WALLET_MODE=dfns
export DFNS_WALLET_ID=...
export DFNS_AUTH_TOKEN=...
export DFNS_CREDENTIAL_ID=...
export DFNS_CREDENTIAL_PRIVATE_KEY='-----BEGIN PRIVATE KEY-----\n...'
export RPC_URL=https://ethereum-sepolia-rpc.publicnode.com
export CHAIN=sepolia
pnpm exec tsx packages/openclaw-skill/scripts/info.ts

3. Supervised OpenClaw with Ledger approvals

export WALLET_MODE=ledger-bridge
export LEDGER_BRIDGE_TOKEN=replace-with-a-long-random-secret
export LEDGER_BRIDGE_URL=http://127.0.0.1:4555
export RPC_URL=https://ethereum-sepolia-rpc.publicnode.com
export CHAIN=sepolia

LEDGER_BRIDGE_TOKEN="$LEDGER_BRIDGE_TOKEN" pnpm --filter @x402fhe/ledger-bridge dev
VITE_LEDGER_BRIDGE_TOKEN="$LEDGER_BRIDGE_TOKEN" pnpm --filter @x402fhe/ledger-bridge-ui dev

Then open the browser UI, connect the Ledger, verify the address on-device, and only then run the OpenClaw command you want to supervise.

How x402FHE Works At A Glance

  1. A paid API returns HTTP 402 Payment Required.
  2. The client encrypts the amount locally with the Zama SDK.
  3. The client sends one on-chain confidentialTransferAndCall(...) transaction.
  4. The verifier records the nonce and relays the encrypted funds to the seller.
  5. The client retries with an X-Payment header.
  6. The facilitator verifies the on-chain receipt and the server returns 200.

In other words: standard x402 request/response shape, but confidential on-chain payment execution.

For the full contract walkthrough, privacy boundary, and protocol detail, use:

What You Actually Build With

Surface What it does
@x402fhe/core wallet abstractions, Zama session, payment client, signer adapters
@x402fhe/sdk fheFetch, fhePaywall, facilitator client, payment handling
@x402fhe/openclaw-skill 16 OpenClaw-friendly commands for payments, escrow, identity, reputation, delegation, and demos
@x402fhe/ui React provider, hooks, components, and direct browser Ledger entrypoint
apps/facilitator payment verification service
apps/ledger-bridge + apps/ledger-bridge-ui supervised Ledger approval path for OpenClaw

Typical Flows

Agent client

Start with examples/basic-payment/index.ts:

import { JsonRpcProvider } from 'ethers';
import { createUserWallet, ZamaFheSession } from '@x402fhe/core';
import { createFheFetch } from '@x402fhe/sdk';

const provider = new JsonRpcProvider(process.env.RPC_URL!);
const wallet = createUserWallet(process.env.USER_PRIVATE_KEY!, provider);
const session = await ZamaFheSession.create({
  rpcUrl: process.env.RPC_URL!,
  chain: 'sepolia',
});

const fheFetch = createFheFetch({
  wallet,
  session,
  verifierAddress: '0xD46E80E1d37116B44c7Bfd845A110FCbB93d3E9F',
  tokenAddress: '0x7c5BF43B851c1dff1a4feE8dB225b87f2C223639',
  maxPayment: 100_000n,
});

Note: this example uses USER_PRIVATE_KEY because it is a runtime signer example. The root-level PRIVATE_KEY env is mostly for deployment and Hardhat tasks.

API server

Start with examples/express-server/index.ts:

import express from 'express';
import { fhePaywall } from '@x402fhe/sdk';

const app = express();

app.post('/api/chat', fhePaywall({
  price: 10_000n,
  recipientAddress: SERVER_ADDRESS,
  tokenAddress: CUSDC_ADDRESS,
  verifierAddress: VERIFIER_ADDRESS,
  facilitatorUrl: FACILITATOR_URL,
  chainId: 11155111,
}), (req, res) => {
  res.json({ message: 'Paid and verified!' });
});

OpenClaw skill

Start with packages/openclaw-skill/README.md:

skill.run("wrap", { amount: "5.00" })
skill.run("pay", { to: "0xServer...", amount: "0.01" })
skill.run("register-agent", { uri: "https://agent.example/meta.json" })
skill.run("grant-view", { delegate: "0xAgentB..." })

Live Sepolia Addresses

Zama Canonical (Sepolia Testnet)

Contract Address
cUSDCMock 0x7c5BF43B851c1dff1a4feE8dB225b87f2C223639
TokenWrappersRegistry 0x2f0750Bbb0A246059d80e94c454586a7F27a128e

x402fhe Contracts (Sepolia Testnet)

Contract Address
X402PaymentVerifier 0xD46E80E1d37116B44c7Bfd845A110FCbB93d3E9F
AgenticCommerceProtocol 0xECD7a2382A5F0e3b6A7b76536e4CAE11215Cc695
AgentIdentityRegistry 0x36666464daa16442Fc1d901acfC9419f11407741
AgentReputationRegistry 0x1649d762Ee62f194D92B93510b8f10a501cE9fD5

Mainnet Reference Addresses

This repo is Sepolia-first today. If you are checking the intended production token layer, these are the canonical Zama mainnet references:

Contract Address
cUSDC 0xe978F22157048E5DB8E5d07971376e86671672B2
cUSDT 0xAe0207C757Aa2B4019AD96edD0092ddc63EF0c50
TokenWrappersRegistry 0xeb5015fF021DB115aCe010f23F55C2591059bBA0
USDC 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48

The x402fhe application contracts are not deployed on mainnet yet:

Contract Address
X402PaymentVerifier Pending mainnet deployment
AgenticCommerceProtocol Pending mainnet deployment
AgentIdentityRegistry Pending mainnet deployment
AgentReputationRegistry Pending mainnet deployment

Testing

Repository verification surface:

  • fast local contract tests under Hardhat
  • package tests across core, sdk, ui, facilitator, and OpenClaw skill
  • dedicated daemon/UI tests for the supervised Ledger bridge apps
  • a dated live-network verification snapshot in docs/SEPOLIA-E2E.md
  • repo-wide type-checking via pnpm exec tsc --noEmit
# All contract tests
npx hardhat test

# Package tests
pnpm --filter @x402fhe/core test
pnpm --filter @x402fhe/sdk test
pnpm --filter @x402fhe/openclaw-skill test
pnpm --filter @x402fhe/ui test
pnpm --filter @x402fhe/facilitator test
pnpm --filter @x402fhe/ledger-bridge test
pnpm --filter @x402fhe/ledger-bridge-ui test

# Type-check the full monorepo
pnpm exec tsc --noEmit

# Sepolia integration (requires funded accounts + real FHE coprocessor)
# Prerequisites: PRIVATE_KEY, SEPOLIA_RPC_URL, SERVER_ADDRESS in .env
RUN_SEPOLIA_TESTS=1 npx hardhat test scripts/sepolia-tests/*.sepolia.ts --network sepolia

# Individual Sepolia test suites:
RUN_SEPOLIA_TESTS=1 npx hardhat test scripts/sepolia-tests/wrap-transfer.sepolia.ts --network sepolia
RUN_SEPOLIA_TESTS=1 npx hardhat test scripts/sepolia-tests/verifier-relay.sepolia.ts --network sepolia
RUN_SEPOLIA_TESTS=1 npx hardhat test scripts/sepolia-tests/escrow-lifecycle.sepolia.ts --network sepolia

# Full HTTP x402 flow (facilitator + seller + buyer — real on-chain FHE):
RPC_URL=$SEPOLIA_RPC_URL NODE_ENV=test pnpm exec tsx scripts/test-http-e2e.ts

Notes:

  • The package suites are fast and deterministic.
  • The live Sepolia flows require funded wallets and a working public Zama path.
  • The default facilitator test suite is socket-free and should run in restricted environments.
  • The Sepolia HTTP E2E flow still launches local facilitator/seller servers; in restricted sandboxes that specific flow may fail with listen EPERM even when the code is otherwise correct.

Deployment

Sepolia Testnet (recommended first step)

# 1. Create .env with your funded Sepolia account
cat > .env << 'EOF'
PRIVATE_KEY=0xYOUR_SEPOLIA_PRIVATE_KEY
SEPOLIA_RPC_URL=https://eth-sepolia.g.alchemy.com/v2/YOUR_KEY
ETHERSCAN_API_KEY=YOUR_ETHERSCAN_KEY
EOF

# 2. Deploy (uses Zama's canonical cUSDCMock at 0x7c5B...3639)
pnpm deploy:sepolia

# 3. The script prints all deployed addresses — update .env and types.ts

Uses Zama's canonical cUSDCMock (0x7c5BF43B851c1dff1a4feE8dB225b87f2C223639) on Sepolia. The cUSDCMock wraps Zama's mock USDC (0x9b5Cd13b8eFbB58Dc25A05CF411D8056058aDFfF) — NOT Circle USDC. The mock USDC has a public mint() function for testing:

# In Hardhat console (--network sepolia):
const mockUsdc = new ethers.Contract('0x9b5Cd13b8eFbB58Dc25A05CF411D8056058aDFfF',
  ['function mint(address,uint256)', 'function approve(address,uint256) returns (bool)'], signer);
await mockUsdc.mint(yourAddress, 10_000_000);              // mint 10 mock USDC
await mockUsdc.approve('0x7c5BF43B851c1dff1a4feE8dB225b87f2C223639', 10_000_000);
const cUSDC = new ethers.Contract('0x7c5BF43B851c1dff1a4feE8dB225b87f2C223639',
  ['function wrap(address,uint256)'], signer);
await cUSDC.wrap(yourAddress, 10_000_000);                 // wrap into cUSDC

The live Sepolia snapshot covers the major production-shape flows: wrapping, relay payments, escrow lifecycle, identity, reputation, unwrap/finalize, delegation, amount verification, ERC-1271 linking, and the HTTP x402 path. See docs/SEPOLIA-E2E.md for the dated breakdown and transaction references.

Other Networks

pnpm deploy:local     # Local Hardhat (deploys MockUSDC + MockConfidentialERC20)
pnpm deploy:mainnet   # Ethereum mainnet (uses canonical cUSDC at 0xe978...)

Wallet Setup Reference

Start from .env.example, then pick one of these bundles.

Minimal env for a local private-key operator

export WALLET_MODE=user
export USER_PRIVATE_KEY=0x...
export RPC_URL=https://ethereum-sepolia-rpc.publicnode.com
export CHAIN=sepolia

Minimal env for an unattended DFNS agent

export WALLET_MODE=dfns
export DFNS_WALLET_ID=...
export DFNS_AUTH_TOKEN=...
export DFNS_CREDENTIAL_ID=...
export DFNS_CREDENTIAL_PRIVATE_KEY='-----BEGIN PRIVATE KEY-----\n...'
export RPC_URL=https://ethereum-sepolia-rpc.publicnode.com
export CHAIN=sepolia

Optional DFNS convenience variables:

  • DFNS_PRIVATE_KEY_PATH instead of inline DFNS_CREDENTIAL_PRIVATE_KEY
  • DFNS_API_URL if you are not using the default https://api.dfns.io

Minimal env for supervised Ledger approvals in OpenClaw

export WALLET_MODE=ledger-bridge
export LEDGER_BRIDGE_URL=http://127.0.0.1:4555
export LEDGER_BRIDGE_TOKEN=replace-with-a-long-random-secret
export RPC_URL=https://ethereum-sepolia-rpc.publicnode.com
export CHAIN=sepolia

The same LEDGER_BRIDGE_TOKEN must be used by:

  • the OpenClaw runtime
  • apps/ledger-bridge
  • apps/ledger-bridge-ui

Full Environment Reference

Copy .env.example:

Variable Required Description
PRIVATE_KEY Yes Deployer / agent private key
MAINNET_RPC_URL For mainnet Ethereum RPC endpoint
SEPOLIA_RPC_URL For testnet Sepolia RPC endpoint
DFNS_WALLET_ID If using Dfns Dfns MPC wallet ID
DFNS_AUTH_TOKEN If using Dfns Dfns auth token
DFNS_CREDENTIAL_ID If using Dfns Dfns credential ID used for User Action Signing
DFNS_CREDENTIAL_PRIVATE_KEY If using Dfns PEM private key for the Dfns credential signer
DFNS_PRIVATE_KEY_PATH Optional with Dfns Filesystem path to the DFNS credential PEM; alternative to DFNS_CREDENTIAL_PRIVATE_KEY
DFNS_CREDENTIAL_ALGORITHM Optional with Dfns Optional crypto.sign algorithm override
DFNS_API_URL Optional with Dfns Dfns API base URL (default: https://api.dfns.io); the skill uses it to resolve wallet metadata from DFNS_WALLET_ID
DFNS_APP_ID Optional legacy Dfns field Kept for backward compatibility; not used by the current signer bridge
USER_PRIVATE_KEY If not Dfns Alternative to Dfns
WALLET_MODE Optional Explicit OpenClaw signer mode: user, dfns, or ledger-bridge
LEDGER_BRIDGE_URL With WALLET_MODE=ledger-bridge Localhost bridge URL (default http://127.0.0.1:4555)
LEDGER_BRIDGE_TOKEN With WALLET_MODE=ledger-bridge Shared secret for the OpenClaw runtime, daemon, and browser approval UI
LEDGER_BRIDGE_TIMEOUT_MS Optional with bridge mode Approval timeout in milliseconds (default 300000)
LEDGER_BRIDGE_PORT Optional for daemon Daemon listen port (default 4555)
LEDGER_BRIDGE_REQUEST_TIMEOUT_MS Optional for daemon Default request expiry inside the daemon
ADVANCED_ALLOW_RAW_LEDGER_SIGNING Optional for daemon Allows raw unknown requests through the bridge; disabled by default
VITE_LEDGER_BRIDGE_URL Optional for bridge UI Browser UI bridge URL
VITE_LEDGER_BRIDGE_TOKEN Optional for bridge UI Browser UI auth token for the local bridge
VITE_RPC_URL Optional for bridge UI RPC URL used by the browser approval UI
VITE_CHAIN_ID Optional for bridge UI Chain ID used by the browser approval UI
VERIFIER_ADDRESS Post-deploy X402PaymentVerifier address
IDENTITY_ADDRESS Post-deploy AgentIdentityRegistry address
REPUTATION_ADDRESS Post-deploy AgentReputationRegistry address
ESCROW_ADDRESS Post-deploy AgenticCommerceProtocol address
ETHERSCAN_API_KEY For verification Etherscan API key

Wallet-specific notes:

  • DFNS: the runtime resolves the wallet address from DFNS_WALLET_ID automatically, so you do not need to duplicate it elsewhere.
  • DFNS: you can supply the credential signer either inline with DFNS_CREDENTIAL_PRIVATE_KEY or from disk with DFNS_PRIVATE_KEY_PATH.
  • Ledger bridge: OpenClaw never talks to the Ledger directly; it talks to a localhost daemon, while a local browser approval UI owns the WebHID session.
  • Ledger bridge: use one shared LEDGER_BRIDGE_TOKEN value in all three places: the skill runtime, the daemon, and the browser UI.

Documentation

Document Description
ARCHITECTURE.md Deep technical architecture — payment flow, contract design, FHE patterns, wallet system
PROTOCOL.md Protocol specification for fhe-confidential-v1 x402 scheme
SECURITY.md Threat model, attack mitigations, known limitations
SILENT_FAILURE.md FHE silent failure pattern and SilentFailureGuard
ERC-COMPLIANCE.md ERC-7984/8004/8183 deviations and rationale
SEPOLIA-E2E.md Dated Sepolia verification snapshot — live-network flows, tx links, and demo rehearsal artifacts
UI-SURFACES.md What the browser UIs actually are: reference frontend vs supervised Ledger approval console
packages/openclaw-skill/README.md OpenClaw skill setup, command catalog, delegation workflow, and troubleshooting
LEDGER-BRIDGE.md Supervised OpenClaw + Ledger localhost bridge setup, request model, and operator workflow
examples/ 7 FHE-native agent templates — LLM proxy, web search, code review, document parser, image generation, knowledge base, paid skill server
DEMO.md Live Telegram demo runbook — setup, stage script, backup plan
DEMO-CHECKLIST.md Pre-flight checklist for in-person demo
CONTRIBUTING.md Setup, conventions, PR process
CHANGELOG.md Release history

Tech Stack

Layer Technologies
Contracts Solidity 0.8.27, @fhevm/solidity 0.11, @openzeppelin/contracts 5.1
Runtime TypeScript, ethers v6, Express 5
Frontend React 18, Tailwind CSS, Zustand, React Query, @zama-fhe/react-sdk, browser-attended Ledger DMK/WebHID
Build Hardhat, @fhevm/hardhat-plugin, Vitest, tsup, Storybook
Infra pnpm workspaces, GitLab CI

License

BUSL-1.1 (Business Source License v1.1)

About

No description, website, or topics provided.

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages