Skip to content

Commit

Permalink
Merge branch 'main' into faq-overhaul-onboarding
Browse files Browse the repository at this point in the history
  • Loading branch information
Hugoo authored Jul 11, 2023
2 parents a00d5dc + e69d3ca commit 61adac6
Show file tree
Hide file tree
Showing 20 changed files with 7,926 additions and 922 deletions.
748 changes: 748 additions & 0 deletions docs/contracts/contracts/ERC725/ERC725.md

Large diffs are not rendered by default.

1,057 changes: 1,057 additions & 0 deletions docs/contracts/contracts/LSP7DigitalAsset/extensions/LSP7Burnable.md

Large diffs are not rendered by default.

1,095 changes: 1,095 additions & 0 deletions docs/contracts/contracts/LSP7DigitalAsset/extensions/LSP7CappedSupply.md

Large diffs are not rendered by default.

1,241 changes: 1,241 additions & 0 deletions docs/contracts/contracts/LSP7DigitalAsset/extensions/LSP7CompatibleERC20.md

Large diffs are not rendered by default.

Large diffs are not rendered by default.

1,092 changes: 1,092 additions & 0 deletions docs/contracts/contracts/LSP7DigitalAsset/presets/LSP7Mintable.md

Large diffs are not rendered by default.

1,276 changes: 1,276 additions & 0 deletions docs/contracts/contracts/LSP9Vault/LSP9Vault.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/contracts/introduction.md
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ The **Digital Asset (Token and NFT 2.0)** contracts are the newest advanced vers

These contracts are not just related to one specific section and could be used with the **Universal Profile**, **Digital Asset**, and **NFT 2.0** contracts.

- **[LSP9Vault](../standards/smart-contracts/lsp9-vault.md)**: a contract representing a **Vault** able to execute and hold assets could be owned by an LSP0ERC725Account contract.
- **[LSP9Vault](../contracts/contracts/LSP9Vault/LSP9Vault.md)**: a contract representing a **Vault** able to execute and hold assets could be owned by an LSP0ERC725Account contract.
- **[LSP1UniversalReceiverDelegateVault](./contracts/LSP1UniversalReceiver/LSP1UniversalReceiverDelegateVault/LSP1UniversalReceiverDelegateVault.md)**: a contract that allows the vault to react to the calls it receives (Normal transaction, Token transfer, etc.).
- **LSP14Ownable2Step**
- **LSP17ContractExtension**
Expand Down
34 changes: 30 additions & 4 deletions docs/faq/help.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,37 @@
---
title: Help
description: Help on Frequently Asked Questions
sidebar_label: 'Help Center'
sidebar_position: 5
---

# Help
# Help Center

## How to stay up to date about LUKSO?

You can follow LUKSO on [Twitter](https://twitter.com/lukso_io), read the latest article on [Medium](https://medium.com/lukso) articles, and follow the announcements on the LUKSO [Discord](https://discord.gg/lukso) server.

## Where can I read the LUKSO Whitepaper?

Here is the link to read and download the [Official LUKSO Whitepaper](https://uploads-ssl.webflow.com/629f44560745074760731ba4/62b200bfe0af12186845519a_LUKSO_Whitepaper_V1-1.pdf).

## My question is not here. Where can I ask it?

If you can't find an answer to your question, you can head to our [Discord](https://discord.gg/lukso) server. We have development-related channels where you can ask technical questions. We will add the most asked question to this list.
If you can't find an answer to your question, you can head to our [Discord](https://discord.gg/lukso) server. We have various open channels where you can ask technical questions:

- `validators`: Node and Network related questions
- `dev-chat`: Questions about tools, backend, and dApps
- `standards`: Questsions about LSPs and their integration
- `documentation`: Improvement proposals for our technical guides

In addition, the most frequently asked questions will be added to this list.

## Where can I report regular issues for repositories and tools?

You can open an issue on any open code repository of the [LUKSO Network's GitHub](https://github.com/lukso-network) page. We are also preparing workflows to handle global issues and improvement proposals. In case you want to give feedback to private source code, like our Universal Profile Extension, please create an issue on our global [GitHub Issue Tracker](https://github.com/lukso-network/issue-tracker).

## Where can security issues be reported to?

Suppose it's a vulnerability or something that should not be shared with the public, please reach out to official team members within our developer channel on [Discord](https://discord.gg/lukso). You can send a friend request in order to exchange more detailed information. We are also preparing a workflow to handle investigations and bug bounties in a unified format.

## Does LUKSO have grants or bug bounties?

We're happy to compensate if there are severe findings and vulnerabilities discovered. The compensation will depend on the scope of the error or bug. We do not share precise bounty amounts beforehand because of the wide range of possible discoveries.
22 changes: 15 additions & 7 deletions docs/guides/key-manager/execute-relay-transactions.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,9 +64,11 @@ To encode a transaction, we need the address of the Universal Profile smart cont
import UniversalProfileContract from '@lukso/lsp-smart-contracts/artifacts/UniversalProfile.json';
import KeyManagerContract from '@lukso/lsp-smart-contracts/artifacts/LSP6KeyManager.json';
import { EIP191Signer } from '@lukso/eip191-signer.js';
import { LSP6_VERSION } from '@lukso/lsp-smart-contracts/constants';
import Web3 from 'web3';

// This is the version relative to the LSP6 standard, defined as the number 6.
import { LSP6_VERSION } from '@lukso/lsp-smart-contracts/constants';

const web3 = new Web3('https://rpc.testnet.lukso.network');
const universalProfileAddress = '0x...';
const msgValue = 0; // Amount of native tokens to be sent
Expand All @@ -85,9 +87,11 @@ const controllerAccount = web3.eth.accounts.wallet.add(controllerPrivateKey);
import UniversalProfileContract from '@lukso/lsp-smart-contracts/artifacts/UniversalProfile.json';
import KeyManagerContract from '@lukso/lsp-smart-contracts/artifacts/LSP6KeyManager.json';
import { EIP191Signer } from '@lukso/eip191-signer.js';
import { LSP6_VERSION } from '@lukso/lsp-smart-contracts/constants';
import { ethers } from 'ethers';

// This is the version relative to the LSP6 standard, defined as the number 6.
import { LSP6_VERSION } from '@lukso/lsp-smart-contracts/constants';

const provider = new ethers.providers.JsonRpcProvider(
'https://rpc.testnet.lukso.network',
);
Expand Down Expand Up @@ -222,7 +226,7 @@ const abiPayload = universalProfile.interface.encodeFunctionData('execute', [

:::tip ERC725X execute

You can find more information about the [ERC725X `execute` call here](../../standards/smart-contracts/erc725-contract#execute---erc725x).
You can find more information about the [ERC725X `execute` call here](../../contracts/contracts/ERC725/ERC725.md#execute).

:::

Expand All @@ -243,7 +247,7 @@ For more information check: [**How to sign relay transactions?**](../../standard
<TabItem value="web3js" label="web3.js">

```typescript title="Sign the transaction"
const chainId = await web3.eth.getChainId(); // will be 2828 on L16
const chainId = await web3.eth.getChainId();

let encodedMessage = web3.utils.encodePacked(
{ value: LSP6_VERSION, type: 'uint256' },
Expand All @@ -268,7 +272,7 @@ let { signature } = await eip191Signer.signDataWithIntendedValidator(
<TabItem value="ethersjs" label="ethers.js">

```typescript title="Sign the transaction"
const { chainId } = await provider.getNetwork(); // will be 2828 on L16
const { chainId } = await provider.getNetwork();

let encodedMessage = ethers.utils.solidityPack(
['uint256', 'uint256', 'uint256', 'uint256', 'uint256', 'bytes'],
Expand Down Expand Up @@ -361,9 +365,11 @@ You can find more information about the [LSP6KeyManager `executeRelayCall` here]
import UniversalProfileContract from '@lukso/lsp-smart-contracts/artifacts/UniversalProfile.json';
import KeyManagerContract from '@lukso/lsp-smart-contracts/artifacts/LSP6KeyManager.json';
import { EIP191Signer } from '@lukso/eip191-signer.js';
import { LSP6_VERSION } from '@lukso/lsp-smart-contracts/constants';
import Web3 from 'web3';

// This is the version relative to the LSP6 standard, defined as the number 6.
import { LSP6_VERSION } from '@lukso/lsp-smart-contracts/constants';

const web3 = new Web3('https://rpc.testnet.lukso.network');
const universalProfileAddress = '0x...';
const msgValue = 0; // Amount of native tokens to be sent
Expand Down Expand Up @@ -435,9 +441,11 @@ const executeRelayCallTransaction = await keyManager.methods
import UniversalProfileContract from '@lukso/lsp-smart-contracts/artifacts/UniversalProfile.json';
import KeyManagerContract from '@lukso/lsp-smart-contracts/artifacts/LSP6KeyManager.json';
import { EIP191Signer } from '@lukso/eip191-signer.js';
import { LSP6_VERSION } from '@lukso/lsp-smart-contracts/constants';
import { ethers } from 'ethers';

// This is the version relative to the LSP6 standard, defined as the number 6.
import { LSP6_VERSION } from '@lukso/lsp-smart-contracts/constants';

const provider = new ethers.providers.JsonRpcProvider(
'https://rpc.testnet.lukso.network',
);
Expand Down
34 changes: 5 additions & 29 deletions docs/guides/universal-profile/transfer-lyx.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ We previously saw how to use `setData(...)` to update data in our UP contract's

### Basics of the `execute(...)` function

The [`execute(operation,to,value,data)`](../../standards/smart-contracts/erc725-contract.md#execute---erc725x) function from [ERC725X](../../standards/lsp-background/erc725.md#erc725x---generic-executor) enable us to use our UP to interact with other addresses, such as transferring LYX or calling other smart contracts. This function takes four arguments (see [ERC725 API docs](../../standards/smart-contracts/erc725-contract.md#execute---erc725x)).
The [`execute(operation,to,value,data)`](../../contracts/contracts/ERC725/ERC725.md#execute) function from [ERC725X](../../standards/lsp-background/erc725.md#erc725x---generic-executor) enable us to use our UP to interact with other addresses, such as transferring LYX or calling other smart contracts. This function takes four arguments (see [ERC725 API docs](../../contracts/contracts/ERC725/ERC725.md#execute)).

We can use this function to transfer LYX from our UP to any address (including another UP). Transferring LYX from our UP is as simple as making a standard [`CALL`](../../standards/universal-profile/lsp6-key-manager.md#permission-values) to any `address`, attaching some **value** to the call.

Expand Down Expand Up @@ -187,12 +187,7 @@ const amount = web3.utils.toWei('3'); // amount of LYX we want to transfer
// calldata executed at the target (here nothing, just a plain LYX transfer)
const data = '0x'; // empty data

await myUP.methods.execute(
OPERATION_CALL,
recipient,
amount,
data,
).send({
await myUP.methods.execute(OPERATION_CALL, recipient, amount, data).send({
from: myEOA.address,
gasLimit: 300_000,
});
Expand All @@ -208,14 +203,7 @@ const recipient = '0x...'; // address of the recipient (any address, including a
const amount = ethers.utils.parseEther('3'); // amount of LYX we want to transfer
const data = '0x'; // calldata executed at the target (here nothing, just a plain LYX transfer)

await myUP
.connect(myEOA)
.execute(
OPERATION_CALL,
recipient,
amount,
data,
);
await myUP.connect(myEOA).execute(OPERATION_CALL, recipient, amount, data);
```

</TabItem>
Expand Down Expand Up @@ -247,12 +235,7 @@ const amount = web3.utils.toWei('3');
// calldata executed at the target (here nothing, just a plain LYX transfer)
const data = '0x';

await myUP.methods.execute(
OPERATION_CALL,
recipient,
amount,
data,
).send({
await myUP.methods.execute(OPERATION_CALL, recipient, amount, data).send({
from: myEOA.address,
gasLimit: 300_000,
});
Expand Down Expand Up @@ -282,14 +265,7 @@ const amount = ethers.utils.parseEther('3'); // amount of LYX we want to transfe
// calldata executed at the target (here nothing, just a plain LYX transfer)
const data = '0x';

await myUP
.connect(myEOA)
.execute(
OPERATION_CALL,
recipient,
amount,
data,
);
await myUP.connect(myEOA).execute(OPERATION_CALL, recipient, amount, data);
```

</TabItem>
Expand Down
2 changes: 1 addition & 1 deletion docs/guides/vault/create-a-vault.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import TabItem from '@theme/TabItem';

# Create a Vault

This guide will teach you how to deploy an **[LSP9Vault](../../standards/smart-contracts/lsp9-vault.md)** contract. This contract can be used to **hold assets** such as tokens and NFTs. Also can be used with a [UniversalProfile](../../standards/universal-profile/introduction.md) and a [KeyManager](../../standards/universal-profile/lsp6-key-manager.md) to **restrict some addresses** (protocols, friends, etc..) to execute and setData on it, instead of setting or executing directly on the profile.
This guide will teach you how to deploy an **[LSP9Vault](../../contracts/contracts/LSP9Vault/LSP9Vault.md)** contract. This contract can be used to **hold assets** such as tokens and NFTs. Also can be used with a [UniversalProfile](../../standards/universal-profile/introduction.md) and a [KeyManager](../../standards/universal-profile/lsp6-key-manager.md) to **restrict some addresses** (protocols, friends, etc..) to execute and setData on it, instead of setting or executing directly on the profile.

![Guide - How to create an LSP9Vault](/img/guides/lsp9/LSP9VaultGuide.jpeg)

Expand Down
2 changes: 1 addition & 1 deletion docs/guides/vault/edit-vault-data.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import TabItem from '@theme/TabItem';

# Edit Vault Data

This guide will teach you how to set data to an **[LSP9Vault](../../standards/smart-contracts/lsp9-vault.md)** contract through a UniversalProfile owned by an LSP6KeyManager. Any data can be attached to the vault, and since it supports the **[LSP1-UniversalReceiver](../../standards/generic-standards/lsp1-universal-receiver.md)** standard, we will set the [**Universal Receiver Delegate**](../../contracts/contracts/LSP1UniversalReceiver/LSP1UniversalReceiverDelegateVault/LSP1UniversalReceiverDelegateVault.md) address inside the storage.
This guide will teach you how to set data to an **[LSP9Vault](../../contracts/contracts/LSP9Vault/LSP9Vault.md)** contract through a UniversalProfile owned by an LSP6KeyManager. Any data can be attached to the vault, and since it supports the **[LSP1-UniversalReceiver](../../standards/generic-standards/lsp1-universal-receiver.md)** standard, we will set the [**Universal Receiver Delegate**](../../contracts/contracts/LSP1UniversalReceiver/LSP1UniversalReceiverDelegateVault/LSP1UniversalReceiverDelegateVault.md) address inside the storage.

## Setting Data (Universal Receiver Delegate)

Expand Down
2 changes: 1 addition & 1 deletion docs/guides/vault/interact-with-contracts.md
Original file line number Diff line number Diff line change
Expand Up @@ -388,4 +388,4 @@ await universalProfile

</Tabs>

In the code snippet above, we interacted with `myCoolfunction(..)` function on the **targetContract** contract through the Vault's [execute](../../standards/smart-contracts/lsp9-vault.md#execute) function. The call was encoded and executed through the Universal Profile.
In the code snippet above, we interacted with `myCoolfunction(..)` function on the **targetContract** contract through the Vault's [execute](../../contracts/contracts/LSP9Vault/LSP9Vault.md#execute) function. The call was encoded and executed through the Universal Profile.
Loading

0 comments on commit 61adac6

Please sign in to comment.