frostfs-api/proto-docs/accounting.md
Ori Bruk b0df4dfc4d
All checks were successful
Formatters / Run fmt (pull_request) Successful in 25s
Pre-commit hooks / Pre-commit (pull_request) Successful in 36s
DCO action / DCO (pull_request) Successful in 42s
[#68] Remove unnecessary language options.
Change proto package path.

Signed-off-by: Ori Bruk <o.bruk@yadro.com>
2024-11-05 16:52:48 +03:00

7 KiB

Protocol Documentation

Table of Contents

Top

accounting/service.proto

Service "frost.fs.accounting.AccountingService"

Accounting service provides methods for interaction with FrostFS sidechain via other FrostFS nodes to get information about the account balance. Deposit and Withdraw operations can't be implemented here, as they require Mainnet FrostFS smart contract invocation. Transfer operations between internal FrostFS accounts are possible if both use the same token type.

rpc Balance(BalanceRequest) returns (BalanceResponse);

Method Balance

Returns the amount of funds in GAS token for the requested FrostFS account.

Statuses:

  • OK (0, SECTION_SUCCESS): balance has been successfully read;
  • Common failures (SECTION_FAILURE_COMMON).
Name Input Output
Balance BalanceRequest BalanceResponse

Message BalanceRequest

BalanceRequest message

Field Type Label Description
body BalanceRequest.Body Body of the balance request message.
meta_header frost.fs.session.RequestMetaHeader Carries request meta information. Header data is used only to regulate message transport and does not affect request execution.
verify_header frost.fs.session.RequestVerificationHeader Carries request verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission.

Message BalanceRequest.Body

To indicate the account for which the balance is requested, its identifier is used. It can be any existing account in FrostFS sidechain Balance smart contract. If omitted, client implementation MUST set it to the request's signer OwnerID.

Field Type Label Description
owner_id frost.fs.refs.OwnerID Valid user identifier in OwnerID format for which the balance is requested. Required field.

Message BalanceResponse

BalanceResponse message

Field Type Label Description
body BalanceResponse.Body Body of the balance response message.
meta_header frost.fs.session.ResponseMetaHeader Carries response meta information. Header data is used only to regulate message transport and does not affect request execution.
verify_header frost.fs.session.ResponseVerificationHeader Carries response verification information. This header is used to authenticate the nodes of the message route and check the correctness of transmission.

Message BalanceResponse.Body

The amount of funds in GAS token for the OwnerID's account requested. Balance is given in the Decimal format to avoid precision issues with rounding.

Field Type Label Description
balance Decimal Amount of funds in GAS token for the requested account.

Top

accounting/types.proto

Message Decimal

Standard floating point data type can't be used in FrostFS due to inexactness of the result when doing lots of small number operations. To solve the lost precision issue, special Decimal format is used for monetary computations.

Please see The General Decimal Arithmetic Specification for detailed problem description.

Field Type Label Description
value int64 Number in the smallest Token fractions.
precision uint32 Precision value indicating how many smallest fractions can be in one integer.

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