Sobre a Blockchain

Como Decentraland usa a blockchain Ethereum.

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

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

Decentraland usa a blockchain Ethereum para registrar a propriedade dos ativos digitais e outros itens negociáveis que podem ser lidos e reagidos por uma cena 3D.

A blockchain não é usada para armazenar o estado da cena, posição do jogador ou qualquer coisa que precise mudar em tempo real enquanto um jogador interage com uma cena; tudo isso é armazenado localmente na máquina de cada jogador ou em um servidor privado pertencente ao proprietário da cena. Os desenvolvedores de cada cena devem escolher quais informações valem a pena ser armazenadas na blockchain e o que armazenar em um servidor privado.

Carteiras

Tokens Ethereum são mantidos por carteiras. Uma carteira Ethereum pode conter vários tokens, incluindo Ether, MANA, LAND e outros tokens que podem ser usados por jogos ou experiências em Decentraland.

Existem muitos provedores de carteiras onde você pode guardar tokens de Decentraland. Para usar o Marketplace ou entrar em Decentraland, você deve usar uma carteira integrada ao seu navegador web, por isso recomendamos que você use:

Cada carteira tem uma chave pública e uma chave privada. O hash da sua chave pública é o endereço único da sua carteira, usado para encaminhar transações e identificar um jogador. Sua chave privada é usada pela sua carteira para assinar cada transação que você envia à rede e certificar que ela foi realmente enviada por você. Sua chave privada também é usada para restaurar sua carteira caso você esqueça sua senha, portanto guarde-a em um lugar seguro e não a compartilhe com ninguém.

Em Decentraland, as identidades dos jogadores são construídas em torno de carteiras. Como as chaves públicas das carteiras são únicas, sua cena pode usá-las para identificar um usuário de Decentraland de forma persistente. As carteiras também podem conter diferentes tokens que podem dar a um jogador um avatar único, um wearable, permissões para entrar em cenas que escolhem restringir o acesso, uma arma especial para usar em um jogo, etc.

Transações

Transações alteram as informações que estão armazenadas na blockchain. Transações típicas envolvem tokens mudando de dono, por exemplo o usuário A dando seu token LAND ao usuário B em troca de uma quantidade de tokens MANA. Na rede Ethereum, porém, uma transação também pode significar alterar as informações armazenadas sobre um token sem mudar seu dono. Por exemplo, alterar a descrição de uma parcela ou mesclar várias parcelas em um Estate.

Todas as transações que ocorrem na main chain do Ethereum têm um custo pago em tokens Ether. Esta taxa é referida como taxa de 'gas' e é paga ao usuário da rede que 'mina' a transação.

Quando você solicita que uma transação ocorra, você define o preço do gas que está disposto a pagar para que a transação seja minerada. Transações que oferecem preços mais altos são mineradas mais rápido, já que os miners dão prioridade a elas. Os preços de mercado para essas transações oscilam regularmente; tendem a ser mais caros quando há maior uso da rede. Certifique-se de que o que você oferta não esteja abaixo do preço de mercado, caso contrário sua transação pode permanecer em um pool não processado indefinidamente.

Todas as transações devem ser assinadas por um endereço Ethereum, usando a chave privada do endereço. Isso é o que certifica que a transação foi realizada por esse endereço.

Validação de transações

Transações na blockchain não são imediatas; elas requerem tempo para ser "mineradas" por um dos nós da rede e então serem propagadas pelo restante das máquinas. Quanto mais transações estiverem sendo solicitadas pela rede, mais tempo elas levam para serem validadas.

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

  1. Ocorre uma nova transação; ela vai para um pool de transações não confirmadas.

  2. Uma das máquinas na rede resolve com sucesso um algoritmo para minerar um novo "bloco" contendo um punhado de transações desse pool, incluindo esta. Ela anexa este novo bloco ao final da cadeia.

  3. O bloco é compartilhado com outras máquinas da rede. Cada máquina verifica que cada transação em um bloco é válida e checa o hash do bloco para garantir sua legitimidade; então o adiciona à sua própria versão da cadeia.

  4. O novo bloco é propagado por toda a rede. Há um entendimento universalmente compartilhado de que essa transação ocorreu.

Sidechains

Decentraland está fazendo parceria com Maticarrow-up-right para criar uma sidechain (um tipo especial de blockchain) que será capaz de lidar com transações mais rápidas e mais baratas do que a rede principal Ethereum. Esta sidechain será ideal para transações dentro do jogo, pois as mudanças podem ocorrer mais próximas do tempo real e a um custo muito baixo. Para transações que envolvem itens valiosos, ainda recomendaremos a main chain do Ethereum, pois será mais segura.

Cada desenvolvedor trabalhando em uma cena poderá escolher se usa a mainchain, a sidechain ou uma combinação de ambas para diferentes transações.

A sidechain será mantida interoperável com a mainchain do Ethereum. Você poderá carregar tokens da main chain para a sidechain e vice-versa. Transações que ocorrem na sidechain são eventualmente refletidas na mainchain quando os tokens "exit" de volta para a mainchain.

Disparar transações a partir de uma cena

O código da sua cena pode disparar transações, tanto na mainchain do Ethereum quanto na sidechain de Decentraland. Você poderia ter uma loja na sua cena que venda tokens (como NFTs) ou ter um jogo que recompense itens de jogo aos jogadores que alcançarem certos objetivos.

O usuário deve sempre aprovar essas transações explicitamente em seu cliente Ethereum. Por exemplo, ao usar Metamask, o Metamask solicita ao usuário que aceite cada transação antes de ela ser processada.

Tipos de tokens

Diferentes tipos de tokens podem ser manipulados na rede Ethereum. Alguns padrões emergiram que agrupam tokens que compartilham as mesmas características.

Em Decentraland, você pode usar tokens para representar itens relacionados ao seu jogo ou experiência, como uma arma ou um troféu. Como os tokens ficam na carteira de um jogador, eles acompanham o jogador de cena em cena, então cada cena pode escolher se e como quer reagir a cada tipo existente de token.

Ler O que são NFTsarrow-up-right no nosso blog para uma visão mais aprofundada sobre o surgimento e a evolução dos tokens não-fungíveis.

Tokens fungíveis

Se um item é fungível, então ele pode ser substituído ou trocado por qualquer item similar. 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 criptomoeda como Bitcoin, Ethereum e MANA são todos fungíveis porque uma unidade de token pode ser trocada por qualquer outra unidade de token.

Você também poderia criar tokens fungíveis personalizados para usar em cenas de Decentraland e usá-los para representar itens que são todos iguais e não têm propriedades distintivas ou personalizáveis entre si. Você poderia, por exemplo, criar um jogo que gire em torno de coletar uma grande quantidade de itens idênticos e representá-los por um token fungível. Você também poderia usar um token fungível para representar um bilhete dourado que dá aos jogadores que o possuem acesso a uma região ou serviço específico.

ERC20 é o padrão mais aceito para tokens fungíveis na Rede Ethereum. MANA é construído sobre este padrão.

Tokens não fungíveis

Tokens não-fungíveis (ou NFTs) têm características que tornam cada unidade objetivamente diferente das outras. Parcelas de LAND em Decentraland são NFTs, pois a localização de cada parcela é única. A adjacência a outras parcelas, estradas ou distritos torna esses locais relevantes para os donos dos tokens.

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

NFTs podem ser usadas para fornecer bens digitais provadamente escassos. Por causa da escassez legítima possibilitada pela blockchain, os compradores podem ter a certeza de que a arte que compram é, de fato, rara. Isso dá à arte digital um valor real que nunca vimos antes.

Itens de jogo terão um histórico que é armazenado na blockchain. Esse histórico pode tornar um item mais valioso, por exemplo, se ele foi usado para alcançar grandes feitos ou usado por alguém admirado.

Dependendo do contrato que descreve o token, cada NFT pode ser imutável, ou você poderia permitir que os jogadores personalizem e mudem certas características sobre elas, se assim escolherem.

ERC721 é o padrão mais aceito para tokens não-fungíveis na Rede Ethereum. Tokens LAND seguem o padrão ERC721.

Smart Contracts

Um contrato consiste tanto em código (seus métodos) quanto em dados (seu estado) que residem em um endereço específico na blockchain Ethereum.

Os métodos em um contrato são sempre chamados via uma transação que possui o para campo definido para o endereço do contrato. O código executado pelo método do contrato pode incluir chamadas para outros contratos; estes disparam mais transações que têm o de campo definido para o endereço do contrato.

Um contrato não pode disparar ações por conta própria ou com base em um evento temporal. Todas as ações realizadas por um smart contract sempre surgem de uma transação que chama uma das funções do contrato.

Você pode usar smart contracts para condicionar transações com base em condições personalizadas. Por exemplo, jogadores poderiam apostar em um resultado de um jogo, e os pagamentos correspondentes ocorreriam assim que o resultado do jogo fosse informado ao contrato.

Todo o código de um smart contract é público para quem quiser lê-lo. Isso permite que desenvolvedores criem regras publicamente verificáveis.

Todos os Tokens são definidos por um smart contract que especifica suas características e o que pode ser feito com ele. Decentraland escreveu e mantém vários smart contracts. Tokens LAND e MANA são definidos pelos contratos LANDregistry e MANAtoken respectivamente.

Você pode encontrar o endereço de cada contrato criado por Decentraland em Decentraland smart contractsarrow-up-right.

Você pode ler o código completo de cada um desses contratos, pois é informação pública na blockchain. Você pode encontrar o contrato pelo nome no Etherscanarrow-up-right e ler seu conteúdo lá.

dApps

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

Um dApp pode ser tão simples quanto algo que valida que sua carteira possui um determinado token e permite que você use um serviço. Ou pode ser uma aplicação completa com sua própria UI, como o Marketplace da Decentraland.

Rede de teste Sepolia

Antes de você implantar um smart contract, criar um novo tipo de token ou uma cena Decentraland que dependa de transações na rede Ethereum, você precisa garantir que não tenha bugs ou falhas que usuários mal-intencionados possam explorar.

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

Tokens na rede Sepolia não têm valor real, então você pode cometer erros sem correr risco real. Você pode reabastecer quaisquer tokens perdidos gratuitamente usando um faucet:

Se você está desenvolvendo uma cena que dispara transações, testar essas transações na rede Sepolia é gratuito, já que os tokens que você envia não têm valor. Na mainnet, você teria que pagar pelo menos uma taxa real de gas em Ether para cada transação de teste que realizar.

Uma vez que você esteja confiante de que seu código funciona como esperado e não pode ser explorado, você pode implantar na mainnet do Ethereum.

Reorganizações da blockchain

Ocasionalmente, múltiplas máquinas vão criar novos blocos alternativos aproximadamente ao mesmo tempo. Isto é um problema porque bifurca a cadeia em duas versões divergentes que potencialmente podem se contradizer. Quando ocorre uma fork, Ethereum resolve isso sempre dando prioridade à cadeia mais longa e descartando quaisquer cadeias mais curtas. Embora seja possível que duas cadeias rivais existam ao mesmo tempo, em breve uma das duas cadeias adicionará outro bloco e superará 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 crescendo em perfeita sincronia. Mais cedo ou mais tarde uma prevalecerá sobre a outra.

Quando uma cadeia supera a outra e a disputa é resolvida, máquinas que tinham adotado a cadeia mais curta precisam fazer ajustes. Isto é o que se conhece como uma "reorg". Elas precisam reverter todas as transações incluídas nos blocos do ramo em que estavam até atingirem o ponto em que a fork ocorreu. Em seguida, precisam adicionar os novos blocos do ramo mais longo que é considerado legítimo.

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

Blocos que foram adicionados recentemente ao final de uma cadeia têm uma chance substancial de serem revertidos por causa dos mecanismos explicados acima. À medida que blocos subsequentes são adicionados ao final 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. Devido a isso, cada novo bloco que é adicionado ao final da cadeia após uma transação é chamado de confirmação para essa transação.

Ao criar aplicações (ou cenas) que usam informações fora da blockchain, você deve estar ciente da ocorrência de reorgs. Você pode querer considerar transações como verificadas apenas quando um certo número de confirmações tiver ocorrido e a transação não estiver mais no final da cadeia.

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

Usando poucas confirmações, as mudanças serão refletidas mais rapidamente, mas às vezes haverá falhas que parecem desfazer transações quando ocorrem reorgs. Se essas transações tiverem consequências off-chain na sua cena, então você pode precisar de alguma forma reverter essas consequências também.

Atualizado