Towards App launch via BNS

The identity foundation defines a link between DIDs and domains in https://identity.foundation/specs/did-configuration/

I proposed to use cli-blockstack to create a corresponding entry in the .well-known file: https://github.com/blockstack/cli-blockstack/pull/30

What should go into the profile of an app? Something like this?

...
"claim": {
      "@type": "SoftwareApplication", // or specific type of SoftwareApplication
      "@context": "http://schema.org",
      "url": "https://app-center.openintents.org/"
      "name": "OI App Center",
    }

Where should the manifest url go? Or a link to a mobile app?

I used the cli-blockstack to write the profile for oitimesheet.id.blockstack as a SoftwareApplication

and then I created a simple App launcher using the Blockstack Naming System:
https://app-launcher.runkodapps.com/

I decided to reference the web manifest file as the url in the blockstack profile, not the app landing page url. The start_url is taken from the web manifest. Is that the right way to do it? It results in two http calls when launching.

The manifest url in the blockstack profile uses an old school domain name. The next step is to use ipfs or so. Can runkod provide some decentralized storage solution without DNS? How to best use gaia without DNS?

Also note, the app launcher does not verify the domain and blockstack id using .well-known did-configuration when launching.

Can I use an ip/ipv6 address in the url? @talhasch are apps on runkod addressable via ipv6?

@dant Yes, the resolution happens through normal https fetch calls. No support for ipfs:, ftp: or git: or so. Runkod does not provide a dedicated ip address as far as I know.

Hey @friedger, thank you for taking the lead on this!

I don’t think there’s a standard way to do this yet. Why not just add a URL field for manfest and a field for mobile for now? You might also want to consider adding a manifest_signature field which should contain the signature of the manifest.json for the app (which the authenticator would use to validate the manifest).

Yes, I believe so – the manifest.json always contains the start_url. That said, I would highly recommend adding a manifest_signature field to the app profile, which the authenticator can use to authenticate the manifest.json once loaded.

Regarding authenticating the manifest.json, there’s a couple ways to do this. The simplest way I can think of is just treating the manifest.json as a byte stream, and signing its digest with the same key that owns the profile. A slightly more complicated way to do this (but probably better in the long term) is for the Blockstack app claim section to contain a manifest signing public key, which would get used instead to authenticate the manifest.json. If you wanted to remain as close to the DID specs as possible, you’d encode the public key as an object which identifies the type of public key as well as the public key itself (e.g. secp256k1, ed25519, P256, etc.).

The manifest url in the blockstack profile uses an old school domain name. The next step is to use ipfs or so. Can runkod provide some decentralized storage solution without DNS? How to best use gaia without DNS?

The apps and api sections of a “@Person” Blockstack profile already support using raw IP addresses for referencing a Gaia hub, so you don’t have to use DNS if you don’t want to.

@dant let me check for ipv6