diem / dip

Libra Improvement Proposals
https://lip.libra.org
Apache License 2.0
40 stars 55 forks source link

[Lip 10] Libra ID Spec #82

Closed andll closed 3 years ago

andll commented 3 years ago

Open questions

Libra ID separator

Contenders: @, # and $ “@”: (-) Too easy to confuse with an email “$”: (+/-) Already used by Ripple’s Pay ID (+/-) Can be seen as an affiliation with USD. However, it is fairly common to use $ as a sign for “money”, rather than a specific currency, so this can also be a plus. (+) Can be used unencoded in the URLs “#”: (-) If placed into URL strictly requires a URL encoding

Libra ID domain - single word or a domain name

Single word(e.g. andrey$novi): (+) Fewer symbols to write Domain name(e.g. andrey$novi.com): (+) In the future if we allow unhosted wallets, we can switch to DNS lookups (+) For the merchant use case, can create a merchant APP url using string manipulation

Profile picture sizes and image formats

We can put some limits on maximum file size and image resolution.

andll commented 3 years ago

cc @gdanezis @danprinz - can't assign you as reviewers, but please take a look @danprinz Can you also cc more people from first to this LIP(don't know their github user names)

andll commented 3 years ago

cc @bmaurer

bmaurer commented 3 years ago

At a higher level: it feels like we have a lot of overlap with the off-chain protocol / subaddresses. For example:

I worry that we start to get complexity from different permutations of these APIs.

Is there anything we can do to be more uniform here? Both subaddresses and LibraID are a way to reference a user within a VASP. Why entirely different flows for the two methods?

It's OK if we have regrets about APIs we designed for subaddresses and want to go a different direction. But in that case, can we come up with a new API that is unifying vs one that only addresses a subset of the use cases.

andll commented 3 years ago

Having a writable endpoint is a no go for me, I won't block on this principle but there are really great techniques to support time valid identifiers that require a zero write API -- for example get_reference_id(user_id, txn_metadata) -> hash(secret_receiver, user_id, txn_metadata)

I am not sure I understand, how does generating reference id with libra id different comparing to generating reference ID during KYC? Are you saying it is bad in both cases, or there is something special about libra id, that does not make it work here, but it works for KYC?

Would recommend considering how to make the payment reference id compatible with a subaddress otherwise we're going to have confusing APIs or alternatively define a scheme that makes it clear that one is a libra id and the other is a subaddress

There is a hope that with Libra ID we can actually deprecate subaddresses altogether, given their privacy implications.