From 286be276d117f5d6ae5b24b28e1d596a758d604f Mon Sep 17 00:00:00 2001 From: log Date: Sat, 3 Oct 2026 22:21:04 +0000 Subject: size 45953 --- reveal/v5-000002/check.py | 319 ++++++++++++++++++++++++++++++++++ reveal/v5-000002/manifest.txt | 28 +++ reveal/v5-000002/manifest.txt.ots | Bin 0 -> 619 bytes reveal/v5-000002/r33361012.ct | Bin 0 -> 16584 bytes reveal/v5-000002/r33361012.nostr.json | 1 + reveal/v5-000002/r33361012.tlock | 11 ++ reveal/v5-000002/r33389812.ct | Bin 0 -> 25658 bytes reveal/v5-000002/r33389812.nostr.json | 1 + reveal/v5-000002/r33389812.tlock | 11 ++ reveal/v5-000002/r33476212.ct | Bin 0 -> 6569 bytes reveal/v5-000002/r33476212.nostr.json | 1 + reveal/v5-000002/r33476212.tlock | 11 ++ reveal/v5-000002/r33505012.ct | Bin 0 -> 2589 bytes reveal/v5-000002/r33505012.nostr.json | 1 + reveal/v5-000002/r33505012.tlock | 11 ++ reveal/v5-000002/r33562612.ct | Bin 0 -> 1015 bytes reveal/v5-000002/r33562612.nostr.json | 1 + reveal/v5-000002/r33562612.tlock | 11 ++ reveal/v5-000002/r33620212.ct | 3 + reveal/v5-000002/r33620212.nostr.json | 1 + reveal/v5-000002/r33620212.tlock | 11 ++ reveal/v5-000002/r34513012.ct | Bin 0 -> 16431 bytes reveal/v5-000002/r34513012.nostr.json | 1 + reveal/v5-000002/r34513012.tlock | 11 ++ reveal/v5-000002/r34541812.ct | Bin 0 -> 25482 bytes reveal/v5-000002/r34541812.nostr.json | 1 + reveal/v5-000002/r34541812.tlock | 11 ++ reveal/v5-000002/r34570612.ct | Bin 0 -> 659 bytes reveal/v5-000002/r34570612.nostr.json | 1 + reveal/v5-000002/r34570612.tlock | 11 ++ reveal/v5-000002/r34628212.ct | Bin 0 -> 6653 bytes reveal/v5-000002/r34628212.nostr.json | 1 + reveal/v5-000002/r34628212.tlock | 11 ++ reveal/v5-000002/r34657012.ct | Bin 0 -> 2939 bytes reveal/v5-000002/r34657012.nostr.json | 1 + reveal/v5-000002/r34657012.tlock | 11 ++ reveal/v5-000002/r34714612.ct | Bin 0 -> 1018 bytes reveal/v5-000002/r34714612.nostr.json | 1 + reveal/v5-000002/r34714612.tlock | 11 ++ reveal/v5-000002/r34772212.ct | 3 + reveal/v5-000002/r34772212.nostr.json | 1 + reveal/v5-000002/r34772212.tlock | 11 ++ reveal/v5-000002/r35348212.ct | Bin 0 -> 1012 bytes reveal/v5-000002/r35348212.nostr.json | 1 + reveal/v5-000002/r35348212.tlock | 11 ++ reveal/v5-000002/r35521012.ct | Bin 0 -> 7900 bytes reveal/v5-000002/r35521012.nostr.json | 1 + reveal/v5-000002/r35521012.tlock | 11 ++ reveal/v5-000002/r35693812.ct | Bin 0 -> 1427 bytes reveal/v5-000002/r35693812.nostr.json | 1 + reveal/v5-000002/r35693812.tlock | 11 ++ reveal/v5-000002/r35780212.ct | Bin 0 -> 667 bytes reveal/v5-000002/r35780212.nostr.json | 1 + reveal/v5-000002/r35780212.tlock | 11 ++ reveal/v5-000002/r36500212.ct | Bin 0 -> 1022 bytes reveal/v5-000002/r36500212.nostr.json | 1 + reveal/v5-000002/r36500212.tlock | 11 ++ reveal/v5-000002/r36615412.ct | Bin 0 -> 1558 bytes reveal/v5-000002/r36615412.nostr.json | 1 + reveal/v5-000002/r36615412.tlock | 11 ++ reveal/v5-000002/r36673012.ct | Bin 0 -> 7945 bytes reveal/v5-000002/r36673012.nostr.json | 1 + reveal/v5-000002/r36673012.tlock | 11 ++ reveal/v5-000002/r36845812.ct | Bin 0 -> 1014 bytes reveal/v5-000002/r36845812.nostr.json | 1 + reveal/v5-000002/r36845812.tlock | 11 ++ reveal/v5-000002/r37767412.ct | Bin 0 -> 1718 bytes reveal/v5-000002/r37767412.nostr.json | 1 + reveal/v5-000002/r37767412.tlock | 11 ++ reveal/v5-000002/seal.json | 43 +++++ 70 files changed, 660 insertions(+) create mode 100644 reveal/v5-000002/check.py create mode 100644 reveal/v5-000002/manifest.txt create mode 100644 reveal/v5-000002/manifest.txt.ots create mode 100644 reveal/v5-000002/r33361012.ct create mode 100644 reveal/v5-000002/r33361012.nostr.json create mode 100644 reveal/v5-000002/r33361012.tlock create mode 100644 reveal/v5-000002/r33389812.ct create mode 100644 reveal/v5-000002/r33389812.nostr.json create mode 100644 reveal/v5-000002/r33389812.tlock create mode 100644 reveal/v5-000002/r33476212.ct create mode 100644 reveal/v5-000002/r33476212.nostr.json create mode 100644 reveal/v5-000002/r33476212.tlock create mode 100644 reveal/v5-000002/r33505012.ct create mode 100644 reveal/v5-000002/r33505012.nostr.json create mode 100644 reveal/v5-000002/r33505012.tlock create mode 100644 reveal/v5-000002/r33562612.ct create mode 100644 reveal/v5-000002/r33562612.nostr.json create mode 100644 reveal/v5-000002/r33562612.tlock create mode 100644 reveal/v5-000002/r33620212.ct create mode 100644 reveal/v5-000002/r33620212.nostr.json create mode 100644 reveal/v5-000002/r33620212.tlock create mode 100644 reveal/v5-000002/r34513012.ct create mode 100644 reveal/v5-000002/r34513012.nostr.json create mode 100644 reveal/v5-000002/r34513012.tlock create mode 100644 reveal/v5-000002/r34541812.ct create mode 100644 reveal/v5-000002/r34541812.nostr.json create mode 100644 reveal/v5-000002/r34541812.tlock create mode 100644 reveal/v5-000002/r34570612.ct create mode 100644 reveal/v5-000002/r34570612.nostr.json create mode 100644 reveal/v5-000002/r34570612.tlock create mode 100644 reveal/v5-000002/r34628212.ct create mode 100644 reveal/v5-000002/r34628212.nostr.json create mode 100644 reveal/v5-000002/r34628212.tlock create mode 100644 reveal/v5-000002/r34657012.ct create mode 100644 reveal/v5-000002/r34657012.nostr.json create mode 100644 reveal/v5-000002/r34657012.tlock create mode 100644 reveal/v5-000002/r34714612.ct create mode 100644 reveal/v5-000002/r34714612.nostr.json create mode 100644 reveal/v5-000002/r34714612.tlock create mode 100644 reveal/v5-000002/r34772212.ct create mode 100644 reveal/v5-000002/r34772212.nostr.json create mode 100644 reveal/v5-000002/r34772212.tlock create mode 100644 reveal/v5-000002/r35348212.ct create mode 100644 reveal/v5-000002/r35348212.nostr.json create mode 100644 reveal/v5-000002/r35348212.tlock create mode 100644 reveal/v5-000002/r35521012.ct create mode 100644 reveal/v5-000002/r35521012.nostr.json create mode 100644 reveal/v5-000002/r35521012.tlock create mode 100644 reveal/v5-000002/r35693812.ct create mode 100644 reveal/v5-000002/r35693812.nostr.json create mode 100644 reveal/v5-000002/r35693812.tlock create mode 100644 reveal/v5-000002/r35780212.ct create mode 100644 reveal/v5-000002/r35780212.nostr.json create mode 100644 reveal/v5-000002/r35780212.tlock create mode 100644 reveal/v5-000002/r36500212.ct create mode 100644 reveal/v5-000002/r36500212.nostr.json create mode 100644 reveal/v5-000002/r36500212.tlock create mode 100644 reveal/v5-000002/r36615412.ct create mode 100644 reveal/v5-000002/r36615412.nostr.json create mode 100644 reveal/v5-000002/r36615412.tlock create mode 100644 reveal/v5-000002/r36673012.ct create mode 100644 reveal/v5-000002/r36673012.nostr.json create mode 100644 reveal/v5-000002/r36673012.tlock create mode 100644 reveal/v5-000002/r36845812.ct create mode 100644 reveal/v5-000002/r36845812.nostr.json create mode 100644 reveal/v5-000002/r36845812.tlock create mode 100644 reveal/v5-000002/r37767412.ct create mode 100644 reveal/v5-000002/r37767412.nostr.json create mode 100644 reveal/v5-000002/r37767412.tlock create mode 100644 reveal/v5-000002/seal.json diff --git a/reveal/v5-000002/check.py b/reveal/v5-000002/check.py new file mode 100644 index 0000000..7f86b8d --- /dev/null +++ b/reveal/v5-000002/check.py @@ -0,0 +1,319 @@ +#!/usr/bin/env python3 +""" +Check Echo's self-revealing ledger seals (`sha256-live-v5`) without trusting Echo. + + python3 check.py SEAL_DIR [SEAL_DIR ...] [--tle PATH] [--offline] + +Needs Python 3.11+, the `cryptography` package (ChaCha20-Poly1305) and drand's `tle` binary +(`go install github.com/drand/tlock/cmd/tle@v1.2.0`). It imports nothing of Echo's: a checker that needs the thing it +checks is not a checker, which is why it is copied, whole, into every seal directory. + +Each SEAL_DIR is one seal: `manifest.txt` (the exact text the seal's digest is the sha256 of), `seal.json`, and per +reveal group `r.tlock` (the group's key, time-locked to that drand round) and `r.ct` (the group, +encrypted under that key), and, once the group has been revealed, `r.held.json` (how many of its withheld +lines Echo publishes no salt for, and why) and any number of `r.salts..json`: each the salts of withheld +lines Echo decided to open and had not erased, each with its line. `manifest.txt.ots`, when present, is an +OpenTimestamps proof over the manifest: `ots verify manifest.txt.ots` checks it against Bitcoin. + +What it checks, from the files alone and the beacon: + 1. the manifest hashes to the seal's digest, and each seal names the one before it (when several are given); + 2. each group's ciphertext and locked key hash to what the manifest commits, and the key is locked to the + manifest's round of the manifest's chain; + 3. for every group whose round the beacon has signed: the round's signature as each relay serves it, the key + unlocked with it, the group decrypted, its bytes hashed to the committed digest, its lines and withheld lines + counted against the committed counts, its lines in id order, and every line's reveal day recomputed from its + own settling instant under the seal's named rule (`utc-day-after-close`: the first 00:00 UTC after + `settles_at`, else after the deadline); + 4. for every opened group with releases: each names this seal, round and group and its own number; each released + salt and line hash to the withheld line's committed hash; no line is settled twice; and a hold, where there is + one, names the group and counts no more lines than are withheld; + 5. once every group of every seal from the first is open and every withheld line released: the union of their v4 + lines, sorted by id, rehashes to the v4 digest the last seal follows, so no sealed forecast was left out of a + reveal. Where a withheld line has no released salt (held, erased, or not yet released) that digest cannot be + rebuilt, and this says so and why: what is checked then is only that every forecast the v4 seal covers is in a + group, counted. A withheld line is never called verified. + +A group whose round is not yet signed, or whose withheld lines have no release yet, is reported as pending or held, +not as a failure. Exit 0 when everything checkable passed, 1 when anything did not match. +""" +from __future__ import annotations + +import argparse +import base64 +import hashlib +import json +import re +import subprocess +import sys +import urllib.request +import zlib +from datetime import datetime, timedelta, timezone +from pathlib import Path + + +def sha(b: bytes) -> str: + return hashlib.sha256(b).hexdigest() + + +def parse_manifest(text: str) -> dict: + lines = text.split("\n") + if lines[0] != "sha256-live-v5": + raise ValueError(f"not a v5 manifest: {lines[0]!r}") + m = {"groups": []} + for ln in lines[1:]: + word, _, rest = ln.partition(" ") + if word == "prev": + m["prev"] = None if rest == "-" else rest + elif word == "follows": + seq, digest, n = rest.split(" ") + m["follows"] = {"seq": int(seq), "digest": digest, "n": int(n)} + elif word == "covers": + m["covers"] = rest.split(" ") + elif word == "variant": + m["variant"] = json.loads(rest) + elif word == "counts": + m["n"], m["n_withheld"], m["n_groups"] = map(int, rest.split(" ")) + elif word == "group": + r, at, n, w, digest, ct, key, late = rest.split(" ") + m["groups"].append({"round": int(r), "reveal_at": at, "n": int(n), "n_withheld": int(w), + "digest": digest, "ct": ct, "key": key, "late": late == "1"}) + else: + raise ValueError(f"unknown manifest line {ln!r}") + return m + + +def stanza(locked: str) -> tuple[int, str] | None: + body = "".join(ln for ln in locked.strip().splitlines() if not ln.startswith("-----")) + m = re.search(rb"-> tlock (\d+) ([0-9a-f]{64})", base64.b64decode(body)) + return (int(m.group(1)), m.group(2).decode()) if m else None + + +def round_at(beacon: dict, at: datetime) -> int: + t = at.timestamp() + whole = int(t) + (t != int(t)) + if whole <= beacon["genesis_time"]: + return 1 + return -(-(whole - beacon["genesis_time"]) // beacon["period"]) + 1 + + +def reveal_day(closes: datetime) -> datetime: + d = closes.astimezone(timezone.utc).date() + timedelta(days=1) + return datetime(d.year, d.month, d.day, tzinfo=timezone.utc) + + +def parse_line(ln: str) -> dict: + """One line: `id|issued_at|deadline|forecaster|p|settlement|anchoropen:` or `...withheld:`.""" + numeric, tab, text = ln.partition("\t") + if not tab: + raise ValueError("a line without its text layer") + fid, issued, deadline, forecaster, p, rest = numeric.split("|", 5) + dec = json.JSONDecoder() + settle, end = dec.raw_decode(rest) + if rest[end] != "|": + raise ValueError("settlement not followed by the anchor") + anchor, end2 = dec.raw_decode(rest, end + 1) + if end2 != len(rest): + raise ValueError("trailing bytes after the anchor") + out = {"id": int(fid), "issued_at": issued, "deadline": deadline, "forecaster": forecaster, "p": float(p), + "settlement": settle, "anchor": anchor} + if text.startswith("open:"): + out["v4"] = text[5:] + if not out["v4"].startswith(f"{fid}|"): + raise ValueError("the text layer is another forecast's line") + elif re.fullmatch(r"withheld:[0-9a-f]{64}", text): + out["withheld"] = text[9:] + else: + raise ValueError(f"unknown text layer {text[:20]!r}") + return out + + +def beacon_round(beacon: dict, rnd: int) -> dict: + """What each relay serves for the round: its signature, or why there is none.""" + out = {} + for relay in beacon["relays"]: + url = f"{relay.rstrip('/')}/{beacon['chain_hash']}/public/{rnd}" + try: + with urllib.request.urlopen(url, timeout=20) as r: # noqa: S310 — the seal's own relays + out[relay] = json.loads(r.read()).get("signature") + except Exception as exc: # noqa: BLE001 — report, go on + out[relay] = f"unavailable ({type(exc).__name__})" + return out + + +def unlock(tle: str, beacon: dict, locked: str) -> bytes | None: + """The key, or None while the round is unsigned. Each relay is tried in turn.""" + errors = [] + for relay in beacon["relays"]: + r = subprocess.run([tle, "-d", "-n", relay.rstrip("/") + "/", "-c", beacon["chain_hash"]], + input=locked.encode(), capture_output=True, timeout=120, check=False) + if r.returncode == 0: + return r.stdout + if b"too early" in r.stderr: + return None + errors.append(f"{relay}: {r.stderr.decode(errors='replace').strip()[-160:]}") + raise RuntimeError("; ".join(errors)) + + +def release(d: Path, seal_digest: str, g: dict, lines: list[dict], say) -> tuple[dict[int, str], int, str | None]: + """An opened group's releases and hold, checked against the group: (id -> the v4 line each released salt opens, + how many withheld lines were opened and found erased, and the hold's reason where Echo published one).""" + r = g["round"] + shut = {x["id"]: x["withheld"] for x in lines if "withheld" in x} + out, erased, seen, bad = {}, set(), set(), [] + files = sorted(d.glob(f"r{r}.salts.*.json"), key=lambda p: int(p.name.split(".")[-2])) + for k, path in enumerate(files): + rel = json.loads(path.read_text()) + say(rel.get("format") == "echo-reveal-salts/1" and rel.get("seal") == seal_digest + and rel.get("round") == r and rel.get("group") == g["digest"] and rel.get("n") == k + and path.name == f"r{r}.salts.{k}.json", + f"round {r}: release {k} names this seal, round and group, and follows the one before") + for x in rel.get("released", []): + i, line = x["id"], x["line"] + opens = (i in shut and i not in seen and line.startswith(f"{i}|") + and sha(bytes.fromhex(x["salt"]) + line.encode()) == shut[i]) + if opens: + out[i] = line + else: + bad.append(i) + seen.add(i) + for i in rel.get("erased", []): + if i not in shut or i in seen: + bad.append(i) + erased.add(i) + seen.add(i) + if files: + say(not bad, f"round {r}: {len(out)} released lines open their committed hashes, {len(erased)} opened lines " + f"found erased, none settled twice" + (f" ({len(bad)} do not, e.g. {bad[:3]})" if bad else "")) + why = None + hold = d / f"r{r}.held.json" + if hold.exists(): + h = json.loads(hold.read_text()) + say(h.get("format") == "echo-reveal-held/1" and h.get("seal") == seal_digest and h.get("round") == r + and h.get("group") == g["digest"] and 0 <= h.get("held", -1) <= len(shut), + f"round {r}: the hold names this seal, round and group, and counts at most its withheld lines") + why = str(h.get("why") or "no reason given") + left = len(shut) - len(out) - len(erased) + if left: + print(f" .... round {r}: {left} withheld lines have no released salt: counted, not rehashed" + + (f" (Echo publishes none: {why})" if why else " (no release or hold published yet)")) + return out, len(erased), why + + +def check(dirs: list[Path], tle: str = "tle", offline: bool = False) -> int: + from cryptography.hazmat.primitives.ciphers.aead import ChaCha20Poly1305 + + failed, pending, withheld, held, erased, union = 0, 0, 0, 0, 0, {} + reasons: set[str] = set() + first_prev = "unset" + + def say(ok: bool, what: str) -> None: + nonlocal failed + failed += not ok + print(f" {'PASS' if ok else 'FAIL'} {what}") + + prev_digest = None + seals = [] + for d in dirs: + text = (d / "manifest.txt").read_bytes() + row = json.loads((d / "seal.json").read_text()) + seals.append((d, text, row, parse_manifest(text.decode()))) + seals.sort(key=lambda s: s[2]["seq"]) + last = None + for i, (d, text, row, m) in enumerate(seals): + print(f"v5 seal {row['seq']}: {m['n']} forecasts in {m['n_groups']} reveal groups, {m['n_withheld']} withheld, " + f"follows v4 seal {m['follows']['seq']}") + say(sha(text) == row["digest"], f"sha256(manifest.txt) is the seal's digest {row['digest'][:16]}…") + say(len(m["groups"]) == m["n_groups"] and sum(g["n"] for g in m["groups"]) == m["n"] + and sum(g["n_withheld"] for g in m["groups"]) == m["n_withheld"], "the manifest's counts add up") + if i == 0: + first_prev = m["prev"] + else: + say(m["prev"] == prev_digest, "it names the seal before it") + prev_digest, last = row["digest"], m + b = m["variant"]["beacon"] + for g in m["groups"]: + r = g["round"] + ct, locked = (d / f"r{r}.ct").read_bytes(), (d / f"r{r}.tlock").read_text() + say(sha(ct) == g["ct"] and sha(locked.encode()) == g["key"], + f"round {r}: the ciphertext and the locked key are the committed ones") + say(stanza(locked) == (r, b["chain_hash"]), f"round {r}: the key is locked to that round of that chain") + say(round_at(b, datetime.fromisoformat(g["reveal_at"])) == r, f"round {r} is signed at {g['reveal_at']}") + if not offline: + sigs = beacon_round(b, r) + good = {s for s in sigs.values() if s and not s.startswith("unavailable")} + print(f" .... round {r} signature from {len(sigs)} relays: " + + ("not yet signed" if not good else f"{len(good)} distinct: {min(good)[:24]}…")) + if len(good) > 1: + say(False, f"round {r}: relays disagree on its signature") + key = unlock(tle, b, locked) + if key is None: + pending += 1 + print(f" .... round {r} ({g['reveal_at']}) not yet signed: {g['n']} forecasts stay locked") + continue + try: + plain = zlib.decompress(ChaCha20Poly1305(key).decrypt(b"\x00" * 12, ct, None)) + except Exception as exc: # noqa: BLE001 — a finding, not a crash + say(False, f"round {r}: the ciphertext does not open under its key ({type(exc).__name__})") + continue + say(sha(plain) == g["digest"], f"round {r}: the opened group hashes to its committed digest") + lines = [parse_line(ln) for ln in plain.decode().split("\n")] + ids = [x["id"] for x in lines] + say(len(lines) == g["n"] and sum("withheld" in x for x in lines) == g["n_withheld"], + f"round {r}: {len(lines)} lines, {g['n_withheld']} withheld, as committed") + say(ids == sorted(set(ids)), f"round {r}: lines in id order, none twice") + due = datetime.fromisoformat(g["reveal_at"]) + if m["variant"].get("reveal") == "utc-day-after-close": + wrong = [x["id"] for x in lines if reveal_day(datetime.fromisoformat( + (x["settlement"] or {}).get("settles_at") or x["deadline"])) != due] + say(not wrong, f"round {r}: every line belongs to this reveal day" + + (f" ({len(wrong)} do not, e.g. {wrong[:3]})" if wrong else "")) + else: + print(f" .... round {r}: reveal rule {m['variant'].get('reveal')!r} is not one this checker " + "recomputes; which lines belong to the day is unchecked") + opened, gone, why = release(d, row["digest"], g, lines, say) + for x in lines: + if x["id"] in union: + say(False, f"forecast {x['id']} is in two groups") + union[x["id"]] = x.get("v4") or opened.get(x["id"]) + shut = sum(1 for x in lines if "withheld" in x and x["id"] not in opened) - gone + erased += gone + if why is None: + withheld += shut + else: + held += shut + reasons.add(why) + if last is not None: + if first_prev is not None: + print(" .... completeness: the first seal given is not the chain's first; give every seal from it") + elif pending: + print(f" .... completeness: {pending} groups still locked; it is checkable once all have opened") + elif withheld or held or erased: + told = [f"{withheld} withheld lines not yet released"] if withheld else [] + told += ([f"{held} withheld lines held, for which Echo publishes no salt ({'; '.join(sorted(reasons))})"] + if held else []) + told += [f"{erased} erased stay hashes"] if erased else [] + print(f" .... completeness: {', '.join(told)}: those lines can be counted but not rehashed, so the v4 " + f"lines cannot all be rebuilt and the v4 digest is NOT checked; {len(union)} forecasts against " + f"the v4 seal's {last['follows']['n']}") + say(len(union) == last["follows"]["n"], "every forecast the v4 seal covers is in a group, counted") + else: + got = sha("\n".join(union[k] for k in sorted(union)).encode()) + say(got == last["follows"]["digest"] and len(union) == last["follows"]["n"], + f"the union of {len(union)} lines rehashes to v4 seal {last['follows']['seq']}'s digest") + print("\nNOT VERIFIED" if failed else f"\nVERIFIED{f' ({pending} groups not yet revealed)' if pending else ''}") + return 1 if failed else 0 + + +def main(argv: list[str]) -> int: + ap = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter) + ap.add_argument("dirs", nargs="*", default=[str(Path(__file__).resolve().parent)], + help="seal directories, any order (default: the one this script sits in)") + ap.add_argument("--tle", default="tle", help="the tle binary that unlocks a key once its round is signed") + ap.add_argument("--offline", action="store_true", + help="do not fetch each round's signature from the relays for display; tle still asks them") + args = ap.parse_args(argv) + return check([Path(d) for d in args.dirs], tle=args.tle, offline=args.offline) + + +if __name__ == "__main__": + raise SystemExit(main(sys.argv[1:])) diff --git a/reveal/v5-000002/manifest.txt b/reveal/v5-000002/manifest.txt new file mode 100644 index 0000000..6c0e7dc --- /dev/null +++ b/reveal/v5-000002/manifest.txt @@ -0,0 +1,28 @@ +sha256-live-v5 +prev ab1c64ee208cedf8ce14e1e4a1568de02e03578c9af283db73392ad2e61c90e8 +follows 32 c753d21baf783fb9c3da328f4cad51b86947894db86b654cbf8f7b6f32e46b12 39080 +covers 2026-10-03T01:35:21.431130Z 2026-10-03T22:17:20.526176Z +variant {"beacon":{"chain_hash":"52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971","genesis_time":1692803367,"period":3,"relays":["https://api.drand.sh","https://api2.drand.sh","https://api3.drand.sh","https://drand.cloudflare.com"],"scheme":"bls-unchained-g1-rfc9380"},"cipher":"chacha20poly1305-zlib6-nonce0","gate":{"default":"withheld: a kept salt can be released later; an opened text can never be withdrawn","opened":"none","why":"no decision by Echo yet"},"line":"numericopen: | numericwithheld:sha256(salt||v4 line)","reveal":"utc-day-after-close","salts":"key ring: one content a seal, one part a line","tool":{"name":"tle","sha256":"69157d8c14a1d390d1b7744946288f83d4b10748471d5447f9abb77a5902c541","version":"tlock v1.2.0 -- github.com/drand/tlock"}} +counts 2174 2174 22 +group 33361012 2026-10-25T00:00:00.000000Z 291 291 33adfebec2f854fa1070685207b874977af0c1172aeda9abe43d12a620020dba c1d3ba64b469d4f3930f47d8db07f2c9bbcf49833e993b98603e65f4b68b2f67 356bff0bcd1b94342a24559393e73c5e022f910bc32399a42259e65c0b3e0483 0 +group 33389812 2026-10-26T00:00:00.000000Z 444 444 87a31a73c6a60a6b4ad89c784b74d98ec10313574c7300c613ed37a8565a9fec de6b6b2434d11e40d54ec21b781a77b30635c8970045dca5c9c825e2630faa7c f32416b78810add206d76bcfbec55d727cb835de8a725559de59cbacc096fd50 0 +group 33476212 2026-10-29T00:00:00.000000Z 108 108 5fe17b9fc257f4f8994f1c273841645e81f00eea9e6334e71c32e01ec552006c ab79e3e972e4bbbce2826e574d68c431fec7f2c2caf48d7a7827d4c2b364a384 f2b4f9f6f1165c9525658bb89c829c0834c22e26213ed9b6788a1484145678e1 0 +group 33505012 2026-10-30T00:00:00.000000Z 39 39 f704607263411afb1a1a558d811bbedceea9d16103c6202dabeaa04f97d2021b dcf99e81a6730946afdfe73fd5d7e6647935bf4c99c2278e1ecce933605f07da 70e08e0fc3ea761314b1ffbe46971944fbf1148b4d140b6d58fe0ef3d3c6df15 0 +group 33562612 2026-11-01T00:00:00.000000Z 12 12 0994e360bc9e2bf894101d96a5805d45ad225e7beacac4dcaa93bfa031717ddc e30e25378b7274fd86cf1b7773f91f17179c56cf965b7bcd81191094fea2dc0b 0a3f6a6bed93c89fca64d60b6fcd79bebe3db91c55b453096930027a6e27e663 0 +group 33620212 2026-11-03T00:00:00.000000Z 8 8 4632d65ee69b7cf16df62373c419f258221d7f0a5bcd80e928a6ee4bcc662bcb 9434590b57d4a7a5d313d2e40dc314f4d9b870a65962432a2b2b2741ac0b874f e1a06a3fbbc2fecd2559219f8df3a7107eb792ee916c8264178863dc5f0c5cb3 0 +group 34513012 2026-12-04T00:00:00.000000Z 288 288 c896e58fc3bc1b740a5f160e2858d5ab7c94794b50b225b6d500f25598f20599 11bb92aa82ec56a3e4ac532b9be3b22ccd1146ab1af59e23f3e61749c60fa078 8ace916e2226f12ec6855595258f4a83c5afae035a8fadcbf9891257c4b03b0b 0 +group 34541812 2026-12-05T00:00:00.000000Z 438 438 2b440599fe95f65b753699069e589ea5e83aa1dc533b9e535848276cfa58d619 3fd2d3d1aea9ebe16dd6ad3575a14432b156b029f6cc7040799f796e68f497df 125a5f156d05cfc83d10ae8bd053955ccb6ed8bb7851c31367feea5e44c99d79 0 +group 34570612 2026-12-06T00:00:00.000000Z 6 6 8eb2fb8cd956fc87939d6570bcb42c0715270868138ac61c5ab57211c357202c b0b0854bacd39d2d597c6475c2d83fbb1eca38e89bc31b56ccde2936d8d27db9 b7fb8e95aa6b4e3b53b0704252e91f130d5b3cdc0553fe0e2f4e8852afe50630 0 +group 34628212 2026-12-08T00:00:00.000000Z 108 108 011bea7f2b79c4610c2e38bb8eb32f49fb5a4dbd22502804b3bcfaa85dbd77e0 98fc8fda5d771230319168e7069efbc41c1e2cab0e1dc2c091f6401008184e82 b87e80b268ebc780178d06f2ef7cf7fc296875f0cfd1f738e411233bb1bd06c0 0 +group 34657012 2026-12-09T00:00:00.000000Z 45 45 d5226dbf682ad934ac95962f5233ef6841d35ab7a4270421b85bc5c00ac26cae 5f113077e0f1b0abdc1209a380e115b5d5f651d939757252d6e8b4d7b81b7273 5744269fd804d01a0993edb26842ed800a06e4afa19501973bd6967e1553ea53 0 +group 34714612 2026-12-11T00:00:00.000000Z 12 12 d29e4a80129238f0f08c3a6a332c063d06a47770bef77c1d3733b6e424afc3e4 b9540491bbac83f80f988b90e3b54d0658ff7e6b02d6248d0a9adea3f5b4fc6b 3b42ef4b52a1622834b47db980794092f2de7bb367ebe4f2a55b3433c78832c9 0 +group 34772212 2026-12-13T00:00:00.000000Z 6 6 2b30ede949fd76117be1f2f5ec17834437f4c8fc8cf72c17ea71dbb9127d7236 dc6b2589e6887888285e9361347badeb1f3d89d23a1217b8e183632ed768322d 369867945a523e1ea9a18c74e3b8be931089cc2a8cfb9246d92018da8bf435ad 0 +group 35348212 2027-01-02T00:00:00.000000Z 12 12 d2b3ad6929abc0a3c0275b744fa851946d1ee3b4d5202a55870386278b82ceee 46cd2ce16f3c261eb48199c3a4214ba8ed274637114bb37eded7d060196f7658 dc5701f8d47c52ef23c23efc202efa1393d4c87a73886542637bdef387b0a6f3 0 +group 35521012 2027-01-08T00:00:00.000000Z 132 132 fed49efccf48deaff0c361e0dec30e3c03bae988f3c13fbd8204ee2a5755b7d6 809b9917d439f7ca5e0d18eb85eea114acd88d095c2dd776922a4c587c6deda1 a9259c906c2424228784c3bf229e91dfd011e8a73be581209fb3c4b6684dc0f0 0 +group 35693812 2027-01-14T00:00:00.000000Z 18 18 a7f40385a9ae95d125e065b46a80bb354eddb4797f48207991ad6f103891e7a5 d28d5df1d6bd5de73aade5412ca6dfe1b3d42aaed2ea660ad28eb19d57174646 8ff734953009fc583448f87341a2a64ca222ae91eac4aee970a3fd62a0952556 0 +group 35780212 2027-01-17T00:00:00.000000Z 6 6 915ee4582b257a3f3ba754c38562ad1fe7753a3eb22a534cf2222e08ba860525 f3c692c4e52e809cbbfcdf4ef2f42a9155e62cd258bc14f19fa7b4611def66c0 ad65f9727014f7e466beb8964a23ab8a3259ab3d314625f9bc1e5183911ce20e 0 +group 36500212 2027-02-11T00:00:00.000000Z 12 12 4697183c5f927f7e1bf7ab84c85b0b895b6a2a33a05e6088fb2a905673e5e9b8 ec69aab7edd474f898de8fd15dd4d8f96f4f283ed29a20bff1081ffff0a8b6ec 71db0fc0619441ad4925c3e283745b922744fb9713b664b53e30c9bc436d271d 0 +group 36615412 2027-02-15T00:00:00.000000Z 21 21 421d17c9d430c0353b60aff3229a511bfb588c6a87e5186974da748af19d3e00 777d6d62ab195bad30c098626bbee61f1b2f22b004492d1b4d9df41573f60895 5bb57f3b125ff30ef2860539240006d8fed7bd0e6d4fbcccbc6b95fa2a147db8 0 +group 36673012 2027-02-17T00:00:00.000000Z 132 132 f254febf89dba964eacbe2821d71dce5181eb38453823843ce73a7e0035dcd99 198a3b4d9cb0128cd775ac47f3f0ca91313ae9fc16f196e96b29969d798351a8 3d1bc4918bbc064024ba00441163854f9ed39033308fccc4335565ca5654b58e 0 +group 36845812 2027-02-23T00:00:00.000000Z 12 12 62a55726e177643b25c0966884a9ab4b50440f1c97b747abb15e937259047808 1bd131a9efb6129e803c04792e30900814554a6e34c8d992373f0576f3b31f4e 2731db8d2d5ca76156d253936b1186264568a670b890365f1455e5a9c37a42e4 0 +group 37767412 2027-03-27T00:00:00.000000Z 24 24 a3ffbbdcb088e96e83718ccd880c78a957e796687ccc7b6671b3f34b239f0c9c 80b8c82bc7dc9cdd2831421a4f41a1988485a74e00e3e2ce8335b4aec34da015 7ef717cc6657f189bf014dac829acbdb8985262ae0df5b3c40101b8aceeb287d 0 \ No newline at end of file diff --git a/reveal/v5-000002/manifest.txt.ots b/reveal/v5-000002/manifest.txt.ots new file mode 100644 index 0000000..afcf82c Binary files /dev/null and b/reveal/v5-000002/manifest.txt.ots differ diff --git a/reveal/v5-000002/r33361012.ct b/reveal/v5-000002/r33361012.ct new file mode 100644 index 0000000..1e363c0 Binary files /dev/null and b/reveal/v5-000002/r33361012.ct differ diff --git a/reveal/v5-000002/r33361012.nostr.json b/reveal/v5-000002/r33361012.nostr.json new file mode 100644 index 0000000..14b53dd --- /dev/null +++ b/reveal/v5-000002/r33361012.nostr.json @@ -0,0 +1 @@ +{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzMzYxMDEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKZ0UwQllyRE5JU0NkL1FrUkxadzNhQkZKL0hyZlBXUC9TSWlwRk9x\nNWlJQkRINzh5S0xacU5VNG8vVHR4NGpZTApBUUtmcjR6WDJ3S29oeW5NamNyaDFv\nRWRwbUFtNUZlc1RmT3MvSFh3QjNJM0IzMkw3SzdDVkRITloydHJmR2taCmlFTXdT\ncGxtNlpFbzd5Y3lyRy9BYUZSM25ZaFRmM21DZ2diTTc1aHowV0EKLS0tIFpyZExG\nci80b1VaZ3VmWmo0L0VpTkh4NCtqWi9FeDdYd2daOGxXVE9MV28KPFxSj3yFYPJj\nleyJCnLOI51kys2DyGxzPGbd8ktjR+bH52F3XmhtIg/zD/+CVabt0Slp/+/qF/qi\n8EvLgJfUCg==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","33361012"],["reveal_at","2026-10-25T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","33adfebec2f854fa1070685207b874977af0c1172aeda9abe43d12a620020dba"],["ct","c1d3ba64b469d4f3930f47d8db07f2c9bbcf49833e993b98603e65f4b68b2f67"],["seal","4f2df0555093ef3febcf78c4eb30adb2dbb5fb63cfc55d458d4c5d1ca3c734eb"]]} diff --git a/reveal/v5-000002/r33361012.tlock b/reveal/v5-000002/r33361012.tlock new file mode 100644 index 0000000..6135b4d --- /dev/null +++ b/reveal/v5-000002/r33361012.tlock @@ -0,0 +1,11 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzMzYxMDEyIDUyZGI5YmE3 +MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw +MGM4NGU5NzEKZ0UwQllyRE5JU0NkL1FrUkxadzNhQkZKL0hyZlBXUC9TSWlwRk9x +NWlJQkRINzh5S0xacU5VNG8vVHR4NGpZTApBUUtmcjR6WDJ3S29oeW5NamNyaDFv +RWRwbUFtNUZlc1RmT3MvSFh3QjNJM0IzMkw3SzdDVkRITloydHJmR2taCmlFTXdT +cGxtNlpFbzd5Y3lyRy9BYUZSM25ZaFRmM21DZ2diTTc1aHowV0EKLS0tIFpyZExG +ci80b1VaZ3VmWmo0L0VpTkh4NCtqWi9FeDdYd2daOGxXVE9MV28KPFxSj3yFYPJj +leyJCnLOI51kys2DyGxzPGbd8ktjR+bH52F3XmhtIg/zD/+CVabt0Slp/+/qF/qi +8EvLgJfUCg== +-----END AGE ENCRYPTED FILE----- diff --git a/reveal/v5-000002/r33389812.ct b/reveal/v5-000002/r33389812.ct new file mode 100644 index 0000000..feb1639 Binary files /dev/null and b/reveal/v5-000002/r33389812.ct differ diff --git a/reveal/v5-000002/r33389812.nostr.json b/reveal/v5-000002/r33389812.nostr.json new file mode 100644 index 0000000..ea51c76 --- /dev/null +++ b/reveal/v5-000002/r33389812.nostr.json @@ -0,0 +1 @@ +{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzMzg5ODEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKaWt5aGdxd01tNEM3cUhPckgxKzNlTndhVzZTd0x4VUlmaWZIK2tH\nY0s3N2RSTHd6Y3pZZzRZT0dxUjJnZG1XYwpESEdrejNJTlBMTnhIMHVhZEsxaDBt\ncXp4RFFjTDhnQXZFNjFXdVNMbUlBci9HVklibXdSSFBITDFCQWhlWFpDClZuUUdR\nY3dzQVc5ZU93SmZTcFJMMkVBVXRmbWxhOWtGdlpGSCtkL283c0kKLS0tIGFFdGp3\nZUQ1TUVIVHRwazcyWUZHeGpXeFNyQm5lL2JXRzVQMGhUcTYya0EKvbCZ1WrpVUOH\nfsGHp0Mvlh/jSd4icokH2QsGRWde3VaNgZbQ5LTDkIZvBD1nhQhQsmtTwIrmKOid\n9FuXpz8Shg==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","33389812"],["reveal_at","2026-10-26T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","87a31a73c6a60a6b4ad89c784b74d98ec10313574c7300c613ed37a8565a9fec"],["ct","de6b6b2434d11e40d54ec21b781a77b30635c8970045dca5c9c825e2630faa7c"],["seal","4f2df0555093ef3febcf78c4eb30adb2dbb5fb63cfc55d458d4c5d1ca3c734eb"]]} diff --git a/reveal/v5-000002/r33389812.tlock b/reveal/v5-000002/r33389812.tlock new file mode 100644 index 0000000..e5dbf60 --- /dev/null +++ b/reveal/v5-000002/r33389812.tlock @@ -0,0 +1,11 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzMzg5ODEyIDUyZGI5YmE3 +MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw +MGM4NGU5NzEKaWt5aGdxd01tNEM3cUhPckgxKzNlTndhVzZTd0x4VUlmaWZIK2tH +Y0s3N2RSTHd6Y3pZZzRZT0dxUjJnZG1XYwpESEdrejNJTlBMTnhIMHVhZEsxaDBt +cXp4RFFjTDhnQXZFNjFXdVNMbUlBci9HVklibXdSSFBITDFCQWhlWFpDClZuUUdR +Y3dzQVc5ZU93SmZTcFJMMkVBVXRmbWxhOWtGdlpGSCtkL283c0kKLS0tIGFFdGp3 +ZUQ1TUVIVHRwazcyWUZHeGpXeFNyQm5lL2JXRzVQMGhUcTYya0EKvbCZ1WrpVUOH +fsGHp0Mvlh/jSd4icokH2QsGRWde3VaNgZbQ5LTDkIZvBD1nhQhQsmtTwIrmKOid +9FuXpz8Shg== +-----END AGE ENCRYPTED FILE----- diff --git a/reveal/v5-000002/r33476212.ct b/reveal/v5-000002/r33476212.ct new file mode 100644 index 0000000..c24c760 Binary files /dev/null and b/reveal/v5-000002/r33476212.ct differ diff --git a/reveal/v5-000002/r33476212.nostr.json b/reveal/v5-000002/r33476212.nostr.json new file mode 100644 index 0000000..a809ea5 --- /dev/null +++ b/reveal/v5-000002/r33476212.nostr.json @@ -0,0 +1 @@ +{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNDc2MjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKa1A3am0xUXJEWGdqdW5RTDEyTFpzazd2d0pLZHVwQitKWmZrQVhz\nZkJ5SFZiQVdSQTVHRVFDa0JhUCtwK2tuZQpCUmMzS3BUbGJZSlRjNzhlS3VFWjFu\nRVMyNXFDazZ6a2orVHJsYWpuS0VjcGtTZ0tjVGxXVG0rMkJNQ29EcEl6CmNhUnJS\nd3pjTmNaUDJLWXhVbmZCd3U2d3A3YXdJOTZ2MEw5eUFocG9GQ1kKLS0tIGQ0VFhJ\nUDE1RHRHTStiOEI2enhneUFtcGFVSzdzc2hvbGhuNWlDeUNvdEUK0OYskP0fEdgP\nRrvWFbjCr3brjM5wsYbm2C/ma9ApUssXUibC4pJKrrNnd2FLpi2Ziyy5gEt7vdeQ\n3cAnx+iDng==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","33476212"],["reveal_at","2026-10-29T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","5fe17b9fc257f4f8994f1c273841645e81f00eea9e6334e71c32e01ec552006c"],["ct","ab79e3e972e4bbbce2826e574d68c431fec7f2c2caf48d7a7827d4c2b364a384"],["seal","4f2df0555093ef3febcf78c4eb30adb2dbb5fb63cfc55d458d4c5d1ca3c734eb"]]} diff --git a/reveal/v5-000002/r33476212.tlock b/reveal/v5-000002/r33476212.tlock new file mode 100644 index 0000000..1391202 --- /dev/null +++ b/reveal/v5-000002/r33476212.tlock @@ -0,0 +1,11 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNDc2MjEyIDUyZGI5YmE3 +MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw +MGM4NGU5NzEKa1A3am0xUXJEWGdqdW5RTDEyTFpzazd2d0pLZHVwQitKWmZrQVhz +ZkJ5SFZiQVdSQTVHRVFDa0JhUCtwK2tuZQpCUmMzS3BUbGJZSlRjNzhlS3VFWjFu +RVMyNXFDazZ6a2orVHJsYWpuS0VjcGtTZ0tjVGxXVG0rMkJNQ29EcEl6CmNhUnJS +d3pjTmNaUDJLWXhVbmZCd3U2d3A3YXdJOTZ2MEw5eUFocG9GQ1kKLS0tIGQ0VFhJ +UDE1RHRHTStiOEI2enhneUFtcGFVSzdzc2hvbGhuNWlDeUNvdEUK0OYskP0fEdgP +RrvWFbjCr3brjM5wsYbm2C/ma9ApUssXUibC4pJKrrNnd2FLpi2Ziyy5gEt7vdeQ +3cAnx+iDng== +-----END AGE ENCRYPTED FILE----- diff --git a/reveal/v5-000002/r33505012.ct b/reveal/v5-000002/r33505012.ct new file mode 100644 index 0000000..6252292 Binary files /dev/null and b/reveal/v5-000002/r33505012.ct differ diff --git a/reveal/v5-000002/r33505012.nostr.json b/reveal/v5-000002/r33505012.nostr.json new file mode 100644 index 0000000..605518c --- /dev/null +++ b/reveal/v5-000002/r33505012.nostr.json @@ -0,0 +1 @@ +{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNTA1MDEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKb2FPVG0xVXF2RHBPRU1ua1l1dUVyakNoeFc5MExwUnc2dUd2Q2xk\nRDl6VEQ0RERWMlJLbDNldXk3K09aQ0NyMgpET081cldUbDFycGJWS2xBMEtuM3Ni\nTFk5NFJoVXhibWJZbERtSzBlZmwxQ3RFZHlmbFZIdkF1YVlLd2phdzZvCldXZlVV\ndnhYR3ZtZmd3SXVtVmF6emdNbWkxTU15YXNuSDhLRVNnbjg1Y2cKLS0tIGtoK1hl\nbFZJUkV2ZTRwVDJhSTI4QURIOHNaejAvNjdYTmErVDdWWm1hZ1kKCCZQ1DXVzTmQ\n1Lcp37aYmJ2ahdJxwRpcmkzeBpbi16ujQixhjqVH0sFobHN5t3gwZbVchTZv8T26\nZp1F9VFGuw==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","33505012"],["reveal_at","2026-10-30T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","f704607263411afb1a1a558d811bbedceea9d16103c6202dabeaa04f97d2021b"],["ct","dcf99e81a6730946afdfe73fd5d7e6647935bf4c99c2278e1ecce933605f07da"],["seal","4f2df0555093ef3febcf78c4eb30adb2dbb5fb63cfc55d458d4c5d1ca3c734eb"]]} diff --git a/reveal/v5-000002/r33505012.tlock b/reveal/v5-000002/r33505012.tlock new file mode 100644 index 0000000..b8c2ede --- /dev/null +++ b/reveal/v5-000002/r33505012.tlock @@ -0,0 +1,11 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNTA1MDEyIDUyZGI5YmE3 +MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw +MGM4NGU5NzEKb2FPVG0xVXF2RHBPRU1ua1l1dUVyakNoeFc5MExwUnc2dUd2Q2xk +RDl6VEQ0RERWMlJLbDNldXk3K09aQ0NyMgpET081cldUbDFycGJWS2xBMEtuM3Ni +TFk5NFJoVXhibWJZbERtSzBlZmwxQ3RFZHlmbFZIdkF1YVlLd2phdzZvCldXZlVV +dnhYR3ZtZmd3SXVtVmF6emdNbWkxTU15YXNuSDhLRVNnbjg1Y2cKLS0tIGtoK1hl +bFZJUkV2ZTRwVDJhSTI4QURIOHNaejAvNjdYTmErVDdWWm1hZ1kKCCZQ1DXVzTmQ +1Lcp37aYmJ2ahdJxwRpcmkzeBpbi16ujQixhjqVH0sFobHN5t3gwZbVchTZv8T26 +Zp1F9VFGuw== +-----END AGE ENCRYPTED FILE----- diff --git a/reveal/v5-000002/r33562612.ct b/reveal/v5-000002/r33562612.ct new file mode 100644 index 0000000..b49a0d9 Binary files /dev/null and b/reveal/v5-000002/r33562612.ct differ diff --git a/reveal/v5-000002/r33562612.nostr.json b/reveal/v5-000002/r33562612.nostr.json new file mode 100644 index 0000000..285484e --- /dev/null +++ b/reveal/v5-000002/r33562612.nostr.json @@ -0,0 +1 @@ +{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNTYyNjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKcGlCVVhYUUQ0d3BGTDhOcDBhYUhBbzU1VFFyd1lMNTZxTGJIV0ky\nYXNwTkVDUjlCbHFuM3NWSU0wd2h5dERzMQpGUzREWElHR3ZhTVJYbXhmd0JJVDZl\nNTdwYUJUeDBjT3dVaXlZM08xNUxCMDJWbUZhZFptTlJNbkNrelhBVFBvCmtyekoz\nUUR0enZvVGE4ZElyS1NZQUpJMXRwU1NHMW1RdSttZkE4WU5iazgKLS0tIDNLMThU\nekE2eTNhajVhaGZmQlJoZDhGMXBTVHh3aFU2bEJMYVRMZ05HWUkKz1iGPl+VIPNQ\nUTQFJ/m8k0NqAwCHLW+ggBndv3Z4XfS1DQa5dFD3Me48KdDWJM4BC36lE/xfff57\npJ8raHZrgw==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","33562612"],["reveal_at","2026-11-01T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","0994e360bc9e2bf894101d96a5805d45ad225e7beacac4dcaa93bfa031717ddc"],["ct","e30e25378b7274fd86cf1b7773f91f17179c56cf965b7bcd81191094fea2dc0b"],["seal","4f2df0555093ef3febcf78c4eb30adb2dbb5fb63cfc55d458d4c5d1ca3c734eb"]]} diff --git a/reveal/v5-000002/r33562612.tlock b/reveal/v5-000002/r33562612.tlock new file mode 100644 index 0000000..fc7d815 --- /dev/null +++ b/reveal/v5-000002/r33562612.tlock @@ -0,0 +1,11 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNTYyNjEyIDUyZGI5YmE3 +MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw +MGM4NGU5NzEKcGlCVVhYUUQ0d3BGTDhOcDBhYUhBbzU1VFFyd1lMNTZxTGJIV0ky +YXNwTkVDUjlCbHFuM3NWSU0wd2h5dERzMQpGUzREWElHR3ZhTVJYbXhmd0JJVDZl +NTdwYUJUeDBjT3dVaXlZM08xNUxCMDJWbUZhZFptTlJNbkNrelhBVFBvCmtyekoz +UUR0enZvVGE4ZElyS1NZQUpJMXRwU1NHMW1RdSttZkE4WU5iazgKLS0tIDNLMThU +ekE2eTNhajVhaGZmQlJoZDhGMXBTVHh3aFU2bEJMYVRMZ05HWUkKz1iGPl+VIPNQ +UTQFJ/m8k0NqAwCHLW+ggBndv3Z4XfS1DQa5dFD3Me48KdDWJM4BC36lE/xfff57 +pJ8raHZrgw== +-----END AGE ENCRYPTED FILE----- diff --git a/reveal/v5-000002/r33620212.ct b/reveal/v5-000002/r33620212.ct new file mode 100644 index 0000000..afbad70 --- /dev/null +++ b/reveal/v5-000002/r33620212.ct @@ -0,0 +1,3 @@ +j9„<kàWèAkÝÈ·kÍë)O¤�MÚ¼¯Aì»åèšìÜÉfÕh`ùjLY]r4,ߎ�üi¶Óþî¤Ä꤉ÑÓú›Aî]äNåïFœ§¨OÒ€ò¼IãÒc¼wÈ$-Vã=t9´¯pÎOÀ³5ã^sÒ(L7ÀmZžF&Å\ M—f ÐÔĹ¹<%’_™a¡¤Œ AÌÓÔYgj—*žR zef¹zc§9|¶Æ­BéCÃ�UÍÕÑTDµ#Žkñâ â‹ƒ]þó³ÍÀ�”FÏ=п۶¤„¢q†ä‘™>;‡�¬<óØ”]A+ïpª� rA—/hø¡4z0�Ô«úP9@à¨%{è/Ûé ©Bù@Wlßâ^06Y=MCÞ·–é öÜüä«Ô‡* µcÜïaÄÜœ‘i¼´¶€�y€)ã,ã�ÑçÖf·„“­ürõÝl[œŸÞ3¬ø‘µg%^€�+©ÃuVaLOLɺ^WÖݪHµé’úÊÆ+gÎòiùxŸêA‚â€öR�aå¶¶ 8‹p¯¥[« +àäËø­]9ø¨„²ú˜/ã˧Ô9…Ux<Úpžð÷�Œô«yE‹»P¾>ªa°sÐ¥ÌùÕ5Ǹ�ø¹›QŸ4¤Å§Üˆë²L(�oWi¡H&HeÏ·šRy� •®Úêìal"“Æ9ήñH"äÆ�é¸l_®ÏïMß®í +•p5Oâ¶`‹¿aÿWÞîX‘[Ñ~j—0NAñ8X2{ߘÎÍeûØö¾oßÛ«RÀ”w¸£ùŠ� ì¶ÃÜ"QÔ—Ì<‹5_Áë¯ç¡6 ΛñPYŸÒ—;1xðî,|0®H�ÖÙ²MôÁÝ&¼)$ô¢1‡ï´C“ÃUçé€ó$µý§t-gB�(&l‹‘ü]冯oѺÇDµb�¯iǦR^Êxª¾£áŒnÊ–X(ó˜F,¾± \ No newline at end of file diff --git a/reveal/v5-000002/r33620212.nostr.json b/reveal/v5-000002/r33620212.nostr.json new file mode 100644 index 0000000..6df2970 --- /dev/null +++ b/reveal/v5-000002/r33620212.nostr.json @@ -0,0 +1 @@ +{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNjIwMjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKa3Vpb0wvZVF6YTFVKzFwb1QrM2toVjVZZU95OTJqYk5rY2Q0Rkp3\nWnZPT3lpMlltSkRYbEVZWWhGUVlsU05ZcQpEUVVIcTZyYVpaN2I3cG1pakZmUCtq\nSWdpZGR6QUNpZHZjK0pZWkYrNWg1Ulc5Q21SVUFreXJMMDlMS3RLZlcyCkJIQ1pm\nWi9COWFvKzlFK291emNLREd3OWpTcFA3d0luWTZzTFRWVkNTVGcKLS0tIDA4Tm5L\ndld4NDJzVG9MWXNrWTZUMnV4blVaTjhNOFRxMUZDQUptVUs1UkEKQv1bDAKxx2Ze\nayELM4+Nioc6aVHzXi4qN0RUt1EaMvTRgP7fPuE1WXB6Zl2JU6Zen0QRmGAEPbIx\nRzQQLMvfQg==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","33620212"],["reveal_at","2026-11-03T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","4632d65ee69b7cf16df62373c419f258221d7f0a5bcd80e928a6ee4bcc662bcb"],["ct","9434590b57d4a7a5d313d2e40dc314f4d9b870a65962432a2b2b2741ac0b874f"],["seal","4f2df0555093ef3febcf78c4eb30adb2dbb5fb63cfc55d458d4c5d1ca3c734eb"]]} diff --git a/reveal/v5-000002/r33620212.tlock b/reveal/v5-000002/r33620212.tlock new file mode 100644 index 0000000..95c10ff --- /dev/null +++ b/reveal/v5-000002/r33620212.tlock @@ -0,0 +1,11 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDMzNjIwMjEyIDUyZGI5YmE3 +MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw +MGM4NGU5NzEKa3Vpb0wvZVF6YTFVKzFwb1QrM2toVjVZZU95OTJqYk5rY2Q0Rkp3 +WnZPT3lpMlltSkRYbEVZWWhGUVlsU05ZcQpEUVVIcTZyYVpaN2I3cG1pakZmUCtq +SWdpZGR6QUNpZHZjK0pZWkYrNWg1Ulc5Q21SVUFreXJMMDlMS3RLZlcyCkJIQ1pm +Wi9COWFvKzlFK291emNLREd3OWpTcFA3d0luWTZzTFRWVkNTVGcKLS0tIDA4Tm5L +dld4NDJzVG9MWXNrWTZUMnV4blVaTjhNOFRxMUZDQUptVUs1UkEKQv1bDAKxx2Ze +ayELM4+Nioc6aVHzXi4qN0RUt1EaMvTRgP7fPuE1WXB6Zl2JU6Zen0QRmGAEPbIx +RzQQLMvfQg== +-----END AGE ENCRYPTED FILE----- diff --git a/reveal/v5-000002/r34513012.ct b/reveal/v5-000002/r34513012.ct new file mode 100644 index 0000000..2a36062 Binary files /dev/null and b/reveal/v5-000002/r34513012.ct differ diff --git a/reveal/v5-000002/r34513012.nostr.json b/reveal/v5-000002/r34513012.nostr.json new file mode 100644 index 0000000..27b9a37 --- /dev/null +++ b/reveal/v5-000002/r34513012.nostr.json @@ -0,0 +1 @@ +{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0NTEzMDEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKc1JwV05laC9BcUtXVktCZ0hXSTljaUNhOXpBM1hvY2hXcWRVaVNH\nL0hUOTlBREI5TjRDQmFjbGsrdnh5clVKVQpDQnV0ZHU0Ujl1YkFxb3pCMFYzN0tn\nNzBzYmZVWnhPL091cnhwTzZPODhqb25TR1FEUzhubi9VQVlBRjQzTUpBCkI3OUJG\nTUJ6VWRpMmlHZFliUmdTeTVQS0FveXN2UjN3SjhzSU1VQlZRYlkKLS0tIGc1Um9G\nMXJoWDI3ZzNzZWVBTXRtVEZFbVJmRE9mcDgydjA1NFg4Um1ES0kKqx9eqtZUOCQq\nv3ZMYfJaWdgcj81+LN+BFiFRA8FRbLrZq4SSBbCb6oJS9NT0yVTK9BEC8+y5sDgX\nqcK0+38p3w==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","34513012"],["reveal_at","2026-12-04T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","c896e58fc3bc1b740a5f160e2858d5ab7c94794b50b225b6d500f25598f20599"],["ct","11bb92aa82ec56a3e4ac532b9be3b22ccd1146ab1af59e23f3e61749c60fa078"],["seal","4f2df0555093ef3febcf78c4eb30adb2dbb5fb63cfc55d458d4c5d1ca3c734eb"]]} diff --git a/reveal/v5-000002/r34513012.tlock b/reveal/v5-000002/r34513012.tlock new file mode 100644 index 0000000..3cb7d73 --- /dev/null +++ b/reveal/v5-000002/r34513012.tlock @@ -0,0 +1,11 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0NTEzMDEyIDUyZGI5YmE3 +MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw +MGM4NGU5NzEKc1JwV05laC9BcUtXVktCZ0hXSTljaUNhOXpBM1hvY2hXcWRVaVNH +L0hUOTlBREI5TjRDQmFjbGsrdnh5clVKVQpDQnV0ZHU0Ujl1YkFxb3pCMFYzN0tn +NzBzYmZVWnhPL091cnhwTzZPODhqb25TR1FEUzhubi9VQVlBRjQzTUpBCkI3OUJG +TUJ6VWRpMmlHZFliUmdTeTVQS0FveXN2UjN3SjhzSU1VQlZRYlkKLS0tIGc1Um9G +MXJoWDI3ZzNzZWVBTXRtVEZFbVJmRE9mcDgydjA1NFg4Um1ES0kKqx9eqtZUOCQq +v3ZMYfJaWdgcj81+LN+BFiFRA8FRbLrZq4SSBbCb6oJS9NT0yVTK9BEC8+y5sDgX +qcK0+38p3w== +-----END AGE ENCRYPTED FILE----- diff --git a/reveal/v5-000002/r34541812.ct b/reveal/v5-000002/r34541812.ct new file mode 100644 index 0000000..df622df Binary files /dev/null and b/reveal/v5-000002/r34541812.ct differ diff --git a/reveal/v5-000002/r34541812.nostr.json b/reveal/v5-000002/r34541812.nostr.json new file mode 100644 index 0000000..bacf997 --- /dev/null +++ b/reveal/v5-000002/r34541812.nostr.json @@ -0,0 +1 @@ +{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0NTQxODEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKZ0JveWlvMG1KNmhuRHl6ZU13aFpiTmlRc2VqbHZwUFU3OStSdEFw\nSVIzT2o0c2tXYUZwRXhjRXBrNUlrZmtXeQpFM2hrbFdTWk9La3pjR01NSVNxRitT\nR2FDMkV4RE1SYjA4WWFlQ1lLckNLdElISTN2cjZHbmt4dmlkR2pUaGFpCkxyTDdo\nYURibml4aGxsT0tzdHBEZUhNd3FORTFRemlIZWNZZm5Ya2JrTFkKLS0tIGUrc0x5\nRkxPV1JaU0s2dnF6WnBLOHRGcWNaSmFlc0JXalpLUU00TU43K0EKa61ftQ4kdGWN\nR6bGN2BftVeLltoN3aB+CxWSwLdvZDQDHmcsV2IUwQ0e4PmbWpWztd+6q9QgN9Uj\n7ZUjFX8eFQ==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","34541812"],["reveal_at","2026-12-05T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","2b440599fe95f65b753699069e589ea5e83aa1dc533b9e535848276cfa58d619"],["ct","3fd2d3d1aea9ebe16dd6ad3575a14432b156b029f6cc7040799f796e68f497df"],["seal","4f2df0555093ef3febcf78c4eb30adb2dbb5fb63cfc55d458d4c5d1ca3c734eb"]]} diff --git a/reveal/v5-000002/r34541812.tlock b/reveal/v5-000002/r34541812.tlock new file mode 100644 index 0000000..af70663 --- /dev/null +++ b/reveal/v5-000002/r34541812.tlock @@ -0,0 +1,11 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0NTQxODEyIDUyZGI5YmE3 +MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw +MGM4NGU5NzEKZ0JveWlvMG1KNmhuRHl6ZU13aFpiTmlRc2VqbHZwUFU3OStSdEFw +SVIzT2o0c2tXYUZwRXhjRXBrNUlrZmtXeQpFM2hrbFdTWk9La3pjR01NSVNxRitT +R2FDMkV4RE1SYjA4WWFlQ1lLckNLdElISTN2cjZHbmt4dmlkR2pUaGFpCkxyTDdo +YURibml4aGxsT0tzdHBEZUhNd3FORTFRemlIZWNZZm5Ya2JrTFkKLS0tIGUrc0x5 +RkxPV1JaU0s2dnF6WnBLOHRGcWNaSmFlc0JXalpLUU00TU43K0EKa61ftQ4kdGWN +R6bGN2BftVeLltoN3aB+CxWSwLdvZDQDHmcsV2IUwQ0e4PmbWpWztd+6q9QgN9Uj +7ZUjFX8eFQ== +-----END AGE ENCRYPTED FILE----- diff --git a/reveal/v5-000002/r34570612.ct b/reveal/v5-000002/r34570612.ct new file mode 100644 index 0000000..02e1ce3 Binary files /dev/null and b/reveal/v5-000002/r34570612.ct differ diff --git a/reveal/v5-000002/r34570612.nostr.json b/reveal/v5-000002/r34570612.nostr.json new file mode 100644 index 0000000..8fb945c --- /dev/null +++ b/reveal/v5-000002/r34570612.nostr.json @@ -0,0 +1 @@ +{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0NTcwNjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKajNKNHFJdnh4eWk4aFVpZ0dmb0ZUZGdZaTFuOGhzcS9VVFgvYnV3\nSDEwZENPMlFVQ0U0SXhaWEkvbkg0aHpmWgpGTXBUS0lzc2ZvbFg4L3pyd0MydHhv\nYjZ4UkJmaDhqNmFGUUo4RVZ0YkRDSkQrRUl3aml3USt6QTNWNUYrb29xCjJvMjlw\nbmh2N1dGM0Zta1BhRnErQWtubTBoVFhKRE11aWowcHo0M081cVkKLS0tIDVOSjlD\nc2gzbjNSazdoTEd0azVKV2l1U0hucDY5akFKQnBFTy93dy96YmcKT8YhutPJaU4N\nDdJ4BuaVlHySeq+QnO8+zs0UJHxcIKtSq86sx6JXQAv7IqWrivdLOn8q476x7saR\n3asTKmAo6w==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","34570612"],["reveal_at","2026-12-06T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","8eb2fb8cd956fc87939d6570bcb42c0715270868138ac61c5ab57211c357202c"],["ct","b0b0854bacd39d2d597c6475c2d83fbb1eca38e89bc31b56ccde2936d8d27db9"],["seal","4f2df0555093ef3febcf78c4eb30adb2dbb5fb63cfc55d458d4c5d1ca3c734eb"]]} diff --git a/reveal/v5-000002/r34570612.tlock b/reveal/v5-000002/r34570612.tlock new file mode 100644 index 0000000..923d6e8 --- /dev/null +++ b/reveal/v5-000002/r34570612.tlock @@ -0,0 +1,11 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0NTcwNjEyIDUyZGI5YmE3 +MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw +MGM4NGU5NzEKajNKNHFJdnh4eWk4aFVpZ0dmb0ZUZGdZaTFuOGhzcS9VVFgvYnV3 +SDEwZENPMlFVQ0U0SXhaWEkvbkg0aHpmWgpGTXBUS0lzc2ZvbFg4L3pyd0MydHhv +YjZ4UkJmaDhqNmFGUUo4RVZ0YkRDSkQrRUl3aml3USt6QTNWNUYrb29xCjJvMjlw +bmh2N1dGM0Zta1BhRnErQWtubTBoVFhKRE11aWowcHo0M081cVkKLS0tIDVOSjlD +c2gzbjNSazdoTEd0azVKV2l1U0hucDY5akFKQnBFTy93dy96YmcKT8YhutPJaU4N +DdJ4BuaVlHySeq+QnO8+zs0UJHxcIKtSq86sx6JXQAv7IqWrivdLOn8q476x7saR +3asTKmAo6w== +-----END AGE ENCRYPTED FILE----- diff --git a/reveal/v5-000002/r34628212.ct b/reveal/v5-000002/r34628212.ct new file mode 100644 index 0000000..ae7282c Binary files /dev/null and b/reveal/v5-000002/r34628212.ct differ diff --git a/reveal/v5-000002/r34628212.nostr.json b/reveal/v5-000002/r34628212.nostr.json new file mode 100644 index 0000000..c530e0d --- /dev/null +++ b/reveal/v5-000002/r34628212.nostr.json @@ -0,0 +1 @@ +{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0NjI4MjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKdElLcExLVUw5bk01akE2MnYvdWEzMTNOSnc5ODRyR3B0UTdoU2xk\nbnlOZmNCZ1dzdkFaL04wMmxocEtRaWo4aApFbUhuQjBORWxURkZINWp4UFhma2x3\nYzBCMWFlV0xxREZZYXpOSlZUdDArRy80aUpvN0xtTXE5TWNHSS9lUy9jCmQzend6\nRXBmL0ZlN2ZxZXJ1QnNyV2RuRlhZT01ZbnVKMCtSRWoxa3pKT00KLS0tIGxjeVAr\ncHlXaTcxRFlRZUJrOXkzTzRLWkhhSGlkQ24yaU9VdHZyWUllSm8Kps9t+NiWs/bm\ncC1VxWsM2F2W4WeRoKIWtgeQry3wchU+3FiK1uTr/Ot8KXe8lPuuMvuiIMiXczNR\nbSkjis6aZQ==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","34628212"],["reveal_at","2026-12-08T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","011bea7f2b79c4610c2e38bb8eb32f49fb5a4dbd22502804b3bcfaa85dbd77e0"],["ct","98fc8fda5d771230319168e7069efbc41c1e2cab0e1dc2c091f6401008184e82"],["seal","4f2df0555093ef3febcf78c4eb30adb2dbb5fb63cfc55d458d4c5d1ca3c734eb"]]} diff --git a/reveal/v5-000002/r34628212.tlock b/reveal/v5-000002/r34628212.tlock new file mode 100644 index 0000000..68be399 --- /dev/null +++ b/reveal/v5-000002/r34628212.tlock @@ -0,0 +1,11 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0NjI4MjEyIDUyZGI5YmE3 +MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw +MGM4NGU5NzEKdElLcExLVUw5bk01akE2MnYvdWEzMTNOSnc5ODRyR3B0UTdoU2xk +bnlOZmNCZ1dzdkFaL04wMmxocEtRaWo4aApFbUhuQjBORWxURkZINWp4UFhma2x3 +YzBCMWFlV0xxREZZYXpOSlZUdDArRy80aUpvN0xtTXE5TWNHSS9lUy9jCmQzend6 +RXBmL0ZlN2ZxZXJ1QnNyV2RuRlhZT01ZbnVKMCtSRWoxa3pKT00KLS0tIGxjeVAr +cHlXaTcxRFlRZUJrOXkzTzRLWkhhSGlkQ24yaU9VdHZyWUllSm8Kps9t+NiWs/bm +cC1VxWsM2F2W4WeRoKIWtgeQry3wchU+3FiK1uTr/Ot8KXe8lPuuMvuiIMiXczNR +bSkjis6aZQ== +-----END AGE ENCRYPTED FILE----- diff --git a/reveal/v5-000002/r34657012.ct b/reveal/v5-000002/r34657012.ct new file mode 100644 index 0000000..8385336 Binary files /dev/null and b/reveal/v5-000002/r34657012.ct differ diff --git a/reveal/v5-000002/r34657012.nostr.json b/reveal/v5-000002/r34657012.nostr.json new file mode 100644 index 0000000..450e6c5 --- /dev/null +++ b/reveal/v5-000002/r34657012.nostr.json @@ -0,0 +1 @@ +{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0NjU3MDEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKZ3FUZDByZWFCZ3lROXJTbUY0TDdna0ZUN0dHTytMRzVmbk5WNUpq\nWGJMWmxhRHpWdFNYVmMwN21ueHpnM01lUQpGNUhXN2ZISnE0TFNkaVlOQzNGS08z\nSnM1SWp3YnlvdDRvTUp6V0xIOWkxYUFBSW1Ba2p2b29QeHVrR2JzMXorCmVzaEJT\nTHg4TkxQa2Q0cjhxYk0vV2lwMG90TXhZTDBLZThOWjZwc1pCK1kKLS0tIHVjNGYr\nd3ZhYzNTbXFzTDlTMzdVWWNuZDBnWUVneTBSNXpMcmI2R3JmR0EKW/gMUVpvnGbi\n0NcQwAO/fA+EjjCurG/5/KEMd2eNNr9nTU0FDItLrCtEs/NHWjWZ19uOD+nYzcOb\nm8ozUP1YXQ==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","34657012"],["reveal_at","2026-12-09T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","d5226dbf682ad934ac95962f5233ef6841d35ab7a4270421b85bc5c00ac26cae"],["ct","5f113077e0f1b0abdc1209a380e115b5d5f651d939757252d6e8b4d7b81b7273"],["seal","4f2df0555093ef3febcf78c4eb30adb2dbb5fb63cfc55d458d4c5d1ca3c734eb"]]} diff --git a/reveal/v5-000002/r34657012.tlock b/reveal/v5-000002/r34657012.tlock new file mode 100644 index 0000000..cf56ff1 --- /dev/null +++ b/reveal/v5-000002/r34657012.tlock @@ -0,0 +1,11 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0NjU3MDEyIDUyZGI5YmE3 +MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw +MGM4NGU5NzEKZ3FUZDByZWFCZ3lROXJTbUY0TDdna0ZUN0dHTytMRzVmbk5WNUpq +WGJMWmxhRHpWdFNYVmMwN21ueHpnM01lUQpGNUhXN2ZISnE0TFNkaVlOQzNGS08z +SnM1SWp3YnlvdDRvTUp6V0xIOWkxYUFBSW1Ba2p2b29QeHVrR2JzMXorCmVzaEJT +THg4TkxQa2Q0cjhxYk0vV2lwMG90TXhZTDBLZThOWjZwc1pCK1kKLS0tIHVjNGYr +d3ZhYzNTbXFzTDlTMzdVWWNuZDBnWUVneTBSNXpMcmI2R3JmR0EKW/gMUVpvnGbi +0NcQwAO/fA+EjjCurG/5/KEMd2eNNr9nTU0FDItLrCtEs/NHWjWZ19uOD+nYzcOb +m8ozUP1YXQ== +-----END AGE ENCRYPTED FILE----- diff --git a/reveal/v5-000002/r34714612.ct b/reveal/v5-000002/r34714612.ct new file mode 100644 index 0000000..3f62137 Binary files /dev/null and b/reveal/v5-000002/r34714612.ct differ diff --git a/reveal/v5-000002/r34714612.nostr.json b/reveal/v5-000002/r34714612.nostr.json new file mode 100644 index 0000000..5504f29 --- /dev/null +++ b/reveal/v5-000002/r34714612.nostr.json @@ -0,0 +1 @@ +{"content":"-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0NzE0NjEyIDUyZGI5YmE3\nMGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw\nMGM4NGU5NzEKam1LZyttNXB4R2ZKL3hCQjAyTHkzdkFveTVOSThVNFQ4YnNxdyth\neW5xNFFkUDk0NlVuT3NMWGZXenVTZSs5OApFRHhvOGowZndQNUlDMStFMlpFOW1Q\naUc1c1ljcjdDNTNBN1ArbGxad052UWRTTjdRM1NFT0pzbjhrMWVGY0hlCkRJNHd5\nZFBHR3laa3JFdWxaaHN4b2sremwyaDRKNWdmeThUZzJtN09tbkEKLS0tIC85ekRG\nN3FLeEV6N0JTWk4xN081MHBzK2FZZ2xOWjJ4bjdTZlBwZTdVY28KaIcUbPLX1nKZ\nmv4tiUcbS7sHDffmxBFpU6OhwcDbwjIlA5z+7K4jeh7esdFgPZ+MhSIhRUcEn0KA\nC2q4CnJtlQ==\n-----END AGE ENCRYPTED FILE-----\n","tags":[["t","echo-ledger-reveal"],["round","34714612"],["reveal_at","2026-12-11T00:00:00.000000Z"],["chain","52db9ba70e0cc0f6eaf7803dd07447a1f5477735fd3f661792ba94600c84e971"],["digest","d29e4a80129238f0f08c3a6a332c063d06a47770bef77c1d3733b6e424afc3e4"],["ct","b9540491bbac83f80f988b90e3b54d0658ff7e6b02d6248d0a9adea3f5b4fc6b"],["seal","4f2df0555093ef3febcf78c4eb30adb2dbb5fb63cfc55d458d4c5d1ca3c734eb"]]} diff --git a/reveal/v5-000002/r34714612.tlock b/reveal/v5-000002/r34714612.tlock new file mode 100644 index 0000000..f34b9a2 --- /dev/null +++ b/reveal/v5-000002/r34714612.tlock @@ -0,0 +1,11 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IHRsb2NrIDM0NzE0NjEyIDUyZGI5YmE3 +MGUwY2MwZjZlYWY3ODAzZGQwNzQ0N2ExZjU0Nzc3MzVmZDNmNjYxNzkyYmE5NDYw +MGM4NGU5NzEKam1LZyttNXB4R2ZKL3hCQjAyTHkzdkFveTVOSThVNFQ4YnNxdyth +eW5xNFFkUDk0NlVuT3NMWGZXenVTZSs5OApFRHhvOGowZndQNUlDMStFMlpFOW1Q +aUc1c1ljcjdDNTNBN1ArbGxad052UWRTTjdRM1NFT0pzbjhrMWVGY0hlCkRJNHd5 +ZFBHR3laa3JFdWxaaHN4b2sremwyaDRKNWdmeThUZzJtN09tbkEKLS0tIC85ekRG +N3FLeEV6N0JTWk4xN081MHBzK2FZZ2xOWjJ4bjdTZlBwZTdVY28KaIcUbPLX1nKZ +mv4tiUcbS7sHDffmxBFpU6OhwcDbwjIlA5z+7K4jeh7esdFgPZ+MhSIhRUcEn0KA +C2q4CnJtlQ== +-----END AGE ENCRYPTED FILE----- diff --git a/reveal/v5-000002/r34772212.ct b/reveal/v5-000002/r34772212.ct new file mode 100644 index 0000000..33941a2 --- /dev/null +++ b/reveal/v5-000002/r34772212.ct @@ -0,0 +1,3 @@ +‹Ñ¬%ˆô»…}#ˆUPX b£®“3)Øa™ +KvŽŸÐ“t©<ÐŒH ºMìÁT÷``Rš–°Â›Œ°-‹¾µ3óòxv­†à°‘*¿ÒJ9>Ål�R•˜Ñ¶�ºÆ—ª“¦Y­�™ø^ð¶ š÷€ßö_Ât:Ó�¾open: | numericwithheld:sha256(salt||v4 line)", + "reveal": "utc-day-after-close", + "salts": "key ring: one content a seal, one part a line", + "tool": { + "name": "tle", + "sha256": "69157d8c14a1d390d1b7744946288f83d4b10748471d5447f9abb77a5902c541", + "version": "tlock v1.2.0 -- github.com/drand/tlock" + } + } +} -- cgit v1.2.3