Home

Awesome

Arweave stratum mining protocol

login

Miner send login request after connection successfully established for authorization on pool.

Example request:

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "login",
  "params": {
    "login": "account.miner",
    "pass": "x",
    "agent": "node/v2.0.0.1"
  }
}

Example success reply:

{
  "id": 1,
  "jsonrpc": "2.0",
  "error": null,
  "result": {
    "height": 234234,
    "status": "OK",
  }
}

Example error reply:

{
  "id": 1,
  "jsonrpc": "2.0",
  "error": {
    "code": -1,
    "message": "Invalid payment address provided"
  }
}

job

Pool send new job to miner. Miner should switch to new job as fast as possible.

Example notification:

{
  "jsonrpc": "2.0",
  "method": "job",
  "params": {
    "job_id": "q7PLUPL25UV0z5Ij14IyMk8htXbj",
    "bds": "070780e6b9d60586ba419a0c224e3c6c3e134cc45c4fa04d8ee2d91c2595463c57e",
    "target": "b88d0600",
    "timestamp": 7656576474,
    "height": 223344,
  }
}

submit

Miner send submit request after share was found.

Example request:

{
  "id": 2,
  "jsonrpc": "2.0",
  "method": "submit",
  "params": {
    "job_id": "4BiGm3/RgGQzgkTI/xV0smdA+EGZ",
    "nonce": "d0030040",
    "hash": "e1364b8782719d7683e2ccd3d8f724bc59dfa780a9e960e7c0e0046acdb40100"
  }
}

Example success reply:

{
  "id": 2,
  "jsonrpc": "2.0",
  "error": null,
  "result": {
    "status": "OK"
  }
}

Example error reply:

{
  "id": 2,
  "jsonrpc": "2.0",
  "error": {
    "code": -1,
    "message": "Low difficulty share"
  }
}

keepalived

Non standard but widely supported protocol extension. Miner send keepalived to prevent connection timeout.

Example request:

{
  "id": 2,
  "method": "keepalived",
  "params": {
    "id": "1be0b7b6-b15a-47be-a17d-46b2911cf7d0"
  }
}

Example success reply:

{
  "id": 2,
  "jsonrpc": "2.0",
  "error": null,
  "result": {
    "status": "KEEPALIVED"
  }
}

Arweave node stratum api

get mining job from node

GET /job

example request:

curl --location --request GET 'http://127.0.0.1:1984/job'

example response:

{
  "bds":"B7E5CD3DE40F9026B3F6F1E9C7C9753A305DEA660F9E0ABA8907703FA9DE0625F4B88E68F5CDD393FD8F9B1B5A8B2E7D",
  "diff":"115792089220951783668884481203208192566563540710259079877416191370322755190784",
  "timestamp":1594889095,
  "height":487490
}

submit job to node

POST /solution

example request:

curl --location --request POST 'http://127.0.0.1:1984/solution' \
--header 'Content-Type: application/json' \
--data-raw '{
    "hash": "sdsdsdsd",
    "nonce": "234234234",
    "timestamp": 232323423,
}'

example success response:

{ok}

example error response:

{false}