IPFS support
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 25/100
- Issue type
- Feature
- Clarity
- Needs clarification
- Activity status
- Stale
- Tech stack
- go
- Domain
- cloud, distributed-systems
Research direction
Start by reviewing the referenced go-tools issue and the catalyst-uploader entry point, then trace how Mist currently handles S3 uploads and playlist updates. The Pinata API, local content-hash validation, returned gateway URLs, and live playlist behavior all need decisions; done is not defined until the VOD and Live flows are specified.
Written by the indexing model from the issue text.
Description
General considerations
- We are not willing to run our own IPFS nodes at this point, therefore, we need to upload (pin) the files to cloud provider, like [Pinata],(https://www.pinata.cloud/) through their proprietary API. To ensure the cloud provider didn't tamper with the contents of the file, we probably want to add an extra step of calculating the content hash locally and comparing it with the address, returned after upload.
- Files could be accessed by HTTP through public or private gateway providers. To operate in a trustless manner, the content hash should be calculated and matched against the returned CID. The minimal unit, which can be validated, is an entire file. An example of IPFS URL, which uses public gateway.
- With content-based addressing, the target URL is not input, but output parameter, because it includes content hash. It may require a slightly different flow, compared to S3. It also may present several challenges with playlist generation e.g. a segment should be fully uploaded, before playlist entry can be added; playlist URL will change every time it's updated. IPNS and DNSLink are mechanisms which could be used to address that.
VOD
Input
- IPFS URLs do not explicitly contain file type. Most widely used IPFS gateway implementation automatically sets
Content-typeheader in HTTP GET response, we can use that, but it's not a mandatory requirement for gateway implementations.
Output
ipfs://URL support should be added to go-tools andcatalyst-uploader. It will use Pinata API to pin the file and return Pinata IPFS gateway URL. Content hash matching should be implemented as well.- when segment is uploaded, Mist needs to use URL returned from
catalyst-uploaderin the playlist - TBD: what should be the playlist behavior? It seems that IPNS is not available on Pinata. It seem to support directory wrapping, with pretty obscure API, which may allow to address the file by name.
Live
- The main issue is dynamic playlist files
- TBD
- Dominant language
- Go
- Stars
- 24
- Forks
- 16
- PR merge metrics
- No merged PRs in 30d
Getting set up
- Ships a Dockerfile or Docker Compose file
- No pull request template
- No contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from livepeer/catalyst
-
Difficulty 5/5 Over a week Newbie friendliness 20/100
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
-
Difficulty 4/5 3-5 days Newbie friendliness 25/100
-
Difficulty 5/5 Over a week Newbie friendliness 30/100
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
All issues in livepeer/catalyst
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 63/100
Maintainers usually reply within 1 day
-
product/backlog
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
TencentBlueKing/bk-nodemgr#3645 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
modelcontextprotocol/go-sdk#1387 ·
Maintainers usually reply within 1 day
-
docs(prompt): filer socket fragment hardcodes an issue-intent cap of 8 that Chore runs overrideOpenagent-butler-finding chore
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
jordansmall/spindrift#5128 ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 84/100
Maintainers usually reply within 2 days