TBD Describe how exactly sending of new jobs before the next block is found works.
nTime
nTime
field can be rolled once per second with the following notes:nTime
as invalid submission.nTime
once per second.nTime
which is within the consensus limits.nTime
rolled once per second.nTime
rollingThe protocol allows nTime
rolling in the hardware as long as the hardware can roll the nTime
field once per second.
Modern bitcoin ASIC miners do/will support nTime
rolling in hardware because it is the most efficient way to expand hashing space for one hashing core/chip.
The nTime
field is part of the second SHA256 block so it shares midstates with the nonce.
Rolling nTime
therefore can be implemented as efficiently as rolling nonce, with lowered communication with a mining chip over its communication channels.
The protocol needs to allow and support this.
v2 ST - protocol v2 (this), standard channel
v2 EX - protocol v2, extended channel
v1 - original stratum v1 protocol
Typical scenario for end mining devices, header-only mining. The device:
Translation from v2 clients to v2 upstream, without aggregating difficulty.
Transparent proxy (connection aggregation):
OpenChannel
messages from downstream connections to the upstream, with updated request_id
for unique identification.channel_id
given by OpenChannel.Success
with the initiating downstream connection.
All further messages addressed to the channel_id
from the upstream node are passed only to this connection, with channel_id
staying stable.Proxy:
V1
(todo difficulty aggregation with info about the devices)
Translation from v1 clients to v2 upstream.
The proxy:
...
The original stratum protocol uses json, which has very bad ratio between the payload size and the actual information transmitted. Designing a binary based protocol yields better data efficiency. Technically, we can use the saved bandwidth for more frequent submits to further reduce the variance in measured hash rate and/or to allow individual machines to submit its work directly instead of using work-splitting mining proxy.
SetNewPrevHash
with regards to repeated block height+----------------------------------------------------------------------------------------------------------------------+
| Hashing Power Information |
+-------------------------+------------------+-------------------------------------------------------------------------+
| Field Name | Data Type | Description |
+-------------------------+------------------+-------------------------------------------------------------------------+
| aggregated_device_count | U32 | Number of aggregated devices on the channel. An end mining device must |
| | | send 1. A proxy can send 0 when there are no connections to it yet (in |
| | | aggregating mode) |
+-------------------------+------------------+-------------------------------------------------------------------------+