# Protocol Documentation ## Table of Contents - [accounting/service.proto](#accounting/service.proto) - Services - [AccountingService](#frost.fs.accounting.AccountingService) - Messages - [BalanceRequest](#frost.fs.accounting.BalanceRequest) - [BalanceRequest.Body](#frost.fs.accounting.BalanceRequest.Body) - [BalanceResponse](#frost.fs.accounting.BalanceResponse) - [BalanceResponse.Body](#frost.fs.accounting.BalanceResponse.Body) - [accounting/types.proto](#accounting/types.proto) - Messages - [Decimal](#frost.fs.accounting.Decimal) - [Scalar Value Types](#scalar-value-types)

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](#frost.fs.accounting.BalanceRequest) | [BalanceResponse](#frost.fs.accounting.BalanceResponse) | ### Message BalanceRequest BalanceRequest message | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | body | [BalanceRequest.Body](#frost.fs.accounting.BalanceRequest.Body) | | Body of the balance request message. | | meta_header | [frost.fs.session.RequestMetaHeader](#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](#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](#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](#frost.fs.accounting.BalanceResponse.Body) | | Body of the balance response message. | | meta_header | [frost.fs.session.ResponseMetaHeader](#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](#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](#frost.fs.accounting.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](http://speleotrove.com/decimal/) for detailed problem description. | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | value | [int64](#int64) | | Number in the smallest Token fractions. | | precision | [uint32](#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 |