From 8cf2280b9d8532a1a0984a68770317977db3c6a9 Mon Sep 17 00:00:00 2001 From: CJ42 Date: Tue, 12 Nov 2024 01:04:43 +0700 Subject: [PATCH] address review comments --- docs/learn/benefits-lukso-standards.md | 44 +++++++++++++------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/docs/learn/benefits-lukso-standards.md b/docs/learn/benefits-lukso-standards.md index b66d3edd2..a814adf79 100644 --- a/docs/learn/benefits-lukso-standards.md +++ b/docs/learn/benefits-lukso-standards.md @@ -28,16 +28,16 @@ TheΒ [πŸ†™ Browser Extension](/install-up-browser-extension) offers a better use | Feature | Benefits | | ------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [**πŸ—„οΈ Metadata in one place**](#️-metadata-in-one-place) | Finished re-filling the same information again and again on each new app you register to!
Your information is stored and fetched from the same place (your πŸ†™ storage) and displayed the same across all the dApps ecosystem! | +| [**πŸ—„οΈ Metadata in one place**](#️-metadata-in-one-place) | Removes the requirement to refill the same information again and again on each new app you register to!
Your information is stored and fetched from the same place (your πŸ†™ storage) and displayed the same across all the dApps ecosystem! | | [**🎨 Customizable metadata**](#-customizable-metadata) | Make your Universal Profile stand out from others! Give it a profile and cover image, and add as many amount of information with its unlimited storage. | -| [**⛽️ Gas-Less transactions**](#️-gas-less-transactions) | No more need to buy and hold native tokens to pay for the gas. Use the transaction relayer plugged to the Universal Profile from the start to get started. | -| [**πŸ”‘ Multi-Control with permissions**](#-multi-control-with-permissions) | Universal Profiles can be controlled by multiple EOAs with various permission levels, held across different devices or representing dApps.
Each can have specific access rights (token transfers, playlist management, or account recovery). | +| [**⛽️ Gas-Less transactions**](#️-gas-less-transactions) | No more need to buy and hold native tokens to pay for the gas. Use the transaction relayer from [_universalprofile.cloud_](https://my.universalprofile.cloud/dashboard) plugged to the Universal Profile from the start to get started. | +| [**πŸ”‘ Multi-Control with permissions**](#-multi-control-with-permissions) | Universal Profiles can be controlled by multiple addresses (EOAs and contracts) with various permission levels, held across different devices or representing dApps. Each can have specific access rights (token transfers, playlist management, account recovery, etc). | | **πŸ“’ Notification and customized reactivity** | The πŸ†™ can be customized to react differently based on different events it receives. For instance, the default implementation automatically register new received assets. | | **βš™οΈ Extendability with pluggable Extensions** | New features (like new function selectors not present by default in the smart contract code) can be added to a Universal Profile, using a system of extensions.

See our guide [**Extending Universal Profile functionalities**](./universal-profile/advanced-guides/extend-profile-functionalities.md) for more details. | ### πŸ—„οΈ Metadata in one place -With traditional web3 wallets, a user has to fill the same infos every time it registers on a new dApp (_e.g: username, biography, social media accounts_). A Universal Profile stores user's data in one single place: the contract's storage. any dApp can then retrieve the same information from the same place, making dApp onboarding easier and faster. +With traditional web3 wallets, a user has to fill the same infos every time it registers on a new dApp (_e.g: username, biography, social media accounts_). A Universal Profile stores user's data in one single place: the contract's storage. Any dApp can then retrieve the same information from the same place, making dApp onboarding easier and faster.
LSP7 and LSP8 use the **same function names** for transfer and operator approvals, whether it is a token or NFT transfer. | -| [**πŸ—„οΈ Unlimited & Dynamic Metadata for Tokens & NFTs**](#️-unlimited--dynamic-metadata) | Your NFT is not only an image. It can now hold as many information as imagined (custom traits, attributes, ...). This information can evolve overtime. | -| **δ·“ Flexible Batching functionalities** | Distibute multiple tokens or NFTs easily to users with [`transferBatch(...)`](../contracts/contracts/LSP8IdentifiableDigitalAsset/LSP8IdentifiableDigitalAsset.md#transferbatch) or perform multiple actions in a single transaction with [`batchCalls(...)`](../contracts/contracts/LSP8IdentifiableDigitalAsset/LSP8IdentifiableDigitalAsset.md#batchcalls).
_(e.g: authorize multiple operators, transfer an NFT and update its metadata)_. | -| [**πŸ“’ Notify sender & recipient(s) on transfer and new operators**](#-notify-on-transfers) | Sender is notified _"I have sent tokens"_, recipient is notified _"I have received tokens"_ and both can have custom logic to react on these notifications.

**Finished the old _"`approve(...)` then `transferFrom(...)`"_ flow!**. Using the Universal Receiver and automatic reactions on notifications is the new way! | -| **βš™οΈ Extendability with pluggable Extensions** | New features (like new function selectors not present by default in the smart contract code) can be added to a Digital Asset, using a system of extensions. | -| [**βœ‹πŸ» Safety parameter (by default!) to prevent accidental transfers**](#-safety-to-prevent-accidental-transfers) | Prevent bad web3 user stories and reduce the number of Google searches for:
_"Transferred tokens to the wrong wallet address. How can I recover them?"_. | +| Feature | Benefits | +| ----------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| [**πŸ”˜ Easier functions for developers**](#-easier-functions-for-developers) | You are a developer? Stop learning different functions for each new ERC token standard! (ERC20, ERC721, ERC1155, etc...).
LSP7 and LSP8 use the **same function names** for transfer and operator approvals, whether it is a token or NFT transfer. | +| [**πŸ—„οΈ Unlimited & Dynamic Metadata for Tokens & NFTs**](#️-unlimited--dynamic-metadata) | Your NFT is not only an image. It can now hold as many information as can be imagined (custom traits, attributes, ...). This information can evolve overtime. | +| **δ·“ Flexible Batching functionalities** | Distribute multiple tokens or NFTs easily to users with [`transferBatch(...)`](../contracts/contracts/LSP8IdentifiableDigitalAsset/LSP8IdentifiableDigitalAsset.md#transferbatch) or perform multiple actions in a single transaction with [`batchCalls(...)`](../contracts/contracts/LSP8IdentifiableDigitalAsset/LSP8IdentifiableDigitalAsset.md#batchcalls).
_(e.g: authorize multiple operators, transfer an NFT and update its metadata)_. | +| [**πŸ“’ Notify sender & recipient(s) on transfer and new operators**](#-notify-on-transfers) | Sender is notified _"I have sent tokens"_, recipient is notified _"I have received tokens"_ and both can have custom logic to react on these notifications.

**Finished the old _"`approve(...)` then `transferFrom(...)`"_ flow!**. Using the Universal Receiver and automatic reactions on notifications is the new way! | +| **βš™οΈ Extendability with pluggable Extensions** | New features (like new function selectors not present by default in the smart contract code) can be added to a Digital Asset, using a system of extensions. | +| [**βœ‹πŸ» Safety parameter (by default!) to prevent accidental transfers**](#-safety-to-prevent-accidental-transfers) | Prevent bad web3 user stories and reduce the number of Google searches for:
_"Transferred tokens to the wrong wallet address. How can I recover them?"_. | ### πŸ”˜ Easier functions for developers @@ -160,7 +160,7 @@ Similarly, they both use the same function `authorizeOperator(address,[uint256/b

-Like Universal Profile, digital assets based on the LSP7 and LSP8 standards can hold an **unlimited quantity of metadata** for any various type of information considered relevant to the token or NFT collection. This can include: +Like Universal Profile, digital assets based on the LSP7 and LSP8 standards can hold an **unlimited quantity of metadata** for any type of information considered relevant to the token or NFT collection. This can include: - Icons and image. - The creators of the tokens / NFT collection. @@ -169,16 +169,16 @@ Like Universal Profile, digital assets based on the LSP7 and LSP8 standards can LSP8 also allows to create more complex and rich NFT collections where **each NFT can have its own custom metadata**. Setting metadata specific to each NFT is done using the standardized functions [`setDataForTokenId(...)` and `setDataBatchForTokenIds(...)`](../contracts/overview/NFT/set-nft-metadata.md). This is useful for instance for: - NFTs that need to hold specific items like digital clothing items for avatars, or weapons / body armors in a video game. -- dynamic NFTs, where any information, traits or attributes of a NFT could be programmed to change or evolve overtime according to certain conditions, logics or triggers. +- dynamic NFTs, where any information, traits or attributes of an NFT could be programmed to change or evolve overtime according to certain conditions, logics or triggers. ### πŸ“’ Notify on transfers On each token transfers, bother sender & recipient are notified that a token transfer happened. This notification includes a specific notification ID (_e.g: "I have sent / received some tokens / NFTs"_. See typeIds for more infos). -In addition, it is possible to program and _"plug-in"_ custom logic contracts called [**Universal Receiver Delegate**](../standards/accounts/lsp1-universal-receiver-delegate.md) to the sender and recipient, so that they can automatically react based on these different type of notifications. For example: +In addition, it is possible to program and _"plug-in"_ custom logic contracts called [**Universal Receiver Delegate**](../standards/accounts/lsp1-universal-receiver-delegate.md) to the sender and recipient, so that they can automatically react based on these different types of notifications. For example: - Registering / Removing tokens from your list of received assets. -- Block receiving spam tokens that can contain malicious logic to steal user's funds if interacting with such token contracts, by filtering them against a spam or blacklist registry. +- Block incoming spam tokens that can contain malicious logic to steal user's funds if interacting with such token contracts, by filtering them against a spam or blacklist registry. - Forward automatically a certain percentage of the tokens received to a specific address (_e.g: a Vault to implement "save the change" schemes, a wallet for savings, a family member)_. - Implement automated mechanisms to re-distribute equally and proportionally the tokens received in a trustless manner (_e.g: distribute dividends to shareholders, or bonuses to employees._)