Feat/tee - #50
Merged
Merged
Conversation
…sistent, persistent-tee) Resolves c-kzg native library link conflict between snos and tee deps by giving each binary its own Cargo workspace and lock file. Moves SnosPieGenerator out of saya-core into bin/persistent. Sets up bin/persistent-tee skeleton with katana-tee deps and alloy v1.0.41 patches. Switches compose files to build from source instead of pinned images. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…n/persistent saya-core is now pure infrastructure (block ingestor, storage, DA traits, service primitives). All STARK-specific code (Atlantic HTTP client, mock prover, sovereign/persistent orchestrators, Piltover STARK settlement, utils) moves to bin/persistent where it belongs. - Add optional `snos` feature to saya-core for SovereignPacket and impl DataAvailabilityPayload for SnosProof<StarkProof> (orphan rule) - bin/persistent adds swiftness/integrity/reqwest/piltover/zip as direct deps - bin/persistent-tee no longer pulls in swiftness via saya-core, fixing the size-of v0.1.5 compile error on stable 1.91 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…r builds - Rename bin/core-contract to bin/ops (crate name: ops) for clearer semantics - Flatten `persistent persistent start` → `persistent start` by removing the Persistent wrapper struct and promoting Start to a top-level subcommand - Dockerfile: build both isolated workspaces (bin/persistent, bin/ops) with separate --manifest-path invocations; create cairo-lang venv from requirements.txt to satisfy apollo_starknet_os_program build dep; switch to openssl-dev + openssl-libs-static for musl static linking; add python3-dev and gmp-dev for fastecdsa C extension - rust-toolchain.toml: bump to 1.89 (required by dojo-utils transitive deps) - requirements.txt: remove backports.asyncio.runner (incompatible with Python 3.12+) - compose.yml / compose.e2e.yml / compose.l2.yml: update binary invocations (ops, persistent), healthcheck process name, and RUST_LOG module filters - saya/core storage.rs: fix starknet_types_core::felt::Felt import path Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Introduce TEE (Trusted Execution Environment) integration for the persistent-tee binary and saya-core: - Add attestor, prover, prover_impl, settlement, and tee modules to persistent-tee - Add TEE orchestrator, prover, and core tee modules to saya-core - Extend block ingestor with polling support for TEE workflows - Wire up TEE components in main entry point and lib exports Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
COPY ./programs /programs was broken on CI because programs/ is gitignored and was never present in the checkout. Previously this was a non-issue since compose.yml used a pre-built image; the local build requirement was introduced on this branch. Generate layout_bridge.json directly in the build stage using the already-installed cairo-lang venv, eliminating the dependency on a pre-populated programs/ directory. Also remove the unused SNOS_PROGRAM env var since snos is no longer provided explicitly. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Build with: docker build -t ghcr.io/dojoengine/saya:feat-tee . Push with: docker push ghcr.io/dojoengine/saya:feat-tee Override with SAYA_IMAGE env var if needed. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add missing image to saya service in compose.yml - Switch compose.e2e.yml from build-from-source to image reference so SAYA_IMAGE env var works end-to-end in CI - Bump CI toolchain from 1.87 to 1.89 (matches rust-toolchain.toml) - Update DEFAULT_PILTOVER_CLASS_HASH in ops constants - Rename core-contract → ops in bin/ops/Cargo.lock - Add cainome/piltover/sha3 deps to persistent-tee; move sha3 out of saya-core Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
chudkowsky
marked this pull request as ready for review
March 25, 2026 13:35
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Prevents katana_init exit 101 caused by stale shared volume with existing katana_config from a previous run. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…efault - appc_msg_sn_deploy: add sleep 2 between declare and deploy to avoid nonce-not-updated race (same fix already present in sn_msg_deploy) - katana_init: lower --settlement-contract-deployed-block default from 4 to 1 to avoid ContractNotFound when deploy lands at a different block due to parallel service timing nondeterminism Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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.
Summary
This PR introduces TEE (Trusted Execution Environment) support and restructures the binary layout to eliminate native library conflicts between STARK and TEE dependency trees.
Workspace split
`bin/saya` is dissolved. Each binary now lives in its own isolated Cargo workspace with its own lock file:
Why: `c-kzg` (pulled by SNOS) and `katana-tee` deps cannot coexist in a single workspace — they pull in conflicting native libraries. Separate workspaces give each binary an independent resolver.
saya-core is now pure infrastructure
All STARK-specific code (Atlantic HTTP client, mock prover, sovereign/persistent orchestrators, Piltover settlement, utils) moves from `saya-core` into `bin/persistent`. `saya-core` retains only block ingestor, storage, DA traits, and service primitives — plus a new optional `snos` feature for `SovereignPacket` impls that would otherwise violate the orphan rule.
TEE integration (`bin/persistent-tee` + `saya/core`)
New modules added:
CLI change
`persistent persistent start` is flattened to `persistent start` by removing the `Persistent` wrapper struct.
Docker / CI fixes
Compose / e2e fixes
Testing