Architecture
Primcast has three tiers: an Ethereum-secured rollup, four application systems that only the chain can provide, and established protocols deployed on top.
Layers
~ on top Primcast DEX · Morpho (lending) · Chainlink (prices, automation) · ERC-4337 paymaster · Blockscout
4 issuance Offering (IRO)
3 assets RWAToken + RWATokenFactory settlement: USDC / USDT (external, allowlisted)
2 data AssetHub (bonded providers · devices · readings · median topics)
1 compliance IdentityRegistry (KYC · accreditation · jurisdiction · freeze · sanctions)
0 plumbing SystemRegistry (system contracts · settlement allowlist) · Arbitrum Nitro / ArbOS 61 · Ethereum
Product architecture
| Layer | Component | What it does | Who operates it |
|---|---|---|---|
| Chain | Nitro sequencer, batch poster, validators | Orders transactions every 100 ms, posts data to Ethereum, asserts state | Primcast (validators allow-listed at launch) |
| Chain | Compliance publisher and sentinel | Mirrors on-chain sanctions into the sequencer filter; filters sanctioned delayed-inbox transactions | Primcast |
| 0 | SystemRegistry | Lists the contracts allowed to move RWA balances and the stablecoins allowed for settlement | Governance |
| 1 | IdentityRegistry | Stores facts per wallet; answers complianceOf(address) in one call | Registrars (facts), governance (sanctions) |
| 2 | AssetHub | Bonded data providers, registered devices, readings, aggregated topics | Providers; governance slashes |
| 3 | RWAToken | One ERC-20 per asset with eligibility rules, freeze, forced transfer, holder cap, dividends, redemptions and maturity | The asset's issuer (admin) |
| 3 | RWATokenFactory | Issuer allowlist; deploys every token as a beacon proxy | Governance (issuers), issuers (tokens) |
| 4 | Offering | Primary issuance: subscribe, close, claim or refund, withdraw proceeds | Issuers; anyone can close a due offering |
| On top | Primcast DEX, Morpho, Chainlink, paymaster, keepers | Trading, lending, prices, gas sponsorship, scheduling | Their respective operators |
What the chain owns, and what it does not
The rule is simple. If a well-audited protocol already does the job and the energy angle does not change its mechanics, deploy the protocol instead of writing a new one.
- In-house: identity facts, physical-asset data, the security token and primary issuance for assets that do not exist yet. No third party offers these for energy assets.
- On top: spot trading, lending, price feeds, keepers, payment streams, gas sponsorship and the explorer. See Ecosystem.
How the systems call each other
IdentityRegistry ◄── RWAToken, AssetHub, Offering (complianceOf / requireKYC / requireNotSanctioned)
SystemRegistry ◄── everyone (isSystem / isSettlementToken)
AssetHub ◄── RWAToken (device bindings)
USDC / USDT ◄── RWAToken (dividends, redemptions), Offering (subscriptions), AssetHub (bonds)
RWAToken ◄── Offering (mintFor on claim)
Settlement tokens are external, so every contract that takes them in runs the identity checks itself, on both deposit and payout.
Periodic work without a scheduler
Nothing on Primcast runs "at the end of the block". Every periodic task is a public function that anyone may call:
| Function | Purpose | If nobody calls it |
|---|---|---|
Offering.processAll(n) / process(ids) | Close offerings whose window ended or whose hard cap was reached | The offering stays open past its end time, but subscriptions are already refused; anyone can close it |
RWAToken.checkMaturity() | Move a token to Matured once its maturity time has passed | The token stays active until someone calls it |
RWAToken.distributeDividend(amount) | Distribute revenue (pulled from the issuer's allowance) | The dividend is late; nothing is lost |
A stuck keeper therefore delays things but never endangers funds.
Upgrade model
- The singletons (
SystemRegistry,IdentityRegistry,AssetHub,RWATokenFactory,Offering) are UUPS proxies owned by the governance Safe. - Every token is a
BeaconProxyon oneUpgradeableBeacon, so a single upgrade changes all tokens at once. - There is no timelock. An upgrade takes effect as soon as the Safe executes it. Storage layout is append-only and checked in CI.
- The Primcast DEX is not upgradeable: its pairs are immutable and its router is stateless.
See Trust & security for what this means for holders.
Live deployment
The addresses below are read from the deployment this portal is connected to.
| Contract | Address · Primcast Demo (31337) |
|---|---|
| SystemRegistry | 0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512 |
| IdentityRegistry | 0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9 |
| AssetHub | 0xa513E6E4b8f2a923D98304ec87F64353C4D5C853 |
| RWATokenFactory | 0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e |
| Offering | 0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82 |
| Authority (owner) | … |