syntax = "proto3"; import "google/protobuf/empty.proto"; import "types/types.proto"; package txpool; option go_package = "./txpool;txpool"; message OnPendingBlockRequest {} message OnPendingBlockReply { bytes rplBlock = 1; } message OnMinedBlockRequest {} message OnMinedBlockReply { bytes rplBlock = 1; } message OnPendingLogsRequest {} message OnPendingLogsReply { bytes rplLogs = 1; } 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 HashRateRequest {} message HashRateReply { uint64 hashRate = 1; } message MiningRequest {} message MiningReply { bool enabled = 1; bool running = 2; } service Mining { // Version returns the service version number rpc Version(google.protobuf.Empty) returns (types.VersionReply); // subscribe to pending blocks event rpc OnPendingBlock(OnPendingBlockRequest) returns (stream OnPendingBlockReply); // subscribe to mined blocks event rpc OnMinedBlock(OnMinedBlockRequest) returns (stream OnMinedBlockReply); // subscribe to pending blocks event rpc OnPendingLogs(OnPendingLogsRequest) returns (stream OnPendingLogsReply); // 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); // HashRate returns the current hashrate for local CPU miner and remote miner. rpc HashRate(HashRateRequest) returns (HashRateReply); // Mining returns an indication if this node is currently mining and it's mining configuration rpc Mining(MiningRequest) returns (MiningReply); }