nspcc-dev / nspcc-dev/neofs-node

node: Optimize verification of the request signatures

Open
#2,684 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

I4 neofs-storage performance S3 U2
Dominant language
Go
Stars
38
Forks
51
Avg merge
1d 20h
Merged PRs (30d)
38

Description

Is your feature request related to a problem? Please describe.

NeoFS API server sometimes wastes large amounts of memory. For example, to verify request signatures, the server decodes messages into intermediate structures, encodes its parts (field-ordered Protocol Buffers V3), verifies signatures and request continues processing.

Describe the solution you'd like

do not perform extra decode-encode stages. To do this, we must arrange the fields in the message without an additional buffer, calculate the checksum and verify the signature. Nothing blocks us from this cuz Protobuf is pretty simple and gRPC lib provides a lot of utilities around it

Describe alternatives you've considered

leave as it is: simpler code but worse performance

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the Go code that verifies NeoFS request signatures and tracing its current decode, re-encode, checksum, and verification path. Read the gRPC utilities and Protocol Buffers handling used there. Done means the extra decode-encode stages and intermediate buffer are avoided while signature verification and request processing remain correct.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, grpc
Domain
distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.