-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add README for Decentralized Backend Storage #1
Comments
@alexcos20 Do we have more details on the Websockets and StorJ microservice I can share with the applicants? Similar to what you did with FIlecoin and Arweave |
I plan to submit my proposal for an API for file storage, should I fork this repo and submit my proposal via a pull request? |
Kindly submit your proposal via oceanprotocol.com/shipyard through this form |
I listed my questions here: https://discord.com/channels/612953348487905282/805826044455944212/1022085688293855273 Not sure where is the right place to have them. |
Quick note that the API design in here can be improved, as using verbs to describe resources is always a bit critical and confusing like I suggest those endpoints, where
Then I guess this works as a start but I fail to see what exactly is decentralized about this project, and we create a huge maintenance effort as the APIs in the background constantly change. We create another "provider" with this so just like with existing provider, if this single endpoint goes down, nobody can access their files. This is the opposite of decentralized. Are all frontends supposed to get the final files through this API? Or can they get the files by hitting the storage providers directly? Also, what's the difference to https://filebase.com? Their approach of creating a unified interface no matter where the file sits sounds like a better approach when creating a centralized solution. And also good example that this functionality can create its own business, yet we try to handle this as yet another feature of Ocean Protocol. And finally, backend initiating token transfers sounds like an anti-pattern. Why not have user create the transaction so they actually see in wallet how much value is transferred? Why the extra step with the approve? And whoever runs the backend won't have to pay gas fees, which seems to be the current design in here. |
check discord for answers |
Agreed, I will update them
Not really. DBS is used as unified upload API. This is fine, because from market/ocean.js/ocean.py we need a single API to work with different storage solutions (and not have a bunch of classes, api's, plugins, etc..)
Frontends, once a file was upload, by hitting the "getLink" endpoint, they should get something like:
(exactly what is described in https://docs.oceanprotocol.com/core-concepts/did-ddo#files) |
EDIT: I think it's likely that the first iteration will only accept payment on EVM-compatible chains. This is possible on Arweave using Bundlr. A few minor comments about the response from
Arweave doesn't have a chain ID in the same way EVM-compatible chains do. The Arweave chain identifies itself as "arweave.N.1". Reference: https://twitter.com/samecwilliams/status/1547013045716766721?s=20&t=JnBIQmax7Y3OOo2coxEzSA Also, AR tokens are native to Arweave like how ETH is native to Ethereum so it doesn't have an address. |
We add a chainlink oracle to record the cross-chain storage proof in a smart contract, so each storage file becomes more reliable and storage on multiple filecoin nodes. |
Hi All, Kate here from Functionland! fx.land . is it too late to submit a backend integration. i understand the funding may not be available, we still keen! Which pool of funding would you suggest might help support an OCEAN <> Fx Blox integration. Thank in advance frens [email protected] |
@alexcos20 I am starting the work on the DBS as Startin'blox CTO and under the guidance of @happy-dev who actually built the proposal. I was wondering if you could add me as member of the oceanprotocol organisation here or at least on this project so I could push the beginning of my work, or would you prefer that I clone and open a pull-request only when I have something complete ? Do you have access to the open-source GitHub program, including some CI Tooling and the rest. Have you been using the CI/CD features on other projects I could check ? I could propose something but we would also need to discuss deployment/infrastructure. I first started on our gitlab instance with only the setup of a django-based package here: https://git.startinblox.com/applications/oceandbs/ocean-dbs/ Maybe the issue is not the right place to discuss that ? |
Exploding this issue into multiple ones, for a better tracking of questions and progress. |
Note: These are the initial specs for the DBS. Next step-> transform it into a readme and add it in the repo |
A couple of mentions on the sample responses: |
In order to add multiple decentralized storages, we need a backend that will:
This will greatly improve the UX flow for publishers.
Arhitecture:
DBS:
1 -N Storage MicroServices (each microservice can handle one storage type)
DBS public API Endpoints:
Info
Description: Information about supported storage types & payments
Path: /
Arguments: None
Returns:
GetQuote
Description: Gets a quote in order to store some files on a specific storage
Path: POST /getQuote
Arguments:
Where:
Returns:
Where:
Upload
Description: Upload files, according to the quote request
Path: POST /upload?quoteId=xxxx&nonce=1&signature=0xXXXXX
Input:
Returns: 200 OK if succeded
DBS will upload files to IPFS Cluster and then it will make a request to the microservice, using the file CIDS.
GetStatus
Description: Gets status for a job
Path: POST /getStatus?quoteId=xxx
Returns:
Where:
GetLink
Description: Gets DDO files object for a job
Path: POST /getLink?quoteId=xxx&nonce=1&signature=0xXXXXX
Input:
Returns:
(see https://docs.oceanprotocol.com/core-concepts/did-ddo#files for how each microservice is formatting the response, based on storage type)
DBS private API Endpoints (used by microservices), using on a different port
Register
Description: Register a new microservice which handles a storage
Path: POST /register
Input:
Returns: 200 OK if accepted
Each microservice should call this endpoint every 10 minutes, otherwise the storage type will be removed from the main list
Sample storage flow:
The text was updated successfully, but these errors were encountered: