* Add captcha share pool service and browser WASM solver pool-service connects to a node over the external-miner QUIC protocol and turns browser captcha solves into real mining shares: sessions with disjoint nonce ranges over the current header, single-use share tokens, a reCAPTCHA-shaped /siteverify endpoint, and upstream block submission when a share meets full network difficulty. solver-wasm is a raw C-ABI wasm32 build of the Poseidon2 nonce grinder (no wasm-bindgen) for the embeddable widget. Co-authored-by: Cursor <cursoragent@cursor.com> * fmt * Re-queue block solution when upstream write fails A network-difficulty share taken off the solution channel was permanently lost if the JobResult write to the node failed: the connection loop broke to reconnect but the block was no longer anywhere. Park the block in a pending slot that survives reconnection and is retried before any other work. Co-authored-by: Cursor <cursoragent@cursor.com> * fmt * Address PR review: capacity limits, loud block drops, shared QUIC transport, constant-time secret compare - Cap live sessions and tokens (configurable via --max-sessions/--max-tokens, default 100k each); /api/session returns 503 at_capacity so a request flood can no longer grow the maps without bound. - A block solution that fails to queue upstream is now logged at error level, and blocks_found/block_found only report solutions actually queued. - Extract the node QUIC connect + insecure-verifier pattern into a shared quic-transport crate used by both miner-service and pool-service; derive the network target via pow_core::JobContext instead of re-deriving it. - Compare the site secret in constant time (constant_time_eq). - Note single-tenant token semantics on site_secret for the host-registration follow-up. Co-authored-by: Cursor <cursoragent@cursor.com> * Add per-IP rate limiting on /api/session issuance The global session cap stops unbounded map growth, but a single client could still churn entries at the TTL boundary. Limit each IP to 60 issuances per minute (configurable via --sessions-per-ip-per-min); excess requests get 429 rate_limited. Stale IP windows are GC'd alongside sessions/tokens. Co-authored-by: Cursor <cursoragent@cursor.com> * clippy --------- Co-authored-by: Cursor <cursoragent@cursor.com>
8 lines
216 B
Bash
Executable File
8 lines
216 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# Run the same clippy command as CI (see .github/workflows/ci.yml)
|
|
set -euo pipefail
|
|
|
|
cargo +nightly fmt
|
|
taplo format
|
|
cargo clippy --workspace --all-targets --all-features --locked -- -D warnings
|