neofs-node

module
v0.41.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 27, 2024 License: GPL-3.0

README

NeoFS logo

NeoFS is a decentralized distributed object storage integrated with the NEO Blockchain.


Report GitHub release (latest SemVer) License

Overview

NeoFS nodes are organized in a peer-to-peer network that takes care of storing and distributing user's data. Any Neo user may participate in the network and get paid for providing storage resources to other users or store their data in NeoFS and pay a competitive price for it.

Users can reliably store object data in the NeoFS network and have a transparent data placement process due to a decentralized architecture and flexible storage policies. Each node is responsible for executing the storage policies that the users select for geographical location, reliability level, number of nodes, type of disks, capacity, etc. Thus, NeoFS gives full control over data to users.

Deep Neo Blockchain integration allows NeoFS to be used by dApps directly from NeoVM on the Smart Contract code level. This way dApps are not limited to on-chain storage and can manipulate large amounts of data without paying a prohibitive price.

NeoFS has a native gRPC API and has protocol gateways for popular protocols such as AWS S3, HTTP, FUSE and sFTP allowing developers to integrate applications without rewriting their code.

Supported platforms

Now, we only support GNU/Linux on amd64 CPUs with AVX/AVX2 instructions. More platforms will be officially supported after release 1.0.

The latest version of neofs-node works with neofs-contract v0.19.1.

Building

To make all binaries you need Go 1.20+ and make:

make all

The resulting binaries will appear in bin/ folder.

To make a specific binary use:

make bin/neofs-<name>

See the list of all available commands in the cmd folder.

Building with Docker

Building can also be performed in a container:

make docker/all                     # build all binaries
make docker/bin/neofs-<name> # build a specific binary

Docker images

To make docker images suitable for use in neofs-dev-env use:

make images

Running

CLI

neofs-cli allows to perform a lot of actions like container/object management connecting to any node of the target network. It has an extensive description for all of its commands and options internally, but some specific concepts have additional documents describing them:

neofs-adm is a network setup and management utility usually used by the network administrators. Refer to docs/cli-adm.md for mode information about it.

Both neofs-cli and neofs-adm can take configuration file as a parameter to simplify working with the same network/wallet. See cli.yaml for an example of what this config may look like. Control service-specific configuration examples are ir-control.yaml and node-control.yaml for IR and SN nodes respectively.

Node

There are two kinds of nodes -- inner ring nodes and storage nodes. Most of the time you're interested in running a storage node, because inner ring ones are special and are somewhat similar to Neo consensus nodes in their role for the network. Both accept parameters from YAML or JSON configuration files and environment variables.

See docs/sighup.md on how nodes can be reconfigured without restart.

See docs/storage-node-configuration.md on how to configure a storage node.

Example configurations

These examples contain all possible configurations of NeoFS nodes. All parameters are correct there, however, their particular values are provided for informational purposes only (and not recommended for direct use), real networks and real configuration are likely to differ a lot for them.

See node.yaml for configuration notes.

Private network

If you're planning on NeoFS development take a look at neofs-dev-env. To develop applications using NeoFS we recommend more light-weight neofs-aio container. If you really want to get your hands dirty refer to docs/deploy.md for instructions on how to do things manually from scratch.

Contributing

Feel free to contribute to this project after reading the contributing guidelines.

Before starting to work on a certain topic, create a new issue first, describing the feature/topic you are going to implement.

Credits

NeoFS is maintained by NeoSPCC with the help and contributions from community members.

Please see CREDITS for details.

License

Directories

Path Synopsis
cmd
neofs-cli/internal/client
Package internal provides functionality for NeoFS CLI application communication with NeoFS network.
Package internal provides functionality for NeoFS CLI application communication with NeoFS network.
neofs-node/reputation/internal/client
Package internal provides functionality for NeoFS Node Reputation system communication with NeoFS network.
Package internal provides functionality for NeoFS Node Reputation system communication with NeoFS network.
Package contracts embeds compiled Neo contracts and provides access to them.
Package contracts embeds compiled Neo contracts and provides access to them.
pkg
innerring/internal/client
Package neofsapiclient provides functionality for IR application communication with NeoFS network.
Package neofsapiclient provides functionality for IR application communication with NeoFS network.
innerring/processors/netmap/nodevalidation/state
Package state collects functionality for verifying states of network map members.
Package state collects functionality for verifying states of network map members.
local_object_storage/writecache
Package writecache implements write-cache for objects.
Package writecache implements write-cache for objects.
morph/deploy
Package deploy provides NeoFS Sidechain deployment functionality.
Package deploy provides NeoFS Sidechain deployment functionality.
services/object/internal/client
Package internal provides functionality for NeoFS Node Object service communication with NeoFS network.
Package internal provides functionality for NeoFS Node Object service communication with NeoFS network.
util/glagolitsa
Package glagolitsa provides Glagolitic script for NeoFS Alphabet.
Package glagolitsa provides Glagolitic script for NeoFS Alphabet.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL