BTCR planning for RWOT8

Review of current BTCR efforts

The following efforts are completed or already underway.

  • BTCR mobile apps
    • Started implementations (in early stages) for iPhone and Android.
  • Libraries
    • We’ve built txref libraries in js, golang, c, and java (in progress)
    • BTCR DID creation utilities in js.
  • Services/Apps
    • REST service (btcd-based) to support queries during BTCR resolution.
    • BTCR DID Playground to support creation and resolution in a web browser.

Issues

All the above efforts have encountered issues determining which tech stack/libraries to use. Specific problems include:

  • json-ld
    • No available libraries to support v1.1
    • Limited language availability for v1
      • E.g. java implementation is not android friendly
  • Bitcoin chain queries
    • During DID resolution, tip following involves multiple lookups.
    • Relying on bitcoin explorer apis runs into rate limiting
    • Running a full node isn’t an option for resource-constrained environments
  • Figuring out whether to use json-ld or JWT

Decisions

  • Use json-ld v1 (not v1.1). Use specifically the javascript implementation since it seems most mature.
    • E.g. for Android wallet we’ll investigate using js shim around json-ld libraries
  • Continue with javascript reference implementation for v0.1 because it’s more broadly supported.
  • Use case clarity, and clarity around privacy concerns
    • btcr doesn’t do anti-correlation, not good for real id
      • so e.g. car rental not best example
  • Ensure “verifiers” are seeing verifiable presentations (signed) vs raw claims (affects apps that are sending claims)

Goals for RWOT8

  • Verifiable claims that exercise 0.1 space
    • test cases
    • ease of generation
  • Sort out wallet dependencies + wallet app development (android + ios)
  • libbitcoin wrapper libraries
  • v0.1 development and compliance
    • Method spec revision
      • Goal is not completion, but an MVP
      • Need test cases, test vectors
      • Identify which service endpoints would be in the BTCR did document
      • Consider adding a service endpoint enabling dereferencing DID URL to get a VC
    • Update reference implementation to match method spec
      • Currently missing tip following. Adding this will result in more tx lookups, and will likely require using Kulpreet’s REST service
  • v0.1+ feature discussion (timeboxed)
    • Check in with key recovery efforts; discuss how we can use
    • Post-v0.1 improvements including lightning, neutrino
    • Priorities/roadmap around this
  • (BTCR-adjacent) UI/Demo Shamir secret sharing