================================================================================ PEARLSKI POOL — PEARL STRATUM PROTOCOL Consensus target addendum Revision 2026-07-14 ================================================================================ This document describes the Pearl-specific compact Stratum dialect served by Pearlski Pool. Deployed Pearl consensus behavior is authoritative. This is line-delimited JSON-RPC over TCP, not Bitcoin Stratum or formal Stratum V2. Production endpoint: pearlski.jetskipool.ai:6970 (plain TCP) 1. MESSAGE FLOW ================================================================================ The miner sends mining.authorize first. mining.subscribe is not required. -> {"id":1,"method":"mining.authorize","params":{ "wallet":"PRL_ADDRESS","worker":"rig1","agent":"miner/version"}} <- {"id":1,"result":true,"error":null} The pool then pushes the current job: <- {"id":null,"method":"mining.notify","params":{ "job_id":"64_HEX_CHARACTERS", "header":"152_HEX_CHARACTERS", "target":"64_HEX_CHARACTERS", "height":123, "diff":500000}} The miner submits a bincode-serialized PlainProof encoded as Base64: -> {"id":2,"method":"mining.submit","params":{ "job_id":"64_HEX_CHARACTERS", "plain_proof":"BASE64_PLAIN_PROOF", "hs":123.0}} <- {"id":2,"result":true,"error":null} Unknown extra object fields are ignored. New mining.notify pushes may arrive while a submit response is outstanding, so clients must correlate response IDs. Solo login is not supported by this pool. 2. AUTHORITATIVE BASE TARGET ================================================================================ The notify target is the authoritative unadjusted base target. It is serialized as exactly 32 unsigned big-endian bytes (64 lowercase hexadecimal characters). For integer difficulty d: difficulty_one_target = 0xffff << 208 base_target = floor(difficulty_one_target / d) Example for d = 500000: 000000000000218dcdb37c99ae924f227d028a1dfb9389b52007dd441355475a The pool sends base_target, never an already proof-adjusted target. Optional diff or difficulty fields are consistency/display metadata only. 3. INDEPENDENT PROOF VALIDATION ================================================================================ For every mining.submit, the pool independently deserializes and validates the PlainProof. It reconstructs the proof's public parameters and recomputes noise, the jackpot, and the raw 32-byte jackpot hash. No client-supplied hash is used. Interpret the raw jackpot hash bytes as an unsigned LITTLE-ENDIAN integer, then calculate: length = k - (k % noise_rank) factor = rows_pattern.size * columns_pattern.size * length adjusted_target = min(base_target * factor, 2^256 - 1) The proof meets the target exactly when: hash_value <= adjusted_target The comparison is inclusive. The raw jackpot hash is little-endian even though the advertised base target is encoded big-endian. For the standard Pearl profile: rows_pattern.size = 8 columns_pattern.size = 16 k = 4096 noise_rank = 256 length = 4096 factor = 8 * 16 * 4096 = 524288 The same adjustment and comparison apply when checking a network-block target. Machine-readable deterministic vectors for target encoding, the standard factor, boundary comparisons, and saturation are published at: /pearl-stratum-consensus-vectors.json 4. HASHRATE TELEMETRY ================================================================================ The optional hs submission field is untrusted telemetry. Pearlski Pool ignores it for proof validity, credited work, payouts, and displayed pool hashrate. Server statistics are derived from accepted, server-verified work. 5. ERRORS ================================================================================ 20 malformed request/proof, rate limit, or temporary server condition 21 stale or unknown job 22 duplicate share 23 invalid proof or below target 24 unauthorized or invalid payout address Clients must branch on the numeric code, not the human-readable message. ================================================================================ The public target rule is: base target big-endian on the wire; recomputed raw jackpot hash little-endian; proof factor applied with saturation; inclusive <=. ================================================================================