add the arc rail and make the workload pin refreshable - #199
Merged
Merged
Conversation
Arc is Circle's L1 and USDC is its gas token, so a wallet that can pay needs no second asset to settle. The rail is offered only when X402_ARC_PAY_TO is set, and a startup probe reads the chain id and the token's EIP-712 domain before anything is quoted: Arc's USDC reports name() "USDC" where Base reports "USD Coin", and signing the wrong one produces a signature that recovers to nobody. A probe failure drops Arc alone rather than the process. A test network now marks itself in the quote. It sits beside mainnet rails priced identically, and the chain id was the only thing telling them apart. The upstream enclave redeployed twice in four days, and a commit pinned only in a published package refuses every call until each client upgrades. The accepted commits can now come from /v1/confidential/workload; the launcher image digest and the OS image hash stay compiled in, so a wrong list can refuse a good workload but never admit a different one. Also: an unreachable chain answers 402 instead of taking the gateway down, payment keys are namespaced by chain so the same nonce is not refused on a second rail, and a spent nonce is reported as payment_already_redeemed rather than sharing invalid_transaction_state with every revert. Signed-off-by: winterstacks <release@prismnetwork.tech>
added 2 commits
September 16, 2026 12:48
The measured compose carries an upstream path the secret scanner reads as a leaked local one, which is why the fixture stored it encoded. The attestation endpoint now returns it plain, so a verbatim recapture reintroduced the trip. Re-encode on capture; the bytes round trip exactly and the hash still holds. Signed-off-by: winterstacks <release@prismnetwork.tech>
Compute is quoted and paid in USDG or USDC, so a renter never has to hold PRISM to rent a GPU. What staking buys is a lower rate on the machines operators reserve for stakers: 177 base units per second against 222, about twenty percent, on two of the six offers published today. Signed-off-by: winterstacks <release@prismnetwork.tech>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds USDC on Circle's Arc L1 (chain 5042) as a third x402 rail, and stops an upstream enclave redeploy from breaking every installed client.
Arc
USDC is Arc's gas token, so a wallet that can pay needs no second asset to settle. The rail is offered only when
X402_ARC_PAY_TOis set.A startup probe reads the chain id and the token's EIP-712 domain before anything is quoted. Arc's USDC reports
name()"USDC" where Base reports "USD Coin", and signing the wrong one produces a well-formed signature that recovers to nobody. A probe failure drops Arc alone; Base and Robinhood do not care that Circle's chain is unreachable.Verified against mainnet: the domain reproduces the token's
DOMAIN_SEPARATOR()exactly, and Base's domain does not.Workload pin
The upstream enclave redeployed twice in four days. A commit pinned only in a published package refuses every call until each client upgrades, which is what happened. Accepted commits can now come from
/v1/confidential/workload. The launcher image digest and the OS image hash stay compiled in, so a wrong or hostile list can refuse a good workload but never admit a different one.Also
payment_already_redeemedinstead of sharinginvalid_transaction_statewith every other revert.Verification
333 JS tests, 199 Python plus 18 subtests. Live on Arc mainnet: a paid generation settled in tx
0x733b640c73b60b55cf28430f39b213f0374d49ccbc66fdd749f3d4aa308039a4, block 21133498.