All Projects → filecoin-project → cpp-filecoin

filecoin-project / cpp-filecoin

Licence: GPL-3.0 License
C++17 implementation of Filecoin

Programming Languages

C++
36643 projects - #6 most used programming language
CMake
9771 projects
go
31211 projects - #10 most used programming language
shell
77523 projects
Dockerfile
14818 projects
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to cpp-filecoin

sentinel
Filecoin Network monitoring and analysis tools.
Stars: ✭ 26 (-77.59%)
Mutual labels:  filecoin, filecoin-protocol
filsnap
MetaMask snap for interacting with Filecoin dapps.
Stars: ✭ 60 (-48.28%)
Mutual labels:  filecoin
lighthouse
Get verifiable storage on Filecoin Network directly from Ethereum Smart Contracts
Stars: ✭ 19 (-83.62%)
Mutual labels:  filecoin
nebula-crawler
🌌 A libp2p DHT crawler, monitor, and measurement tool that exposes timely information about DHT networks.
Stars: ✭ 97 (-16.38%)
Mutual labels:  filecoin
estuary-www
https://estuary.tech
Stars: ✭ 32 (-72.41%)
Mutual labels:  filecoin
digital-copyright
Stamp your code with a trackable digital copyright
Stars: ✭ 17 (-85.34%)
Mutual labels:  filecoin
ref-fvm
Reference implementation of the Filecoin Virtual Machine
Stars: ✭ 255 (+119.83%)
Mutual labels:  filecoin
java-filecoin-api-client
An API client for Filecoin implemented in Java
Stars: ✭ 38 (-67.24%)
Mutual labels:  filecoin
pop
Run a point-of-presence within Myel, the community powered content delivery network.
Stars: ✭ 28 (-75.86%)
Mutual labels:  filecoin
bidbot
A Filecoin Network sidecar for storage providers to bid in storage deal auctions.
Stars: ✭ 31 (-73.28%)
Mutual labels:  filecoin
estuary
A custom IPFS/Filecoin node that makes it easy to pin IPFS content and make Filecoin deals.
Stars: ✭ 195 (+68.1%)
Mutual labels:  filecoin
web3.storage
⁂ The simple file storage service for IPFS & Filecoin
Stars: ✭ 417 (+259.48%)
Mutual labels:  filecoin
filecoin-sealer-recover
Filecoin sector recover
Stars: ✭ 51 (-56.03%)
Mutual labels:  filecoin
valist
Web3-native software distribution. Publish and install executables, Docker images, WebAssembly, and more. Powered by Ethereum, IPFS, and Filecoin.
Stars: ✭ 107 (-7.76%)
Mutual labels:  filecoin
research
distributed system;blokchain;filecoin/ipfs,...
Stars: ✭ 39 (-66.38%)
Mutual labels:  filecoin
tokencore
The core components of the blockchain wallet backend, support a variety of blockchain address generation and offline signatures
Stars: ✭ 412 (+255.17%)
Mutual labels:  filecoin
kotal
Blockchain Kubernetes Operator
Stars: ✭ 137 (+18.1%)
Mutual labels:  filecoin
js-filecoin-api-client
An API client for Filecoin
Stars: ✭ 45 (-61.21%)
Mutual labels:  filecoin
filecoin-client
Golang的轻量级filecoin客户端,支持离线签名,基本满足钱包交易所充值提现逻辑
Stars: ✭ 50 (-56.9%)
Mutual labels:  filecoin
filecoin-box
Filecoin flavored Ganache Truffle box
Stars: ✭ 23 (-80.17%)
Mutual labels:  filecoin

Filecoin (cpp-filecoin)

C++17 implementation of blockchain based digital storage

Filecoin is a decentralized protocol described in spec

Minimal hardware requirements

Node minimal parameters:

Hard disk space: at least 200 GB
RAM: 8 GB
OS: Linux(Ubuntu), macOS. Other operating systems builds are not supported yet, so running on them may be unstable.

Miner minimal parameters:

CPU: 8+ cores
Hard Disk space: 256 GiB of very fast NVMe SSD memory space + 1 TiB of slow HDD memory space
RAM: 16 GB
GPU: GPU is highly recommended, it will speed up computations, but Mixing AMD CPUs and Nvidia GPUs should be avoided.

You can also read about lotus minimal requirements in filecoin-docs

Dependencies

All C++ dependencies are managed using Hunter. It uses cmake to download required libraries and do not require downloading and installing packages manually.

Target C++ compilers are:

  • GCC 9.3.0
  • Clang 9.0.1
  • AppleClang 12.0.0

Lotus CLI

fuhon-node supports subset of lotus CLI commands.
You may download pre-built binaries or build lotus from source.
Lotus CLI introduction.

Rust

filecoin-ffi provides pre-built binaries for some platforms.
If they are unavailable, you need Rust compiler to build them.
Rust installation instruction.

Build

# clone project
git clone --recursive https://github.com/filecoin-project/cpp-filecoin
# configure cmake
cmake cpp-filecoin -B cpp-filecoin/build
# build and install fuhon-node and fuhon-miner
cmake --build cpp-filecoin/build --target install
# check that fuhon-node and fuhon-miner are now available
fuhon-node --help
fuhon-miner --help

Usage

Interopnet node

Create the following fuhon-interopnet/config.cfg file

# use interopnet profile, corresponds to "make interopnet" lotus target
profile=interopnet

# enable debug logs to see sync progress
log=d

# bootstrap peers from https://github.com/filecoin-project/lotus/blob/master/build/bootstrap/interopnet.pi
bootstrap=/dns4/bootstrap-0.interop.fildev.network/tcp/1347/p2p/12D3KooWLGPq9JL1xwL6gHok7HSNxtK1Q5kyfg4Hk69ifRPghn4i
bootstrap=/dns4/bootstrap-1.interop.fildev.network/tcp/1347/p2p/12D3KooWFYS1f31zafv8mqqYu8U3hEqYvaZ6avWzYU3BmZdpyH3h

Start node

fuhon-node --repo fuhon-interopnet --genesis docker/interopnet/genesis.car
# you can omit --genesis flag after first run
fuhon-node --repo fuhon-interopnet

To use lotus CLI add --repo flag

lotus --repo fuhon-interopnet net peers

Mainnet node (from snapshot)

Download mainnet snapshot (docs).

LATEST_SNAPSHOT=$(curl -sI https://fil-chain-snapshots-fallback.s3.amazonaws.com/mainnet/minimal_finality_stateroots_latest.car | perl -ne '/x-amz-website-redirect-location:\s(.+\.car)/ && print $1')
curl -o mainnet-snapshot.car $LATEST_SNAPSHOT

Create following fuhon-mainnet/config.cfg file

# use downloaded snapshot file (do not delete that file)
use-snapshot=mainnet-snapshot.car

# bootstrap peers from https://github.com/filecoin-project/lotus/blob/master/build/bootstrap/mainnet.pi
bootstrap=/dns4/node.glif.io/tcp/1235/p2p/12D3KooWBF8cpp65hp2u9LK5mh19x67ftAam84z9LsfaquTDSBpt

Start node (first run may take some time)

fuhon-node --repo fuhon-mainnet --genesis cpp-filecoin/core/docker/mainnet/genesis.car

Docker-compose example

docker-compose up

CodeStyle

We follow CppCoreGuidelines.

Please use clang-format 11.0.0 with provided .clang-format file to autoformat the code.

Maintenance

Maintainers: @zuiris, @turuslan, @Elestrias, @ortyomka, @wer1st, @Alexey-N-Chernyshov

Tickets: Can be opened in GitHub Issues.

Hunter cache upload

If you have access and want to upload to hunter-binary-cache, you need to add your GitHub token with read:packages and write:packages permissions.
To generate GitHub token follow the instructions.

export GITHUB_HUNTER_USERNAME=<github account name>
export GITHUB_HUNTER_TOKEN=<github token>
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].