Signed-off-by: Stanislav Bogatyrev <stanislav@nspcc.ru>
7 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.
JSON value will be the data encoded as a string using standard base64 encoding with paddings. Either standard or URL-safe base64 encoding with/without paddings are accepted.
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.
JSON value will be the data encoded as a string using standard base64 encoding with paddings. Either standard or URL-safe base64 encoding with/without paddings are accepted.
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.
JSON value will be the data encoded as a string using standard base64 encoding with paddings. Either standard or URL-safe base64 encoding with/without paddings are accepted.
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 |