Skip to content

Latest commit

 

History

History
109 lines (77 loc) · 7.44 KB

ur-overview.md

File metadata and controls

109 lines (77 loc) · 7.44 KB

UR Overview

UR stands for Uniform Resources, a method for encoding structured binary data in plain-text strings that are also well-formed URIs. It's an interoperability specification that allows for the reliable, typed transfer of data and was designed in particular to allow for reliable transmission of crypto-seeds, crypto-keys, PSBTs, and other data related to cryptocurrency.

One of the particular advantages of UR is careful integration with QR codes, a prime method for transmitting data across airgaps. URs are built to be efficient when encoded as QRs. In addition, multi-part URs allow for the creation of animated QRs, overall containing more information than any single QR could have.

Typed data, reliable interoperation, QR optimization, and animated QRs are the main reasons to use the UR specification.

Intro

The following provides broad overviews of UR:

These videos offer overviews in a different format:

For Users

As a user, you might note applications using URs of the format "ur:type/bytewords" (or a QR encoding that UR). These allow for the free movement of data among apps that support the UR specification. This will be mostly automated, typically requiring you to show a QR from one app to another.

Example UR:

ur:crypto-seed/oyadgdhkwzdtfthptokigtvwnnjsqzcxknsktdhpyljeda

QR Tool (deprecated) Recognition

Seed Tool Exports

Seed Tool SSKR
The following iOS reference applications support the use of URs:

For Developers

The following are accessible guides to using URs in your programs:

They are based on the following, original definitional research papers:

Animated QRs

One of the important aspects of URs was that they allowed for the introduction of Animated QRs. These are crucial for airgapped architectures because they allow the transmission of PSBTs over an airgap.

  1. Animated QRs
  2. Animated QRs Video

Code

The following Blockchain Commons libraries support the usage of URs:

  • bc-ur — C++ reference library
  • bc-ur-java — Java reference library
  • URKit and URUI — Swift libraries for usage and display of URs.

The following third-party libraries support URs in a variety of languages:

Reference Tools

Want to verify your code? That's what the Blockchain Commons reference tools are for.

Support

To support the continued creation and growth of specifications such as this, please become a sponsor of Blockchain Commons, either through GitHub or through Bitcoin donations on our BTCpay. Thank you to our sustaining and additional sponsors.

Please also join us in our Airgapped Wallet Community where we are discussing and advancing this and other specifications.