Watchtower
Watchtower este un cadru de auto-contestare pentru rollup-urile optimiste. Acesta
urmărește loturile de decontare ale unui rollup, evidențiază fiecare lot nou și
termenul-limită al ferestrei sale de contestare și — atunci când predicatul tău
de validitate respinge un lot — îl predă callback-ului tău onInvalid, astfel
încât să poți configura o contestare.
Cadrul urmărește și decide când; tu furnizezi verificarea de validitate.
Watchtower nu decide niciodată de unul singur că un lot este fraudulos — apelează
funcția ta validate și acționează pe baza a ceea ce returnezi.
watchBatches
import { createRdkClient, watchBatches, challengeBatch } from "@qorechain/rdk";
// The public qore.host REST + RPC endpoints are baked into the presets
// (RDK ≥ 0.4.2); the RPC endpoint is what broadcasts a challenge. Pass
// `endpoints` only to target your own node.
const rdk = createRdkClient({ network: "testnet" });
const watcher = watchBatches(rdk, "my-roll", {
onBatch: (batch) => {
console.log("new batch", batch.index);
},
// Your validity predicate. Return false to flag the batch as invalid.
validate: async (batch) => {
return await isBatchValid(batch); // your logic
},
// Called when validate() returns false — wire it to a challenge.
onInvalid: async (batch) => {
await challengeBatch(rdk, "my-roll", batch.index /* + your fraud proof */);
},
// Called as a batch approaches the end of its challenge window.
onDeadline: (batch) => {
console.warn("challenge window closing for batch", batch.index);
},
});
// Later:
watcher.stop();
Cadrul evidențiază:
- loturi noi prin
onBatch, - termene-limită ale ferestrei de contestare prin
onDeadlineși - loturi invalide (pentru care
validatea returnatfalse) prinonInvalid.
Conectarea onInvalid la challengeBatch transformă Watchtower într-un
auto-contestator complet; lasă-l neconfigurat pentru a rula în mod
exclusiv de observare.
CLI
qorollup watchtower my-roll
watchtower rulează cadrul din linia de comandă, afișând loturile noi și
termenele-limită ale ferestrei de contestare până când apeși Ctrl-C. Vezi
Implementarea unui rollup pentru întregul CLI
de operator qorollup.