From 952f70f9b6da6cb5378d1138a2a40db318be40b9 Mon Sep 17 00:00:00 2001 From: biancabuzea200 Date: Fri, 22 Sep 2023 15:13:55 +0200 Subject: [PATCH 1/6] add Learn card for docs and general info --- docs/learn/introduction.md | 43 ++++++++++++++++++++++++++++++++++++++ docusaurus.config.js | 6 ++++++ src/pages/index.js | 7 +++++++ 3 files changed, 56 insertions(+) create mode 100644 docs/learn/introduction.md diff --git a/docs/learn/introduction.md b/docs/learn/introduction.md new file mode 100644 index 0000000000..14f35c2924 --- /dev/null +++ b/docs/learn/introduction.md @@ -0,0 +1,43 @@ +# Basics + +## What is LUKSO? + +LUKSO is L1 blockchain, EVM (Ethereum Virtual Machine) compatible, based on PoS (Proof of Stake), for creative economies. + +## How LUKSO started? + +The story of LUKSO started with ERC725, a standard proposed by Fabian Vogelsteller for blockchain-based identity. ERC725 allows for self-sovereign identity. Over the years we saw the negative effects of having a centralized identity with damaging leaks and unfair selling of user data and identity. An open, portable standard for identities enables decentralized reputation, governance, and more. Users can take their identity across different dApps and platforms that support this standard. +LUKSO is the first blockchain that powers self-sovereign identities. + +## Why choose LUKSO? + +LSPs (LUKSO Standard Proposals) are the building blocks of LUKSO. They are used to to build blockchain-based applications that offer an enhanced user experience, and allow for more flexibility and interaction. LSPs are part of the more general LIPs used to discuss protocol specifications and client API improvements. To learn more about LSPs, check out the following [link](https://docs.lukso.tech/standards/introduction). + +**LSPs introduce new concepts like blockchain-based accounts, also known as Universal Profiles (UPs), Digital Assets, and NFT 2.0.**. + +By integrating different LSPs in unique ways, LUKSO solves fundamental problems that we currently face when it comes to blockchains such as: + +- upgradeable security: UPs can be owned by an EOA or a custom contract such as a multisig. Therefore, you can have multiple devices and applications controlling your account, each of them with different permissions. You can even have social recovery, such that you grant certain permissions to your account to your friends and family +- you can build your identity by attaching info to your UP account such as your name, a profile picture, description, etc., offering a web2 like-experience +- senders and receivers are notified of transfers (e.g.: tokens transfers), and you can see which assets you own within your profile. You can even block transfers of certain assets +- updatable and flexible metadata: metadata can be updated, enabling dynamic NFTs that can change certain properties over time, while other properties remain immutable +- you can extend your account over time seamlessly, with no need to redeploy the associated smart contract +- gassless experience: want to do a token transfer but you don't have LYX? No worries. UPs support relay services that cover the gas for users's transactions. Currently, there is a relay service that subsidizes users' transactions maintained by the LUKSO team. In the future, various relay services will be offered by multiple third parties, evolving into a competitive relay ecosystem with various business models. + +Since LUKSO is EVM-compatible, Solidity developers can build on LUKSO's implementation of the EVM straight out-of-the box, using the same tools they are familiar with. + +## Who is LUKSO intended for? + +LUKSO is intended for creative economies, where identities play a key role. +LUKSO allows brands, creatives, and developers to dictate the distribution of wealth and influence from lifestyle activities. They can do so by having Universal Profiles (UPs), creating Digital Identities and Certificates, and by building Tokenized Communities. + +## What can you build on LUKSO? + +The number of LSPs is constantly evolving. Even more, there are innumerable ways you can connect the LSPs and create innovative dApps. Your imagination is the limit. If you are looking for potential use cases, look at the following list. Please bear in mind that those represent only the tip of the iceberg. + +- decentralized social media applications +- decentralized content publishing platforms +- decentralized identity and reputation systems +- decentralized marketplaces +- decentralized news outlets +- tokenized communities for artists and creatives diff --git a/docusaurus.config.js b/docusaurus.config.js index deefd7119c..76e16766d6 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -167,6 +167,12 @@ module.exports = { src: 'img/logo.png', }, items: [ + { + type: 'doc', + docId: 'learn/introduction', + position: 'left', + label: 'Learn', + }, { type: 'doc', docId: 'guides/getting-started', diff --git a/src/pages/index.js b/src/pages/index.js index 5f4dac397a..50328201ea 100644 --- a/src/pages/index.js +++ b/src/pages/index.js @@ -56,6 +56,13 @@ function Index() { />
+ Date: Mon, 25 Sep 2023 14:03:32 +0200 Subject: [PATCH 2/6] add up_generateLsp23Address docs --- docs/standards/rpc-api.md | 89 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/docs/standards/rpc-api.md b/docs/standards/rpc-api.md index 83748104ee..0b408e3f9a 100644 --- a/docs/standards/rpc-api.md +++ b/docs/standards/rpc-api.md @@ -163,3 +163,92 @@ params: ['0x311611C9A46a192C14Ea993159a0498EDE5578aC']; #### Returns ##### 1. `String` - New controller address, to be added to the profile by the dapp. + +### up_generateLsp23Address {#up_generateLsp23Address} + +To perform the deployment, the dApp needs the salt and the controllerAddress. The controllerAddress will be injected in the dataKeys and dataValues array, then the salt and the encoded dataKeys and dataValues are sent to the relayer to deploy the profile. Previously, the relayer had to do several consecutive transactions in order to deploy a profile. Now, all those transactions are taking place at the smart contract level, so the relayer only creates one transaction. + +##### Parameters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
primaryImplementationContractAddressstringUniversal Profile implementation address
secondaryImplementationContractAddressstringKey Manager implementation address
secondaryContractInitializationCalldatastringinitialization calldata for for the Key Manager contract
secondaryContractAddControlledContractAddressbooleanthe my.universalprofile.cloud sets it as true
secondaryContractExtraInitializationParamsstringmy.universalprofile.cloud sets it as '0x'
upPostDeploymentModuleAddressstringaddress of the post deployment module
linkedContractsFactoryAddressstring address of the linkedContractsFactory (LSP23)
dataKeysstring[] data that will be set on a smart contract, e.g: adding controllers, adding LSP3 metadata, or adding default controller permissions
dataValuesstring[] data that will be set on a smart contract, e.g: adding controllers, adding LSP3 metadata, or adding default controller permissions
dataKeysControllerIndexnumber an array index where the controller key is placed
dataValuesControllerIndexnumber array index where the controller value is placed
+ +#### Returns + + + + + + + + + + + + + + + + + +
NameType
saltstring
controllerAddressstring
upAddressupAddress
From eb9383049cba8d11ba0b9c18ed7fa066ee944d87 Mon Sep 17 00:00:00 2001 From: biancabuzea200 Date: Mon, 25 Sep 2023 14:16:57 +0200 Subject: [PATCH 3/6] add additional context --- docs/standards/rpc-api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standards/rpc-api.md b/docs/standards/rpc-api.md index 0b408e3f9a..e495b2ab53 100644 --- a/docs/standards/rpc-api.md +++ b/docs/standards/rpc-api.md @@ -166,7 +166,7 @@ params: ['0x311611C9A46a192C14Ea993159a0498EDE5578aC']; ### up_generateLsp23Address {#up_generateLsp23Address} -To perform the deployment, the dApp needs the salt and the controllerAddress. The controllerAddress will be injected in the dataKeys and dataValues array, then the salt and the encoded dataKeys and dataValues are sent to the relayer to deploy the profile. Previously, the relayer had to do several consecutive transactions in order to deploy a profile. Now, all those transactions are taking place at the smart contract level, so the relayer only creates one transaction. +To perform the deployment of a profile, the dApp needs the salt and the controllerAddress. The controllerAddress will be injected in the dataKeys and dataValues array, then the salt and the encoded dataKeys and dataValues are sent to the relayer to deploy the profile. Previously, the relayer had to do several consecutive transactions in order to deploy a profile. Now, all those transactions are taking place at the smart contract level, so the relayer only creates one transaction. ##### Parameters From bc6dd401093ead66637e26c2f6ab1cdbb1b5478b Mon Sep 17 00:00:00 2001 From: biancabuzea200 Date: Mon, 25 Sep 2023 16:41:03 +0200 Subject: [PATCH 4/6] Revert "add additional context" This reverts commit eb9383049cba8d11ba0b9c18ed7fa066ee944d87. --- docs/standards/rpc-api.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/standards/rpc-api.md b/docs/standards/rpc-api.md index e495b2ab53..0b408e3f9a 100644 --- a/docs/standards/rpc-api.md +++ b/docs/standards/rpc-api.md @@ -166,7 +166,7 @@ params: ['0x311611C9A46a192C14Ea993159a0498EDE5578aC']; ### up_generateLsp23Address {#up_generateLsp23Address} -To perform the deployment of a profile, the dApp needs the salt and the controllerAddress. The controllerAddress will be injected in the dataKeys and dataValues array, then the salt and the encoded dataKeys and dataValues are sent to the relayer to deploy the profile. Previously, the relayer had to do several consecutive transactions in order to deploy a profile. Now, all those transactions are taking place at the smart contract level, so the relayer only creates one transaction. +To perform the deployment, the dApp needs the salt and the controllerAddress. The controllerAddress will be injected in the dataKeys and dataValues array, then the salt and the encoded dataKeys and dataValues are sent to the relayer to deploy the profile. Previously, the relayer had to do several consecutive transactions in order to deploy a profile. Now, all those transactions are taking place at the smart contract level, so the relayer only creates one transaction. ##### Parameters From b28064d00121c209b937bf6c559c0b454e419d2b Mon Sep 17 00:00:00 2001 From: biancabuzea200 Date: Mon, 25 Sep 2023 16:41:09 +0200 Subject: [PATCH 5/6] Revert "add up_generateLsp23Address docs" This reverts commit 8810b802b817a8a3443e85fdbb3e6f6ecead6853. --- docs/standards/rpc-api.md | 89 --------------------------------------- 1 file changed, 89 deletions(-) diff --git a/docs/standards/rpc-api.md b/docs/standards/rpc-api.md index 0b408e3f9a..83748104ee 100644 --- a/docs/standards/rpc-api.md +++ b/docs/standards/rpc-api.md @@ -163,92 +163,3 @@ params: ['0x311611C9A46a192C14Ea993159a0498EDE5578aC']; #### Returns ##### 1. `String` - New controller address, to be added to the profile by the dapp. - -### up_generateLsp23Address {#up_generateLsp23Address} - -To perform the deployment, the dApp needs the salt and the controllerAddress. The controllerAddress will be injected in the dataKeys and dataValues array, then the salt and the encoded dataKeys and dataValues are sent to the relayer to deploy the profile. Previously, the relayer had to do several consecutive transactions in order to deploy a profile. Now, all those transactions are taking place at the smart contract level, so the relayer only creates one transaction. - -##### Parameters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
primaryImplementationContractAddressstringUniversal Profile implementation address
secondaryImplementationContractAddressstringKey Manager implementation address
secondaryContractInitializationCalldatastringinitialization calldata for for the Key Manager contract
secondaryContractAddControlledContractAddressbooleanthe my.universalprofile.cloud sets it as true
secondaryContractExtraInitializationParamsstringmy.universalprofile.cloud sets it as '0x'
upPostDeploymentModuleAddressstringaddress of the post deployment module
linkedContractsFactoryAddressstring address of the linkedContractsFactory (LSP23)
dataKeysstring[] data that will be set on a smart contract, e.g: adding controllers, adding LSP3 metadata, or adding default controller permissions
dataValuesstring[] data that will be set on a smart contract, e.g: adding controllers, adding LSP3 metadata, or adding default controller permissions
dataKeysControllerIndexnumber an array index where the controller key is placed
dataValuesControllerIndexnumber array index where the controller value is placed
- -#### Returns - - - - - - - - - - - - - - - - - -
NameType
saltstring
controllerAddressstring
upAddressupAddress
From 59bab70aaddbc6f050a9ac54d2e60886d5795d2e Mon Sep 17 00:00:00 2001 From: biancabuzea200 Date: Thu, 28 Sep 2023 16:42:15 +0200 Subject: [PATCH 6/6] fix links, and add minor modifications for clarity --- docs/learn/introduction.md | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/docs/learn/introduction.md b/docs/learn/introduction.md index 14f35c2924..c2dd90deeb 100644 --- a/docs/learn/introduction.md +++ b/docs/learn/introduction.md @@ -11,18 +11,22 @@ LUKSO is the first blockchain that powers self-sovereign identities. ## Why choose LUKSO? -LSPs (LUKSO Standard Proposals) are the building blocks of LUKSO. They are used to to build blockchain-based applications that offer an enhanced user experience, and allow for more flexibility and interaction. LSPs are part of the more general LIPs used to discuss protocol specifications and client API improvements. To learn more about LSPs, check out the following [link](https://docs.lukso.tech/standards/introduction). +[LSPs](/standards/introduction.md) (LUKSO Standard Proposals) are the building blocks of LUKSO. They are used to to build blockchain-based applications that offer an enhanced user experience, and allow for more flexibility and interaction. LSPs are part of the more general LIPs used to discuss protocol specifications and client API improvements. -**LSPs introduce new concepts like blockchain-based accounts, also known as Universal Profiles (UPs), Digital Assets, and NFT 2.0.**. +**LSPs introduce new concepts like blockchain-based accounts, also known as Universal Profiles (UPs), Digital Assets, and NFT 2.0.** By integrating different LSPs in unique ways, LUKSO solves fundamental problems that we currently face when it comes to blockchains such as: -- upgradeable security: UPs can be owned by an EOA or a custom contract such as a multisig. Therefore, you can have multiple devices and applications controlling your account, each of them with different permissions. You can even have social recovery, such that you grant certain permissions to your account to your friends and family -- you can build your identity by attaching info to your UP account such as your name, a profile picture, description, etc., offering a web2 like-experience -- senders and receivers are notified of transfers (e.g.: tokens transfers), and you can see which assets you own within your profile. You can even block transfers of certain assets -- updatable and flexible metadata: metadata can be updated, enabling dynamic NFTs that can change certain properties over time, while other properties remain immutable -- you can extend your account over time seamlessly, with no need to redeploy the associated smart contract -- gassless experience: want to do a token transfer but you don't have LYX? No worries. UPs support relay services that cover the gas for users's transactions. Currently, there is a relay service that subsidizes users' transactions maintained by the LUKSO team. In the future, various relay services will be offered by multiple third parties, evolving into a competitive relay ecosystem with various business models. +- [upgradeable security](/standards/universal-profile/lsp6-key-manager): UPs can be owned by an EOA or a custom contract such as a multisig. Therefore, users can have multiple devices and applications controlling their account, each of them with different permissions. Users can even have social recovery, such that you grant certain permissions to their account to their friends and family +- [onchain persona](docs/standards/generic-standards/lsp2-json-schema.md): users can build their profiles onchain, adding images, tags, descriptions and links to their accounts to shape their online persona +- [senders and receivers are notified upon transfers (e.g.: tokens transfers)](docs/standards/generic-standards/lsp1-universal-receiver-delegate.md): users can see which assets they own within their profile. They can even block transfers of certain assets by creating a list of allowed assets they want to accept. +- [updatable and flexible metadata](docs/standards/nft-2.0/LSP4-Digital-Asset-Metadata.md): metadata can be updated, enabling dynamic NFTs that can change certain properties over time, while other properties remain immutable +- [extend your account over time](/standards/lsp-background/erc725.md): users can extend their account over time seamlessly, with no need to redeploy the associated smart contract +- gassless experience: UPs support transaction relay services that cover the gas for users's transactions. + +:::success +Currently, there is a relay service that subsidizes users' transactions maintained by the LUKSO team. In the future, various relay services will be offered by multiple third parties, evolving into a competitive relay ecosystem with various business models. +::: Since LUKSO is EVM-compatible, Solidity developers can build on LUKSO's implementation of the EVM straight out-of-the box, using the same tools they are familiar with. @@ -33,11 +37,11 @@ LUKSO allows brands, creatives, and developers to dictate the distribution of we ## What can you build on LUKSO? -The number of LSPs is constantly evolving. Even more, there are innumerable ways you can connect the LSPs and create innovative dApps. Your imagination is the limit. If you are looking for potential use cases, look at the following list. Please bear in mind that those represent only the tip of the iceberg. +The number of LSPs is constantly evolving. Even more, there are innumerable ways one can connect the LSPs and create innovative dApps. The following list contains several potential use cases. Please bear in mind that those represent only the tip of the iceberg. -- decentralized social media applications -- decentralized content publishing platforms -- decentralized identity and reputation systems -- decentralized marketplaces -- decentralized news outlets +- social media applications +- content publishing platforms +- identity and reputation systems +- marketplaces +- news outlets - tokenized communities for artists and creatives