Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions deploy_tee/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,9 @@ The network-shape decisions live entirely in step 1's authored inputs;
everything after is derivation (`manifest assemble`) or per-node plumbing.
A node joining later re-runs only steps 2–3 (via the operator CLI — see
above); the manifest assembly and the ceremony are one-time founding acts.
A committed worked example lives in `networks/example-devnet/` — a
template identity that can also found a throwaway test devnet (see
`networks/README.md`).

```bash
# 0. (Upstream) Build the image in seismic-images (CI or `make build`)
Expand Down
33 changes: 33 additions & 0 deletions deploy_tee/networks/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# Network directories

One directory per network: the committable identity of a founded (or
foundable) network. Each holds the three authored inputs
(`reth-genesis.json`, `summit-template.toml`, `measurements.json`) plus
the artifact set `seismic-tee-bootstrap manifest assemble` derives from them
(`network-manifest.json` — whose SHA-256 is the network's `network_id` —
`summit-genesis-template.toml`, `measurement-policy.json`). The founding
workflow lives in the deploy_tee README ("Creating a new network").

Directories are committed because a fresh `assemble` mints a fresh
`genesis_nonce`: the same `network_id` can never be regenerated from the
inputs, so the directory is everything needed to (re)configure, join, or
debug that network later. The `nodes/` descriptors are runtime output
(live IPs) and stay gitignored.

## example-devnet

A **template, not a deployed network** — no cohort runs under this
identity. Two intended uses:

- **Found a throwaway test devnet.** The artifact set is assembled and
valid, so `up --network … --count N` → `configure` → `genesis-ceremony`
brings up a working cohort. If two such cohorts might ever run at once,
re-run `manifest assemble --force` first so each gets a fresh
`genesis_nonce` (cohorts sharing a `network_id` can cross-replay
attestation transcripts). Note `measurements.json` snapshots a specific
image build — when the deployed VHD moves on, refresh it and
re-assemble (`up --network` refuses on a pin/policy mismatch).
- **Start a real network.** Don't reuse or copy this directory — run
`manifest init <new-dir>` and author fresh inputs. `namespace` (the BLS
signature domain separator) and `genesis_nonce` must be unique per
network that matters.
29 changes: 29 additions & 0 deletions deploy_tee/networks/example-devnet/measurement-policy.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
[
{
"attestation_type": "azure-tdx",
"measurement_id": "seismic-dev_2026-07-02.5c3b5e.vhd",
"measurements": {
"11": {
"expected": "73f2825b7985f9d04eccb3c538793e51617d0d4560c63517d09233114fdd6b18"
},
"12": {
"expected": "0000000000000000000000000000000000000000000000000000000000000000"
},
"13": {
"expected": "0000000000000000000000000000000000000000000000000000000000000000"
},
"15": {
"expected": "0000000000000000000000000000000000000000000000000000000000000000"
},
"4": {
"expected": "d57063c0669599b885c43a0683436a3463ad49513ddb3996e6fc96040508fd8e"
},
"8": {
"expected": "0000000000000000000000000000000000000000000000000000000000000000"
},
"9": {
"expected": "3f761a6383e09d62ac10ecfea95c27e30de69176337243e7e594714d27f6ac45"
}
}
}
]
128 changes: 128 additions & 0 deletions deploy_tee/networks/example-devnet/measurements.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
{
"EventLog": {
"Events": [
{
"Description": "EV_EFI_ACTION: Calling EFI Application from Boot Option",
"Digest": "3d6772b4f84ed47595d72a2c4c5ffd15f5bb72c7507fe26f2aaee2c69d5633ba",
"PCRIndex": 4
},
{
"Data": "AAAAAA==",
"Description": "EV_SEPARATOR",
"Digest": "df3f619804a92fdb4057192dc43dd748ea778adc52bc498ce80524c014b81119",
"PCRIndex": 4
},
{
"Description": "Boot Stage 1: Unified Kernel Image (UKI)",
"Digest": "d68c5b3dd8ecaf3bfec8a749168ab61f0160780a5f4473062b054549c0572692",
"PCRIndex": 4
},
{
"Description": "Boot Stage 2: Linux",
"Digest": "cf99317753808e81cdaa778bffcd0d32803bb4b6e5664e90a3c2703c67175df8",
"PCRIndex": 4
},
{
"Data": "YwBvAG4AcwBvAGwAZQA9AHQAdAB5ADAAIABjAG8AbgBzAG8AbABlAD0AdAB0AHkAUwAwACwAMQAxADUAMgAwADAAbgA4ACAAbQBpAHQAaQBnAGEAdABpAG8AbgBzAD0AYQB1AHQAbwAsAG4AbwBzAG0AdAAgAHMAcABlAGMAXwBzAHQAbwByAGUAXwBiAHkAcABhAHMAcwBfAGQAaQBzAGEAYgBsAGUAPQBvAG4AIABuAG8AcwBwAGUAYwB0AHIAZQBfAHYAMgAgAHMAeQBzAHQAZQBtAGQALgB1AG4AaQB0AD0AbQBpAG4AaQBtAGEAbAAuAHQAYQByAGcAZQB0AAAA",
"Description": "EV_EVENT_TAG: Linux LOAD_FILE2 protocol: cmdline \"console=tty0 console=ttyS0,115200n8 mitigations=auto,nosmt spec_store_bypass_disable=on nospectre_v2 systemd.unit=minimal.target\\x00\"",
"Digest": "aa50cea319f3df1f3802d2ae1cf4b60dacee7619e1fd2ed05c50b7331c829134",
"PCRIndex": 9
},
{
"Description": "EV_EVENT_TAG: Linux LOAD_FILE2 protocol: initrd (digest d1c035351dbf2abb915cc697f3e51332dc381dbd8295c08849b6cd572015f5db)",
"Digest": "d1c035351dbf2abb915cc697f3e51332dc381dbd8295c08849b6cd572015f5db",
"PCRIndex": 9
},
{
"Data": "LmxpbnV4AA==",
"Description": "EV_IPL: UKI section 1 name: .linux",
"Digest": "0da293e37ad5511c59be47993769aacb91b243f7d010288e118dc90e95aaef5a",
"PCRIndex": 11
},
{
"Description": "EV_IPL: UKI section 1 data: 19a1a18d5ffbb0871f58ea35ca563b64a71a7eb959050a6fa801125b545c6678",
"Digest": "19a1a18d5ffbb0871f58ea35ca563b64a71a7eb959050a6fa801125b545c6678",
"PCRIndex": 11
},
{
"Data": "Lm9zcmVsAA==",
"Description": "EV_IPL: UKI section 2 name: .osrel",
"Digest": "3fb9e4e3cc810d4326b5c13cef18aee1f9df8c5f4f7f5b96665724fa3b846e08",
"PCRIndex": 11
},
{
"Description": "EV_IPL: UKI section 2 data: 1238f99551300692ec2c817c88f2ab9a80e5867bbba0be3572288087f2985a53",
"Digest": "1238f99551300692ec2c817c88f2ab9a80e5867bbba0be3572288087f2985a53",
"PCRIndex": 11
},
{
"Data": "LmNtZGxpbmUA",
"Description": "EV_IPL: UKI section 3 name: .cmdline",
"Digest": "461203a89f23e36c3a4dc817f905b00484d2cf7e7d9376f13df91c41d84abe46",
"PCRIndex": 11
},
{
"Description": "EV_IPL: UKI section 3 data: 30a47dd0aca13e8f5685caf29052eb2906a027c2f86298101b3b3a5730a5cdde",
"Digest": "30a47dd0aca13e8f5685caf29052eb2906a027c2f86298101b3b3a5730a5cdde",
"PCRIndex": 11
},
{
"Data": "LmluaXRyZAA=",
"Description": "EV_IPL: UKI section 4 name: .initrd",
"Digest": "15ee37e75f1e8d42080e91fdbbd2560780918c81fe3687ae6d15c472bbdaac75",
"PCRIndex": 11
},
{
"Description": "EV_IPL: UKI section 4 data: d1c035351dbf2abb915cc697f3e51332dc381dbd8295c08849b6cd572015f5db",
"Digest": "d1c035351dbf2abb915cc697f3e51332dc381dbd8295c08849b6cd572015f5db",
"PCRIndex": 11
},
{
"Data": "LnVuYW1lAA==",
"Description": "EV_IPL: UKI section 5 name: .uname",
"Digest": "da7a6d941caa9d28b8a3665c4865c143db8f99400ac88d883370ae3021636c30",
"PCRIndex": 11
},
{
"Description": "EV_IPL: UKI section 5 data: d26becf1cf6dfe987f35584b51c6105c0924a85b3141789cbd3443aaac6ee691",
"Digest": "d26becf1cf6dfe987f35584b51c6105c0924a85b3141789cbd3443aaac6ee691",
"PCRIndex": 11
},
{
"Data": "LnNiYXQA",
"Description": "EV_IPL: UKI section 6 name: .sbat",
"Digest": "ff552fd255be18a3d61c0da88976fc71559d13aad12d1dfe1708cf950cc4b74c",
"PCRIndex": 11
},
{
"Description": "EV_IPL: UKI section 6 data: 7b7f7ea40ef3c8dda5e1fd1b0438e6a995f9093b6bad59251ca314df7195c2c4",
"Digest": "7b7f7ea40ef3c8dda5e1fd1b0438e6a995f9093b6bad59251ca314df7195c2c4",
"PCRIndex": 11
}
]
},
"measurement_id": "seismic-dev_2026-07-02.5c3b5e.vhd",
"measurements": {
"11": {
"expected": "73f2825b7985f9d04eccb3c538793e51617d0d4560c63517d09233114fdd6b18"
},
"12": {
"expected": "0000000000000000000000000000000000000000000000000000000000000000"
},
"13": {
"expected": "0000000000000000000000000000000000000000000000000000000000000000"
},
"15": {
"expected": "0000000000000000000000000000000000000000000000000000000000000000"
},
"4": {
"expected": "d57063c0669599b885c43a0683436a3463ad49513ddb3996e6fc96040508fd8e"
},
"8": {
"expected": "0000000000000000000000000000000000000000000000000000000000000000"
},
"9": {
"expected": "3f761a6383e09d62ac10ecfea95c27e30de69176337243e7e594714d27f6ac45"
}
}
}
20 changes: 20 additions & 0 deletions deploy_tee/networks/example-devnet/network-manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"eth": {
"chain_id": 5124,
"genesis_hash": "0x874a74ba374da00d8c097b4be585a60e40f901cac56a764ad0013a07b0a2f93c"
},
"genesis_nonce": "0xcf53cece6324a805c08120f54d6ae839b70cf0dc1f0b6646f94af43ea55d9aa4",
"manifest_version": 1,
"measurements": {
"bootstrap_policy_hash": "0xbf19dfe3fc5ec80c4bc18d34b43f8226816df2dd784f9f9988c77ddb88868e24",
"contracts": {
"authority": "0x1000000000000000000000000000000000000002",
"registry": "0x1000000000000000000000000000000000000001"
}
},
"name": "example-devnet",
"summit": {
"genesis_template_hash": "0x52f99622625a1713bb013082bd35c93dffb06029ddbf23012870130118931ec6",
"namespace": "example-devnet"
}
}
109 changes: 109 additions & 0 deletions deploy_tee/networks/example-devnet/reth-genesis.json

Large diffs are not rendered by default.

21 changes: 21 additions & 0 deletions deploy_tee/networks/example-devnet/summit-genesis-template.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
eth_genesis_hash = "0x874a74ba374da00d8c097b4be585a60e40f901cac56a764ad0013a07b0a2f93c"
validators = []
# Summit network-params template — authored input for `manifest assemble`.
# Review every value before founding a real network. Two fields are filled
# elsewhere and do not belong here: eth_genesis_hash (derived from
# reth-genesis.json at assemble time) and [[validators]] (TEE-born, filled
# by the genesis ceremony).
leader_timeout_ms = 2000
notarization_timeout_ms = 4000
nullify_timeout_ms = 4000
activity_timeout_views = 256
skip_timeout_views = 32
max_message_size_bytes = 10485760
namespace = "example-devnet"
validator_minimum_stake = 32000000000
validator_maximum_stake = 32000000000
blocks_per_epoch = 10000
allowed_timestamp_future_ms = 10000
max_deposits_per_epoch = 3
max_withdrawals_per_epoch = 16
observers_per_validator = 5
19 changes: 19 additions & 0 deletions deploy_tee/networks/example-devnet/summit-template.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Summit network-params template — authored input for `manifest assemble`.
# Review every value before founding a real network. Two fields are filled
# elsewhere and do not belong here: eth_genesis_hash (derived from
# reth-genesis.json at assemble time) and [[validators]] (TEE-born, filled
# by the genesis ceremony).
leader_timeout_ms = 2000
notarization_timeout_ms = 4000
nullify_timeout_ms = 4000
activity_timeout_views = 256
skip_timeout_views = 32
max_message_size_bytes = 10485760
namespace = "example-devnet"
validator_minimum_stake = 32000000000
validator_maximum_stake = 32000000000
blocks_per_epoch = 10000
allowed_timestamp_future_ms = 10000
max_deposits_per_epoch = 3
max_withdrawals_per_epoch = 16
observers_per_validator = 5
Loading