### Install Dependencies for Grid Setup Source: https://github.com/lukso-network/docs/blob/main/docs/learn/mini-apps/setting-your-grid.md Install the necessary libraries for setting up the Grid. Choose the package manager command that corresponds to your project's setup. ```shell npm install wagmi viem@2.x @tanstack/react-query @erc725/erc725.js @lukso/lsp-smart-contracts ``` ```shell npm install ethers @erc725/erc725.js @lukso/lsp-smart-contracts ``` ```shell npm install web3 @erc725/erc725.js @lukso/lsp-smart-contracts ``` -------------------------------- ### Quick Start: Deploy a Universal Profile Source: https://github.com/lukso-network/docs/blob/main/docs/tools/dapps/lsp-factoryjs/getting-started.md Deploy a Universal Profile with a Key Manager and Universal Receiver Delegate in one transaction. This example uses viem for client setup and deploys to the LUKSO Testnet. ```typescript import { createPublicClient, createWalletClient, http } from 'viem'; import { privateKeyToAccount } from 'viem/accounts'; import { luksoTestnet } from 'viem/chains'; import { LSPFactory } from '@lukso/lsp-factory.js'; // 1. Set up your account and clients const account = privateKeyToAccount('0x...'); const publicClient = createPublicClient({ chain: luksoTestnet, transport: http(), }); const walletClient = createWalletClient({ account, chain: luksoTestnet, transport: http(), }); // 2. Create the factory const factory = new LSPFactory(publicClient, walletClient); // 3. Deploy a Universal Profile const contracts = await factory.UniversalProfile.deploy({ controllerAddresses: [account.address], }); console.log('UP Address:', contracts.LSP0ERC725Account.address); console.log('KeyManager:', contracts.LSP6KeyManager.address); ``` -------------------------------- ### Install web3.js Source: https://github.com/lukso-network/docs/blob/main/docs/learn/universal-profile/connect-profile/connect-up.md Install the web3.js library for interacting with the Universal Profile. ```sh npm install web3 ``` -------------------------------- ### Install web3 and lsp-smart-contracts Source: https://github.com/lukso-network/docs/blob/main/docs/learn/digital-assets/retrieve-token-type.md Install web3 and the lsp-smart-contracts library for use with web3. ```bash npm install web3 @lukso/lsp-smart-contracts ``` -------------------------------- ### Install graphql-ws Source: https://github.com/lukso-network/docs/blob/main/docs/tools/apis/indexer-api.md Install the `graphql-ws` library for real-time data subscriptions. ```bash npm install graphql-ws ``` -------------------------------- ### HTTP Client Example Source: https://github.com/lukso-network/docs/blob/main/docs/tools/apis/indexer-api.md Install the `graphql-request` library to interact with the indexer for one-time queries, searches, and fetching data on demand. This example shows how to retrieve Universal Profile names and their associated images. ```APIDOC ## HTTP Client Example ### Description This example demonstrates how to use the `graphql-request` library to query the LUKSO Indexer via HTTP. It fetches basic profile information. ### Method POST ### Endpoint `https://envio.lukso-mainnet.universal.tech/v1/graphql` ### Parameters #### Query Parameters None #### Request Body - **query** (string) - Required - The GraphQL query string. ### Request Example ```json { "query": "query { Profile(limit: 5) { id name fullName } }" } ``` ### Response #### Success Response (200) - **data** (object) - The result of the GraphQL query. - **Profile** (array) - An array of profile objects. - **id** (string) - The profile ID. - **name** (string) - The profile name. - **fullName** (string) - The profile's full name. #### Response Example ```json { "data": { "Profile": [ { "id": "0x123...", "name": "MyProfile", "fullName": "My Full Name" } ] } } ``` ``` -------------------------------- ### Install viem Source: https://github.com/lukso-network/docs/blob/main/docs/learn/universal-profile/connect-profile/connect-up.md Install the viem library for interacting with the Universal Profile. ```sh npm install viem ``` -------------------------------- ### Install Web3.js Source: https://github.com/lukso-network/docs/blob/main/docs/learn/universal-profile/interactions/transfer-lyx.md Install the Web3.js library (v1) to interact with the Universal Profile. ```shell npm install web3@v1 ``` -------------------------------- ### Install Project Dependencies Source: https://github.com/lukso-network/docs/blob/main/README.md Installs all necessary dependencies for the project. ```bash yarn install ``` -------------------------------- ### Install Custom Lighthouse Client Version Source: https://github.com/lukso-network/docs/blob/main/docs/networks/advanced-guides/update-clients.md Manually install a specific Lighthouse client version using the 'lukso install' command with the --lighthouse-tag flag. ```bash # Manually overwrite Lighthouse Version # https://github.com/sigp/lighthouse/releases lukso install --lighthouse-tag v4.1.0 ``` -------------------------------- ### Install graphql-request Source: https://github.com/lukso-network/docs/blob/main/docs/tools/apis/indexer-api.md Install the `graphql-request` library to make HTTP queries to the indexer. ```bash npm install graphql-request graphql ``` -------------------------------- ### Install Dependencies Source: https://github.com/lukso-network/docs/blob/main/docs/learn/digital-assets/transfer-batch.md Install the necessary libraries for interacting with LSP smart contracts using either ethers or web3. ```bash npm install ethers @lukso/lsp-smart-contracts ``` ```bash npm install web3 @lukso/lsp-smart-contracts ``` -------------------------------- ### Start Testnet Node with LUKSO CLI Source: https://github.com/lukso-network/docs/blob/main/docs/networks/testnet/running-a-node.md Use this command to start your LUKSO testnet node with the CLI. Append the `--testnet` flag to the standard start command. ```sh lukso start --testnet ``` -------------------------------- ### Install LSP Factory.js Source: https://github.com/lukso-network/docs/blob/main/docs/tools/dapps/lsp-factoryjs/getting-started.md Install the LSP Factory.js library using npm. Ensure you have Node.js and TypeScript installed. ```bash npm install @lukso/lsp-factory.js ``` -------------------------------- ### Install ethers and lsp-smart-contracts Source: https://github.com/lukso-network/docs/blob/main/docs/learn/digital-assets/retrieve-token-type.md Install ethers and the lsp-smart-contracts library for use with ethers. ```bash npm install ethers @lukso/lsp-smart-contracts ``` -------------------------------- ### Install General LSP Utils Package Source: https://github.com/lukso-network/docs/blob/main/docs/tools/dapps/lsp-utils/getting-started.md Use this command to install the main @lukso/lsp-utils package. ```bash npm install @lukso/lsp-utils ``` -------------------------------- ### Install Ethers.js Source: https://github.com/lukso-network/docs/blob/main/docs/learn/universal-profile/interactions/transfer-lyx.md Install the ethers.js library to interact with the Universal Profile. ```shell npm install ethers ``` -------------------------------- ### Install web3-onboard-config Source: https://github.com/lukso-network/docs/blob/main/docs/tools/index.mdx Install the web3-onboard-config package for Universal Profile integration with Web3-Onboard, simplifying the integration of Universal Profiles into your dApp. ```bash npm install @lukso/web3-onboard-config ``` -------------------------------- ### Install Dependencies with Bun Source: https://github.com/lukso-network/docs/blob/main/docs/learn/digital-assets/getting-started.md Install all project dependencies using the bun package manager. ```bash bun install ``` -------------------------------- ### Install Custom Geth Client Version Source: https://github.com/lukso-network/docs/blob/main/docs/networks/advanced-guides/update-clients.md Manually install a specific Geth client version using the 'lukso install' command with --geth-tag and --geth-commit-hash flags. ```bash # Manually overwrite Geth Version # https://github.com/ethereum/go-ethereum/releases lukso install --geth-tag 1.12.2 --geth-commit-hash bed84606 ``` -------------------------------- ### Install @lukso/core Source: https://github.com/lukso-network/docs/blob/main/docs/tools/dapps/up-modal/internationalization.md Install the @lukso/core package alongside @lukso/up-modal to enable i18n features. ```bash npm install @lukso/core ``` -------------------------------- ### Install web3.js Dependencies Source: https://github.com/lukso-network/docs/blob/main/docs/learn/universal-profile/metadata/register-lsp12-issued-assets.md Install the necessary libraries for using web3.js with LSP smart contracts and ERC725.js. ```shell npm install web3 @lukso/lsp-smart-contracts @erc725/erc725.js ``` -------------------------------- ### Install LSP Smart Contracts with npm Source: https://github.com/lukso-network/docs/blob/main/docs/contracts/introduction.md Use this command to install the entire @lukso/lsp-smart-contracts package using npm. ```bash npm install @lukso/lsp-smart-contracts ``` -------------------------------- ### Install EIP191Signer.js Source: https://github.com/lukso-network/docs/blob/main/docs/tools/dapps/eip191-signerjs/getting-started.md Install the package using npm. This is the first step before using the signer in your project. ```bash npm install @lukso/eip191-signer.js ``` -------------------------------- ### Install LSP Smart Contracts with yarn Source: https://github.com/lukso-network/docs/blob/main/docs/contracts/introduction.md Use this command to install the entire @lukso/lsp-smart-contracts package using yarn. ```bash yarn add @lukso/lsp-smart-contracts ``` -------------------------------- ### Install Dependencies with web3 Source: https://github.com/lukso-network/docs/blob/main/docs/learn/digital-assets/nft/read-nft-metadata.md Install the necessary npm packages for using web3 with LSP8 NFTs and ERC725.js. ```bash npm i web3 @erc725/erc725.js @lukso/lsp-smart-contracts ``` -------------------------------- ### Install Dependencies with npm (web3.js) Source: https://github.com/lukso-network/docs/blob/main/docs/learn/universal-profile/key-manager/execute-relay-transactions.md Install the necessary packages for using web3.js with LSP smart contracts and the eip191-signer.js library. ```shell npm install web3 @lukso/lsp-smart-contracts @lukso/eip191-signer.js ``` -------------------------------- ### Install LSP Smart Contracts with pnpm Source: https://github.com/lukso-network/docs/blob/main/docs/contracts/introduction.md Use this command to install the entire @lukso/lsp-smart-contracts package using pnpm. ```bash pnpm add @lukso/lsp-smart-contracts ``` -------------------------------- ### Install RainbowKit Dependencies Source: https://github.com/lukso-network/docs/blob/main/docs/learn/universal-profile/connect-profile/connect-up.md Install the necessary packages for RainbowKit, Wagmi, and React Query to enable wallet connections. ```sh npm install @rainbow-me/rainbowkit wagmi @tanstack/react-query ``` -------------------------------- ### Install LSP7 Contracts Source: https://github.com/lukso-network/docs/blob/main/docs/contracts/overview/Token/index.md Install the LSP7 smart contracts package using npm, yarn, or pnpm. ```bash npm install @lukso/lsp7-contracts ``` ```bash yarn add @lukso/lsp7-contracts ``` ```bash pnpm add @lukso/lsp7-contracts ``` -------------------------------- ### Install @lukso/lsp-utils Source: https://github.com/lukso-network/docs/blob/main/docs/learn/digital-assets/.assets.md Install the `@lukso/lsp-utils` library using npm to utilize its functions for generating LSP4 JSON metadata. ```bash npm i @lukso/lsp-utils ``` -------------------------------- ### Install LSP7 Contracts for Foundry Source: https://github.com/lukso-network/docs/blob/main/docs/contracts/introduction.md Install the LSP7 contracts using a package manager as a prerequisite for Foundry integration. ```bash npm i @lukso/lsp7-contracts ``` -------------------------------- ### Install Dependencies for viem Source: https://github.com/lukso-network/docs/blob/main/docs/learn/universal-profile/metadata/adding-custom-data.md Install necessary libraries for using viem to interact with Universal Profiles and handle ERC725Y data. ```shell npm install viem @erc725/erc725.js @lukso/lsp-smart-contracts ``` -------------------------------- ### Web3.js Setup and Imports Source: https://github.com/lukso-network/docs/blob/main/docs/learn/digital-assets/nft/set-nft-metadata.md Set up web3.js instance and import the LSP8 contract ABI. Replace '0x...' with your actual LSP8 contract address. ```javascript import Web3 from 'web3'; // import smart contract ABI import LSP8IdentifiableDigitalAsset from '@lukso/lsp-smart-contracts/artifacts/LSP8IdentifiableDigitalAsset.json'; const web3 = new Web3(window.lukso); await web3.eth.requestAccounts(); const accounts = await web3.eth.getAccounts(); const lsp8ContractAddress = '0x...'; ``` -------------------------------- ### ethers.js v6 Example for Transaction Relay Source: https://github.com/lukso-network/docs/blob/main/docs/tools/apis/relayer-api.md An example demonstrating how to encode a payload, get a nonce, sign a message using LSP25 format (EIP-191 v0), and send it to the relay service using ethers.js v6. ```javascript import { ethers } from 'ethers'; const provider = new ethers.JsonRpcProvider('https://42.rpc.thirdweb.com'); const controllerPrivateKey = '0x...'; const controllerAddress = '0x...'; // Address derived from controllerPrivateKey const upAddress = '0x...'; // 1. Get Key Manager address const up = new ethers.Contract( upAddress, ['function owner() view returns (address)'], provider, ); const keyManagerAddress = await up.owner(); // 2. Encode the payload (example: setData) const dataKey = '0x...'; // Your data key const dataValue = '0x...'; // Your data value const iface = new ethers.Interface(['function setData(bytes32,bytes)']); const payload = iface.encodeFunctionData('setData', [dataKey, dataValue]); // 3. Get nonce from Key Manager const km = new ethers.Contract( keyManagerAddress, ['function getNonce(address,uint128) view returns (uint256)'], provider, ); const nonce = await km.getNonce(controllerAddress, 0); // 4. Build LSP25 message and sign (EIP-191 v0) const chainId = 42; // 4201 for testnet const encodedMessage = ethers.solidityPacked( ['uint256', 'uint256', 'uint256', 'uint256', 'uint256', 'bytes'], [25, chainId, nonce, 0, 0, payload], // LSP25_VERSION=25, validityTimestamps=0, msgValue=0 ); const hash = ethers.keccak256( ethers.concat(['0x19', '0x00', keyManagerAddress, encodedMessage]), ); const signingKey = new ethers.SigningKey(controllerPrivateKey); const sig = signingKey.sign(hash); const signature = ethers.Signature.from(sig).serialized; // 5. Send to relay service (no API key needed) const response = await fetch( 'https://relayer.mainnet.lukso.network/api/execute', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ address: upAddress, transaction: { abi: payload, signature, nonce: Number(nonce), validityTimestamps: '0x0', }, }), }, ); const result = await response.json(); console.log('TX Hash:', result.transactionHash); ``` -------------------------------- ### Query Universal Profile Data via HTTP Source: https://github.com/lukso-network/docs/blob/main/docs/tools/apis/indexer-api.md Example of fetching Universal Profile data using `graphql-request`. Ensure you have installed the necessary libraries. ```typescript import { request, gql } from 'graphql-request'; const GRAPHQL_ENDPOINT = 'https://envio.lukso-mainnet.universal.tech/v1/graphql'; // Example query to retrieve the Universal Profile's name and its images const query = gql` query { Profile(limit: 5) { id name fullName } } `; const data = await request(GRAPHQL_ENDPOINT, query); console.log(data); ``` -------------------------------- ### Install Latest Blockchain Clients Source: https://github.com/lukso-network/docs/blob/main/docs/networks/advanced-guides/switch-consensus-clients.md After initializing the new directory, install the necessary blockchain clients. It's recommended to use Erigon for execution and Lighthouse or Teku for consensus to balance the network. ```bash lukso install ``` -------------------------------- ### Install UP Modal Package Source: https://github.com/lukso-network/docs/blob/main/docs/tools/dapps/up-modal/getting-started.md Install the UP Modal package using your preferred package manager. Also, ensure you have installed the required peer dependencies: @wagmi/core and viem. ```bash # pnpm pnpm add @lukso/up-modal # npm npm install @lukso/up-modal # yarn yarn add @lukso/up-modal ``` ```bash npm install @wagmi/core viem ``` -------------------------------- ### Install Custom Teku Client Version Source: https://github.com/lukso-network/docs/blob/main/docs/networks/advanced-guides/update-clients.md Manually install a specific Teku client version using the 'lukso install' command with the --teku-tag flag. ```bash # Manually overwrite Teku Version # https://github.com/ConsenSys/teku/releases lukso install ---teku-tag v23.10.0 ``` -------------------------------- ### Start Local Development Server Source: https://github.com/lukso-network/docs/blob/main/README.md Starts a local development server for live previewing changes. The server typically opens in a browser automatically. ```bash yarn start ``` -------------------------------- ### Install Custom Prysm Client Version Source: https://github.com/lukso-network/docs/blob/main/docs/networks/advanced-guides/update-clients.md Manually install a specific Prysm client version using the 'lukso install' command with the --prysm-tag flag. ```bash # Manually overwrite Prysm Version # https://github.com/prysmaticlabs/prysm/releases lukso install --prysm-tag v4.0.8 ``` -------------------------------- ### Setup Graph Node Docker Environment Source: https://github.com/lukso-network/docs/blob/main/docs/learn/other-guides/run-graph-node.md Execute the setup script to download necessary Docker images and configure the docker-compose.yml file. ```bash ./setup.sh ``` -------------------------------- ### Setup Imports and Constants (web3.js) Source: https://github.com/lukso-network/docs/blob/main/docs/learn/vault/create-a-vault.md Import the LSP9Vault contract artifact and initialize Web3 with network details. Define the vault owner and set up your Externally Owned Account (EOA) with a private key. ```typescript import LSP9Vault from '@lukso/lsp-smart-contracts/artifacts/LSP9Vault.json'; import Web3 from 'web3'; const web3 = new Web3('https://rpc.testnet.lukso.network'); const vaultOwner = '0x...'; // The address that will be the vault owner // initialize your EOA const privateKey = '0x...'; const myEOA = web3.eth.accounts.wallet.add(privateKey); ``` -------------------------------- ### Initialize UP Provider with viem Source: https://github.com/lukso-network/docs/blob/main/docs/tools/dapps/up-provider/getting-started.md Construct the UP provider and create a wallet client for connecting to the provider using viem. A public client can be created for direct RPC connections. ```javascript import { createClientUPProvider } from '@lukso/up-provider'; import { createWalletClient, createPublicClient, custom } from 'viem'; import { lukso } from 'viem/chains'; // Construct the up-provider const provider = createClientUPProvider(); // Create public client if you need direct connection to RPC const publicClient = createPublicClient({ chain: lukso, transport: http(), }); // Create wallet client to connect to provider const walletClient = createWalletClient({ chain: lukso, transport: custom(provider), }); ``` -------------------------------- ### Prepare Metadata and Connect (web3.js) Source: https://github.com/lukso-network/docs/blob/main/docs/learn/digital-assets/metadata-management/edit-token-metadata.md Initializes the web3.js provider, requests accounts, and instantiates the contract using the provided asset address and LSP7 artifact. Ensure the encoded LSP4 metadata is prepared beforehand. ```javascript import Web3 from 'web3'; import LSP7Artifact from '@lukso/lsp-smart-contracts/artifacts/LSP7DigitalAsset.json'; // As generated in the Asset Preparation guide const encodedLSP4Metadata = { keys: ['0x9afb95cacc9f95858ec44aa8c3b685511002e30ae54415823f406128b85b238e'], values: [ '0x00006f357c6a0020610be5a5ebf25a8323ed5a9d8735f78aaf97c7e3529da7249f17e1b4129636f3697066733a2f2f516d5154716865424c5a466e5155787535524473387441394a746b78665a714d42636d47643973756b587877526d', ], }; // Connect via the UP Browser Extension const web3 = new Web3(window.lukso); await web3.eth.requestAccounts(); const accounts = await web3.eth.getAccounts(); const myAssetAddress = '0x...'; // Instantiate the token contract const token = new web3.eth.Contract(LSP7Artifact.abi, myAssetAddress); ``` -------------------------------- ### Initialize UP Provider with web3 Source: https://github.com/lukso-network/docs/blob/main/docs/tools/dapps/up-provider/getting-started.md Create the UP provider and wrap it with Web3 for usage within a web3.js environment. ```javascript import { createClientUPProvider } from '@lukso/up-provider'; import Web3, { type EthExecutionAPI, type SupportedProviders } from 'web3'; // Create the up-provider const provider = createClientUPProvider(); // Wrap provider into web3 for usage. const web3 = new Web3(provider as SupportedProviders); ``` -------------------------------- ### Start Mini-App Development Server Source: https://github.com/lukso-network/docs/blob/main/docs/learn/mini-apps/testing-miniapps.md Start your Mini-App's development server. For Next.js, you can specify a custom port using the '--' flag. ```bash npm run dev -- -p 8000 ``` -------------------------------- ### constructor Source: https://github.com/lukso-network/docs/blob/main/docs/contracts/contracts/LSP17Extensions/Extension4337.md Initializes the Extension4337 contract with the provided EntryPoint address. ```APIDOC ## constructor ### Description Initializes the Extension4337 contract with the provided EntryPoint address. ### Parameters #### Path Parameters - **entryPoint_** (address) - Required - The address of the EntryPoint contract. ``` -------------------------------- ### Start Lukso Node and Validator Source: https://github.com/lukso-network/docs/blob/main/docs/networks/advanced-guides/switch-consensus-clients.md Use these commands to start your mainnet node or validator. For validators, specify the transaction fee recipient address. Ensure any configuration changes are correctly formatted before starting. ```bash # Starting the Mainnet Node lukso start ``` ```bash # Starting the Mainnet Validator lukso start --validator --transaction-fee-recipient "0x1234..." ``` -------------------------------- ### Install erc725.js Source: https://github.com/lukso-network/docs/blob/main/docs/learn/digital-assets/retrieve-token-type.md Install the erc725.js library to automatically decode ERC725Y storage keys. ```bash npm install @erc725/erc725.js ``` -------------------------------- ### Start LUKSO Node with Validator Functionality Source: https://github.com/lukso-network/docs/blob/main/docs/networks/mainnet/become-a-validator.md Start your LUKSO node with validator functionality enabled. This command requires specifying a transaction fee recipient address. Ensure your node is synchronized before starting the validator. ```bash lukso start --validator --transaction-fee-recipient "0x1234..." ``` -------------------------------- ### Install LSP Smart Contracts and Dependencies Source: https://github.com/lukso-network/docs/blob/main/docs/learn/universal-profile/universal-receiver/create-receiver-forwarder.md Install the necessary libraries for creating an LSP1 Forwarder contract, including the LSP smart contracts, erc725.js, and dotenv. ```bash npm i @lukso/lsp-smart-contracts@v0.14.0 @erc725/erc725.js dotenv ``` -------------------------------- ### Setup Universal Profile and Key Manager Instances (web3.js) Source: https://github.com/lukso-network/docs/blob/main/docs/learn/universal-profile/key-manager/execute-relay-transactions.md Instantiates the Universal Profile and Key Manager contracts using web3.js. Obtain the Key Manager address by calling the owner() function on the Universal Profile. ```typescript import Web3 from 'web3'; import UniversalProfileContract from '@lukso/lsp-smart-contracts/artifacts/UniversalProfile.json'; import KeyManagerContract from '@lukso/lsp-smart-contracts/artifacts/LSP6KeyManager.json'; const web3 = new Web3('https://rpc.testnet.lukso.network'); const universalProfileAddress = ; // Setup the contract instance of the Universal Profile const universalProfile = new web3.eth.Contract( UniversalProfileContract.abi, '0x...', // Universal Profile address ); // Call the Universal Profile contract to get the Key Manager const keyManagerAddress = await universalProfile.methods.owner().call(); // Setup the contract instance of the Key Manager const keyManager = new web3.eth.Contract( KeyManagerContract.abi, keyManagerAddress, ); ``` -------------------------------- ### Install Dependencies for web3.js Source: https://github.com/lukso-network/docs/blob/main/docs/learn/universal-profile/metadata/edit-profile.md Install the necessary dependencies for using web3.js to interact with Universal Profiles. ```shell npm install web3 @erc725/erc725.js @lukso/lsp-smart-contracts @lukso/data-provider-ipfs-http-client ``` -------------------------------- ### Install Dependencies for web3.js Source: https://github.com/lukso-network/docs/blob/main/docs/learn/universal-profile/connect-profile/siwe.md Install the necessary libraries for using web3.js with Universal Profiles and SIWE. This includes web3, LSP smart contracts, and the SIWE library. ```shell npm install web3 @lukso/lsp-smart-contracts siwe ``` -------------------------------- ### Install Dependencies for ethers.js Source: https://github.com/lukso-network/docs/blob/main/docs/learn/universal-profile/metadata/edit-profile.md Install the necessary dependencies for using ethers.js to interact with Universal Profiles. ```shell npm install ethers @erc725/erc725.js @lukso/lsp-smart-contracts @lukso/data-provider-ipfs-http-client ``` -------------------------------- ### Install Dependencies Source: https://github.com/lukso-network/docs/blob/main/docs/learn/digital-assets/metadata-management/read-asset-data.md Install the necessary packages for working with LUKSO digital assets and ERC725 data. ```bash npm i @lukso/lsp-smart-contracts @erc725/erc725.js ``` -------------------------------- ### Install Specific LSP Utils Package Source: https://github.com/lukso-network/docs/blob/main/docs/tools/dapps/lsp-utils/getting-started.md Use this command to install a specific module, such as the LSP2 utilities. ```bash npm install @lukso/lsp-utils/LSP2 ``` -------------------------------- ### Initialize web3.js Environment Source: https://github.com/lukso-network/docs/blob/main/docs/learn/vault/edit-vault-data.md Import necessary artifacts and constants, then set up your Externally Owned Account (EOA) for web3.js interactions. ```typescript import LSP1UniversalReceiverDelegateVault from '@lukso/lsp-smart-contracts/artifacts/LSP1UniversalReceiverDelegateVault.json'; import UniversalProfile from '@lukso/lsp-smart-contracts/artifacts/UniversalProfile.json'; import LSP9Vault from '@lukso/lsp-smart-contracts/artifacts/LSP9Vault.json'; import { ERC725YDataKeys } from '@lukso/lsp-smart-contracts'; import Web3 from 'web3'; // constants const web3 = new Web3('https://rpc.testnet.lukso.network'); const vaultAddress = '0x...'; const universalProfileAddress = '0x...'; // setup your EOA const privateKey = '0x...'; const myEOA = web3.eth.accounts.wallet.add(privateKey); ```