> For the complete documentation index, see [llms.txt](https://docs.decentraland.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.decentraland.org/player/player-pt/integracao-com-a-blockchain/ethereum-essentials.md).

# Sobre a Blockchain

Como a Decentraland usa a blockchain Ethereum.

Todas as blockchain são, em essência, bases de dados descentralizadas distribuídas entre as máquinas de uma rede. As transações são agrupadas em "blocos" e processadas sequencialmente para formar uma *cadeia* de eventos.

Ethereum é uma das blockchain mais populares. O que a diferencia de outras, como Bitcoin, é que usa a blockchain como armazenamento para mais do que apenas um registo de transações de moeda. Ethereum pode armazenar informação mais complexa para distinguir diferentes tipos de tokens ou até lidar com tokens únicos com características específicas. A blockchain Ethereum também executa smart contracts, que permitem realizar transações mais complexas que também podem depender de eventos previamente acordados.

Decentraland usa a blockchain Ethereum para registar a propriedade dos ativos digitais e de outros itens negociáveis, que podem ser lidos e aos quais se pode reagir através de uma scene 3D.

A blockchain não é usada para armazenar o estado da scene, a posição do player ou qualquer coisa que precise de mudar em tempo real à medida que um player interage com uma scene; tudo isso é armazenado localmente na máquina de cada player, ou num servidor privado pertencente ao proprietário da scene. Os developers de cada scene devem escolher que informação vale a pena armazenar na blockchain e o que armazenar num servidor privado.

## Wallets

Os tokens Ethereum são guardados em wallets. Uma wallet Ethereum pode conter vários tokens, incluindo Ether, MANA, LAND e outros tokens que possam ser usados por jogos ou experiências em Decentraland.

Há muitos fornecedores de wallet onde pode guardar tokens Decentraland. Para usar o Marketplace, ou para entrar em Decentraland, tem de usar uma wallet integrada no seu navegador Web, por isso recomendamos que use:

* [Metamask](https://metamask.io/)
* [Trezor](https://trezor.io/)/[Ledger](https://www.ledger.com/) wallets de hardware

Cada wallet tem uma chave pública e uma chave privada. O hash da sua chave pública é o endereço único da sua wallet, usado para encaminhar transações e identificar um player. A sua chave privada é usada pela sua wallet para assinar cada transação que envia para a rede e certificar que foi realmente enviada por si. A sua chave privada também é usada para restaurar a sua wallet caso se esqueça da sua palavra-passe, por isso guarde-a num local seguro e não a partilhe com ninguém.

Em Decentraland, as identidades dos players são construídas em torno de wallets. Como as chaves públicas das wallets são únicas, a sua scene pode usá-las para identificar um utilizador de Decentraland de forma persistente. As wallets também podem conter diferentes tokens que podem dar a um player um avatar único, um wearable, permissões para entrar em scenes que escolham restringir o acesso, uma arma especial para usar num jogo, etc.

## Transações

As transações fazem alterações à informação armazenada na blockchain. As transações típicas envolvem tokens a mudar de proprietário, por exemplo, o utilizador A a dar o seu token LAND ao utilizador B em troca de uma quantidade de tokens MANA. Na rede Ethereum, porém, uma transação também pode significar alterar a informação armazenada sobre um token sem mudar o seu proprietário. Por exemplo, alterar a descrição de um parcel, ou fundir vários parcels num Estate.

Todas as transações que ocorrem na cadeia principal do Ethereum têm um custo pago em tokens Ether. Esta taxa é denominada taxa de "gas" e é paga ao utilizador da rede que "minera" a transação.

Quando pede que uma transação ocorra, define o preço de gas que está disposto a pagar para que a transação seja minerada. As transações que oferecem preços mais altos são mineradas mais depressa, uma vez que os miners lhes dão prioridade. Os preços de mercado destas transações oscilam regularmente e tendem a ser mais caros quando há um maior uso da rede. Certifique-se de que o que oferece não fica abaixo do preço de mercado; caso contrário, a sua transação poderá permanecer indefinidamente num pool não processado.

Todas as transações têm de ser assinadas por um endereço Ethereum, usando a chave privada do endereço. Isto certifica que a transação foi realizada por esse endereço.

#### Validação de transações

As transações blockchain não são imediatas; requerem tempo para serem "mineradas" por um dos nodes da rede e depois propagadas ao restante das máquinas. Quanto mais transações estiverem a ser solicitadas pela rede, mais tempo demoram a ser validadas.

Em termos breves, é assim que uma transação é validada:

1. Ocorre uma nova transação, que entra num pool de transações não confirmadas.
2. Uma das máquinas da rede resolve com sucesso um algoritmo para minerar um novo "bloco" contendo algumas transações deste pool, incluindo esta. Anexa este novo bloco ao fim da cadeia.
3. O bloco é partilhado com outras máquinas da rede. Cada máquina verifica se cada transação num bloco é válida e confirma o hash do bloco para garantir que é legítimo; depois, adiciona-o à sua própria versão da cadeia.
4. O novo bloco é propagado por toda a rede. Há uma compreensão partilhada universalmente de que esta transação ocorreu.

#### Sidechains

Decentraland está a estabelecer uma parceria com [Matic](https://matic.network/) para criar uma *sidechain* (um tipo especial de blockchain) que conseguirá lidar com transações mais rápidas e mais baratas do que a principal rede Ethereum. Esta sidechain será ideal para transações dentro do jogo, uma vez que as alterações podem ocorrer mais perto do tempo real e a um custo muito baixo. Para transações que envolvam itens valiosos, continuaremos a recomendar a cadeia principal Ethereum, pois será mais segura.

Cada developer a trabalhar numa scene poderá escolher se quer usar a mainchain, a sidechain ou uma combinação de ambas para diferentes transações.

A sidechain será mantida interoperável com a mainchain Ethereum. Poderá carregar tokens da cadeia principal para a sidechain e vice-versa. As transações que ocorrem na sidechain acabam por se refletir na mainchain quando os tokens "saem" de volta para a mainchain.

#### Acionar transações a partir de uma scene

O código da sua scene pode acionar transações, tanto na mainchain Ethereum como na sidechain de Decentraland. Poderia ter uma loja na sua scene que vende tokens (como NFTs), ou ter um jogo que recompensa os players com itens de jogo quando atingem certos objetivos.

O utilizador tem sempre de aprovar explicitamente estas transações no seu client Ethereum. Por exemplo, ao usar Metamask, o Metamask pede ao utilizador para aceitar cada transação antes de esta ser processada.

## Tipos de tokens

Diferentes tipos de tokens podem ser tratados na rede Ethereum. Surgiram alguns standards que agrupam tokens que partilham as mesmas características.

Em Decentraland, pode usar tokens para representar itens relacionados com o seu jogo ou experiência, como uma arma ou um troféu. Como os tokens são guardados na wallet de um player, acompanham o player de scene em scene, pelo que cada scene pode escolher se e como quer reagir a cada tipo de token existente.

Ler [O que são NFTs](https://decentraland.org/blog/technology/what-are-nfts/) no nosso blog para uma análise mais aprofundada do surgimento e da evolução dos tokens não fungíveis.

#### Tokens fungíveis

Se um item é fungível, então pode ser substituído ou trocado por qualquer item semelhante. As moedas fiduciárias, como o dólar americano, são fungíveis. Uma nota de um dólar pode ser trocada por qualquer outra nota de um dólar.

Tokens de criptomoedas como Bitcoin, Ethereum e MANA são todos fungíveis porque uma unidade de token pode ser trocada por qualquer outra unidade de token.

Também poderia criar tokens fungíveis personalizados para usar em scenes de Decentraland e utilizá-los para representar itens que são todos iguais e não têm propriedades distintivas ou personalizáveis entre si. Poderia, por exemplo, criar um jogo centrado em recolher uma grande quantidade de itens idênticos e representá-los através de um token fungível. Também poderia usar um token fungível para representar um bilhete dourado que dá aos players que o possuem acesso a uma região ou serviço específico.

*ERC20* é o standard mais aceite para tokens fungíveis na Ethereum Network. MANA é construído com base neste standard.

#### Tokens não fungíveis

Os tokens não fungíveis (ou NFTs) têm características que tornam cada unidade objetivamente diferente das outras. Os parcels de LAND em Decentraland são NFTs, uma vez que a localização de cada parcel é única. A adjacência a outros parcels, estradas ou distritos torna estas localizações relevantes para os proprietários dos tokens.

Em Decentraland, pode usar NFTs para representar itens do jogo, como avatares, wearables, armas e outros itens de inventário. Poderia, por exemplo, usar um único tipo de NFT para representar todas as armas no seu jogo e diferenciá-las definindo propriedades diferentes nesses NFTs.

Os NFTs podem ser usados para fornecer bens digitais comprovadamente escassos. Devido à escassez legítima possibilitada pela blockchain, os compradores podem ter a certeza de que a arte que compram é, de facto, rara. Isto confere à arte digital um valor real que nunca tínhamos visto antes.

Os itens do jogo terão um histórico armazenado na blockchain. Esse histórico pode tornar um item mais valioso, por exemplo, se tiver sido usado para alcançar grandes feitos ou usado por alguém admirado.

Dependendo do contracto que descreve o token, cada NFT pode ser imutável, ou pode permitir aos players personalizar e alterar certas características, caso escolham fazê-lo.

*ERC721* é o standard mais aceite para tokens não fungíveis na Ethereum Network. Os tokens LAND seguem o standard ERC721.

## Smart Contracts

Um contracto consiste em código (os seus métodos) e dados (o seu estado) que residem num endereço específico na blockchain Ethereum.

Os métodos de um contracto são sempre chamados através de uma transação que tem o *para* campo definido para o endereço do contracto. O código executado pelo método do contracto pode incluir chamadas a outros contractos, que acionam mais transações que têm o *de* campo definido para o endereço do contracto.

Um contracto não pode acionar quaisquer ações por si só nem com base num evento temporal. Todas as ações executadas por um smart contract resultam sempre de uma transação que chama uma das funções do contracto.

Pode usar smart contracts para condicionar transações com base em condições personalizadas. Por exemplo, os players poderiam fazer uma aposta no resultado de um jogo, e os pagamentos correspondentes ocorreriam assim que o resultado do jogo fosse comunicado ao contracto.

Todo o código de um smart contract é público para quem quiser lê-lo. Isto permite aos developers criar regras verificáveis publicamente.

Todos os Tokens são definidos por um smart contract que especifica as suas características e o que pode ser feito com eles. Decentraland escreveu e mantém vários smart contracts. Os próprios tokens LAND e MANA são definidos pelos *LANDregistry* e *MANAtoken* contracts, respetivamente.

Pode encontrar o endereço de todos os contractos criados por Decentraland em [Decentraland smart contracts](https://contracts.decentraland.org/addresses.json).

Pode ler o código completo de cada um desses contractos, uma vez que é informação pública na blockchain. Pode encontrar o contracto pelo nome em [Etherscan](https://etherscan.io/contractsVerified) e ler o seu conteúdo lá.

## dApps

*dApps* (aplicações descentralizadas) são aplicações construídas sobre smart contracts e a blockchain.

Uma dApp pode ser algo tão simples como um sistema que valida que a sua wallet contém um certo token e permite-lhe usar um serviço. Ou pode ser uma aplicação completa com a sua própria UI, como o Decentraland Marketplace.

## rede de testes Sepolia

Antes de fazer deploy de um smart contract, criar um novo tipo de token ou uma scene Decentraland que dependa de transações na rede Ethereum, é necessário garantir que não tem bugs ou falhas que utilizadores maliciosos possam explorar.

A rede de testes Sepolia é uma versão alternativa do Ethereum feita especificamente para executar testes.

Os tokens na rede Sepolia não têm valor real, por isso pode dar-se ao luxo de cometer erros sem correr qualquer risco real. Pode reabastecer gratuitamente quaisquer tokens perdidos usando um faucet:

* Faucet de Sepolia Ether (<https://www.alchemy.com/faucets/ethereum-sepolia/>)

Se estiver a desenvolver uma scene que aciona transações, testar essas transações na rede Sepolia é gratuito, uma vez que os tokens que envia não têm valor. Na mainnet, caso contrário, teria de pagar pelo menos uma taxa real de gas em Ether por cada transação de teste que realizasse.

Assim que tiver a certeza de que o seu código funciona como esperado e não pode ser explorado, pode fazer deploy na mainnet Ethereum.

## Reorganizações da blockchain

Ocasionalmente, várias máquinas criarão novos blocos alternativos quase ao mesmo tempo. Isto é um problema, porque isso bifurca a cadeia em duas versões divergentes que podem potencialmente contradizer-se. Quando ocorre uma bifurcação, o Ethereum resolve isso dando sempre prioridade à cadeia mais longa e descartando quaisquer cadeias mais curtas. Embora seja possível existirem duas cadeias rivais ao mesmo tempo, em breve uma das duas cadeias adicionará outro bloco e crescerá mais do que a outra. Devido ao tempo necessário para resolver os algoritmos de mineração, torna-se cada vez mais difícil para cadeias rivais continuarem a crescer em perfeita sintonia entre si. Mais cedo ou mais tarde, uma prevalecerá sobre a outra.

Quando uma cadeia ultrapassa a outra e a disputa é resolvida, as máquinas que tinham adotado a cadeia mais curta precisam de fazer ajustes. Isto é o que se conhece como uma "reorg". Precisam de reverter todas as transações incluídas nos blocos do ramo em que se encontram até chegarem ao ponto em que ocorreu a bifurcação. Depois, precisam de adicionar os novos blocos do ramo mais longo que é considerado legítimo.

As transações revertidas podem voltar ao pool de transações pendentes até serem novamente apanhadas por um miner (ou serem descartadas). Quaisquer taxas de gas pagas por essas transações também são revertidas.

Os blocos que foram adicionados recentemente ao fim de uma cadeia têm uma probabilidade substancial de serem revertidos devido aos mecanismos explicados acima. À medida que blocos subsequentes são adicionados ao fim da cadeia, torna-se cada vez menos provável que os blocos mais antigos na blockchain possam ser revertidos, porque isso exigiria uma reorg maior. Por isso, cada novo bloco que é adicionado ao fim da cadeia após uma transação é chamado de confirmação dessa transação.

Ao criar aplicações (ou scenes) que usam informação de fora da blockchain, deve ter em atenção a ocorrência de reorgs. Pode querer considerar as transações como verificadas apenas quando ocorrer um certo número de confirmações e a transação já não estiver no extremo final da cadeia.

Usar várias confirmações tornará a informação muito estável, mas as transações demorarão muito tempo a ser refletidas.

Usar poucas confirmações fará com que as alterações sejam refletidas mais depressa, mas por vezes haverá interrupções que parecem desfazer transações quando ocorrem reorgs. Se estas transações tiverem consequências off-chain na sua scene, poderá então precisar de reverter essas consequências de alguma forma também.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.decentraland.org/player/player-pt/integracao-com-a-blockchain/ethereum-essentials.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
