Takes previous header (from current visible tip)
PoSW Hash
Merkle Root A (all past outputs)
Merkle Root B (all past SPENT outputs)
—- Anything else in header?
Generates coinbase tx SNARK for themselves
Picks all incoming tx SNARKs from mempool for inclusion in block & orders with coinbase tx SNARK
Hashes each tx SNARK to a 256 bit leaf, creates a PoSW Merkle Tree of out:
leaves
previous block header
secret Pool Operator Nonce
—-How precisely is the previous block & Secret Pool Operator Nonce committed to within this Tree? ---What hash function(s) is used for tx->leaf hash and tree hash?
Broadcasts the Delegated Work to Miners
Delegated Work:
—-How should Height be denoted? Block height? Previous Header?
Receives two child leaves of the Index of Height, PoSW Merkle Root, & Miner Nonce Range from Pool Operator
Computes Merkle Root of two child leaves, then:
a) Takes the floor of the Nonce Range as a Miner Nonce
b) Within PoSW SNARK circuit, computes PoSW SNARK of:
$$ Hash[ Hash(Merkle Root Child A + Merkle Root Child B) + Hash(Miner Nonce + Block Merkle Root) ] $$
—-Confirm commitment scheme(s) and hash function(s) used.
c) Computes SHA256 Hash of PoSW SNARK
d) If SHA256 Hash ≥ Pool minimum share target:
- Send PoSW SNARK + Miner Nonce
- Iterates Miner Nonce
- Loop from b) until reception of more recent pair of child leaves
—-Should the Block Merkle Root for a share also be sent to Pool Operator to prevent Operators from trying to validate stale shares?
Everything else from here should be vanilla Stratum