epicchain is a decentralized distributed object storage integrated with the epicchain Blockchain.
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.
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.
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 can also be performed in a container:
make docker/all # build all binaries
make docker/bin/epicchain-<name> # build a specific binary
To create Docker images suitable for use in epicchain-dev-env, use:
make images
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.
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.
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.
- Storage node:
- Inner ring:
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.
We welcome contributions! Please read the contributing guidelines before starting. Create a new issue first, describing the feature or topic you plan to implement.
epicchain is maintained by epicchainSPCC with contributions from the community. Please see CREDITS for details.