lbry.tech/documents/resources/uri.md
2018-08-23 17:33:59 -05:00

2.7 KiB

URI

Regex

If you are a robot and prefer regexes to English, here's the full regex for lbry:// URIs:

(?P<uri>
  ^
  (?P<protocol>lbry\:\/\/)?
  (?P<content_or_channel_name>
    (?P<content_name>[a-zA-Z0-9\-]+)
    |
    (?P<channel_name>\@[a-zA-Z0-9\-]{4,})
  )
  (?P<modifier>
    (?:\#(?P<claim_id>[0-9a-f]{1,40}))
    |
    (?:\$(?P<bid_position>\-?[1-9][0-9]*))
    |
    (?:\:(?P<claim_sequence>\-?[1-9][0-9]*))
  )?
  (?:\/(?P<path>[a-zA-Z0-9\-]+))?
  $
)

Protocol

The LBRY protocol is called lbry. URIs using the protocol must start with lbry://.

Reserved characters

  • CHANNEL_CHAR = @
  • CLAIM_ID_CHAR = #
  • CLAIM_SEQUENCE_CHAR = :
  • BID_POSITION_CHAR = $
  • PATH_CHAR = /
  • QUERY_CHAR = ?

Names

Names may contain English letters (upper and lower case), numbers, and hyphens.

Content Name

content_name is the name of piece of content.

Channel Name

channel_name is the name of a channel (aka publisher identity). It must start with CHANNEL_CHAR, followed by at least 4 name characters.

Modifiers

Only one modifier is allowed at a time.

Claim ID

claim_id is a hex string identifying a claim. A claim id is prefixed with the CLAIM_ID_CHAR. Partial claim ids are allowed (same is git hashes), and will resolve to the oldest claim who's id starts with the given characters.

Claim Sequence

claim_sequence is a positive integer (>= 1) that resolves to the Nth claim for a given name. A claim sequence is prefixed with the CLAIM_SEQUENCE_CHAR. All valid claims are considered, in the order that they appear in the blockchain. Nonwinning claims are included.

For example, lbry://@chan:1 resolves to the oldest valid claim for @chan, even if that claim is no longer the winning claim for @chan.

Negative claim sequence numbers will be supported eventually.

Bid Position

not implemented yet

bid_position is a positive integer (>= 1) that resolves to the Nth highest-bid claim for a given name. A bid position is prefixed with the BID_POSITION_CHAR. All valid claims are considered, in order from highest bid to lowest bid, with ties being broken by claim age. Nonwinning claims are included.

For example, lbry://@chan$1 always resolves to the current winning claim for @chan. @chan and @chan$1 are equivalent.

Negative bid position numbers will be supported eventually.

Path

path is a Unix-style path that resolves to a claim within a channel. A path is prefixed with PATH_CHAR. Only paths one level deep are currently supported. Only channel claims may have a path.

For example, lbry://@chan/snaps_from_last_night resolves to the claim for snaps_from_last_night that is signed by @chan

Query Params

not implemented yet