LUKSO Ecosystem: Part 2
This article is the second part of a trilogy. We discussed the project’s goals, network, and economics in the first part. Now we will look at LUKSO’s approach to solving account management issues.
The Foundation
The LUKSO Standard Proposals (LSPs) are the ecosystem’s building blocks, implemented with smart contracts. They are part of the more general LUKSO Improvement Proposals (LIPs), which is where we discuss new protocol specifications and client API improvements to make the LUKSO Blockchain better. The article will cover the initial set of standardized tools, accounts, and tokens to show how they pave the way in a forward-looking data economy.
Standard proposals enable developers, groups, and organizations to build interoperable applications on a blockchain network. Anyone can create or combine such proposals in the future to propose more building blocks. Every submission has a digit that will increase with every requested standard. The request procedure is similar to proposals on Ethereum, known as ERCs, where Fabian Vogelsteller first proposed a blockchain-based identity.
ERC725: Blockchain-based Identity
As we discussed before, information stored on blockchains is etched in stone. Smart contracts cannot be changed or expanded upon after they are deployed. Fabian Vogelsteller proposed the modular ERC725 smart contract standard with this problem in mind. The standard introduces contract-based profiles for humans, machines, organizations, or anything else that requires an identity. This profile can be updated and is designed with a minimalistic and modular approach to enable interoperability and future development.
The standard is a base for anything that needs to store public and verifiable information about itself while still functioning like an EOA. It works well for decentralized autonomous organizations (DAOs), personal profiles, online storefronts, IoT devices, or services that need to know and verify user-specific information through a Know-Your-Customer (KYC) process. The list goes on and on. The specification helps attach rich information to smart contracts in an easily expandable list scheme. The contract’s storage state can be called a key-value store because it stores values to specific identifiers. The main benefit of this in-contract storage is flexibility in what can be stored and the ability for this information to be read by apps, interfaces, and other smart contracts.
The ERC725 smart contract standard is the base of many LSPs, which bring additional functionalities to tokens, NFTs, and the account itself. Two ERC725 sub-standards for storage and execution allow for flexibility and future-proof development. In nature, DNA contains the specific instructions that make each living creature. In a way, we can look at the identity sub-standards as chromosomes of identity in the metaverse, the Web3’s virtual world. ERC725X can call any function of any other smart contract or deploy contracts independently, allowing token transfers or calling functions on other smart contracts. ERC725Y enables the storage of information. Services can attach any data and update stored datasets, allowing these smart contracts to have unlimited flexibility in storing data.
LSP0: ERC725 Account
The ERC725 Account is a smart-contract-based profile that aims to increase functionality and user-friendliness within the blockchain ecosystem. It further specifies the relatively basic ERC725 standard by combining expendable smart contract storage with EOA functionality and the ability to verify signatures.
Public profile information can be linked, changed, queried, or removed. Users can also manage the smart contract from multiple EOAs or other smart contracts using a Key Manager, which means private keys will now be exchangeable. It enables the transfer of profile control without revealing your private key, creating room for user-friendly backup systems with multiple recovery methods. In addition, users can manage a contract from various private keys, allowing different brands, creators, and devices the ability to talk as one combined identity or DAO. Multiple keys leave room for collaborative profiles or the management of rights and roles through other devices connected to the same profile. Role management will allow services to write information to parts of your profile, which increases user-friendliness, as not everything has to be done manually by the user.
Let’s talk about the challenges of storing and reading rich information in smart contracts. Smart contract storage has slots that store byte values referenced by a key. These are easily readable by apps, interfaces, or other smart contracts but not by humans. Without tools, using such functionality would be harsh for developers. Smart contract standards must act as a base for multiple use cases and provide maximum compatibility. They need additional standards, like the Storage Schema, that define how data is encoded and decoded from the key-value store. As we already discussed, keeping information on the blockchain costs money, which prevents standards like these from being used on more expensive blockchains like Ethereum. High utilization forces the development of new blockchains, like LUKSO, which focus on more specific use cases.
Future Web3 data economy
Besides decentralized finance, blockchain is mainly used to store tokens or art. In the future, the process will likely expand to various industries for certificates, tickets, claims, postings, properties, social currencies, and more. With the help of cryptographic procedures like zero-knowledge proofs, even offline user data could be linked to accounts and proven without revealing it directly.
This upcoming profile system will foster a substantial inspiring branch of the data economy. The new evolution of the internet will create a paradigm shift where personal information moves away from the centralized servers controlled by big tech companies, who analyze and sell user data to their liking. Users will have direct ownership of their data and enjoy the utility of its power. The change will be a significant catalyst for developing standards needed to create interoperability in the token economy.
LSP1: Universal Receiver Delegate
EVM smart contracts, like custom tokens, are limited in their awareness of incoming transactions, and wallets are unaware of what is waiting at the destination of their outgoing transactions, which could be another wallet or a smart contract. Mistakenly sending tokens to a smart contract that isn’t meant to receive one can easily result in losing those tokens. Blockchains must have safety measures to prevent this and achieve mainstream adoption.
The Universal Receiver Delegate interface is a standard for message handling that acts as a transaction notification system. The standard allows smart contracts to receive notifications about the details of incoming and outgoing transactions. This system provides developers with a variety of options for programming actions in response to these notifications, such as:
- rejecting/approving transaction
- notifying users or other smart contracts of incoming assets
- specifying specific assets to reject or approve through a safelist
- forwarding notification to another smart contract
- delegating custom actions to smart contracts in response.
Received Assets is a standard that works with a Universal Receiver Delegate smart contract. It defines how received assets are written in the user’s profile so apps and interfaces can automatically determine which assets the user has received. The method allows for a decentralized way to show a profile’s portfolio without the need for third-party block explorers. Additionally, approved applications and smart contract protocols could start chains of contract actions on specific incoming assets, adding even more utility.
The receiver can also be upgraded, allowing the code to be changed to support future asset types. Considering the colossal vision of the Web3 data economy, creating notifications for every token type produces hardened and future-proof smart contract accounts.
LSP2: Storage Schema
As described in the setup of the ERC725 Account, interoperability while exchanging data from the key-value store can be difficult without common standards. The Storage Schema introduces a unified method of storing information to achieve readability from accounts. The structure is used in many LSP smart contract standards.
As we know, specific kinds of information are stored and treated differently. With the help of the Storage Schema, information is parsable in an automated way, so any app, interface, or smart contract can understand them. The standard describes a way to encode different types of key-value store data, ranging from single entries to arrays that combine multiple values in different slots. Content is stored with a hash key and the corresponding byte values of indefinite length. The key has a size of 32 bytes, which is rather significant compared to common standards but a way to save storage, even for adding a serial number as an identifier for any data, which we will discuss later. Functions that create hash keys are often used in blockchain tech. Hash functions transform an input of unlimited size to a fixed-size fingerprint that no one can convert back to the initial information. It is used to verify whether data is unchanged.
Developers can decode and encode the Storage Schema using the erc725.js JavaScript library to handle everything related to stored bytes, keys, and the corresponding encoding of different types of data the ERC725Y standard offers. The library can also return the stored data without manually decoding the information. It is a massive enabler for developers to extend blockchain-based profiles within their applications. You can find more information in the erc725.js documentation.
LSP3: Universal Profile Metadata
Combining the EC725 Account and the Storage Schema enables contract-based user profiles to be readable and writable in a standardized way. Universal Profiles are the first use case on top of LUKSO’s account standard. They represent interoperable profiles and can interact peer-to-peer with anything on the blockchain. Universal Profile Metadata defines a set of attributes developers can add to an ERC725 Account to transform into a profile with images, names, tags, and descriptions.
With the help of the key-value store of an ERC725 Account, a predefined set of profile-specific keys are added to the account smart contract to make it a Universal Profile (UP). The pack contains three key standards proposals: a Universal Receiver Delegate, Universal Profile Metadata, and Received Assets. The linked receiver smart contract can be set to delegate any incoming call to an external smart contract. Using the Received Assets standard, it can react to incoming assets and write their addresses into your ERC725 Account. Universal Profile Metadata links to the profile’s JSON with all descriptive parts of it.
In the last part of the trilogy, let’s continue with the smart contract standards ecosystem and summarize how they can play out in the metaverse and on future social media platforms.