<p>When there were no pools, all of the first mining clients interfaced directly with Bitcoin. They connected to Bitcoin's JSON-RPC interface and used the <em>getwork</em> RPC method to get the required work. Getting work from a pool is the same as getting work from Bitcoin. The client connects to the pool over HTTP, often using the same HTTP authentication that Bitcoin's JSON-RPC interface uses; the client sends a JSON-RPC <em>getwork</em> message; and the pool sends back a JSON-RPC <em>getwork</em> response.</p>

<p>Many pools nowadays support some extensions to the <em>getwork</em> protocol that Bitcoin does not.</p>

<p>See:
<a href="https://en.bitcoin.it/wiki/Getwork" rel="nofollow">https://en.bitcoin.it/wiki/Getwork</a></p>

CC BY-SA 3.0
2013-09-07T09:23:38.423Z
Since this answer was written there are two new protocols; Stratum and gbt (getblocktemplate). Stratum seems the most popular, and getwork is being phased out by most clients and servers.
Dr.Haribo
CC BY-SA 3.0
2011-10-01T19:58:48.397Z
2011-10-01T19:58:48.397Z
theymos
<p>The Bitcoin client protocol is well documented in the Bitcoin Wiki, but I can't find much on the protocol used by pools and miners. Is it described anywhere?</p>

<mining-pools><json-rpc><getwork><stratum><getblocktemplate>
What is the standard protocol for pools/miners?
ThePiachu
# What is the standard protocol for pools/miners?

(Asked by: username_0 on 2011-10-01)

The Bitcoin client protocol is well documented in the Bitcoin Wiki, but I can't find much on the protocol used by pools and miners. Is it described anywhere?

**Tags:** mining-pools, json-rpc, getwork, stratum, getblocktemplate


---

## 1 answers

### Answer by username_1 on 2011-10-01. Score: 6 | Accepted answer

When there were no pools, all of the first mining clients interfaced directly with Bitcoin. They connected to Bitcoin's JSON-RPC interface and used the *getwork* RPC method to get the required work. Getting work from a pool is the same as getting work from Bitcoin. The client connects to the pool over HTTP, often using the same HTTP authentication that Bitcoin's JSON-RPC interface uses; the client sends a JSON-RPC *getwork* message; and the pool sends back a JSON-RPC *getwork* response.

Many pools nowadays support some extensions to the *getwork* protocol that Bitcoin does not.

See:
<https://en.bitcoin.it/wiki/Getwork>

> **Comments:**
> **username_2**: Since this answer was written there are two new protocols; Stratum and gbt (getblocktemplate). Stratum seems the most popular, and getwork is being phased out by most clients and servers.  

---

