syntax = "proto3"; package types; // This file is copied from http://github.com/tendermint/tmsp //---------------------------------------- // Message types // Not being used // Could be added to request/response // so we don't have to type switch // (would be twice as fast, but we're talking about 15ns) enum MessageType { NullMessage = 0x00; Echo = 0x01; Flush = 0x02; Info = 0x03; SetOption = 0x04; Exception = 0x05; AppendTx = 0x11; CheckTx = 0x12; Commit = 0x13; Query = 0x14; InitChain = 0x15; BeginBlock = 0x16; EndBlock = 0x17; } //---------------------------------------- // Code types enum CodeType { OK = 0; // General response codes, 0 ~ 99 InternalError = 1; EncodingError = 2; BadNonce = 3; Unauthorized = 4; InsufficientFunds = 5; UnknownRequest = 6; // Reserved for basecoin, 100 ~ 199 BaseDuplicateAddress = 101; BaseEncodingError = 102; BaseInsufficientFees = 103; BaseInsufficientFunds = 104; BaseInsufficientGasPrice = 105; BaseInvalidInput = 106; BaseInvalidOutput = 107; BaseInvalidPubKey = 108; BaseInvalidSequence = 109; BaseInvalidSignature = 110; BaseUnknownAddress = 111; BaseUnknownPubKey = 112; BaseUnknownPlugin = 113; // Reserved for governance, 200 ~ 299 GovUnknownEntity = 201; GovUnknownGroup = 202; GovUnknownProposal = 203; GovDuplicateGroup = 204; GovDuplicateMember = 205; GovDuplicateProposal = 206; GovDuplicateVote = 207; GovInvalidMember = 208; GovInvalidVote = 209; GovInvalidVotingPower = 210; } //---------------------------------------- // Request types message Request { oneof value{ RequestEcho echo = 1; RequestFlush flush = 2; RequestInfo info = 3; RequestSetOption set_option = 4; RequestAppendTx append_tx = 5; RequestCheckTx check_tx = 6; RequestCommit commit = 7; RequestQuery query = 8; RequestInitChain init_chain = 9; RequestBeginBlock begin_block = 10; RequestEndBlock end_block = 11; } } message RequestEcho { string message = 1; } message RequestFlush { } message RequestInfo { } message RequestSetOption{ string key = 1; string value = 2; } message RequestAppendTx{ bytes tx = 1; } message RequestCheckTx{ bytes tx = 1; } message RequestQuery{ bytes query = 1; } message RequestCommit{ } message RequestInitChain{ repeated Validator validators = 1; } message RequestBeginBlock{ bytes hash = 1; Header header = 2; } message RequestEndBlock{ uint64 height = 1; } //---------------------------------------- // Response types message Response { oneof value{ ResponseException exception = 1; ResponseEcho echo = 2; ResponseFlush flush = 3; ResponseInfo info = 4; ResponseSetOption set_option = 5; ResponseAppendTx append_tx = 6; ResponseCheckTx check_tx = 7; ResponseCommit commit = 8; ResponseQuery query = 9; ResponseInitChain init_chain = 10; ResponseBeginBlock begin_block = 11; ResponseEndBlock end_block = 12; } } message ResponseException{ string error = 1; } message ResponseEcho { string message = 1; } message ResponseFlush{ } message ResponseInfo { string info = 1; // backwards compatible TMSPInfo tmsp_info = 2; LastBlockInfo last_block = 3; ConfigInfo config = 4; } message ResponseSetOption{ string log = 1; } message ResponseAppendTx{ CodeType code = 1; bytes data = 2; string log = 3; } message ResponseCheckTx{ CodeType code = 1; bytes data = 2; string log = 3; } message ResponseQuery{ CodeType code = 1; bytes data = 2; string log = 3; } message ResponseCommit{ CodeType code = 1; bytes data = 2; string log = 3; } message ResponseInitChain{ } message ResponseBeginBlock{ } message ResponseEndBlock{ repeated Validator diffs = 4; } //---------------------------------------- // Info types message TMSPInfo { string Version = 1; } message LastBlockInfo { uint64 block_height = 1; bytes block_hash = 2; bytes app_hash = 3; } message ConfigInfo { uint64 max_block_size = 1; } //---------------------------------------- // Blockchain Types message Header { string chain_id = 1; uint64 height = 2; uint64 time = 3; uint64 num_txs = 4; BlockID last_block_id = 5; bytes last_commit_hash = 6; bytes data_hash = 7; bytes validators_hash = 8; bytes app_hash = 9; } message BlockID { bytes hash = 1; PartSetHeader parts = 2; } message PartSetHeader { uint64 total = 1; bytes hash = 2; } message Validator { bytes pubKey = 1; uint64 power = 2; } //---------------------------------------- // Service Definition service TMSPApplication { rpc Echo(RequestEcho) returns (ResponseEcho) ; rpc Flush(RequestFlush) returns (ResponseFlush); rpc Info(RequestInfo) returns (ResponseInfo); rpc SetOption(RequestSetOption) returns (ResponseSetOption); rpc AppendTx(RequestAppendTx) returns (ResponseAppendTx); rpc CheckTx(RequestCheckTx) returns (ResponseCheckTx); rpc Query(RequestQuery) returns (ResponseQuery); rpc Commit(RequestCommit) returns (ResponseCommit); rpc InitChain(RequestInitChain) returns (ResponseInitChain); rpc BeginBlock(RequestBeginBlock) returns (ResponseBeginBlock); rpc EndBlock(RequestEndBlock) returns (ResponseEndBlock); }