messageAbciContext{
// the hash of the transaction that being handled. Application can record this// in their state as a reference.string tx_hash = 1;
// the height of the current block.uint64 block_height = 2;
// the deterministic time of the current block.
google.protobuf.Timestamp block_time = 3;
// the total txs of the chain.uint64 total_txs = 4;
// tx statistics
TxStatistics tx_statistics = 5;
uint32 tx_index = 6;
// the deterministic time of the last block.
google.protobuf.Timestamp last_block_time = 7;
}
BigSint
messageBigSint{
bytes value = 1;
bool minus = 2;
}
messageChainInfo{
string id = 1; // node id.string network = 2; // which network the node belongs to.string moniker = 3; // name of the node.string consensus_version = 4; // consensus engine version for this node.bool synced = 5; // indicate if this node is fully synced.bytes app_hash = 6; // current application hash.bytes block_hash = 7; // current block hash.uint64 block_height = 8; // latest block height, in integer.
google.protobuf.Timestamp block_time = 9; // latest block time.string address = 10; // the address of the node.uint64 voting_power = 11; // the voting power of the node, in integer.uint64 total_txs = 12; // total number of txs up to the latest blockstring version = 13; // current forge versionstring data_version = 14; // current data version
map<string, string> forge_apps_version = 15;
repeatedstring supported_txs = 16;
}
CircularQueue
messageCircularQueue{
// each item is the value of the Anyrepeatedbytes items = 1;
// data inserted into the queue shall have same type_urlstring type_url = 2;
// if max_items is 0, meaning the queue has no size limit (use it cautious).// Otherwise when queue is full, we either will not be able to add item// (circular = false), or (circlar = true) replace an item (based on fifo).uint32 max_items = 3;
bool circular = 4;
// default is false, meaning LIFO (last in first out). new items are prepend// to the queue and when we drop items we drop the tail item. When it is true,// new items are append to the tail, and when we drop items we drop the head.bool fifo = 5;
}
ConsensusParams
messageConsensusParams{
uint64 max_bytes = 1;
sint64 max_gas = 2;
// we keep max_validators + max_candidates items in validator list, and only// use max_validators items for the validators.uint32 max_validators = 3;
uint32 max_candidates = 4;
repeatedstring pub_key_types = 5;
repeated Validator validators = 6;
bool validator_changed = 7;
bool param_changed = 8;
}
messageNodeInfo{
string id = 1; // node id.string network = 2; // which network the node belongs to.string moniker = 3; // name of the node.string consensus_version = 4; // consensus engine version for this node.bool synced = 5; // indicate if this node is fully synced.bytes app_hash = 6; // current application hash.bytes block_hash = 7; // current block hash.uint64 block_height = 8; // latest block height, in integer.
google.protobuf.Timestamp block_time = 9; // latest block time.string address = 10; // the address of the node.uint64 voting_power = 11; // the voting power of the node, in integer.uint64 total_txs = 12; // total number of txs up to the latest blockstring version = 13; // current forge versionstring data_version = 14; // current data version
map<string, string> forge_apps_version = 15;
repeatedstring supported_txs = 16;
string ip = 17; // self node ip
GeoInfo geo_info = 18; // self node geo info
}
messageStakeContext{
// total tokens staked for others
BigUint total_stakes = 1;
BigUint total_unstakes = 2;
// total tokens being staked
BigUint total_received_stakes = 3;
// keep a list of stake address. Only store recent N (e.g. 128) stakes.
CircularQueue recent_stakes = 4;
// keep a list of received stake address. Only store recent N (e.g. 128)// stakes.
CircularQueue recent_received_stakes = 15;
}
messageTransaction{
string from = 1;
uint64 nonce = 2;
bytes signature = 3;
// use DID for the chain. "did:" prefix is omittedstring chain_id = 4;
// we will support multiple signatures in case of certain tx need multiple// parties' signature.repeated Multisig signatures = 5;
// at current version we don't have a VM to process byte// code so this should always be empty. Forge will reject// tx with non-empty byte_code// bytes byte_code = 6;
google.protobuf.Any itx = 7;
}