Skip to content

chore: bump seismic-node - #77

Merged
samlaf merged 1 commit into
mainfrom
chore--bump-seismic-node-vhd
Jul 22, 2026
Merged

chore: bump seismic-node#77
samlaf merged 1 commit into
mainfrom
chore--bump-seismic-node-vhd

Conversation

@samlaf

@samlaf samlaf commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Bootstrapped a network succesfully with this version.

Instructions for reproducibility

Set identifiers for this run:

IMAGE="seismic-dev_2026-07-22.bcbb14.vhd"
NET="tee/networks/bootstrap-bcbb14"
PREFIX="dev-bootstrap-bcbb14"
COUNT=4
  1. Create and assemble the network artifacts

This uses the current example chain spec but the newly generated image measurements:

uv run seismic-tee-network manifest init "$NET" \
    --reth-genesis tee/networks/example-devnet/reth-genesis.json \
    --measurements ../seismic-images/build/measurements.json \
    --measurement-id "$IMAGE"

Optionally review the generated Summit parameters:

cat "$NET/summit-template.toml"

Then assemble and validate:

uv run seismic-tee-network manifest assemble "$NET" \
    --reth-bin ../seismic-reth/target/debug/seismic-reth

uv run seismic-tee-network manifest validate "$NET" \
    --reth-bin ../seismic-reth/target/debug/seismic-reth
  1. Provision four Pulumi stacks

This inherits the VHD URL and other settings from your modified Pulumi.dev.yaml:

uv run seismic-tee-network up \
    --count "$COUNT" \
    --stack-prefix "$PREFIX" \
    --config tee/pulumi/seismic_node/Pulumi.dev.yaml \
    --network "$NET"

Descriptors will be written to:

${NET}/nodes/${PREFIX}-{1,2,3,4}.json

Pulumi will prompt for the stack passphrase if PULUMI_CONFIG_PASSPHRASE is not set.

  1. Configure the cohort (devp2p bootnodes + root-key bootstrap)

Node 1 is genesis (mints root_key); nodes 2–4 join. reth wires up devp2p
gossip from the [network].bootnodes enode list, and tdx-init derives each
node’s root_key fetch peer (http://<host>:7878) from that same list — so the
joiners fetch root_key from node 1 over the attested handshake, with no second
peer list that could skew from the bootnode set:

uv run seismic-tee-network configure \
    --genesis "$NET/nodes/${PREFIX}-1.json" \
    --join "$NET/nodes/${PREFIX}-2.json" \
    --join "$NET/nodes/${PREFIX}-3.json" \
    --join "$NET/nodes/${PREFIX}-4.json" \
    --manifest "$NET/network-manifest.json"

Greenfield bootstrap is two-stage: a node’s enode isn’t known until reth is up,
so configure brings up the genesis node first (empty bootnodes), polls its
seismic_nodeInfo for the enode, then configures the joiners bootnoded off it.
Both stages watch each node’s first-boot LUKS provisioning, so this takes a
while.

On success it collects every node’s enode and persists the founding set to:

${NET}/nodes/bootnodes.json

A later configure run (e.g. after a reboot wipes the tmpfs config dir) reuses
that file and reconfigures the whole cohort in one parallel pass.

Requires a node image carrying the tdx-init from
SeismicSystems/enclave#221 (the [network] /
[node] config schema that replaced [root_key] / [domain]); an older node
rejects the new config POST with a 400. The committed dev-stack default in
Pulumi.dev.yaml is seismic-dev_2026-07-14.e570c4.vhd.

  1. Run the one-time genesis ceremony
uv run seismic-tee-network genesis-ceremony \
    --manifest "$NET/network-manifest.json"

It reads all node descriptors from $NET/nodes (skipping the bootnodes.json
that step 3 writes there), verifies every node’s block-0 hash, gathers Summit
keys, builds genesis.toml, and sends it to the cohort.

  1. Smoke-test the cohort

Check block production and the shared tx_io_pk:

for descriptor in "$NET"/nodes/*.json; do
    fqdn=$(jq -r .fqdn "$descriptor")
    echo "=== $(basename "$descriptor")$fqdn ==="

    curl -fsS "https://$fqdn/rpc" \
    -H 'content-type: application/json' \
    --data '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' |
    jq -r '"block: \(.result)"'

    curl -fsS "https://$fqdn/rpc" \
    -H 'content-type: application/json' \
    --data '{"jsonrpc":"2.0","id":1,"method":"seismic_getTeePublicKey","params":[]}' |
    jq -r '"tx_io_pk: \(.result)"'
done

All four tx_io_pk values should match, and block numbers should advance.

Cleanup

uv run seismic-tee-network down \
    --count "$COUNT" \
    --stack-prefix "$PREFIX" \
    --network "$NET"

Because this is a throwaway identity, remove its artifacts afterward if they are not needed:

rm -rf "$NET"

@samlaf
samlaf merged commit b38bf54 into main Jul 22, 2026
1 check passed
@samlaf
samlaf deleted the chore--bump-seismic-node-vhd branch July 22, 2026 21:51
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.

1 participant