Skip to content

Submit High-Level Technical Architecture Proposal#11

Closed
ethanfrey wants to merge 5 commits into
stellar-registry:mainfrom
ethanfrey:technical-architecture-proposal
Closed

Submit High-Level Technical Architecture Proposal#11
ethanfrey wants to merge 5 commits into
stellar-registry:mainfrom
ethanfrey:technical-architecture-proposal

Conversation

@ethanfrey

@ethanfrey ethanfrey commented Jun 10, 2026

Copy link
Copy Markdown

As discussed, here is my proposal of a high-level technical architecture and how the various teams would collaborate in this framework.

See the rendered version here

@chadoh chadoh left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall this looks GREAT. Thank you! I have a few comments & suggestions before merging:

end
subgraph AHA["Aha — contracts + read"]
BReg["Build-info registry<br/>contract"]
VContract["Verification contract<br/>(Registry sibling)"]

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not convinced it's useful to have a Verification contract separate from the main contract. Convince me.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All contracts could be merged into one. Logically they are independent actions, so you could write 3 contracts (trigger, attestations, and your current registry), but you could also fold this all into your current registry.

Feel free to modify, this will be your code

Comment thread rfps/technical-architecture-highlevel.md
Comment thread rfps/technical-architecture-highlevel.md Outdated
- **Sandboxes run on a different machine from the control plane.** The worker executes untrusted build logic (a contract's `build.rs` can do anything), so it must be isolated from the host and, critically, from the signing key. The worker returns only a result and a computed hash; it can never sign or submit. Hermetic, network-isolated rebuild is the defense against build-time exfiltration — not source scanning.
- **Elastic in the bootstrap phase.** During the initial back-verification crunch the engine fans out to many ephemeral workers to attempt thousands of candidate blobs (and, for metadata-absent blobs, multiple `version × flag × arch` combinations) in parallel. This is where most of the day-one coverage is produced.
- **Down to one isolated worker in steady state.** Once the corpus is processed, ongoing verification of new deployments needs only a single isolated worker. An operator who wants lower ops overhead can run the worker on the same machine as the control plane — an explicit security-for-simplicity tradeoff, not a default.
- **Image trust as a gradient.** The engine records `arbitrary → auditable → sdf_trusted` rather than a binary, anchored on the SDF-allowlisted trusted images.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This point seems like it's in the wrong place. This is a feature of the system as a whole, not of the Verifier engine. The Verifier Engine runs a single check and reports its binary result to the Verification Contract. Right? This could probably be moved to the bulleted list in "Indexer | Query API" instead, bu the "Variable trust at the endpoint" already sort of covers it.

    Suggested change
  


  
      
        
        - **Image trust as a gradient.** The engine records `arbitrary → auditable → sdf_trusted` rather than a binary, anchored on the SDF-allowlisted trusted images.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The "suggested change" somehow got messed up above; see comment below for well-formed "remove this line" gh suggestion.

Comment thread rfps/technical-architecture-highlevel.md Outdated
Comment thread rfps/technical-architecture-highlevel.md Outdated
Comment thread rfps/technical-architecture-highlevel.md Outdated

**Milestone 2 — Verification engine (lead: Runtime Verification).** RV implements the verification side: the hermetic rebuild engine, signing, and claim submission, tested end-to-end. Aha provides **stub contracts** for the build-info trigger and claim write path (minimal — just enough to exercise the flow). Ethan guides the design where needed.

**Milestone 3 — Contracts, indexer & query engine (lead: Aha).** Finalize the two contracts, build the GoldSky indexer and the query API. In parallel, ongoing recovery of existing contracts' build metadata and verification of the flow at scale.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a quick note here that this "two contracts" language occurs throughout. If we decide to go with just-the-one, we will need to scan the whole document for these occurrences.

- **Sandboxes run on a different machine from the control plane.** The worker executes untrusted build logic (a contract's `build.rs` can do anything), so it must be isolated from the host and, critically, from the signing key. The worker returns only a result and a computed hash; it can never sign or submit. Hermetic, network-isolated rebuild is the defense against build-time exfiltration — not source scanning.
- **Elastic in the bootstrap phase.** During the initial back-verification crunch the engine fans out to many ephemeral workers to attempt thousands of candidate blobs (and, for metadata-absent blobs, multiple `version × flag × arch` combinations) in parallel. This is where most of the day-one coverage is produced.
- **Down to one isolated worker in steady state.** Once the corpus is processed, ongoing verification of new deployments needs only a single isolated worker. An operator who wants lower ops overhead can run the worker on the same machine as the control plane — an explicit security-for-simplicity tradeoff, not a default.
- **Image trust as a gradient.** The engine records `arbitrary → auditable → sdf_trusted` rather than a binary, anchored on the SDF-allowlisted trusted images.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure what happened with my previous "suggestion":

Suggested change
- **Image trust as a gradient.** The engine records `arbitrary → auditable → sdf_trusted` rather than a binary, anchored on the SDF-allowlisted trusted images.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I applied another suggestion that seemed identical to this one. Gonna mark this as done

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The "Image trust as a gradient" bullet point is still in the doc. I think we should remove it from this "Verifier engine" section.

ethanfrey and others added 4 commits June 11, 2026 12:54
Co-authored-by: Chad Ostrowski <221614+chadoh@users.noreply.github.com>
Co-authored-by: Chad Ostrowski <221614+chadoh@users.noreply.github.com>
Co-authored-by: Chad Ostrowski <221614+chadoh@users.noreply.github.com>
Co-authored-by: Chad Ostrowski <221614+chadoh@users.noreply.github.com>

@elizabethengelman elizabethengelman left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just looked at this and #9 for the first time, so I'm adding some questions as I'm processing things. Feel free to punt on answering them until after the RFP due date if they're not helpful in the short term. But overall, this looks great & I'm excited to see how this project evolves!


**Trigger A — native SEP-58 metadata in the wasm (the end state).** Any wasm uploaded to the network is checked. If it already embeds sufficient SEP-58 build metadata (`bldimg`, `bldopt`, source identifiers), that upload itself is enough: verifiers pick it up directly from the wasm and run verification immediately, with **no registry contract involved**. This is the steady-state path — a wasm that ships with proper metadata is verifiable the moment it lands.

**Trigger B — build-info registry (the bridge from today).** Many already-deployed wasms carry no metadata, and not every future upload will embed it. The build-info registry covers them. Keyed by `wasm_hash`, it lets build info be submitted for a wasm that lacks it on-chain. Writing it **emits a build-info event** verifiers pick up, exactly as native metadata would. For **existing contracts** that predate the standard, build info is recovered off-chain and written here by an **authorized manager key** — the original wasm uploader or an Aha-governed manager, *not* anyone, so the registry can't be spammed with junk build info. This contract is the bridge between the current state (most contracts unverifiable) and the end state (metadata native in the wasm).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The way I'm reading this is that Trigger B includes these 2 scenarios:

  • old contracts that don't have build info because they predate the build info standard
  • new contracts that don't imbed build info for whatever reason

To make sure I'm understanding, the former scenario is handled by recovering build info off-chain and a manual write, which will emit the build info event which notifies the verifiers.

For the latter scenario, does this happen automagically by way of the registry? or is this also a manual process?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's all correct! For the latter scenario: nothing automagical. These wasm authors would need to go through the same Registry Governance Proposal To Add Wasm Build Info process as the former scenario.

IX->>IX: materialize into queryable view
```

Authorization — who may register build info, who may submit claims, manager-key governance — is owned by Aha. The claim shape and event schemas are fixed in Milestone 1 so all parties build against a stable interface.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe a question for @chadoh, but is this where Tansu comes in?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, these will be proposals created in Tansu. A small security council of known reviewers will vote on these proposals, and if the proposal passes, then the build info will be added to the registry.

Note that this is only for the root registry. The unverified registry could have these build_info_added events (or whatever the name turns out to be) emitted willy-nilly, but there is no reason for source verifiers to listen to those events. And other subregistries will be owned by various orgs (OZ, blend, etc), each of which are free to define their own governance processes. It's unclear to me at this point if source verification services will care to verify the sources of wasms added to these other subregistries.

@ehildenb

Copy link
Copy Markdown

This looks good to me overall from the Runtime Verification perspective!

chadoh added a commit that referenced this pull request Jun 11, 2026
`rfps/source-verification` is now a directory with:

- README.md: the copy-pasted source of the RFP document itself
- full-application.md: our work-in-progress responses for the full form
  submission
- technical-architecture-highlevel.md: copy-pasted from #11
chadoh added a commit that referenced this pull request Jun 11, 2026
`rfps/source-verification` is now a directory with:

- README.md: the copy-pasted source of the RFP document itself
- full-application.md: our work-in-progress responses for the full form
  submission
- technical-architecture-highlevel.md: copy-pasted from #11

Co-authored-by: Ethan Frey <ethanfrey@noreply.github.com>
@chadoh

chadoh commented Jun 11, 2026

Copy link
Copy Markdown
Member

Closing in favor of #8, which now includes this full document.

@chadoh chadoh closed this Jun 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants