2020-07-24 13:54:03 +00:00
< p align = "center" >
2023-01-09 07:04:58 +00:00
< img src = "./.github/logo.svg" width = "500px" alt = "FrostFS" >
2020-07-24 13:54:03 +00:00
< / p >
2023-01-09 07:04:58 +00:00
2020-07-24 13:54:03 +00:00
< p align = "center" >
2023-01-09 07:04:58 +00:00
< a href = "https://frostfs.info" > FrostFS< / a > is a decentralized distributed object storage integrated with the < a href = "https://neo.org" > NEO Blockchain< / a > .
2020-07-24 13:54:03 +00:00
< / p >
---
2024-09-11 09:40:04 +00:00
[![Report ](https://goreportcard.com/badge/git.frostfs.info/TrueCloudLab/frostfs-node )](https://goreportcard.com/report/git.frostfs.info/TrueCloudLab/frostfs-node)
![Release (latest) ](https://git.frostfs.info/TrueCloudLab/frostfs-node/badges/release.svg )
2020-07-24 13:54:03 +00:00
# Overview
2023-01-09 07:04:58 +00:00
FrostFS Nodes are organized in a peer-to-peer network that takes care of storing
2022-03-04 06:55:25 +00:00
and distributing user's data. Any Neo user may participate in the network and
2022-04-21 11:28:05 +00:00
get paid for providing storage resources to other users or store their data in
2023-01-09 07:04:58 +00:00
FrostFS and pay a competitive price for it.
2020-07-24 13:54:03 +00:00
2023-01-09 07:04:58 +00:00
Users can reliably store object data in the FrostFS network and have a transparent
2022-03-04 06:55:25 +00:00
data placement process due to a decentralized architecture and flexible storage
2020-07-24 13:54:03 +00:00
policies. Each node is responsible for executing the storage policies that the
users select for geographical location, reliability level, number of nodes, type
2023-01-09 07:04:58 +00:00
of disks, capacity, etc. Thus, FrostFS gives full control over data to users.
2020-07-24 13:54:03 +00:00
2023-01-09 07:04:58 +00:00
Deep [Neo Blockchain ](https://neo.org ) integration allows FrostFS to be used by
2022-03-04 06:55:25 +00:00
dApps directly from
2020-07-24 13:54:03 +00:00
[NeoVM ](https://docs.neo.org/docs/en-us/basic/technology/neovm.html ) on the
2021-12-10 11:24:04 +00:00
[Smart Contract ](https://docs.neo.org/docs/en-us/intro/glossary.html )
2020-07-24 13:54:03 +00:00
code level. This way dApps are not limited to on-chain storage and can
manipulate large amounts of data without paying a prohibitive price.
2023-03-07 13:38:26 +00:00
FrostFS has a native [gRPC API ](https://git.frostfs.info/TrueCloudLab/frostfs-api ) and has
2022-03-04 06:55:25 +00:00
protocol gateways for popular protocols such as [AWS
2024-09-11 09:40:04 +00:00
S3](https://git.frostfs.info/TrueCloudLab/frostfs-s3-gw),
[HTTP ](https://git.frostfs.info/TrueCloudLab/frostfs-http-gw ),
2020-07-24 13:54:03 +00:00
[FUSE ](https://wikipedia.org/wiki/Filesystem_in_Userspace ) and
[sFTP ](https://en.wikipedia.org/wiki/SSH_File_Transfer_Protocol ) allowing
2021-12-10 11:24:04 +00:00
developers to integrate applications without rewriting their code.
2020-07-24 13:54:03 +00:00
2021-04-20 19:14:43 +00:00
# Supported platforms
2022-04-21 11:28:05 +00:00
Now, we only support GNU/Linux on amd64 CPUs with AVX/AVX2 instructions. More
2022-03-04 06:55:25 +00:00
platforms will be officially supported after release `1.0` .
2021-04-20 19:14:43 +00:00
2023-01-09 07:04:58 +00:00
The latest version of frostfs-node works with frostfs-contract
2024-09-11 09:40:04 +00:00
[v0.19.2 ](https://git.frostfs.info/TrueCloudLab/frostfs-contract/releases/tag/v0.19.2 ).
2021-06-03 16:39:27 +00:00
2022-06-30 12:48:56 +00:00
# Building
2024-08-20 12:35:45 +00:00
To make all binaries you need Go 1.22+ and `make` :
2022-06-30 12:48:56 +00:00
```
make all
```
The resulting binaries will appear in `bin/` folder.
To make a specific binary use:
```
2023-01-09 07:04:58 +00:00
make bin/frostfs-< name >
2022-06-30 12:48:56 +00:00
```
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
2023-01-09 07:04:58 +00:00
make docker/bin/frostfs-< name > # build a specific binary
2022-06-30 12:48:56 +00:00
```
## Docker images
2024-09-11 09:40:04 +00:00
To make docker images suitable for use in [frostfs-dev-env ](https://git.frostfs.info/TrueCloudLab/frostfs-dev-env/ ) use:
2022-06-30 12:48:56 +00:00
```
make images
```
2023-12-29 11:16:40 +00:00
# Debugging
## VSCode
To run and debug single node cluster with VSCode:
1. Clone and build [frostfs-contract ](https://git.frostfs.info/TrueCloudLab/frostfs-contract ) repository to the same directory level as `frostfs-node` . For example:
```
/
├── src
├── frostfs-node
└── frostfs-contract
```
See `frostfs-contract` 's README.md for build instructions.
2. Copy `launch.json` and `tasks.json` from `dev/.vscode-example` directory to `.vscode` directory. If you already have such files in `.vscode` directory, then merge them manually.
3. Go to **Run and Debug** (`Ctrl+Shift+D`) and start `IR+Storage node` configuration.
4. To create container and put object into it run (container and object IDs will be different):
```
./bin/frostfs-cli container create -r 127.0.0.1:8080 --wallet ./dev/wallet.json --policy "REP 1 IN X CBF 1 SELECT 1 FROM * AS X" --basic-acl public-read-write --await
Enter password > < - press ENTER , the is no password for wallet
CID: CfPhEuHQ2PRvM4gfBQDC4dWZY3NccovyfcnEdiq2ixju
./bin/frostfs-cli object put -r 127.0.0.1:8080 --wallet ./dev/wallet.json --file README.md --cid CfPhEuHQ2PRvM4gfBQDC4dWZY3NccovyfcnEdiq2ixju
2024-01-26 14:13:40 +00:00
Enter password >
2023-12-29 11:16:40 +00:00
4300 / 4300 [===========================================================================================================================================================================================================] 100.00% 0s
[README.md] Object successfully stored
OID: 78sohnudVMnPsczXqsTUcvezosan2YDNVZwDE8Kq5YwU
CID: CfPhEuHQ2PRvM4gfBQDC4dWZY3NccovyfcnEdiq2ixju
./bin/frostfs-cli object get -r 127.0.0.1:8080 --wallet ./dev/wallet.json --cid CfPhEuHQ2PRvM4gfBQDC4dWZY3NccovyfcnEdiq2ixju --oid 78sohnudVMnPsczXqsTUcvezosan2YDNVZwDE8Kq5YwU
...
```
2020-07-24 13:54:03 +00:00
# Contributing
Feel free to contribute to this project after reading the [contributing
guidelines](CONTRIBUTING.md).
2020-12-30 10:07:48 +00:00
Before starting to work on a certain topic, create a new issue first, describing
the feature/topic you are going to implement.
2020-07-24 13:54:03 +00:00
# Credits
2024-09-11 09:40:04 +00:00
FrostFS is maintained by [True Cloud Lab ](https://git.frostfs.info/TrueCloudLab/ ) with the help and
2020-07-24 13:54:03 +00:00
contributions from community members.
Please see [CREDITS ](CREDITS.md ) for details.
# License
- [GNU General Public License v3.0 ](LICENSE )