Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
8.5 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 a 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 a base58 encoded string.
JSON value will be 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 the header
or the payload
changes.
ObjectID
is a 32 byte long
SHA256 hash of
the object's header
field, which, in it's turn, contains the hash of the object's
payload.
String presentation is a base58 encoded string.
JSON value will be 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 a Base58 Check Encoded string.
JSON value will be 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 | |
scheme | SignatureScheme | Scheme contains digital signature scheme identifier |
Message SignatureRFC6979
RFC 6979 signature.
Field | Type | Label | Description |
---|---|---|---|
key | bytes | Public key used for signing | |
sign | bytes | Deterministic ECDSA with SHA-256 hashing |
Message SubnetID
NeoFS subnetwork identifier.
String representation of a value is base-10 integer.
JSON representation is an object containing a single value
number field.
Field | Type | Label | Description |
---|---|---|---|
value | fixed32 | 4-byte integer subnetwork identifier. |
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
is the major number, Y
is the 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 |
SignatureScheme
Signature scheme describes digital signing scheme used for (key, signature) pair.
Name | Number | Description |
---|---|---|
ECDSA_SHA512 | 0 | ECDSA with SHA-512 hashing (FIPS 186-3) |
ECDSA_RFC6979_SHA256 | 1 | Deterministic ECDSA with SHA-256 hashing (RFC 6979) |
ECDSA_RFC6979_SHA256_WALLET_CONNECT | 2 | Deterministic ECDSA with SHA-256 hashing using WalletConnect API. Here the algorithm is the same, but the message format differs. |
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 |