Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: rename LSP3 Standard to Profile-Metadata #593

Merged
merged 4 commits into from
Aug 4, 2023
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/guides/key-manager/execute-relay-transactions.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ The [LSP6 KeyManager](../../standards/universal-profile/lsp6-key-manager.md) sta

Relayed execution enables use cases such as Transaction Relayer Services to be possible where users can send their transaction details to a third party to be executed, moving the gas cost burden away from the user who owns the Universal Profile.

For example, Alice can send an encoded transaction which updates the [LSP3Profile](../../standards/universal-profile/lsp3-universal-profile-metadata.md) picture on her Universal Profile to a second user, Bob, who executes the transaction and pays the gas cost of the transaction on behalf of Alice.
For example, Alice can send an encoded transaction which updates the [LSP3Profile](../../standards/universal-profile/lsp3-profile-metadata.md) picture on her Universal Profile to a second user, Bob, who executes the transaction and pays the gas cost of the transaction on behalf of Alice.

To execute the transaction, Bob needs to know:

Expand Down
2 changes: 1 addition & 1 deletion docs/guides/universal-profile/create-profile.md
Original file line number Diff line number Diff line change
Expand Up @@ -222,7 +222,7 @@ The final step is to deploy our UP by calling `lspFactory.UniversalProfile.deplo
The `deploy` function takes an object as an argument that contains two elements:

- `controllerAddresses`: the EOA address(es) that we will use to control our UP.
- `lsp3Profile`: an object that represents your [`LSP3Profile` Metadata](../../standards/universal-profile/lsp3-universal-profile-metadata).
- `lsp3Profile`: an object that represents your [`LSP3Profile` Metadata](../../standards/universal-profile/lsp3-profile-metadata).

> We keep our `LSP3Profile` metadata simple in this tutorial. But you can easily add more details about your UP in this object such as `profileImage`, `backgroundImage` and `avatar`. Read how to do this with lsp-factory [here](../../tools/lsp-factoryjs/deployment/universal-profile.md#setting-images-in-lsp3metadata)

Expand Down
4 changes: 2 additions & 2 deletions docs/guides/universal-profile/read-profile-data.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ Complete "ready to use" JSON and JS files are available at the end in the [**Fin

To inspect the address and check if it has an ERC725 contract, we can call its interface through the `erc725.js` library. The instance of the contract will need the following information:

- [LSP3 - Universal Profile Metadata](../../standards/universal-profile/lsp3-universal-profile-metadata) describes the data in the Universal Profile contract storage, and which keys to use to retrieve it. We can import the schema directly from the [erc725.js](../../tools/erc725js/schemas#standard-lsp-schemas) library.
- [LSP3 - Universal Profile Metadata](../../standards/universal-profile/lsp3-profile-metadata) describes the data in the Universal Profile contract storage, and which keys to use to retrieve it. We can import the schema directly from the [erc725.js](../../tools/erc725js/schemas#standard-lsp-schemas) library.
YamenMerhi marked this conversation as resolved.
Show resolved Hide resolved

- `SupportedStandards` shows the interface using a Metadata Standard with a key. In our case we use `SupportedStandards:LSP3UniversalProfile` from to check if the contract is a Universal Profile.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This data key has to be changed as well I guess? Based on this comment: lukso-network/LIPs#220 (comment)

Suggested change
- `SupportedStandards` shows the interface using a Metadata Standard with a key. In our case we use `SupportedStandards:LSP3UniversalProfile` from to check if the contract is a Universal Profile.
- `SupportedStandards` shows the interface using a Metadata Standard with a key. In our case we use `SupportedStandards:LSP3Profile` from to check if the contract is a Universal Profile.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will be part of a larger discussion with Fabian. Can be done in another PR once we have a definitive answer

- `LSP3Profile` shows the data of the Universal Profile.
Expand Down Expand Up @@ -104,7 +104,7 @@ fetchProfile(SAMPLE_PROFILE_ADDRESS).then((profileData) =>
);
```

If everything went fine, we now have the profile's [LSP3 - Universal Profile Metadata](../../standards/universal-profile/lsp3-universal-profile-metadata) JSON. It should look like this JSON file:
If everything went fine, we now have the profile's [LSP3 - Universal Profile Metadata](../../standards/universal-profile/lsp3-profile-metadata) JSON. It should look like this JSON file:

<details>
<summary>Show JSON response</summary>
Expand Down
10 changes: 5 additions & 5 deletions docs/standards/standard-detection.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ The **`interfaceId`** and the **`SupportedStandards:{StandardName}`** data key i

There are two types of **LSP** standards used to interact with smart contracts on the LUKSO blockchain.

| Standard Type | Description | Examples |
| :---------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Interface Standards** | **Standardize a set of functions**. <br/> Defines the functions that can be called on a smart contract and their expected parameters | [LSP0-ERC725Account](./universal-profile/lsp0-erc725account.md) <br/> [LSP6-KeyManager](./universal-profile/lsp6-key-manager.md) <br/> [LSP7-DigitalAsset](./nft-2.0/LSP7-Digital-Asset.md) |
| **Metadata Standards** | **Standardize a set of ERC725Y data keys**. <br/> Informs about the data set by default on the contract and which data keys to query to retrieve such data | [LSP3-UniversalProfile-Metadata](./universal-profile/lsp3-universal-profile-metadata.md) <br/> [LSP4-DigitalAsset-Metadata](./nft-2.0/LSP4-Digital-Asset-Metadata.md) <br/> [LSP10ReceivedVaults](./universal-profile/lsp10-received-vaults.md) |
| Standard Type | Description | Examples |
| :---------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Interface Standards** | **Standardize a set of functions**. <br/> Defines the functions that can be called on a smart contract and their expected parameters | [LSP0-ERC725Account](./universal-profile/lsp0-erc725account.md) <br/> [LSP6-KeyManager](./universal-profile/lsp6-key-manager.md) <br/> [LSP7-DigitalAsset](./nft-2.0/LSP7-Digital-Asset.md) |
| **Metadata Standards** | **Standardize a set of ERC725Y data keys**. <br/> Informs about the data set by default on the contract and which data keys to query to retrieve such data | [LSP3-Profile-Metadata](./universal-profile/lsp3-profile-metadata.md) <br/> [LSP4-DigitalAsset-Metadata](./nft-2.0/LSP4-Digital-Asset-Metadata.md) <br/> [LSP10ReceivedVaults](./universal-profile/lsp10-received-vaults.md) |

![Interface and metadata standards](/img/standards/standard-detection/standard-detection.jpeg)

Expand All @@ -36,7 +36,7 @@ Calling this function will return **TRUE** if the contract implements this speci

### Interface Example

A **[Universal Profile](./universal-profile/lsp3-universal-profile-metadata.md)** is a contract based on [ERC725Account](./universal-profile/lsp0-erc725account.md)(LSP0). Therefore, the contract SHOULD implement the functions defined in the [ERC725Account interface](https://github.com/lukso-network/LIPs/blob/main/LSPs/LSP-0-ERC725Account.md#interface-cheat-sheet).
A **[Universal Profile](./universal-profile/lsp3-profile-metadata.md)** is a contract based on [ERC725Account](./universal-profile/lsp0-erc725account.md)(LSP0). Therefore, the contract SHOULD implement the functions defined in the [ERC725Account interface](https://github.com/lukso-network/LIPs/blob/main/LSPs/LSP-0-ERC725Account.md#interface-cheat-sheet).
YamenMerhi marked this conversation as resolved.
Show resolved Hide resolved

<!-- prettier-ignore-start -->

Expand Down
4 changes: 2 additions & 2 deletions docs/standards/standards-roadmap.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ sidebar_position: 2

## Introduction

As mentioned in the [LSPs Foundation](./introduction.md#lsps-foundation) section, the LSPs are not order dependant meaning a standard could use another one that comes after or before in order. For example **[LSP0 - ERC725Account](#)** uses **[LSP1 - UniversalReceiver](#)**, **[LSP2 - ERC725YJSONSchema](#)** and could use **[LSP3 - UniversalProfileMetadata](#)**, etc.
As mentioned in the [LSPs Foundation](./introduction.md#lsps-foundation) section, the LSPs are not order dependant meaning a standard could use another one that comes after or before in order. For example **[LSP0 - ERC725Account](#)** uses **[LSP1 - UniversalReceiver](#)**, **[LSP2 - ERC725YJSONSchema](#)** and could use **[LSP3 - ProfileMetadata](#)**, etc.

## LSPs Roadmap

Expand All @@ -23,7 +23,7 @@ In order to understand the LSPs properly, they should be studied in the followin

- **[LSP6 - KeyManager](./universal-profile/lsp6-key-manager.md)**

- **[LSP3 - UniversalProfileMetadata](./universal-profile/lsp3-universal-profile-metadata.md)**
- **[LSP3 - ProfileMetadata](./universal-profile/lsp3-profile-metadata.md)**

- **[LSP7 - DigitalAsset](./nft-2.0/LSP7-Digital-Asset.md)**

Expand Down
4 changes: 2 additions & 2 deletions docs/standards/universal-profile/introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ An LSP0-ERC725Account can work standalone and doesn't require a Key Manager or a

The **[LSP0 - ERC725Account](./lsp0-erc725account.md)** standard represents a blockchain-based account that does not contain any metadata describing the account. It's important to standardize specific data keys to give the account a unique character and look like a typical **Web2 profile**.

**[LSP3 - UniversalProfile Metadata](./lsp3-universal-profile-metadata.md)** is a standard used to add profile information by setting its defined data keys in the account storage. The combination of these two standards forms a **Universal Profile**.
**[LSP3 - Profile Metadata](./lsp3-profile-metadata.md)** is a standard used to add profile information by setting its defined data keys in the account storage. The combination of these two standards forms a **Universal Profile**.

:::tip

Expand All @@ -53,6 +53,6 @@ The guide [how to check if an address is a Universal Profile?](../../guides/univ
## References

- [LUKSO Standards Proposals: LSP0 - ERC725 Account (Standard Specification, GitHub)](https://github.com/lukso-network/LIPs/blob/main/LSPs/LSP-0-ERC725Account.md)
- [LUKSO Standards Proposals: LSP3 - Universal Profile Metadata (Standard Specification, GitHub)](https://github.com/lukso-network/LIPs/blob/main/LSPs/LSP-3-UniversalProfile-Metadata.md)
- [LUKSO Standards Proposals: LSP3 - Universal Profile Metadata (Standard Specification, GitHub)](https://github.com/lukso-network/LIPs/blob/main/LSPs/LSP-3-Profile-Metadata.md)
YamenMerhi marked this conversation as resolved.
Show resolved Hide resolved
- [LUKSO Standards Proposals: LSP6 - Key Manager (Standard Specification, GitHub)](https://github.com/lukso-network/LIPs/blob/main/LSPs/LSP-6-KeyManager.md)
- [LSP1 Universal Receiver: Solidity implementations (GitHub)](https://github.com/lukso-network/lsp-universalprofile-smart-contracts/tree/develop/contracts/LSP1UniversalReceiver)
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
---
sidebar_label: 'LSP3 - Universal Profile Metadata'
sidebar_label: 'LSP3 - Profile Metadata'
sidebar_position: 4
---

# LSP3 - Universal Profile Metadata
# LSP3 - Profile Metadata

:::info Standard Document

[LSP3 - Universal Profile Metadata](https://github.com/lukso-network/LIPs/blob/main/LSPs/LSP-3-UniversalProfile-Metadata.md)
[LSP3 - Profile Metadata](https://github.com/lukso-network/LIPs/blob/main/LSPs/LSP-3-Profile-Metadata.md)

:::

## Introduction

The implementation of the **[LSP0-ERC725Account](./lsp0-erc725account.md)** standard does not contain any metadata describing the account.

**LSP3-UniversalProfile-Metadata** is a Metadata standard that defines specific data keys to describe a Universal Profile. A Universal Profile combines the following two standards.
**LSP3-Profile-Metadata** is a Metadata standard that defines specific data keys to describe a profile. A Universal Profile combines the following two standards.

- **[LSP0-ERC725Account](./lsp0-erc725account.md)**: an interface for a smart contract-based account.
- **LSP3-UniversalProfile-Metadata**: a set of predefined [ERC725Y](lsp0-erc725account.md#erc725y---generic-key-value-store) Data keys to describe the profile.
- **LSP3-Profile-Metadata**: a set of predefined [ERC725Y](lsp0-erc725account.md#erc725y---generic-key-value-store) Data keys to describe the profile.

## ERC725Y Data Keys

Expand Down Expand Up @@ -54,7 +54,7 @@ This data key is used to know if the contract represents a **Universal Profile**
}
```

The value attached to this data key is a [JSONURL-encoded value](../../standards/generic-standards/lsp2-json-schema.md). It represents a reference to a [JSON file that describes the Universal Profile MetaData](https://github.com/lukso-network/LIPs/blob/main/LSPs/LSP-3-UniversalProfile-Metadata.md#lsp3profile). The file can be stored on a centralized or decentralized storage.
The value attached to this data key is a [JSONURL-encoded value](../../standards/generic-standards/lsp2-json-schema.md). It represents a reference to a [JSON file that describes the Profile MetaData](https://github.com/lukso-network/LIPs/blob/main/LSPs/LSP-3-Profile-Metadata.md#lsp3profile). The file can be stored on a centralized or decentralized storage.

Inside the JSON file, the keys `profileImage` and `backgroundImage` can accept an array of images, defining an image with different dimensions, `width` and `height`. Picture scaling is helpful for client interfaces to download and serve the images with the most suitable dimensions instead of re-scale them afterward.

Expand Down
8 changes: 4 additions & 4 deletions docs/tools/lsp-factoryjs/classes/universal-profile.md
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice was about to comment but realised that this was also changed in the lsp-factory.js docs 👌

So the CI will not need to open a PR to update it I guess, because it's in sync! 💪

https://github.com/lukso-network/tools-lsp-factory/pull/198/files

Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Deploys and **configures** a [Universal Profile](../../../standards/universal-pr

After, it will:

- upload metadata to IPFS and set the [LSP3 Universal Profile](../../../standards/universal-profile/lsp3-universal-profile-metadata) metadata,
- upload metadata to IPFS and set the [LSP3 Profile](../../../standards/universal-profile/lsp3-profile-metadata) metadata,
- attach the Universal Receiver Delegate to the ERC725 Account contract,
- set the Key Manager as the owner of the LSP0 ERC725 Account, and
- set all [LSP6 Permissions](../../../standards/universal-profile/lsp6-key-manager#-types-of-permissions) to the `controllerAddresses` except `DELEGATECALL`.
Expand Down Expand Up @@ -310,7 +310,7 @@ Deployment Complete
lspFactory.UniversalProfile.uploadProfileData(profileData [, options]);
```

Processes and uploads the [LSP3Profile Metadata](../../../standards/universal-profile/lsp3-universal-profile-metadata) to IPFS. The IPFS gateway can be set inside the `options` object.
Processes and uploads the [LSP3Profile Metadata](../../../standards/universal-profile/lsp3-profile-metadata) to IPFS. The IPFS gateway can be set inside the `options` object.

Will resize and upload passed images.

Expand All @@ -320,7 +320,7 @@ Available as a static or non-static method callable on the LSPFactory library in

#### 1. `profileData` - Object

Object containing the [LSP3 Metadata](../../../standards/universal-profile/lsp3-universal-profile-metadata) fields which will be processed and uploaded to IPFS.
Object containing the [LSP3 Metadata](../../../standards/universal-profile/lsp3-profile-metadata) fields which will be processed and uploaded to IPFS.

:::info
[Read more about how LSP3 Metadata is processed here](../deployment/universal-profile#uploading-lsp3-metadata-to-ipfs).
Expand Down Expand Up @@ -559,4 +559,4 @@ await UniversalProfile.uploadProfileData(
```

[all permissions]: ../../../../../standards/universal-profile/lsp6-key-manager#-address-permissions
[lsp3]: ../../../standards/universal-profile/lsp3-universal-profile-metadata
[lsp3]: ../../../standards/universal-profile/lsp3-profile-metadata
8 changes: 4 additions & 4 deletions docs/tools/lsp-factoryjs/deployment/universal-profile.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,12 +19,12 @@ This will deploy the following contracts:

After, it will:

- upload metadata to IPFS and set the [LSP3 Universal Profile](../../../standards/universal-profile/lsp3-universal-profile-metadata) metadata,
- upload metadata to IPFS and set the [LSP3 Profile](../../../standards/universal-profile/lsp3-profile-metadata) metadata,
- attach the Universal Receiver Delegate to the ERC725 Account,
- set the Key Manager as the owner of the ERC725 Account, and
- set all [permissions](../../../standards/universal-profile/lsp6-key-manager#-types-of-permissions) for the `controllerAddresses` except `DELEGATECALL`.

These smart contracts linked with some [LSP3 Universal Profile Metadata](../../../standards/universal-profile/lsp3-universal-profile-metadata) form a Universal Profile. The metadata is the 'face' of your profile and contains information such as your name, description, and profile image.
These smart contracts linked with some [LSP3 Profile Metadata](../../../standards/universal-profile/lsp3-profile-metadata) form a Universal Profile. The metadata is the 'face' of your profile and contains information such as your name, description, and profile image.

:::caution
The deployment key passed to LSPFactory will be given `CHANGEOWNER` and `CHANGEPERMISSIONS` [LSP6 permissions](../../../standards/universal-profile/lsp6-key-manager#-types-of-permissions) in order to carry out the Universal Profile deployment.
Expand Down Expand Up @@ -207,9 +207,9 @@ An avatar can be set by passing the `avatar` property to the `lsp3Profile` objec

An avatar can be passed as an array where each element is a different file format of the same avatar. Each file format can be passed as a `File` object, or asset metadata object according to the [LSP2 ERC725Y JSON Schema standard](https://github.com/lukso-network/LIPs/blob/main/LSPs/LSP-2-ERC725YJSONSchema.md#Array).

If an avatar file is passed as a `File` object, the file will uploaded to IPFS, converted to the correct asset metadata format and added to the [LSP3 Profile Metadata](https://docs.lukso.tech/standards/universal-profile/lsp3-universal-profile-metadata) Json.
If an avatar file is passed as a `File` object, the file will uploaded to IPFS, converted to the correct asset metadata format and added to the [LSP3 Profile Metadata](https://docs.lukso.tech/standards/universal-profile/lsp3-profile-metadata) Json.

Avatar files passed as a metadata objects will be set directly on the [LSP3 Profile Metadata](https://docs.lukso.tech/standards/universal-profile/lsp3-universal-profile-metadata) Json.
Avatar files passed as a metadata objects will be set directly on the [LSP3 Profile Metadata](https://docs.lukso.tech/standards/universal-profile/lsp3-profile-metadata) Json.

```javascript title='Setting LSP3 metadata to be uploaded with an avatar with two formats'
<input type="file" id="avatar">
Expand Down