syntax = "proto2"; package hw.trezor.messages.ethereum_definitions; // Sugar for easier handling in Java option java_package = "com.satoshilabs.trezor.lib.protobuf"; option java_outer_classname = "TrezorMessageEthereumDefinitions"; /** * Ethereum definitions type enum. * Used to check the encoded EthereumNetworkInfo or EthereumTokenInfo message. */ enum EthereumDefinitionType { NETWORK = 0; TOKEN = 1; } /** * Ethereum network definition. Used to (de)serialize the definition. * * Definition types should not be cross-parseable, i.e., it should not be possible to * incorrectly parse network info as token info or vice versa. * To achieve that, the first field is wire type varint while the second field is wire type * length-delimited. Both are a mismatch for the token definition. * * @embed */ message EthereumNetworkInfo { required uint64 chain_id = 1; required string symbol = 2; required uint32 slip44 = 3; required string name = 4; } /** * Ethereum token definition. Used to (de)serialize the definition. * * Definition types should not be cross-parseable, i.e., it should not be possible to * incorrectly parse network info as token info or vice versa. * To achieve that, the first field is wire type length-delimited while the second field * is wire type varint. Both are a mismatch for the network definition. * * @embed */ message EthereumTokenInfo { required bytes address = 1; required uint64 chain_id = 2; required string symbol = 3; required uint32 decimals = 4; required string name = 5; } /** * Contains an encoded Ethereum network and/or token definition. See ethereum-definitions.md for details. * @embed */ message EthereumDefinitions { optional bytes encoded_network = 1; // encoded Ethereum network optional bytes encoded_token = 2; // encoded Ethereum token }