V0.2 Intent to Implement Webnative Filecoin Implementation

After looking more in-detail at “what is there today” for Powergate and Lotus (Filecoins node impl), and yesterdays short discussion, I’ve updated the intent to implement diagram for a v0.2:

  • from webnative-filecoin we actively deal with “sending FIL” only, and querying/storing status of our deals in WNFS (counter to initial, more ideal of proposing deals directly from browser - arguments why not below)
  • to interact with powergate fission needs a service, as powergate is conceived for “running a storage service”, not accessing it over directly from clients. Fundamental reason:
  • yes, powergate abstracts a lot of the steps to discover, negotiate and publish a storage deal to Filecoin, and these steps are asynchronous, so client must be available. Powergate solves this by handling the keys, which are kept in Lotus’ keystore, and handing a token(/ JWT) to the Powergate client. If we would give this access token to Alice, it would make it custodial - we don’t want that, plus the token could be stolen from WNFS, negating the BLS construction
  • therefore, summary of proposal v0.2, Fission does “deal discovery” with powergate, and offers this (plus added margin, VAT) to Alice. Alice prepays Fission into a “prepaid-account”, from her non-custodial account once prepaid, Fission can draw funds to propose the deal on-chain
  • allows for topping up balance for automatic deal renewal while Alice is offline (stretch goal beyond project)
  • allows for introducing a combined charging policy for hot+cold storage opaquely to the user (stretch goal beyond project) happy to hear thoughts to this iteration

on an upside:

  • so the proposal here is to have Alice “pay Fission”, and then it’s Fissions problem to get accepted storage deals (with Fissions’ keys and Fissions’ money), and the major value proposition is still maintained:

    Alice pays FIL to get a cryptographic proof that her data is guaranteed stored, irrespective of whether Fission serves it or not (eg deliberate or faulty or terminates)

  • for our current focus of proving a FIL wallet natively in the web, sending FIL proves that point, and handing off deal negotiation to a Fission service + Powergate might be the only feasible path really.

Both Filecoin and Powergate assume a StorageClient is available to interact with the StorageProvider to conclude a deal (even adviced to do multiple deals simultaneously to have redundancy on failures) this availability constraint makes it almost unhelpful to do deal negotiation directly from the browser (even if we’d be OK with the complexities/lack of available code paths)