gpt4 book ai didi

java - 比特币矿池挖矿的地层连接

转载 作者:搜寻专家 更新时间:2023-11-01 03:17:35 25 4
gpt4 key购买 nike

我正在编写一个比特币矿工,它使用 stratum 协议(protocol)在矿池中开采(参见文档 here

层协议(protocol)在编码时使用 JSON-RPC 2.0,根据 JSON-RPC 2.0 规范(规范 here),我应该使用套接字创建到池的连接。

我的问题是我似乎无法从池中收到响应。 JSON-RPC 2.0 声明对于我发送的每个 Request 对象,我都必须收到响应。

这是我的代码:

public static void main(String[] args) 
{
connectToPool("stratum.slushpool.com", 3333);
}
static void connectToPool(String host, int port)
{
try
{
InetAddress address = InetAddress.getByName(host);
out.println("Atempting to connect to " + address.toString() + " on port " + port + ".");

socket = new Socket(address, port);
String message1 = "{\"jsonrpc\" : \"2.0\", \"id\": 1, \"method\": \"mining.subscribe\", \"params\": []}";

PrintWriter output = new PrintWriter(socket.getOutputStream(), true);
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));

output.write((message1 + "\\n"));
out.println(input.readLine());//Hangs here.
}
catch (IOException e)
{
out.println(e.getMessage());
out.println("Error. Can't connect to Pool.");
System.exit(-2);
}
}

最佳答案

经过数小时的修改,我找到了解决方案。显然 JSON 字符串不应该有任何空格。所以不是:

String message1 = "{\"jsonrpc\" : \"2.0\", \"id\": 1, \"method\": \"mining.subscribe\", \"params\": []}";

应该是:

String message1 = "{\"id\":1,\"method\":\"mining.subscribe\",\"params\":[]}";

关于java - 比特币矿池挖矿的地层连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43575356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com