go-fil-markets

module
v1.2.4 Latest Latest
Warning

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

Go to latest
Published: Mar 29, 2021 License: Apache-2.0, MIT

README

go-fil-markets

CircleCI codecov GoDoc

This repository contains modular implementations of the storage and retrieval market subsystems of Filecoin. They are guided by the v1.0 and 1.1 Filecoin specification updates.

Separating implementations into a blockchain component and one or more mining and market components presents an opportunity to encourage implementation diversity while reusing non-security-critical components.

Disclaimer: Reporting issues

This repo shared the issue tracker with lotus. Please report your issues at the lotus issue tracker

Components

  • storagemarket: for finding, negotiating, and consummating deals to store data between clients and providers (storage miners).
  • retrievalmarket: for finding, negotiating, and consummating deals to retrieve data between clients and providers (retrieval miners).
  • filestore: a wrapper around os.File for use by pieceio, storagemarket, and retrievalmarket.
  • pieceio: utilities that take IPLD graphs and turn them into pieces. Used by storagemarket.
  • piecestore: a database for storing deal-related PieceInfo and CIDInfo. Used by storagemarket and retrievalmarket.

Related components in other repos:

  • go-data-transfer: for exchanging piece data between clients and miners, used by storage & retrieval market modules.
Background reading
Technical Documentation

Installation

go get "github.com/chenjianmei111/go-fil-markets/<MODULENAME>"`

Usage

Documentation is in the README for each module, listed in Components.

Contributing

Issues and PRs are welcome! Please first read the background reading and CONTRIBUTING guide, and look over the current code. PRs against master require approval of at least two maintainers.

Day-to-day discussion takes place in the #fil-components channel of the Filecoin project chat. Usage or design questions are welcome.

Project-level documentation

The chenjianmei111 has a community repo with more detail about our resources and policies, such as the Code of Conduct.

License

This repository is dual-licensed under Apache 2.0 and MIT terms.

Copyright 2019. Protocol Labs, Inc.

Directories

Path Synopsis
Package retrievalmarket implements the Filecoin retrieval protocol.
Package retrievalmarket implements the Filecoin retrieval protocol.
impl
Package retrievalimpl provides the primary implementation of retrieval market top level interfaces interfaces This package provides a production implementation of `RetrievalClient` and `RetrievalProvider`.
Package retrievalimpl provides the primary implementation of retrieval market top level interfaces interfaces This package provides a production implementation of `RetrievalClient` and `RetrievalProvider`.
impl/clientstates
Package clientstates contains state machine logic relating to the `RetrievalClient`.
Package clientstates contains state machine logic relating to the `RetrievalClient`.
impl/dtutils
Package dtutils provides event listeners for the client and provider to listen for events on the data transfer module and dispatch FSM events based on them
Package dtutils provides event listeners for the client and provider to listen for events on the data transfer module and dispatch FSM events based on them
impl/providerstates
Package providerstates contains state machine logic relating to the `RetrievalProvider`.
Package providerstates contains state machine logic relating to the `RetrievalProvider`.
impl/testnodes
Package testnodes contains stubbed implementations of the RetrievalProviderNode and RetrievalClientNode interface to simulate communications with a filecoin node
Package testnodes contains stubbed implementations of the RetrievalProviderNode and RetrievalClientNode interface to simulate communications with a filecoin node
network
Package network providers an abstraction over a libp2p host for managing retrieval's Libp2p protocols: network.go - defines the interfaces that must be implemented to serve as a retrieval network deal-stream.go - implements the `RetrievalDealStream` interface, a data stream for retrieval deal traffic only query-stream.go - implements the `RetrievalQueryStream` interface, a data stream for retrieval query traffic only libp2p_impl.go - provides the production implementation of the `RetrievalMarketNetwork` interface.
Package network providers an abstraction over a libp2p host for managing retrieval's Libp2p protocols: network.go - defines the interfaces that must be implemented to serve as a retrieval network deal-stream.go - implements the `RetrievalDealStream` interface, a data stream for retrieval deal traffic only query-stream.go - implements the `RetrievalQueryStream` interface, a data stream for retrieval query traffic only libp2p_impl.go - provides the production implementation of the `RetrievalMarketNetwork` interface.
testing
Package testing provides test implementations of retieval market interfaces
Package testing provides test implementations of retieval market interfaces
Package storagemarket implements the Filecoin storage protocol.
Package storagemarket implements the Filecoin storage protocol.
impl
Package storageimpl provides the primary implementation of storage market top level interfaces This package provides a production implementation of `StorageClient` and `StorageProvider`.
Package storageimpl provides the primary implementation of storage market top level interfaces This package provides a production implementation of `StorageClient` and `StorageProvider`.
impl/blockrecorder
Package blockrecorder provides utilits to record locations of CIDs to a temporary metadata file, since writing a CAR happens BEFORE we actually hand off for sealing.
Package blockrecorder provides utilits to record locations of CIDs to a temporary metadata file, since writing a CAR happens BEFORE we actually hand off for sealing.
impl/clientstates
Package clientstates contains state machine logic relating to the `StorageMarket`.
Package clientstates contains state machine logic relating to the `StorageMarket`.
impl/clientutils
Package clientutils provides utility functions for the storage client & client FSM
Package clientutils provides utility functions for the storage client & client FSM
impl/connmanager
Package connmanager tracks open connections maping storage proposal CID -> StorageDealStream
Package connmanager tracks open connections maping storage proposal CID -> StorageDealStream
impl/dtutils
Package dtutils provides event listeners for the client and provider to listen for events on the data transfer module and dispatch FSM events based on them
Package dtutils provides event listeners for the client and provider to listen for events on the data transfer module and dispatch FSM events based on them
impl/providerstates
Package providerstates contains state machine logic relating to the `StorageProvider`.
Package providerstates contains state machine logic relating to the `StorageProvider`.
impl/providerutils
Package providerutils provides utility functions for the storage provider & provider FSM
Package providerutils provides utility functions for the storage provider & provider FSM
impl/requestvalidation
Package requestvalidation implements a request validator for the data transfer module to validate data transfer requests for storage deals
Package requestvalidation implements a request validator for the data transfer module to validate data transfer requests for storage deals
network
Package network providers an abstraction over a libp2p host for managing storage markets's Libp2p protocols: network.go - defines the interfaces that must be implemented to serve as a storage network layer deal_stream.go - implements the `StorageDealStream` interface, a data stream for proposing storage deals ask_stream.go - implements the `StorageAskStream` interface, a data stream for querying provider asks deal_status_stream.go - implements the `StorageDealStatusStream` interface, a data stream for querying for deal status libp2p_impl.go - provides the production implementation of the `StorageMarketNetwork` interface.
Package network providers an abstraction over a libp2p host for managing storage markets's Libp2p protocols: network.go - defines the interfaces that must be implemented to serve as a storage network layer deal_stream.go - implements the `StorageDealStream` interface, a data stream for proposing storage deals ask_stream.go - implements the `StorageAskStream` interface, a data stream for querying provider asks deal_status_stream.go - implements the `StorageDealStatusStream` interface, a data stream for querying for deal status libp2p_impl.go - provides the production implementation of the `StorageMarketNetwork` interface.
testnodes
Package testnodes contains stubbed implementations of the StorageProviderNode and StorageClientNode interface to simulate communications with a filecoin node
Package testnodes contains stubbed implementations of the StorageProviderNode and StorageClientNode interface to simulate communications with a filecoin node

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL