syntax = "proto3"; package cash.z.wallet.sdk.rpc; option go_package = "walletrpc"; import "compact_formats.proto"; // A BlockID message contains identifiers to select a block: a height or a // hash. If the hash is present it takes precedence. message BlockID { uint64 height = 1; bytes hash = 2; } // BlockRange technically allows ranging from hash to hash etc but this is not // currently intended for support, though there is no reason you couldn't do // it. Further permutations are left as an exercise. message BlockRange { BlockID start = 1; BlockID end = 2; } // A TxFilter contains the information needed to identify a particular // transaction: either a block and an index, or a direct transaction hash. message TxFilter { BlockID block = 1; uint64 index = 2; bytes hash = 3; } // RawTransaction contains the complete transaction data. message RawTransaction { bytes data = 1; } message SendResponse { int32 errorCode = 1; string errorMessage = 2; } // Empty placeholder. Someday we may want to specify e.g. a particular chain fork. message ChainSpec {} message Empty {} service CompactTxStreamer { rpc GetLatestBlock(ChainSpec) returns (BlockID) {} rpc GetBlock(BlockID) returns (CompactBlock) {} rpc GetBlockRange(BlockRange) returns (stream CompactBlock) {} rpc GetTransaction(TxFilter) returns (RawTransaction) {} rpc SendTransaction(RawTransaction) returns (SendResponse) {} rpc GetLightdInfo(Empty) returns (SendResponse) {} }