High-level message format: StandardRequest and Response
Request struct definition:
pub struct Subscribe<'a> {
pub id: u64,
pub agent_signature: String,
pub extranonce1: Option<Extranonce<'a>>,
}
Response struct definition:
pub struct Subscribe<'a> {
pub id: u64,
pub extra_nonce1: Extranonce<'a>,
pub extra_nonce2_size: usize,
pub subscriptions: Vec<(String, String)>,
}
JSON request example:
{
"id": 1,
"method": "mining.subscribe",
"params": ["cpuminer/1.0.0"]
}
JSON response example:
{
"id": 1,
"result": [
[[“mining.set_difficulty”,“731ec5e0649606ff”],
[“mining.notify”,“731ec5e0649606ff”]],
“e9695791”,4],
"error": null
}
Request struct definition:
pub struct Authorize {
pub id: u64,
pub name: String,
pub password: String,
}
Response struct definition:
pub struct Authorize {
pub id: u64,
authorized: bool,
}
JSON request example:
{
"id": 2,
"method": "mining.authorize",
"params": ["username", "password"]
}
JSON response example:
{
"id": 2,
"result": true,
"error": null
}
Request struct definition:
pub struct Submit<'a> {
pub id: u64,
pub user_name: String,
pub job_id: String,
pub extra_nonce2: Extranonce<'a>,
pub time: HexU32Be,
pub nonce: HexU32Be,
pub version_bits: Option<HexU32Be>,
}
Response struct definition:
pub struct Submit {
pub id: u64,
is_ok: bool,
}
JSON request example:
{
"id": 3,
"method": "mining.submit",
"params": [
“username”,
“4f”,
“fe36a31b”,
“504e86ed”,
“e9695791”]
}
JSON response example:
{
"id": 3,
"result": true,
"error": null
}
High-level message format: Notification (no Response)
Notification struct definition:
pub struct Notify<'a> {
pub job_id: String,
pub prev_hash: PrevHash<'a>,
pub coin_base1: HexBytes,
pub coin_base2: HexBytes,
pub merkle_branch: Vec<MerkleNode<'a>>,
pub version: HexU32Be,
pub bits: HexU32Be,
pub time: HexU32Be,
pub clean_jobs: bool,
}
JSON request example:
{
"id": null,
"method": "mining.notify",
"params": [
“4f”,
“4d16b6f85af6e2198f44ae2a6de67f78487ae5611b77c6c0440b921e00000000”,
“01000000010000000000000000000000000000000000000000000000000000000000000000ffffffff20020862062f503253482f04b8864e5008”,
“072f736c7573682f000000000100f2052a010000001976a914d23fcdf86f7e756a64a7a9688ef9903327048ed988ac00000000”,
[],
“00000002”,
“1c2ac4af”,
“504e86b9”,
false]
}
Notification struct definition:
pub struct SetDifficulty {
pub value: f64,
}
JSON request example:
{
"id": null,
"method": "mining.set_difficulty",
"params": [2]
}
Notification struct definition:
pub struct SetExtranonce<'a> {
pub extra_nonce1: Extranonce<'a>,
pub extra_nonce2_size: usize,
}
JSON request example:
{
"id": null,
"method": "mining.set_extranonce",
"params": [“e9695791”,4]
}