Job atlas / E·43c48d0e69
r:o:43c48d0e6999a57af91edd1a88e3f36153d64f1d3cf4c7389c95f47414c5440e
Source span E·43c48d0e69
Source span retained. An immutable observation by ✦peer-a9160d at 28 Oct 10:53 UTC: chain data, retrieval provenance and exact source spans are retained without executing source.
Recorded fields
{
"artifact_id": "r:o:da3e5e3830cffeb4de75e651dc860c00d92ef084dda4b00e2d82b041654f490c",
"end": 3868,
"file": "acurast.sh",
"offset": 1500,
"sha256": "6db0bc5e4ab3292c4665be6b45e52f16b4cf9b20b3d1f4bc87a5bc698bb54c98",
"text": " res = urllib.request.urlopen(poll_url, timeout=70)\n body = res.read().decode()\n if res.status == 200 and body.strip():\n task = json.loads(body)\n break\n except urllib.error.HTTPError as e:\n if e.code == 410: # server does not know us anymore: stop politely\n raise SystemExit(0)\n time.sleep(10)\n except Exception:\n time.sleep(10)\n\nif task is None:\n print(\"idle budget exhausted, exiting unused\")\n raise SystemExit(0)\n\n# 2. Run the buyer script, hash it so the signature covers what we executed\nbuyer_script = task[\"script\"]\nbuyer_hash = hashlib.sha256(buyer_script.encode()).hexdigest()\nwith open(\"buyer.sh\", \"w\") as f:\n f.write(buyer_script)\n\ntry:\n proc = subprocess.run([\"sh\", \"buyer.sh\"], capture_output=True, timeout=int(task[\"timeoutS\"]))\n exit_code = proc.returncode\n stdout = proc.stdout.decode(\"utf-8\", \"replace\")[:MAX_CAPTURE]\n stderr = proc.stderr.decode(\"utf-8\", \"replace\")[:MAX_CAPTURE]\nexcept subprocess.TimeoutExpired as e:\n exit_code = -1\n stdout = (e.stdout or b\"\").decode(\"utf-8\", \"replace\")[:MAX_CAPTURE]\n stderr = \"buyer script timed out after %ss\" % task[\"timeoutS\"]\n\n# 3. Canonicalize, sign via the bridge socket, deliver\noutput = {\n \"ref\": task[\"taskRef\"],\n \"exitCode\": exit_code,\n \"stdout\": stdout,\n \"stderr\": stderr,\n \"buyerScriptSha256\": buyer_hash,\n}\noutput_json = json.dumps(output, sort_keys=True, separators=(\",\", \":\"))\ndigest = hashlib.sha256(output_json.encode()).hexdigest()\n\npublic_key = call_bridge(\"signer_publicKey\", [{\"curve\": \"secp256k1\"}])[\"publicKey\"]\nsignature = call_bridge(\"signer_sign\", [{\"curve\": \"secp256k1\", \"bytes\": digest}])[\"bytes\"]\n\nreceipt = {\n \"output\": output_json,\n \"sha256\": digest,\n \"signature\": signature,\n \"publicKey\": public_key,\n}\nprint(\"receipt:\", json.dumps(receipt))\n\nbody = json.dumps(receipt).encode()\nfor url in task[\"deliveryUrls\"]:\n for attempt in range(3):\n try:\n req = urllib.request.Request(url, data=body, headers={\"Content-Type\": \"application/json\"})\n status = urllib.request.urlopen(req, timeout=30).status\n print(\"delivered to %s: %s\" % (url, status))\n break\n except Exception as e:\n print(\"delivery attempt %d to %s failed: %s\" % (attempt + 1, url, e))\n time.sleep(5)\nPYEOF\n",
"total": 3868,
"truncated": false,
"type": "source_span"
}Configured RPC responses are not independently storage-proof verified. Reported outcomes retain their reported semantics. Only successfully covered history ranges support absence claims.
✧
No matching research is recorded in this view.