frostfs-api/proto-docs/audit.md
Stanislav Bogatyrev bee986c72c [#109] Define data audit result structure
Inner ring nodes conduct data audit and submit audit results. Results are then
saved in audit smart contract for settlement routines to transfer payments.

We don't need to save the full detailed audit report, but only provide enough
information for other subsystems to reward or punish storage nodes.

Signed-off-by: Stanislav Bogatyrev <stanislav@nspcc.ru>
2020-12-25 15:04:56 +03:00

4.2 KiB

Protocol Documentation

Table of Contents

Top

audit/types.proto

Message DataAuditResult

DataAuditResult keeps record of conducted Data Audits. The detailed report is generated separately.

Field Type Label Description
version neo.fs.v2.refs.Version Data Audit Result format version. Effectively the version of API library used to report DataAuditResult structure.
audit_epoch fixed64 Epoch number when the Data Audit was conducted
container_id neo.fs.v2.refs.ContainerID Container under audit
public_key bytes Public key of the auditing InnerRing node in a binary format
complete bool Shows if Data Audit process was complete in time or if it was cancelled
requests uint32 Number of request done at PoR stage
retries uint32 Number of retries done at PoR stage
pass_sg neo.fs.v2.refs.ObjectID repeated List of Storage Groups that passed audit PoR stage
fail_sg neo.fs.v2.refs.ObjectID repeated List of Storage Groups that failed audit PoR stage
hit uint32 Number of sampled objects under audit placed in an optimal way according to the containers placement policy when checking PoP
miss uint32 Number of sampled objects under audit placed in suboptimal way according to the containers placement policy, but still at a satisfactory level when checking PoP
fail uint32 Number of sampled objects under audit stored in a way not confirming placement policy or not found at all when checking PoP
pass_nodes bytes repeated List of storage node public keys that passed at least one PDP
fail_nodes bytes repeated List of storage node public keys that failed at least one PDP

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