Update schema.md
This commit is contained in:
parent
da905ba9e3
commit
21d0c8c01b
|
@ -1,7 +1,8 @@
|
||||||
# Schema
|
# Schema
|
||||||
|
|
||||||
## [Claim](https://github.com/lbryio/lbryschema/blob/master/lbryschema/proto/claim.proto)
|
## [Claim](https://github.com/lbryio/lbryschema/blob/master/lbryschema/proto/claim.proto)
|
||||||
Claims have the encompassing schema:
|
|
||||||
|
A `Claim` is the toplevel schema for everything that is published to the LBRY blockchain.
|
||||||
|
|
||||||
```protobuf
|
```protobuf
|
||||||
message Claim {
|
message Claim {
|
||||||
|
@ -10,12 +11,14 @@ message Claim {
|
||||||
_0_0_1 = 1;
|
_0_0_1 = 1;
|
||||||
}
|
}
|
||||||
required Version version = 1;
|
required Version version = 1;
|
||||||
|
|
||||||
enum ClaimType {
|
enum ClaimType {
|
||||||
UNKNOWN_CLAIM_TYPE = 0;
|
UNKNOWN_CLAIM_TYPE = 0;
|
||||||
streamType = 1;
|
streamType = 1;
|
||||||
certificateType = 2;
|
certificateType = 2;
|
||||||
}
|
}
|
||||||
required ClaimType claimType = 2;
|
required ClaimType claimType = 2;
|
||||||
|
|
||||||
optional Stream stream = 3;
|
optional Stream stream = 3;
|
||||||
optional Certificate certificate = 4;
|
optional Certificate certificate = 4;
|
||||||
optional Signature publisherSignature = 5;
|
optional Signature publisherSignature = 5;
|
||||||
|
@ -25,7 +28,8 @@ message Claim {
|
||||||
|
|
||||||
|
|
||||||
## [Stream](https://github.com/lbryio/lbryschema/blob/master/lbryschema/proto/stream.proto)
|
## [Stream](https://github.com/lbryio/lbryschema/blob/master/lbryschema/proto/stream.proto)
|
||||||
Claims of streamType have a `stream`:
|
|
||||||
|
All content claims have a Stream field, which includes the content-specific information (e.g. a description of the content, instructions for downloading the content, etc).
|
||||||
|
|
||||||
```protobuf
|
```protobuf
|
||||||
message Stream {
|
message Stream {
|
||||||
|
@ -34,13 +38,15 @@ message Stream {
|
||||||
_0_0_1 = 1;
|
_0_0_1 = 1;
|
||||||
}
|
}
|
||||||
required Version version = 1;
|
required Version version = 1;
|
||||||
|
|
||||||
required Metadata metadata = 2;
|
required Metadata metadata = 2;
|
||||||
required Source source = 3;
|
required Source source = 3;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## [Metadata](https://github.com/lbryio/lbryschema/blob/master/lbryschema/proto/metadata.proto)
|
## [Metadata](https://github.com/lbryio/lbryschema/blob/master/lbryschema/proto/metadata.proto)
|
||||||
Streams have `metadata` describing their content:
|
|
||||||
|
`Metadata` provides information about a piece of content, such as the title, description, and price.
|
||||||
|
|
||||||
```protobuf
|
```protobuf
|
||||||
message Metadata {
|
message Metadata {
|
||||||
|
@ -51,12 +57,14 @@ message Metadata {
|
||||||
_0_0_3 = 3;
|
_0_0_3 = 3;
|
||||||
_0_1_0 = 4;
|
_0_1_0 = 4;
|
||||||
}
|
}
|
||||||
|
required Version version = 1;
|
||||||
|
|
||||||
enum Language {
|
enum Language {
|
||||||
UNKNOWN_LANGUAGE = 0;
|
UNKNOWN_LANGUAGE = 0;
|
||||||
en = 1;
|
en = 1;
|
||||||
}
|
}
|
||||||
required Version version = 1;
|
|
||||||
required Language language = 2;
|
required Language language = 2;
|
||||||
|
|
||||||
required string title = 3;
|
required string title = 3;
|
||||||
required string description = 4;
|
required string description = 4;
|
||||||
required string author = 5;
|
required string author = 5;
|
||||||
|
@ -64,6 +72,7 @@ message Metadata {
|
||||||
required bool nsfw = 7;
|
required bool nsfw = 7;
|
||||||
|
|
||||||
optional Fee fee = 8;
|
optional Fee fee = 8;
|
||||||
|
|
||||||
optional string thumbnail = 9;
|
optional string thumbnail = 9;
|
||||||
optional string preview = 10;
|
optional string preview = 10;
|
||||||
optional string licenseUrl = 11;
|
optional string licenseUrl = 11;
|
||||||
|
@ -71,7 +80,8 @@ message Metadata {
|
||||||
```
|
```
|
||||||
|
|
||||||
## [Fee](https://github.com/lbryio/lbryschema/blob/master/lbryschema/proto/fee.proto)
|
## [Fee](https://github.com/lbryio/lbryschema/blob/master/lbryschema/proto/fee.proto)
|
||||||
Metadata may include a fee to access the decryption key:
|
|
||||||
|
A `Fee` defines the prices for accessing a piece of content.
|
||||||
|
|
||||||
```protobuf
|
```protobuf
|
||||||
message Fee {
|
message Fee {
|
||||||
|
@ -79,21 +89,24 @@ message Fee {
|
||||||
UNKNOWN_VERSION = 0;
|
UNKNOWN_VERSION = 0;
|
||||||
_0_0_1 = 1;
|
_0_0_1 = 1;
|
||||||
}
|
}
|
||||||
|
required Version version = 1;
|
||||||
|
|
||||||
enum Currency {
|
enum Currency {
|
||||||
UNKNOWN_CURRENCY = 0;
|
UNKNOWN_CURRENCY = 0;
|
||||||
LBC = 1;
|
LBC = 1;
|
||||||
BTC = 2;
|
BTC = 2;
|
||||||
USD = 3;
|
USD = 3;
|
||||||
}
|
}
|
||||||
required Version version = 1;
|
|
||||||
required Currency currency = 2;
|
required Currency currency = 2;
|
||||||
|
|
||||||
required bytes address = 3;
|
required bytes address = 3;
|
||||||
required float amount = 4;
|
required float amount = 4;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## [Source](https://github.com/lbryio/lbryschema/blob/master/lbryschema/proto/source.proto)
|
## [Source](https://github.com/lbryio/lbryschema/blob/master/lbryschema/proto/source.proto)
|
||||||
Streams have a `source` to download:
|
|
||||||
|
A `Source` contains information on how to download a stream. Only the LBRY data network is supported at the moment, but other sources may be added in the future.
|
||||||
|
|
||||||
```protobuf
|
```protobuf
|
||||||
message Source {
|
message Source {
|
||||||
|
@ -102,19 +115,34 @@ message Source {
|
||||||
_0_0_1 = 1;
|
_0_0_1 = 1;
|
||||||
}
|
}
|
||||||
required Version version = 1;
|
required Version version = 1;
|
||||||
|
|
||||||
enum SourceTypes {
|
enum SourceTypes {
|
||||||
UNKNOWN_SOURCE_TYPE = 0;
|
UNKNOWN_SOURCE_TYPE = 0;
|
||||||
lbry_sd_hash = 1;
|
lbry_sd_hash = 1;
|
||||||
}
|
}
|
||||||
required SourceTypes sourceType = 2;
|
required SourceTypes sourceType = 2;
|
||||||
|
|
||||||
required bytes source = 3;
|
required bytes source = 3;
|
||||||
required string contentType = 4;
|
required string contentType = 4;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Channels
|
||||||
|
|
||||||
## [Certificate](https://github.com/lbryio/lbryschema/blob/master/lbryschema/proto/certificate.proto)
|
Channels are constructed out of Certificates and Signatures. Both utilize a KeyType:
|
||||||
Claims of certificateType have a `certificate`:
|
|
||||||
|
```protobuf
|
||||||
|
enum KeyType {
|
||||||
|
UNKNOWN_PUBLIC_KEY_TYPE = 0;
|
||||||
|
NIST256p = 1;
|
||||||
|
NIST384p = 2;
|
||||||
|
SECP256k1 = 3;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### [Certificate](https://github.com/lbryio/lbryschema/blob/master/lbryschema/proto/certificate.proto)
|
||||||
|
|
||||||
|
Creating a channel involves making a `certificateType` claim. This claim contains the public key for a channel. It must include a Certificate field:
|
||||||
|
|
||||||
```protobuf
|
```protobuf
|
||||||
message Certificate {
|
message Certificate {
|
||||||
|
@ -123,13 +151,16 @@ message Certificate {
|
||||||
_0_0_1 = 1;
|
_0_0_1 = 1;
|
||||||
}
|
}
|
||||||
required Version version = 1;
|
required Version version = 1;
|
||||||
|
|
||||||
required KeyType keyType = 2;
|
required KeyType keyType = 2;
|
||||||
required bytes publicKey = 4;
|
required bytes publicKey = 4;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## [Signature](https://github.com/lbryio/lbryschema/blob/master/lbryschema/proto/signature.proto)
|
|
||||||
Claims may be signed using the private key to a Certificate public key:
|
### [Signature](https://github.com/lbryio/lbryschema/blob/master/lbryschema/proto/signature.proto)
|
||||||
|
|
||||||
|
Publishing a claim to a channels simply means that the claim is signed using the private key for a channel. This is done by including a Signature field in a Claim:
|
||||||
|
|
||||||
```protobuf
|
```protobuf
|
||||||
message Signature {
|
message Signature {
|
||||||
|
@ -138,6 +169,7 @@ message Signature {
|
||||||
_0_0_1 = 1;
|
_0_0_1 = 1;
|
||||||
}
|
}
|
||||||
required Version version = 1;
|
required Version version = 1;
|
||||||
|
|
||||||
required KeyType signatureType = 2;
|
required KeyType signatureType = 2;
|
||||||
required bytes signature = 3;
|
required bytes signature = 3;
|
||||||
required bytes certificateId = 4;
|
required bytes certificateId = 4;
|
||||||
|
|
Loading…
Reference in a new issue