syntax = "proto3"; import "types/types.proto"; package remote; option go_package = "./remote;remote"; option java_multiple_files = true; option java_package = "io.turbo-geth.db"; option java_outer_classname = "ETHBACKEND"; service ETHBACKEND { rpc Add(TxRequest) returns (AddReply); rpc Etherbase(EtherbaseRequest) returns (EtherbaseReply); rpc NetVersion(NetVersionRequest) returns (NetVersionReply); rpc Subscribe(SubscribeRequest) returns (stream SubscribeReply); // GetWork returns a work package for external miner. // // The work package consists of 3 strings: // result[0] - 32 bytes hex encoded current block header pow-hash // result[1] - 32 bytes hex encoded seed hash used for DAG // result[2] - 32 bytes hex encoded boundary condition ("target"), 2^256/difficulty // result[3] - hex encoded block number rpc GetWork(GetWorkRequest) returns (GetWorkReply); // SubmitWork can be used by external miner to submit their POW solution. // It returns an indication if the work was accepted. // Note either an invalid solution, a stale work a non-existent work will return false. rpc SubmitWork(SubmitWorkRequest) returns (SubmitWorkReply); // SubmitHashRate can be used for remote miners to submit their hash rate. // This enables the node to report the combined hash rate of all miners // which submit work through this node. // // It accepts the miner hash rate and an identifier which must be unique // between nodes. rpc SubmitHashRate(SubmitHashRateRequest) returns (SubmitHashRateReply); // GetHashRate returns the current hashrate for local CPU miner and remote miner. rpc GetHashRate(GetHashRateRequest) returns (GetHashRateReply); // Mining returns an indication if this node is currently mining and it's mining configuration rpc Mining(MiningRequest) returns (MiningReply); } enum Event { HEADER = 0; PENDING_LOG = 1; } message TxRequest { bytes signedtx = 1; } message AddReply { types.H256 hash = 1; } message EtherbaseRequest {} message EtherbaseReply { types.H160 address = 1; } message NetVersionRequest {} message NetVersionReply { uint64 id = 1; } message SubscribeRequest {} message SubscribeReply { Event type = 1; // type (only header at that moment) bytes data = 2; // serialized data } message GetWorkRequest {} message GetWorkReply { string headerHash = 1; // 32 bytes hex encoded current block header pow-hash string seedHash = 2; // 32 bytes hex encoded seed hash used for DAG string target = 3; // 32 bytes hex encoded boundary condition ("target"), 2^256/difficulty string blockNumber = 4; // hex encoded block number } message SubmitWorkRequest { bytes blockNonce = 1; bytes powHash = 2; bytes digest = 3; } message SubmitWorkReply { bool ok = 1; } message SubmitHashRateRequest { uint64 rate = 1; bytes id = 2; } message SubmitHashRateReply { bool ok = 1; } message GetHashRateRequest {} message GetHashRateReply { uint64 hashRate = 1; } message MiningRequest {} message MiningReply { bool enabled = 1; bool running = 2; }