# Quadros de líderes

Leaderboards permite ao criador de um DApp implantado com o DexAppBuilder adicionar vários sistemas de pontuação para recompensar os usuários do seu DApp sempre que executarem quaisquer das ações predefinidas no sistema.

Para o caso específico deste recurso, criaremos um DApp de demonstração. Será um mercado de NFTs semi-privado. O criador (nós) pode publicar NFTs à venda sem restrições e também pode aceitar listings da comunidade.

## Ações predefinidas configuráveis

Entre essas ações predefinidas estão:&#x20;

* **Trocar tokens:** Conceder N quantidade de pontos ao usuário que realiza uma operação de troca usando o componente de swap.&#x20;
* **Login no DApp:** Dar N número de pontos ao usuário toda vez que ele fizer login com sua carteira no DApp. Isso é controlado por assinaturas digitais.&#x20;
* **Aceitar listing ERC721:** Conceder N número de pontos ao usuário que tem seu listing aceito para um token não fungível com características ERC721. Por exemplo, para o nosso marketplace de NFTs semi-privado, quando “Usuário” é um empreendedor que quer vender seus tokens ERC721 lá, podemos aceitar o listing de tokens do “Usuário” e este receberá N número de pontos mediante sua aceitação como criador ou superadmin.&#x20;
* **Aceitar listing ERC1155:** Esta regra é semelhante à anterior, mas com tokens ERC1155.&#x20;
* **Aceitar oferta ERC721:** Conceder N número de pontos a um usuário quando ele aceita uma oferta por um token ERC721. Em outras palavras, quando o usuário vende o token, ele recebe os pontos por essa ação.&#x20;
* **Aceitar oferta ERC1155:** Semelhante à regra anterior, exceto que recompensa usuários pela compra de tokens ERC1155.&#x20;
* **Comprar de coleção Drop:** Concede N número de pontos ao usuário que compra um token de uma coleção drop implantada usando contratos inteligentes Thirdweb incluídos no DexAppBuilder.&#x20;
* **Comprar edição Drop:** Conceder N quantidade de pontos ao usuário que compra um token de um contrato Edition Drop.

## Criando o primeiro Leaderboard

Porque é muito mais fácil explicar um conceito por meio de exemplos, abaixo mostramos como criar seu primeiro leaderboard para seus usuários.

<figure><img src="https://1903426557-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWrjgYUyO4ch1fBehrMEq%2Fuploads%2FRHACaTWfoyFbm39qxi99%2Fimagen.png?alt=media&#x26;token=e7a330f5-72d3-4d6a-8a36-019e5b062b8b" alt=""><figcaption><p>Encontre esta opção na seção de gerenciamento</p></figcaption></figure>

Primeiramente, você deve ter em mente que várias condições se aplicam para que seus leaderboards tenham sucesso e para obter as métricas corretas para seu DApp.

* **Você deve ter um DApp criado com DexAppBuilder:** é o primeiro passo para poder acessar o sistema. Por sua vez, recomendamos que você crie os leaderboards depois de ter o DApp finalizado para que as pontuações não sejam contaminadas e você possa oferecer uma experiência justa aos seus usuários. [Leia aqui sobre como criar seu primeiro DApp](https://docs.dexkit.com/defi-products/dexappbuilder/creating-my-first-app).
* **Você deve ter implantado os contratos necessários para medir as ações predefinidas:** Nos casos de ações que envolvem [contratos Thirdweb](https://docs.dexkit.com/defi-products/dexgenerator/thirdweb-contracts), é necessário ter os contratos previamente implantados para que as pontuações funcionem.&#x20;
* Certifique-se de que um dos seus primeiros passos seja importar as coleções e tokens NFT que você deseja aceitar em seu DApp. Isso facilitará muito a configuração de todos os recursos posteriormente. Você pode consultar nesta documentação sobre [como importar tokens personalizados em seu DApp](https://docs.dexkit.com/defi-products/dexappbuilder/managing-this-tool/importing-tokens) e [como importar coleções NFT personalizadas](https://docs.dexkit.com/defi-products/dexappbuilder/creating-my-first-app#importing-collections) também.
* **Use uma testnet, para testar:** O DexAppBuilder fornece acesso a várias redes de teste para que você possa “cometer erros de graça” 😅 não queremos que você perca dinheiro criando seus produtos, portanto recomendamos usar essas redes a seu favor (Polygon Mumbai, Ethereum Goerli e Sepolia, Blast Sepolia). Você pode obter tokens de teste [aqui para Polygon Mumbai](https://faucet.polygon.technology/), [aqui para Ethereum Goerli](https://www.alchemy.com/faucets/ethereum-goerli) e [aqui para Blast Sepolia (e outras poucas)](https://faucet.quicknode.com/blast/sepolia).&#x20;
* **Seja paciente:** você está lidando com software em beta que, embora seguro, às vezes pode apresentar falhas na interface gráfica. Se você vir algo estranho, reporte em [nosso Discord](https://discord.com/invite/dexkit-official-943552525217435649) ou [vá para o Canny](https://dexkit.canny.io/feature-requests) e nos envie seus pedidos de recurso.

Uma vez dentro, observaremos o painel. Como é a primeira vez, estará vazio.

<figure><img src="https://1903426557-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWrjgYUyO4ch1fBehrMEq%2Fuploads%2FnnoaVfqKCwxE6P63Q8A2%2Fimagen.png?alt=media&#x26;token=3b3d888a-d7be-4ce4-85e8-68e48276df7a" alt=""><figcaption></figcaption></figure>

Vamos adicionar o primeiro leaderboard clicando no botão azul “Add leaderboard”.

No modal que foi aberto procedemos a dar um nome à tabela e uma descrição apropriada. Depois podemos editá-los.

<figure><img src="https://1903426557-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWrjgYUyO4ch1fBehrMEq%2Fuploads%2FHoHjRjPuoVuHYnNCEd0n%2Fimagen.png?alt=media&#x26;token=5f59c431-a332-4369-bf15-85ad5c297782" alt=""><figcaption></figcaption></figure>

Depois de terminar de preencher ambos os campos, clicamos no botão «Save» e voltamos ao painel. Podemos ver nossa primeira tabela criada na lista. No final da linha podemos ver uma lista de ações, nomeadamente:

* ![](https://1903426557-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWrjgYUyO4ch1fBehrMEq%2Fuploads%2FBLoqlX0C14SStQQlMX9b%2Fimagen.png?alt=media\&token=3728ab86-9b8b-405b-8411-1bf5252e6b94) **Visualizar leaderboard do app:** Veja como as classificações de usuários estão indo nesta tabela específica.&#x20;
* ![](https://1903426557-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWrjgYUyO4ch1fBehrMEq%2Fuploads%2FB5Uu8rtf70tiUeJYS4Y2%2Fimagen.png?alt=media\&token=793e2497-59b8-4bb2-8c18-55255b8ebec1) **Editar leaderboard:** Este é o primeiro passo para configurar a tabela. Por sua vez, pode ser usado posteriormente para editar os metadados da tabela.&#x20;
* ![](https://1903426557-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWrjgYUyO4ch1fBehrMEq%2Fuploads%2FX0pCvuYCI8vuWhe7YTlR%2Fimagen.png?alt=media\&token=cbebe100-13b6-442b-a56b-5da233421e59) **Exportar leaderboard:** para sua conveniência, você pode exportar esses dados para seu dispositivo usando um arquivo csv que permite processar as informações de forma mais flexível.&#x20;
* ![](https://1903426557-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWrjgYUyO4ch1fBehrMEq%2Fuploads%2Fqf52ZPpUpn2IA3xhf0Y3%2Fimagen.png?alt=media\&token=b2741864-eea4-4192-97ee-14923d021a22) **Excluir leaderboard do app:** Excluir esta tabela e todos os seus dados. Cuidado! Esta ação é irreversível! Nem mesmo o DexKit poderá recuperar estes dados.

## Configurando nosso leaderboard

Já criamos nosso primeiro leaderboard e agora precisamos configurá-lo para conter as regras predefinidas que darão várias pontuações aos usuários do seu DApp.

<figure><img src="https://1903426557-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWrjgYUyO4ch1fBehrMEq%2Fuploads%2FyPyKvmb0J4boRlPMiNnQ%2Fimagen.png?alt=media&#x26;token=e0413d5e-d21f-4c2f-bc1e-4678db955ff5" alt=""><figcaption></figcaption></figure>

No caso deste exemplo, criamos um leaderboard chamado “Summer Season 2024” no qual colocaremos um conjunto de regras gamificadas (ou ações) que recompensarão os usuários que as cumprirem. A seguir, resumimos as regras que usaremos para esta tabela. Para acessar a configuração da tabela, clique no ![](https://1903426557-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWrjgYUyO4ch1fBehrMEq%2Fuploads%2FB5Uu8rtf70tiUeJYS4Y2%2Fimagen.png?alt=media\&token=793e2497-59b8-4bb2-8c18-55255b8ebec1) botão no final da linha.&#x20;

<figure><img src="https://1903426557-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWrjgYUyO4ch1fBehrMEq%2Fuploads%2Fh6jjKr2m7znzLHR5MIhb%2Fimagen.png?alt=media&#x26;token=ee86e4be-4c74-4a3a-9e6e-a0bd0f4cc992" alt=""><figcaption></figcaption></figure>

Uma vez na configuração do leaderboard podemos ver a seguinte tela:

<figure><img src="https://1903426557-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWrjgYUyO4ch1fBehrMEq%2Fuploads%2FN8ZtdQSRFXDejBqOUxmW%2Fimagen.png?alt=media&#x26;token=558fd4e1-6f15-45f9-a81a-b84a06174e99" alt=""><figcaption><p>O painel também conta com um seletor de datas para filtrar corretamente </p></figcaption></figure>

1. **Regra 1:** Queremos que os usuários que fizerem login (autenticarem-se no DApp) recebam 1 ponto. Essas autenticações durarão exatamente 24 horas, portanto esta regra pode ajudá-lo a saber se um usuário está autenticado diariamente com base em 1 ponto por dia.&#x20;

<figure><img src="https://1903426557-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWrjgYUyO4ch1fBehrMEq%2Fuploads%2Fn8FR4XeqldD0fZfg3ERP%2Fimagen.png?alt=media&#x26;token=f8655739-5c81-4990-8ba8-0b5300970551" alt=""><figcaption><p>Depois de definir esta regra, pressione «Add rule» para adicionar mais ou apenas clique em «Save» para definir esta regra única.</p></figcaption></figure>

2. **Regra 2:** Ao mesmo tempo, queremos que os usuários que usam a plataforma de troca de tokens recebam 3 pontos sempre que fizerem um swap de tokens. Com isso recompensamos a preferência do usuário de forma equilibrada.&#x20;

<figure><img src="https://1903426557-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWrjgYUyO4ch1fBehrMEq%2Fuploads%2FRMArj91E7nTF08ccIuBq%2Fimagen.png?alt=media&#x26;token=8707e43c-4155-4bdf-bfd8-08d9d92894ce" alt=""><figcaption></figcaption></figure>

Esta condição particular nos permite personalizar amplamente o que, como e quem recompensar com a pontuação específica. Podemos escolher a **rede**, o **token** e a quantidade necessária para satisfazer esta condição. **Condições para quantias** são **gt** (maior que), **gte** (maior ou igual), **lt** (menor que), **lte** (menor ou igual) e **eq** (igual).

3. **Regra 3:** Como nosso DApp de exemplo é um marketplace de NFTs semi-privado, também podemos conceder pontos aos usuários que sugerem listings para NFTs dos padrões ERC721 e ERC1155 especificamente. Nós, como criadores, aceitaremos o listing específico e com essa ação concederemos 5 pontos ao usuário.

<figure><img src="https://1903426557-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWrjgYUyO4ch1fBehrMEq%2Fuploads%2FCBqwXPW5XVZY1t3yclBT%2Fimagen.png?alt=media&#x26;token=b599c298-0772-4c8a-bbdf-e880bee6014a" alt=""><figcaption></figcaption></figure>

4. **Regra 4:** Esta regra refere-se a um evento em que uma oferta por um token ERC721 é aceita.

* **Pontos:** Isso representa os pontos atribuídos a esta ação específica dentro do sistema.
* **Filtro:** Abaixo dos pontos, há uma seção para definir filtros.
* **Escolha a rede:** Selecione a rede alvo. Deve ser a mesma da coleção NFT que você está importando.
* **Importar:** Esta opção pode permitir ao usuário importar dados de suas próprias coleções NFT a partir do endereço do contrato.
* **Suas coleções:** O usuário pode selecionar entre várias coleções que ele listou no DApp.
* **Pesquisar token:** Você pode escolher um token específico dentro da coleção.
* **Condição de quantidade** - Esta é uma condição que será aplicada ao campo de quantidade abaixo.
* **Quantidade** - Insira aqui uma quantidade para especificar que a regra deve se aplicar apenas quando a quantidade for maior que a cifra especificada (10 tokens MATIC na Testnet Mumbai neste exemplo).

<figure><img src="https://1903426557-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWrjgYUyO4ch1fBehrMEq%2Fuploads%2FCaOQEX1ryyLlVD0whrSA%2Fimagen.png?alt=media&#x26;token=8e6bab46-ed89-4065-9a97-6c245376cdb0" alt=""><figcaption></figcaption></figure>

Quando terminarmos de configurar as regras do nosso leaderboard, clicamos no botão «Save» no final da página para registrar todas as regras.

## Verificando nosso leaderboard

Depois de termos nosso leaderboard funcionando com as regras escolhidas, você pode ir à opção Leaderboards, procurar o quadro que acabou de criar e clicar no primeiro ícone ![](https://1903426557-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWrjgYUyO4ch1fBehrMEq%2Fuploads%2FR1j5KkV9I6jxtdvig0H9%2Fimagen.png?alt=media\&token=4118cab2-2203-419c-9047-182251be3685) para uma pré-visualização do leaderboard como abaixo 👇

<figure><img src="https://1903426557-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWrjgYUyO4ch1fBehrMEq%2Fuploads%2FPZDVl7kWE21lRrf1KgXL%2Fimagen.png?alt=media&#x26;token=fe9445ce-1321-4478-b242-913fd01bdae3" alt=""><figcaption><p>Como podemos ver na imagem, há duas carteiras que se autenticaram em nosso DApp e adicionaram 1 ponto cada por isso.</p></figcaption></figure>

## Exportando os dados do nosso leaderboard

Para baixar todos os dados deste leaderboard você pode clicar no ![](https://1903426557-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWrjgYUyO4ch1fBehrMEq%2Fuploads%2FDad8AAd0q3sYxbM2FHZG%2Fimagen.png?alt=media\&token=6fc0936c-c9e7-43ac-bc65-af89bf7761f2) ícone que abrirá um modal com um botão para baixar um arquivo CSV (Comma-Separated Values) 👇

<figure><img src="https://1903426557-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWrjgYUyO4ch1fBehrMEq%2Fuploads%2Fv5AyXeOF98KsMSA9BMIb%2Fimagen.png?alt=media&#x26;token=0fb0966b-bab8-4038-a616-3bc4d2ab990f" alt=""><figcaption><p>Clique no botão «Export Leaderboard as CSV» para baixar o arquivo.</p></figcaption></figure>

Esta opção é de grande ajuda quando seu DApp tem muitos usuários e você precisa refinar informações rapidamente.

## Excluindo nosso leaderboard

Clicando no ![](https://1903426557-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FWrjgYUyO4ch1fBehrMEq%2Fuploads%2FiiEtacFbt7RKXrMMyZwe%2Fimagen.png?alt=media\&token=47936bcb-f890-48a0-8a54-ab608981ac8b) você excluirá o leaderboard associado.

{% hint style="danger" %}
**Isto é uma ação destrutiva!!!** Ninguém será capaz de recuperar esses dados se você os excluir por acidente.
{% endhint %}
