Signed-off-by: Stanislav Bogatyrev <stanislav@nspcc.ru>
6 KiB
Protocol Documentation
Table of Contents
refs/types.proto
Message Address
Objects in NeoFS are addressed by their ContainerID and ObjectID.
String presentation of Address
is the concatenation of string encoded
ContainerID
and ObjectID
delimited by '/' character.
Field | Type | Label | Description |
---|---|---|---|
container_id | ContainerID | Container identifier | |
object_id | ObjectID | Object identifier |
Message Checksum
Checksum message. Depending on checksum algorithm type the string presentation may vary:
- TZ
Hex encoded string without0x
prefix - SHA256
Hex encoded string without0x
prefix
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.
String presentation is base58 encoded string.
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 a 32 byte long SHA256 hash of object's header
field, which,
in it's turn, contains hash of object's payload.
String presentation is base58 encoded string.
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
.
OwnerID
is a 25 bytes sequence starting with Neo version prefix byte
followed by 20 bytes of ScrptHash and 4 bytes of checksum.
String presentation is Base58 Check Encoded string.
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.
String presentation is a Semantic Versioning 2.0.0 compatible version string
with 'v' prefix. I.e. vX.Y
, where X
- major number, Y
- minor number.
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 |