Deployments
The protocol is deployed on the Sepolia testnet. Addresses are recorded in
scripts/deployments.json.
Sepolia addresses
| Contract | Address | Role |
|---|---|---|
Factory | 0xadeb683e2c28514b89e600a0cd50185254b2d7f3 | CREATE2 deployer |
Token (DPC) | 0x6d663c7c401a18208748dF6F909ffc0C68FA1B73 | Protocol-native token |
FeeController | 0xe091dD90A4a3e0ed43fEd2D85A0fD043823B4648 | Manages protocol fees |
DataPrism | 0x2614B6E7F2134FBD880c88BAB10412b046a11211 | Core storage |
DataPrismCloud | 0x7fEda6645CDdDd193d6bEFAB7367c98C30d62469 | Application layer |
DataPrismCloudForwarder | 0x6f01C6E81ae6Adac1471B3Ce4000a3CC812438dF | EIP-712 meta-transactions |
Exchange | 0x0Cc50006445C7E0e08Fb46Bf5d8b1bECf5275Ba1 | DPC exchange |
External token used by the Exchange (not deployed by the protocol):
| Token | Address |
|---|---|
| USDC (Sepolia) | 0xC6a054681bEBb1096BB03E3Fc433bD99BAe987d0 |
The Exchange is configured with a USDC rate of 1000 × 10^12 (1 USDC → 1000 DPC).
Deployment configuration
Configured in scripts/deploy.ts:
const RPC_URL = "https://ethereum-sepolia-rpc.publicnode.com";
const EXTERNAL = { usdc: "0xC6a054681bEBb1096BB03E3Fc433bD99BAe987d0" };
const USDC_RATE = 1000n * 10n ** 12n; // 1 USDC (6 decimals) → 1000 DPC (18 decimals)Each contract is deployed via the Factory using a deterministic CREATE2 salt (salts 0-6
in SALTS). The deployer (PRIVATE_KEY) is passed as initialOwner to each contract.
Deployment sequence
0. Factory ← deployed via regular CREATE
1. Token(initialOwner) ← Factory CREATE2, salt 1
2. FeeController(initialOwner) ← Factory CREATE2, salt 2
3. DataPrism(Token, FeeController) ← Factory CREATE2, salt 3
4. Exchange(Token, FeeController, owner) ← Factory CREATE2, salt 4
5. DataPrismCloud(DataPrism, owner) ← Factory CREATE2, salt 5
6. DataPrismCloudForwarder(Cloud, owner) ← Factory CREATE2, salt 6
7. Wire: DataPrismCloud.setForwardContract(Forwarder)
8. Configure Token permissions (operator, minter, burner)
9. Configure Exchange (accept USDC)
10. Set DataPrismCloud custom fees in FeeController (creation → 1000 DPC / 1 USDC, data operations → 100 DPC / 0.1 USDC each, other prism operations → 0)Post-deployment setup
Run manually from the deployer account:
// 1. Set the protocol fee treasury (defaults to deployer)
FeeController.setTreasury(treasuryAddress);
// 2. Set the relayer commission treasury (non-official relayer share)
DataPrismCloudForwarder.setProtocolTreasury(treasuryAddress);
// 3. Whitelist at least one official relayer
DataPrismCloudForwarder.setOfficialRelayer(relayerAddress, true);
// 4. Set the priority window (seconds of exclusive official-relayer access)
DataPrismCloudForwarder.setPriorityWindow(60);
