一、授权(mining.authorize)命令
矿机收到矿池的订阅响应消息后,接着向矿池发送授权消息,消息内容如下:
{"id":2,"method":"mining.authorize","params":["zsc.1","x"]}
params包含两部分,第一部分是矿工名,第二部分是矿工密码(随意)。
矿池收到矿机的授权消息后,先对矿工名进行验证,矿工名的第一部分(“.”左边的部分)为用户名或子账号名,若该用户名不存在,则授权失败,返回error,消息内容如下:
{"id":2,"result":null,"error":[29,"Invalid username",null]}
error中第一部分是错误码,第二部分是错误描述。若授权成功,则返回消息内容如下:
{"id":2,"result":true,"error":null}
二、auth_stratum函数主要完成mining.authorize解析过程
1、组装命令,sprintf(s, "{\"id\": %d, \"method\": \"mining.authorize\", \"params\": [\"%s\", \"%s\"]}",
swork_id++, pool->rpc_user, pool->rpc_pass);
2、发送请求认证命令stratum_send(pool, s, strlen(s))
3、接收矿池消息,sret = recv_line(pool);
4、获取result信息,res_val = json_object_get(val, "result");
5、设置矿池对象属性 ,pool->probed = true;
6、如果有默认难度,向矿池请求设置矿机默认难度