epicchain-node

module
v0.0.0-...-0ba0ddf Latest Latest
Warning

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

Go to latest
Published: Dec 9, 2024 License: GPL-3.0

README

epicchain is a decentralized distributed object storage integrated with the epicchain Blockchain.


Report GitHub release (latest SemVer) License

Overview

epicchain nodes are organized in a peer-to-peer network that stores and distributes users' data. Any epicchain user may participate in the network, either providing storage resources to earn compensation or storing their data at a competitive price.

Users can reliably store object data in the epicchain network and have full control over data placement due to the decentralized architecture and flexible storage policies. Nodes execute these storage policies, allowing users to specify parameters such as geographical location, reliability level, number of nodes, type of disks, capacity, and more.

Deep epicchain Blockchain integration allows epicchain to be used by dApps directly from epicchainVM on the Smart Contract code level. This enables dApps to manipulate large amounts of data affordably.

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

Supported Platforms

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

The latest version of epicchain-node is compatible with epicchain-contract v0.19.1.

Building

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

make all

The resulting binaries will appear in the bin/ folder.

To make a specific binary, use:

make bin/epicchain-<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/epicchain-<name>     # build a specific binary

Docker Images

To create Docker images suitable for use in epicchain-dev-env, use:

make images

Running

CLI

epicchain-cli allows users to manage containers and objects by connecting to any node in the target network. Detailed descriptions of all commands and options are provided within the tool, but some specific concepts have additional documentation:

epicchain-adm is a network setup and management utility for network administrators. Refer to docs/cli-adm.md for more information.

Both epicchain-cli and epicchain-adm can take a configuration file as a parameter to simplify working with the same network/wallet. See cli.yaml for an example. 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 users will run storage nodes, while inner ring nodes are special and similar to epicchain consensus nodes in their network role. Both accept parameters from YAML or JSON configuration files and environment variables.

See docs/sighup.md on how to reconfigure nodes without a restart.

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

Example Configurations

These examples contain all possible configurations of epicchain nodes. While the parameters are correct, the provided values are for informational purposes only and not recommended for direct use. Real networks and configurations will differ significantly.

See node.yaml for configuration notes.

Private Network

For epicchain development, consider using epicchain-dev-env. For developing applications using epicchain, the lighter epicchain-aio container is recommended. For manual deployment, refer to docs/deploy.md.

Contributing

We welcome contributions! Please read the contributing guidelines before starting. Create a new issue first, describing the feature or topic you plan to implement.

Credits

epicchain is maintained by epicchainSPCC with contributions from the community. Please see CREDITS for details.

License

Directories

Path Synopsis
cmd
epicchain-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.
epicchain-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.
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