Skip to content

filecoin-project/go-fil-markets

master
Switch branches/tags
Code

Latest commit

)

* feat: handle retrieval queries for unindexed identity payload CIDs

There are valid cases where a CAR may have an identity CID as its root that is
not represented as a 'block' within the CAR body and therefore isn't indexed
by the dagstore. In this case, we inspect the identity CID content and treat
the query as a query for the intersection of all of the links within the block.

Ref: filecoin-project/boost#715

* fix: refactor out multiple calls to dagStore.GetPiecesContainingBlock

1. to support identity PayloadCID without having to duplicate decode & lookup
   logic
2. because it's not cheap, especially for identity PayloadCIDs with lots of
   links

The tradeoff is that in some cases we end up calling the PieceStore more than
we otherwise would.

* feat: impose limits on identity PayloadCIDs

* Byte limit (2048)
* Link limit (32)

* feat: handle retrievals for nested identity CIDs

* chore: expand testing to cover dag-pb identity CIDs
18c30ce

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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/filecoin-project/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 filecoin-project 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.

About

Shared Implementation of Storage and Retrieval Markets for Filecoin Node Implementations

Resources

License

Unknown, MIT licenses found

Licenses found

Unknown
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published

Languages