Yet another filecoin secondary retrieval client

fcr

alt text

Yet another filecoin secondary retrieval client

FCR is a filecoin secondary retrieval client featured with the ability to participate in an ipld retrieval network and a payment proxy network. You can earn filecoin (FIL) by importing a regular file or a .car file or a lotus unsealed sector and serving the ipld graph to the network for paid retrieval. -OR- You can earn the surcharge by creating a payment channel and serving the payment channel to the network for others to do a proxy payment.

Features

  • Access to a CID Network based on Kademlia DHT.
  • Access to an incentivized Payment Network.

Install & Run

make build
./build/fcr --version

Run demo

This repository contains two demo: a five nodes network demo and a ten nodes network demo. To build the demo using mocked chain:

make demo-mc

To build the demo using local Filecoin devnet:

make demo
make lotus

For example, to run a five nodes network demo with mocked chain:

cd ./demo/fivenodes-mc
./up.sh

Note: When using mocked chain, the currency ID should be 0. When using lotus devnet, the currency ID should be 1. Also, don't forget to run docker compose rm -f to clean after done with the demo.

Things to do

  1. More document!
  2. Currently, FCR does not support Filecoin Mainnet, because it currently only supports actor version 4, a little bit more work will be done to support actor version 6 so it supports Mainnet.
  3. The overall system has a lot of things that can be improved/simplifed.
  4. At the moment, the initialisation process needs to be done by asking for user prompt. There should be a way to initialise FCR with a configuration.
  5. Need to test a lot of failure cases especially around disk storage operation.
  6. Need to test import sector.

One last thing

FCR is designed to support multicurrency as you can see the term currency_ID appears all around the repository. At the moment, only FIL is supported with the currency_ID to be 1.

Warning

Please be warned that this project should be considered as a proof-of-concept ONLY. You should not use it for production purpose.

Contributor

Zhenyang Shi

License

Apache 2.0

Similar Resources

A phoenix Chain client based on the go-ethereum fork,the new PoA consensus engine is based on the VRF algorithm.

Phoenix Official Golang implementation of the Phoenix protocol. !!!The current version is for testing and developing purposes only!!! Building the sou

Apr 28, 2022

Akroma GO client - Akroma is an EVM based application development platform (smart-contracts).

Akroma Akroma is an EVM based application development platform (smart-contracts). Akroma will utilize a Masternode system, and build out an Oracle pla

Dec 11, 2022

Tool for monitoring your Ethereum clients. Client-agnostic as it queries the standardized JSON-RPC APIs

Tool for monitoring your Ethereum clients. Client-agnostic as it queries the standardized JSON-RPC APIs

e7mon Tool for monitoring your Ethereum clients. Client-agnostic as it queries the standardized JSON-RPC APIs. However, the execution client should be

Dec 20, 2022

LEO (Low Ethereum Orbit) is an Ethereum Portal Network client.

LEO LEO (Low Ethereum Orbit) is an Ethereum Portal Network client. What makes LEO different from other Portal Network clients is that it uses libp2p f

Apr 19, 2022

A Commander for Go implementation of official Ethereum Client

Young A Commander for Go implementation of official Ethereum Client by zhong-my. Overview Young Dependencies Young stands on the shoulder of many grea

Oct 14, 2021

Package pinentry provides a client to GnuPG's pinentry.

Package pinentry provides a client to GnuPG's pinentry.

Dec 9, 2022

A Binance Smart Chain client based on the go-ethereum fork

A Binance Smart Chain client based on the go-ethereum fork

Dec 31, 2022

A Binance Smart Chain client based on the erigon fork

Erigon Erigon is an implementation of Ethereum (aka "Ethereum client"), on the efficiency frontier, written in Go. System Requirements Usage Getting S

Sep 17, 2022

Go client + OpenAPI v3 spec for Oura-Ring

Oura Ring OpenAPIv3 Schema Definition + Go Client This repo contains an OpenAPIv3 schema definition for OuraRing OuraRing API documentation https://cl

Sep 20, 2022
Comments
  • Blocksize on wire.

    Blocksize on wire.

    Having Graphsync return the correct blocksize on wire will greatly simplify the retrieval process. See issue here: https://github.com/ipfs/go-graphsync/issues/141

  • Fail to discover piece for size slightly bigger than 1M

    Fail to discover piece for size slightly bigger than 1M

    It seems like the DHT fails to discover pieces slightly bigger than 1M (1.2M for example).

    To recreate the issue, start 3 FCR nodes: Node 1, Node 2, and Node 3. Node 1 generates and serves a piece with 1.2M, Node 2 should be good to search for a piece offer with the same ID but not for Node 3: Node 3 cannot find an offer via DHT.

  • Fix memory issue for retrieval provider

    Fix memory issue for retrieval provider

    It seems like when handling retrieval requests, even after a retrieval process is done, the memory allocated to the retrieval process isn't released right away. There is a few minutes delay before the memory is released. Need to fix this.

  • Provide a way to clean the blockstore after removing piece from piece manager

    Provide a way to clean the blockstore after removing piece from piece manager

    Currently, when removing a piece from the piece manager, the actual block data isn't removed. It would be nice to have a function to clean the block store. Potential way: Traverse through the block store, remove a block if it does not have a parent node and is also not part of the piece store.

Related tags
A Go client and CLI for Filecoin Storage Auctions.

go-auctions-client A Go library and CLI to interact with Filecoin Storage Auctions. Join us on our public Slack channel for news, discussions, and sta

Nov 24, 2022
Supports the safe and convenient execution of asynchronous computations with goroutines and provides facilities for the safe retrieval of the computation results.

Rendezvous The Rendezvous library supports the safe and convenient execution of asynchronous computations with goroutines and provides facilities for

Dec 29, 2021
Implementation of the Filecoin protocol, written in Go
Implementation of the Filecoin protocol, written in Go

Project Lotus - 莲 Lotus is an implementation of the Filecoin Distributed Storage Network. For more details about Filecoin, check out the Filecoin Spec

Jan 9, 2023
Filecoin sector recover

扇区修复 Filecoin在封装或挖矿过程中,可能面临扇区数据丢失,那么就要被销毁PreCommit预质押的FIL,或者终止扇区最大损失扇区的90天的收益。扇区修复能修复丢失的文件,来减少或者避免损失。 扇区丢失的原因 1.存储盘坏盘 矿商为了降低封装成本,不得不使用裸盘做存储,来降低成本,提高自己

Nov 30, 2022
An implementation of the Filecoin Distributed Storage Network
An implementation of the Filecoin Distributed Storage Network

Project Lotus - 莲 Lotus is an implementation of the Filecoin Distributed Storage Network. For more details about Filecoin, check out the Filecoin Spec

Oct 27, 2021
🍕 PizzaCoin - cryptocurrency for buying and selling pizza or another stuff
🍕 PizzaCoin - cryptocurrency for buying and selling pizza or another stuff

?? PizzaCoin Cryptocurrency for buying and selling pizza or another stuff Installation Compilation Windows go build -o pizzacoin.exe ./cmd/PizzaCoin/m

Nov 21, 2021
The Fabric Smart Client is a new Fabric Client that lets you focus on the business processes and simplifies the development of Fabric-based distributed application.

Fabric Smart Client The Fabric Smart Client (FSC, for short) is a new Fabric client-side component whose objective is twofold. FSC aims to simplify th

Dec 14, 2022
Concurrent ssh client

go-cs Concurrent ssh client cs is a program for concurrently executing local or remote commands on multiple hosts. It is using OpenSSH for running rem

Feb 21, 2022
Huobi Eco Chain client based on the go-ethereum fork

The Huobi Open Platform is a unified infrastructure platform based on the technical, traffic and ecological resources of the Huobi Group, and will be gradually open to the blockchain industry.

Dec 31, 2022