UTXOSUITE — home
DEVELOPER DOCUMENTATION

Integrate the review boundary — not the custody boundary.

UTXO Suite documentation is now centered on transaction security: how requests enter SafeSign, what Security Core may analyze, where user authorization remains, and which integration surfaces are current versus future work.

DOCS / IMPLEMENTATION REFERENCEA compact edge server cluster, status lights on the front panels.
SECURITY MODEL

Four invariants before implementation details.

These constraints are more important than any framework choice. If an integration breaks one of them, it is outside the intended product model.

INVARIANT 01

NO CUSTODY

No seed phrase or private-key custody in SafeSign or Security Core.

INVARIANT 02

PAYLOAD INTEGRITY

Do not mutate the transaction payload presented by the calling wallet or dApp.

INVARIANT 03

EXPLICIT AUTHORIZATION

Do not auto-sign or auto-broadcast. Authorization remains explicit.

INVARIANT 04

FAIL VISIBLE

Unavailable evidence is uncertainty — never a silent allow.

REQUEST LIFECYCLE

Request → decode → context → review.

The integration boundary should preserve the original request while adding human-readable evidence around it.

01

REQUEST

Receive a supported wallet request plus the context available at the integration boundary.

02

DECODE

Normalize method, parameters, typed data, approvals or supported PSBT structure.

03

CONTEXT

Enrich with deterministic policy, destination context and simulation evidence when available.

04

REVIEW

Present material risk and uncertainty in SafeSign; the user or calling wallet makes the final authorization.

GUARD / MANIFEST V3

Current browser integration foundation.

The repository contains a source scaffold for Chrome/Brave. It wraps ethereum.request in page context, communicates with an isolated content script and waits for an explicit continue/reject decision. A production extension build pipeline is still required.

Developer scaffold

ethereum.request → SafeSign → original provider

// browser/page context — conceptual integration boundary
const original = ethereum.request.bind(ethereum)
ethereum.request = async (request) => {
  const decision = await reviewWithSafeSign(request)
  if (decision !== "continue") throw new Error("User rejected")
  return original(request) // forward unchanged
}

Local preferences only: enabled state, strict mode, allowlisted domains and dismissed education cards. Never persist private keys, seeds, raw signatures or full transaction history.

INTEGRATION STATUS

Do not infer backend capability from a polished UI.

Each surface has a different implementation boundary. Documentation names that boundary instead of collapsing everything into a single 'released' label.

01

UTXO GUARD

Guard — Manifest V3 source foundation exists; production build/distribution remains separate work.

02

UTXO WALLET

Wallet — current UI surface exists; real send/approve/sign/connect flows must invoke SafeSign before confirmation.

03

UTXO RELAY

Relay — route/fee/PSBT analysis surface exists; future signing and route execution should preview PSBTs through SafeSign.

REFERENCE ARCHITECTURE

A transaction review contract that can be implemented and tested.

Preserve the request, derive structured evidence, record unknowns and return an explainable decision without taking signing authority.

01 / REQUEST ENVELOPE

REQUEST ENVELOPE

Capture origin, chain, method, payload hash and stated intent before analysis.

02 / EVIDENCE GRAPH

EVIDENCE GRAPH

Keep facts, provenance, freshness, contradictions and unknowns as separate nodes.

03 / DECISION CONTRACT

DECISION CONTRACT

Return ALLOW, WARN, REVIEW or BLOCK with reason codes and the reviewed payload hash.

REFERENCE PIPELINE

Every stage has a fail-safe output.

Preserve the request, derive structured evidence, record unknowns and return an explainable decision without taking signing authority.

STAGE
ARTIFACT / INPUT
EVIDENCE / MEANING
OUTPUT
CAPTURE
origin · request
Preserve the original envelope.
REVIEW
DECODE
method · params
Normalize supported authority and expose unsupported input.
UNKNOWN
DECIDE
evidence · policy
Return decision, reason codes and exact payload hash.
EXPLICIT
REQUEST ENVELOPE
{
  "origin":"https://app.example",
  "chainId":1,
  "method":"eth_signTypedData_v4",
  "payloadHash":"sha256:...",
  "intent":"swap 1 ETH"
}
REVIEW RESULT
{
  "decision":"REVIEW",
  "reasonCodes":["AUTHORITY_EXCEEDS_INTENT"],
  "unknowns":["spender_reputation"],
  "payloadHash":"sha256:..."
}
INTEGRATION RULE

If the payload changes after review, the decision is invalid and a new review is required.