sharp-cryptonote-tool/rpc/Daemon.cs

69 lines
1.5 KiB
C#

using System;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Collections.Generic;
using System.Threading.Tasks;
using JSONRPC;
using cryptonote.tools;
namespace cryptonote.rpc
{
public class Daemon
{
RPCConnector rpc;
public Daemon(string host,int port)
{
this.rpc = new RPCConnector(host, port);
}
public int GetBlockCount(){
Response response = rpc.Call("getblockcount");
if (response.Success()){
return Convert.ToInt32(response.result["count"].ToObject<int>());
}
return -1;
}
public BlockTemplate getBlockTemplate(string wallet,uint reserve_size){
BlockTemplate bt = null;
Response response = this.rpc.Call()
.method("getblocktemplate")
.parameter("wallet_address", wallet)
.parameter("reserve_size", 60)
.execute();
if (response.Success()){
byte[] blob = HexString.toBytes(response.result["blocktemplate_blob"].ToString());
bt = new BlockTemplate(
blob,
response.result["difficulty"].ToObject<Int64>(),
response.result["height"].ToObject<Int64>(),
response.result["prev_hash"].ToObject<string>(),
response.result["reserved_offset"].ToObject<Int64>(),
reserve_size
);
}
return bt;
}
public bool check(){
return this.rpc.Call("get_info").Success();
}
public Int64 getTargetHeight(){
Response response = rpc.Call("get_info");
if (response.Success()){
return response.result["target_height"].ToObject<int>();
}
return -1;
}
}
}