Advance forge rollout, Ethereum rails, and NBC sources

This commit is contained in:
every.channel 2026-04-01 15:58:49 -07:00
parent be26313225
commit 7d84510eac
No known key found for this signature in database
88 changed files with 11230 additions and 302 deletions

View file

@ -0,0 +1,127 @@
#!/usr/bin/env bash
set -euo pipefail
remote="${EVERY_CHANNEL_REALITY_SMOKE_REMOTE:-root@git.every.channel}"
remote_jsonl="${EVERY_CHANNEL_REALITY_SMOKE_JSONL:-/var/lib/every-channel/manifests/la-cbs/video0.m4s.jsonl}"
remote_identity_file="${EVERY_CHANNEL_REALITY_SMOKE_SSH_IDENTITY_FILE:-${HOME}/.ssh/id_ed25519}"
anvil_port="${EVERY_CHANNEL_REALITY_SMOKE_ANVIL_PORT:-8545}"
results_dir="${EVERY_CHANNEL_REALITY_SMOKE_RESULTS_DIR:-./test-results}"
anvil_pk0="0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80"
anvil_pk1="0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d"
anvil_pk2="0x5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a"
mkdir -p "${results_dir}"
anvil_log="${results_dir}/anvil-reality-smoke.log"
deploy_json="${results_dir}/observation-ledger-deploy.json"
result_json="${results_dir}/anvil-reality-smoke.json"
cleanup() {
if [[ -n "${anvil_pid:-}" ]]; then
kill "${anvil_pid}" >/dev/null 2>&1 || true
wait "${anvil_pid}" >/dev/null 2>&1 || true
fi
}
trap cleanup EXIT
anvil --port "${anvil_port}" >"${anvil_log}" 2>&1 &
anvil_pid=$!
for _ in $(seq 1 30); do
if curl -fsS -X POST -H 'content-type: application/json' \
--data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' \
"http://127.0.0.1:${anvil_port}" >/dev/null 2>&1; then
break
fi
sleep 1
done
rpc_url="http://127.0.0.1:${anvil_port}"
owner_file="$(mktemp)"
printf '%s\n' "${anvil_pk0}" >"${owner_file}"
EVERY_CHANNEL_RPC_URL="${rpc_url}" \
EVERY_CHANNEL_PRIVATE_KEY_FILE="${owner_file}" \
EVERY_CHANNEL_OBSERVATION_DEPLOY_OUT="${deploy_json}" \
./scripts/op-stack/deploy-observation-ledger.sh >/dev/null
registry="$(jq -r '.registry' <"${deploy_json}")"
ledger="$(jq -r '.ledger' <"${deploy_json}")"
witness1="$(cast wallet address --private-key "${anvil_pk1}")"
witness2="$(cast wallet address --private-key "${anvil_pk2}")"
cast send "${registry}" "addWitness(address)" "${witness1}" --rpc-url "${rpc_url}" --private-key "${anvil_pk0}" >/dev/null
cast send "${registry}" "addWitness(address)" "${witness2}" --rpc-url "${rpc_url}" --private-key "${anvil_pk0}" >/dev/null
remote_jsonl_escaped="$(printf '%q' "${remote_jsonl}")"
entry="$(ssh \
-i "${remote_identity_file}" \
-o IdentityAgent=none \
-o IdentitiesOnly=yes \
-o BatchMode=yes \
-o ConnectTimeout=10 \
"${remote}" \
"head -n 1 -- ${remote_jsonl_escaped}")"
if [[ -z "${entry}" ]]; then
echo "no remote archive entry found" >&2
exit 1
fi
broadcast_name="$(jq -r '.broadcast_name' <<<"${entry}")"
track_name="$(jq -r '.track_name' <<<"${entry}")"
group_sequence="$(jq -r '.group_sequence' <<<"${entry}")"
received_unix_ms="$(jq -r '.received_unix_ms' <<<"${entry}")"
blake3_hex="$(jq -r '.blake3' <<<"${entry}")"
locator_material="$(jq -c '{relay_url,broadcast_name,track_name,group_sequence,cas_path}' <<<"${entry}")"
stream_hash="$(cast keccak "${broadcast_name}:${track_name}")"
epoch_hash="$(cast keccak "${broadcast_name}:${track_name}:${group_sequence}")"
parent_hash="0x0000000000000000000000000000000000000000000000000000000000000000"
data_root="0x${blake3_hex}"
locator_hash="$(cast keccak "${locator_material}")"
observation_tuple="(${stream_hash},${epoch_hash},${parent_hash},${data_root},${locator_hash},${received_unix_ms},${group_sequence})"
cast send "${ledger}" \
"proposeObservation((bytes32,bytes32,bytes32,bytes32,bytes32,uint64,uint64))" \
"${observation_tuple}" \
--rpc-url "${rpc_url}" \
--private-key "${anvil_pk1}" >/dev/null
observation_hash="$(cast call "${ledger}" \
"hashObservationHeader((bytes32,bytes32,bytes32,bytes32,bytes32,uint64,uint64))(bytes32)" \
"${observation_tuple}" \
--rpc-url "${rpc_url}")"
slot_hash="$(cast call "${ledger}" \
"observationSlot(bytes32,bytes32)(bytes32)" \
"${stream_hash}" "${epoch_hash}" \
--rpc-url "${rpc_url}")"
cast send "${ledger}" "attestObservation(bytes32)" "${observation_hash}" \
--rpc-url "${rpc_url}" \
--private-key "${anvil_pk2}" >/dev/null
finalized="$(cast call "${ledger}" "finalizedObservationBySlot(bytes32)(bytes32)" "${slot_hash}" --rpc-url "${rpc_url}")"
cat >"${result_json}" <<EOF
{
"remote": "${remote}",
"remote_jsonl": "${remote_jsonl}",
"broadcast_name": "${broadcast_name}",
"track_name": "${track_name}",
"group_sequence": ${group_sequence},
"stream_hash": "${stream_hash}",
"epoch_hash": "${epoch_hash}",
"observation_hash": "${observation_hash}",
"finalized_hash": "${finalized}",
"registry": "${registry}",
"ledger": "${ledger}"
}
EOF
if [[ "${finalized}" != "${observation_hash}" ]]; then
echo "observation did not finalize" >&2
exit 1
fi
printf '%s\n' "${result_json}"