diff --git a/README.md b/README.md index 25f136a..c889431 100644 --- a/README.md +++ b/README.md @@ -16,9 +16,9 @@ The single payout mechanism is PPLNS, which favors loyal pool miners, and there are no plans to add any other payout mechanisms or other coins. Work should stay focussed on performance, efficiency and stability. -The pool also supports a new, experimental and optional, method of mining, -whereby miners select their *own* block template to mine on. Further information -can be found in [stratum-ss.md](./stratum-ss.md). +The pool also supports an optional method of mining whereby miners select their +*own* block template to mine on. Further information can be found in the +document: [Stratum mode self-select](./stratum-ss.md). For testing, a reference mainnet pool can be found at [monerop.com](http://monerop.com). diff --git a/stratum-ss.md b/stratum-ss.md index 359aef1..65e703e 100644 --- a/stratum-ss.md +++ b/stratum-ss.md @@ -10,47 +10,16 @@ template they are mining, they also have no visibility of the transactions included in the block template. This enables a malicious pool be selective as to which transactions get included (or not) into a block. -To address these concerns, I've implemented a new, experimental and optional -*mode* to this pool, which enables miners to select their *own* block template -to mine on. +To address these concerns, I've implemented an optional *mode* for this pool, +which enables miners to select their *own* block template to mine on. -What follows are the instructions to test this new mode and the changes made to -the stratum protocol. For a miner that supports this new mode, -[XMRig](https://github.com/xmrig/xmrig) already has this implemented. -Alternatively, a very simple demonstration miner can be found in -[monero-powpy](https://github.com/jtgrassie/monero-powpy). +Along with this pool, the popular miner [XMRig](https://github.com/xmrig/xmrig) +has this mode implemented. There is also a very simple [demonstration +miner](https://github.com/jtgrassie/monero-powpy/blob/master/stratum-ss-miner.py) +in the [monero-powpy](https://github.com/jtgrassie/monero-powpy) project which +can be used to augment this document for implementers. -## Running - -Start your `monerod` and `monero-wallet-rpc`. For example, in one -shell: - - cd "$MONERO_ROOT"/build/Linux/master/release/bin - ./monerod --testnet - -And in another shell: - - cd "$MONERO_ROOT"/build/Linux/master/release/bin - ./monero-wallet-rpc --testnet --rpc-bind-port 28084 --disable-rpc-login \ - --password "" --wallet-file ~/testnet-pool-wallet - -Next, in a third shell, run `monero-pool`. Instructions per the -[README](./README.md#running). - -Lastly you'll need to use a miner that supports this new stratum mode (see -above): - - - If using [XMRig](https://github.com/xmrig/xmrig), just adjust your pool - object in your `config.json` file setting the `self-select` field to your - daemon address (e.g. `"self-select": "localhost:28081"`). - - - If using [monero-powpy](https://github.com/jtgrassie/monero-powpy), install - the requirements per the projects - [README](https://github.com/jtgrassie/monero-powpy/blob/master/README.md), - then just run the `stratum-ss-miner.py` miner, optionally editing the - parameters first. - ## Specification What follows are the stratum message and flow changes required to enable pool @@ -88,11 +57,12 @@ and an extra nonce: "id":1 } -(3) The miner can now call the daemons RPC method -[get_block_template](https://ww.getmonero.org/resources/developer-guides/daemon-rpc.html#get_block_template) -with parameters `extra_nonce: extra_nonce` (implemented in pull request -[#5728](https://github.com/monero-project/monero/pull/5728)), and -`wallet_address: pool_wallet`. +(3) The miner can now call a local, or remote, Monero daemons RPC method +[get_block_template](https://getmonero.org/resources/developer-guides/daemon-rpc.html#get_block_template) +with parameters `extra_nonce: ""` (implemented in pull request +[#5728](https://github.com/monero-project/monero/pull/5728)) and +`wallet_address: ""`, using the result values from step #2 +above. The miner now informs the pool of the resulting block template it will use for the job: @@ -123,6 +93,11 @@ a status: "id":1 } +The *degree* of validation required is at the discretion of the pool +implementer. This pool simply ensures the supplied block template can be parsed +as a Monero block and that the destination coinbase reward pays out to the pool +wallet. + (5) The miner submits results. No changes here: {