Protocol Documentation
Table of Contents
Top
refs/types.proto
Message Address
Object in NeoFS can be addressed by it's ContainerID and ObjectID. In string
format there MUST be a '/' delimeter between them.
Field
Type
Label
Description
container_id
ContainerID
Container identifier
object_id
ObjectID
Object identifier
Message Checksum
Checksum message.
Field
Type
Label
Description
type
ChecksumType
Checksum algorithm type
sum
bytes
Checksum itself
Message ContainerID
NeoFS container identifier. Container structures are immutable and
content-addressed. ContainerID
is a 32 byte long SHA256 hash of
stable-marshalled container message.
Field
Type
Label
Description
value
bytes
Container identifier in a binary format.
Message ObjectID
NeoFS Object unique identifier. Objects are immutable and content-addressed.
It means ObjectID
will change if header
or payload
changes. ObjectID
is calculated as a hash of header
field, which contains hash of object's
payload.
Field
Type
Label
Description
value
bytes
Object identifier in a binary format
Message OwnerID
OwnerID is a derivative of a user's main public key. The transformation
algorithm is the same as for Neo3 wallet addresses. Neo3 wallet address can
be directly used as OwnerID
.
Field
Type
Label
Description
value
bytes
Identifier of the container owner in a binary format
Message Signature
Signature of something in NeoFS.
Field
Type
Label
Description
key
bytes
Public key used for signing
sign
bytes
Signature
Message Version
API version used by a node.
Field
Type
Label
Description
major
uint32
Major API version
minor
uint32
Minor API version
ChecksumType
Checksum algorithm type.
Name
Number
Description
CHECKSUM_TYPE_UNSPECIFIED
0
Unknown. Not used
TZ
1
Tillich-Zemor homomorphic hash function
SHA256
2
SHA-256
Scalar Value Types
.proto Type
Notes
C++ Type
Java Type
Python Type
double
double
double
float
float
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
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
uint32
Uses variable-length encoding.
uint32
int
int/long
uint64
Uses variable-length encoding.
uint64
long
int/long
sint32
Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int32s.
int32
int
int
sint64
Uses variable-length encoding. Signed int value. These more efficiently encode negative numbers than regular int64s.
int64
long
int/long
fixed32
Always four bytes. More efficient than uint32 if values are often greater than 2^28.
uint32
int
int
fixed64
Always eight bytes. More efficient than uint64 if values are often greater than 2^56.
uint64
long
int/long
sfixed32
Always four bytes.
int32
int
int
sfixed64
Always eight bytes.
int64
long
int/long
bool
bool
boolean
boolean
string
A string must always contain UTF-8 encoded or 7-bit ASCII text.
string
String
str/unicode
bytes
May contain any arbitrary sequence of bytes.
string
ByteString
str