NeoFS is a decentralized distributed object storage integrated with the NEO Blockchain.
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.
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.
To make all binaries you need Go 1.22+ 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 can also be performed in a container:
make docker/all # build all binaries
make docker/bin/neofs-<name> # build a specific binary
To make docker images suitable for use in neofs-dev-env use:
make images
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:
See docs/cli-commands for information about all cli commands.
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.
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.
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.
- Storage node
- Inner ring
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.
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.
NeoFS is maintained by NeoSPCC with the help and contributions from community members.
Please see CREDITS for details.