decred / gominer

Go (golang) based GPU miner for Decred.
GNU General Public License v3.0
160 stars 80 forks source link

Stratum/pool mining #172

Closed detailyang closed 6 years ago

detailyang commented 6 years ago

@jolan Hello. It looks like gominer use standard stratum protocol. But now the getblocktemplate is disabled. So I'm confused that the stratum server how to construct the mining.notify ?

Can anybody know ? Many thanks !!!

jolan commented 6 years ago

I saw that you discovered the answer to this is getwork in https://github.com/decred/dcrd/pull/672.

gominer is stratum client not a stratum server.

The only open source stratum server that I'm aware of that supports Decred is:

https://github.com/tpruvot/yiimp/tree/next/stratum

detailyang commented 6 years ago

@jolan Many Thanks. After dump the protocol from suprnova, the protocol format is the following (I guess)

./cpuminer -a decred -o stratum+tcp://dcr.suprnova.cc:3256 -O xxxx:yyyy

{
  "id": null,
  "method": "mining.notify",
  "params": [
    "7c62",
    "702a4496d4d2f52b54d12b8d223f4802f718bc55f1ed93a10000003300000000",
  "dd3dd3136c307f0c82025e480b7d715e6a74229d917ad20f8fd9f11ce3088c08a95cf3f55351efc6e6bcb0a662bbd5d2d70286624f11d0db963b4e33c0eb723a01002a18fae02a1405001400f4a00000eaa4001a694adece010000005fbf0200bb39000094b4ee590000000000000000",
    "05000000",
    [],
    "05000000",
    "1a00a4ea",
    "59eeb494",
    false
  ]
}

The params is as the following:

params[0]: job id
params[1]: prevhash (it's strange bytes reversed for per 4 bytes) (total 32 bytes)
params[2]: merkleroot+StakeRoot + .... Nonce + extranonce2 (here is the 4 bytes)(total 112 bytes)
params[3]: StakeVersion reversed bytes (total 4 bytes)
params[4]: merklebranch here is the []
params[4]: Bits reversed bytes (total 4 bytes)
params[5]: timestap reversed bytes (total 4 bytes)
params[6]: job clean

Not sure it's the same as the gominer, but i will continue take a look at this. Anyway, thank you:)

tpkeeper commented 5 years ago

666