- docs/analysis/base-fee-floor.md: the base-fee floors (100 gwei per gas, 10,000 gwei per pgas), B_p 120,000 and S_p 30,000 pgas, the calibrated v1 pgas table (intrinsic 300, modexp 10 + 1 per 10 bytes) from the measured 44 cycles per EVM gas and 9 cycles per pgas, with the arithmetic and a stated price assumption; spec 05 section 5.10. The parameters are implemented on the node fork branch testnet-params (vendor, not in this repository). - docs/testnet/README.md: igneum-testnet-1 (chain id 4462, ports 268xx, frozen genesis 2026-10-05T00:00:00Z with its message and hash, mainnet finality window, every switch from genesis, no override file) and the reset policy. Every value proposed, for the morning sign-off. - docs/plans/history-rewrite.md: G14, the exact git-filter-repo pass, the dry run on a throwaway mirror clone (0 identity hits, 0 secrets, every stamp +0000, 312 commits), what breaks and the order for the morning. - G13: app/igneum-app/src/inputs.rs and igneum-ota-sign sign-inputs / verify-inputs; push-inputs.sh signs payload-inputs.json with the OTA key and pins the node commit (packaging/windows/node-source.pin); windows.yml verifies the signature with the embedded key, the zip, every file and the pin before building and uploads the verified record; fetch-ci-artifacts.sh signs the update manifest only with --sign-manifest <run-id> after re-verifying that run's inputs. test-inputs-signing.sh (16 cases) and tools/ci/check-workflow-shell.mjs. - site: testnet terms on the download section, wallet.html (wallet_addEthereumChain, chain ids 4462/4463, IGN, 18 decimals), the litepaper's app paragraph (MetaMask and the coming Igneum Wallet, no hardware wallet) and the miner fee sentence (no protocol fee; optional 1% in the miner software, off with one flag). node site/build.mjs and the link check pass. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
44 lines
2.4 KiB
Bash
Executable file
44 lines
2.4 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# The payload-inputs manifest writer, shared by push-inputs.sh (the real thing) and test-inputs-signing.sh (the
|
|
# Mac-side test), so the test signs and verifies exactly the shape the runner sees. Format: app/igneum-app/src/inputs.rs
|
|
# (`igneum-payload-inputs/1`): the zip's sha256 and size, every file inside the zip's folder with its sha256 and
|
|
# size, the node fork commit (40 hex) and branch the exes came from, the main repository commit, the build time.
|
|
#
|
|
# source packaging/windows/inputs-manifest.sh
|
|
# write_inputs_manifest <stage-dir> <zip> <node-commit-40hex> <node-branch> <repo-commit-40hex> <out.json>
|
|
#
|
|
# Sorted file names, two-space indentation, one entry per line: the bytes are what gets signed, so the writer is
|
|
# deterministic for the same inputs.
|
|
|
|
inputs_sha256() { shasum -a 256 "$1" | cut -d' ' -f1; }
|
|
inputs_size() { stat -f %z "$1" 2>/dev/null || stat -c %s "$1"; }
|
|
|
|
write_inputs_manifest() {
|
|
local stage="$1" zip="$2" node_commit="$3" node_branch="$4" repo_commit="$5" out="$6"
|
|
[ -d "$stage" ] || { echo "write_inputs_manifest: no stage folder $stage" >&2; return 1; }
|
|
[ -f "$zip" ] || { echo "write_inputs_manifest: no zip $zip" >&2; return 1; }
|
|
case "$node_commit" in [0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]*) [ ${#node_commit} = 40 ] || { echo "write_inputs_manifest: node commit is not 40 hex" >&2; return 1; } ;; *) echo "write_inputs_manifest: node commit is not 40 hex" >&2; return 1 ;; esac
|
|
[ ${#repo_commit} = 40 ] || { echo "write_inputs_manifest: repo commit is not 40 hex" >&2; return 1; }
|
|
{
|
|
echo '{'
|
|
echo ' "format": "igneum-payload-inputs/1",'
|
|
echo " \"built_at\": \"$(date -u +%Y-%m-%dT%H:%M:%SZ)\","
|
|
echo " \"node_source_commit\": \"$node_commit\","
|
|
echo " \"node_source_branch\": \"$node_branch\","
|
|
echo " \"repo_commit\": \"$repo_commit\","
|
|
echo " \"zip\": { \"sha256\": \"$(inputs_sha256 "$zip")\", \"bytes\": $(inputs_size "$zip") },"
|
|
echo ' "files": {'
|
|
local first=1 f name
|
|
while IFS= read -r f; do
|
|
[ -n "$f" ] || continue
|
|
name="$(basename "$f")"
|
|
[ "$name" = ".DS_Store" ] && continue
|
|
[ $first = 1 ] || echo ','
|
|
first=0
|
|
printf ' "%s": { "sha256": "%s", "bytes": %s }' "$name" "$(inputs_sha256 "$f")" "$(inputs_size "$f")"
|
|
done < <(find "$stage" -maxdepth 1 -type f | LC_ALL=C sort)
|
|
echo
|
|
echo ' }'
|
|
echo '}'
|
|
} > "$out"
|
|
}
|