Protocol Documentation
Table of Contents
Top
node/api.proto
Block
Block is a struct with both header, data and raw data
It should be used for things like api responses when querying blocks
BlockData
Field
Type
Label
Description
version
BlockVersion
signatureType
SigType
balance
uint64
the new account balance after applying all transactions
height
uint64
the block height (block index)
previous
bytes
previous block, empty if first block
transactions
Transaction
repeated
transactions contained in a block - Can't contain duplicates - Can't contain more than 255 transactions - Orderd (as per protobuf specification)
Field
Type
Label
Description
signature
bytes
64 bytes (for Ed25519, might be expanded later)
publicKey
bytes
32 bytes (for Ed25519) account's public key this needs to be provided since account addresses are hashed public keys
timestamp
uint64
seconds of UTC time since Unix epoch will be set by the first node receiving the transaction
Empty
RawBlock
A minimal version of Block
Should be used in cases where blocks need to be verified like in p2p
communication or when re-building/verifieng the entire chain
Transaction
Transaction.TxClaim
Block Claim collects a transaction from another account's block
Field
Type
Label
Description
sendTransactionID
bytes
Transaction.TxDelegate
Block delegate assigns a new representative to an account
Field
Type
Label
Description
representative
bytes
Transaction.TxOpen
Initialize a new Account
Transaction.TxSend
Block send is a send transaction in the sender's account
AccountType
should be represented as u8
Name
Number
Description
Managed
0
Autonomous
1
BlockVersion
should be represented as u8
Name
Number
Description
V1
0
SigType
should be represented as u8
Name
Number
Description
Ed25519
0
Scalar Value Types
.proto Type
Notes
C++
Java
Python
Go
C#
PHP
Ruby
double
double
double
float
float64
double
float
Float
float
float
float
float
float32
float
float
Float
int32
Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint32 instead.
int32
int
int
int32
int
integer
Bignum or Fixnum (as required)
int64
Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use sint64 instead.
int64
long
int/long
int64
long
integer/string
Bignum
uint32
Uses variable-length encoding.
uint32
int
int/long
uint32
uint
integer
Bignum or Fixnum (as required)
uint64
Uses variable-length encoding.
uint64
long
int/long
uint64
ulong
integer/string
Bignum or Fixnum (as required)
sint32
Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.
int32
int
int
int32
int
integer
Bignum or Fixnum (as required)
sint64
Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.
int64
long
int/long
int64
long
integer/string
Bignum
fixed32
Always four bytes. More efficient than uint32 if values are often greater than 2^28.
uint32
int
int
uint32
uint
integer
Bignum or Fixnum (as required)
fixed64
Always eight bytes. More efficient than uint64 if values are often greater than 2^56.
uint64
long
int/long
uint64
ulong
integer/string
Bignum
sfixed32
Always four bytes.
int32
int
int
int32
int
integer
Bignum or Fixnum (as required)
sfixed64
Always eight bytes.
int64
long
int/long
int64
long
integer/string
Bignum
bool
bool
boolean
boolean
bool
bool
boolean
TrueClass/FalseClass
string
A string must always contain UTF-8 encoded or 7-bit ASCII text.
string
String
str/unicode
string
string
string
String (UTF-8)
bytes
May contain any arbitrary sequence of bytes.
string
ByteString
str
[]byte
ByteString
string
String (ASCII-8BIT)