Moving to UR2.0 #26
Replies: 10 comments 14 replies
-
for bluewallet, our main goal was compatibility with cobo. and to be precise, cobo team was the one who sent a pr to add UR support, so I personally didnt dig too much into specs. im in touch with @stepansnigirev (specter), so he is basically closely watching what cobo (as animated qr firstmover) is doing to keep interoperability. and from our talks with foundation devices team (im really excited about theit forthcoming devices) they are going to have interoperability with bw (and possibly cobo?) at the start, so that means UR encoding as well. which version - good question. so my main question is, what about backward compatibility? say, cobo team updates their UR lib, and we update from their upstream. will we have to write hacks, some iffs or smth to determine which UR version we have just scanned? because on the other end, it might be really dated cobo device with URv1 qrs, or potentially a fresh one, with URv2 qrs. and vice versa. say, a bit dated bw version, and user has a neat fresh cobo device on him, with potentially URv2 qrs. i assume this just wont work? |
Beta Was this translation helpful? Give feedback.
-
when we integrate with bluewallet and specter in June. we found UR, version 1.0 at that time. we think it is a great way to encoding the data to QR codes so we adopt it during our integration with bluewallet and specter. actually, we are planning to adopt UR on our own companion app. currently, UR has been upgraded to UR2.0, which introduce fountain encoding, I think it can provide lossy transmission, but it also introduces redundancy which will probably large the QR images number. this is one of our concern. and another question is about backward compatiblity, which @Overtorment metioned above. Techically, from implemenation, UR2.0 scaner can read UR1.0 data which @craigraw have metioned in the above. |
Beta Was this translation helpful? Give feedback.
-
@aaronisme wrote:
I'm really hoping you'd reconsider this decision. There is no 1.0 version — it was intended as a demo to see if wallet teams were interested, and we are quite pleased there was interest, thus the official UR version. I would really like all of us to be on the same page for animated QRs. Having some people on the demo version vs the final version of the UR code will cause confusion with other companies, and with getting adoption of UR QR codes in web-based coordinators like Caravan, River, etc. which means they might not support either. Also, there seems to be some misunderstanding — you don't have to turn on fountain codes if you don't want to. But we do want to apply Postel's Law of internet protocols here
Given that, I am are fine if you don't want to send with fountain codes for some reason. But you should always accept them if they are required by the other device. Separately, there seems to be some concern that there is too much "redundancy". There is some redundancy when using the fountain codes, but I don't think it is that significant as compared to the cost of missing the first frame and having to wait until the end and repeat to get all the frames you need. I can have @wolfmcnally offer more details on the "redundancy" costs if you are still concerned. But again, if you find you don't need fountain codes, allow users to turn them off. But please do use the current standard. -- Christopher Allen |
Beta Was this translation helpful? Give feedback.
-
There is nothing "lossy" about fountain codes in UR 2.0. "Lossy" encodings like JPEG literally throw away data. UR encoding is always lossless. If you want to use the minimum number of codes, the API tells you when you have generated them. The minimum number of codes encodes the entire message without actually using fountain codes. Only if you continue to generate codes beyond the minimum does fountain encoding actually start. The intent here was that if you want to let the user advance through each QR code manually, you don't really need fountain codes, so we support this directly. But if you want to animate the QR codes and let the user point their camera at them at any point in the stream and always receive the full message in a reasonable amount of time (allowing for missed codes) then fountain codes are also there. The UR 2.0 implementation can not read UR 1.0 codes and is not in any way backwards compatible. UR 2.0 uses Bytewords, while UR 1.0 uses BC32. They are entirely different encodings. |
Beta Was this translation helpful? Give feedback.
-
I want to express our agreement with @ChristopherA; we have a unique opportunity here to define the standard for the Bitcoin industry around transmitting airgapped data. The first UR version was intended as a demo, and UR2.0 is the official version supported by Blockchain Commons and many different projects. If we as an industry can converge around UR2.0, then it will be a no-brainer for every Bitcoin service, wallet, and device to introduce support. We can approach exchanges like River, banks like Avanti, wallets like BlueWallet, services like Unchained Capital and Casa, and device makers – and get everyone on board. If we are already fractured into two groups, with one supporting a pre-release demo and the other the official version, this will create a lot of confusion and significantly slow adoption. Many will likely wait on the sidelines to see what standard wins in the market. Let's figure out how to get the apps and devices using UR1.0 transitioned to UR2.0 right away, so that we can introduce this standard to the broader industry. Please share your thoughts @aaronisme @Overtorment @stepansnigirev. Thanks! |
Beta Was this translation helpful? Give feedback.
-
is that correct, that when scanning QRs its not a problem to distinguish between ver1 & ver2 ? so backwards compatibility here is a nobrainer |
Beta Was this translation helpful? Give feedback.
-
To be clear, Blockchain Commons does not plan on supporting the old version, but does plan on the current version long-term. We also will likely be working toward a BIP, and we will not be documenting the old version. |
Beta Was this translation helpful? Give feedback.
-
After Internal discussions and Consideration, For Cobo Vault, we have added the upgrading to UR2.0 in our RoadMap and plan to do it in April 2021, but there is indeed some work we need to coordinate with other applications like BlueWallet and Specter. |
Beta Was this translation helpful? Give feedback.
-
Updates: The keystone wallet has fully upgraded to UR2.0. Let's move UR forward |
Beta Was this translation helpful? Give feedback.
-
@Overtorment @craigraw The other day I was adding better compatibility between various wallets and Fully Noded. I had raised issue #4032 on Blue Wallets repo because I ran into what I thought was a misuse of My main confusion here was that I understand the button that produces the It would be nice to see more complete adoption of UR, its not meant to be just for cosigners. Its also meant to be a cross wallet compatibility for backups/imports of entire wallets. solving the issue of wallet developers having to cater to every single wallet standard (total nightmare) and for users only having one backup that works with one wallet. Using UR only to share cosigners is a very narrow use case. We (as an industry) need excellent cross wallet compatibility for wallets. The ideal UR type for this is (in my opinion) It would be great to see all wallets implement a plaint text output descriptor export option and the UR |
Beta Was this translation helpful? Give feedback.
-
Several projects (e.g. Specter, Bluewallet, Cobo) are still using the draft UR1.0 'spec' while others (e.g. FN, Sparrow, Gordian) have moved to UR2.0. @ChristopherA and @wolfmcnally have noted that the UR1.0 version was for comment only, while UR2.0 is closer to be considered "ready for use". As the user bases of all these projects grow, users are starting to have issues with two different standards in encoding and decoding QRs.
The major difference lies in the fountain encoding used when encoding the UR into QR parts. This is not strictly necessary to implement however - if the minimum number of parts is specified, no fountain encoding needs to be performed. Nevertheless there seems to be some misunderstanding around UR2.0, so this discussion is an attempt to clear that up and determine whether there is broad support to move to UR2.0.
For those projects still on UR1.0:
Reference:
UR1.0
UR2.0
Beta Was this translation helpful? Give feedback.
All reactions