Isso claramente está em desacordo com o modelo de desenvolvimento de jogos tradicionais. Jogos tradicionais bem-sucedidos atraem muitos usuários por meio de mecânicas de jogo envolventes, permitindo que os desenvolvedores construam caminhos lucrativos e potencialmente se expandam para mercadorias e IPs relacionados. Esses jogos operam em um ciclo positivo onde os jogadores desfrutam do jogo e frequentemente obtêm benefícios econômicos tanto dentro quanto fora do jogo.
Em contraste, os jogos blockchain atuais atraem principalmente os jogadores por meio de retornos financeiros. Além de sua baixa jogabilidade, os jogos Web3 também enfrentam problemas de longa data, como altas barreiras de entrada e processos de interação complicados.
Qual é a causa raiz desses problemas? As opiniões variam. A equipe TabiChain acredita que um fator significativo é que os talentosos desenvolvedores de jogos tradicionais lutam para entrar no ecossistema Web3 devido a barreiras técnicas e de aprendizado. Para aqueles que não estão familiarizados com o desenvolvimento de jogos ou software, a transição do Web2 para o Web3 pode parecer apenas uma mudança de narrativa e ambiente, mas a realidade é muito mais severa.
Então, como podemos criar um ambiente mais acolhedor para desenvolvedores de jogos tradicionais ou empresas relacionadas por meio da tecnologia? Nas próximas seções, analisaremos minuciosamente os desafios enfrentados pelos jogos Web3 e suas soluções, explicando como a indústria de jogos Web3 do futuro pode ser tecnicamente adaptada para atender melhor aos desenvolvedores de jogos tradicionais.
No artigo anterior, mencionamos brevemente que a tecnologia não amigável e os altos custos de aprendizado são os principais fatores que impedem os praticantes de jogos tradicionais de entrarem no ecossistema web3. A chamada tecnologia não amigável e os altos custos de aprendizado podem ser expandidos para os seguintes pontos:
Blockchain e as aplicações nela (dApps) são fundamentalmente diferentes da arquitetura de software tradicional e exigem que os desenvolvedores tenham um novo sistema de conhecimento, como o princípio de funcionamento do blockchain, protocolos de consenso, modelos de programação de contratos inteligentes, etc. Os desenvolvedores de jogos tradicionais precisam passar muito tempo aprendendo Solidity ou outras linguagens de contratos inteligentes e precisam entender como o EVM funciona.
Além disso, a lógica de jogo tradicional geralmente é executada em um servidor centralizado, que pode lidar de forma flexível com estados de jogo complexos e interações de alta frequência. Executar a lógica de jogo na blockchain requer um alto grau de simplificação ou refatoração, porque cada operação deve ser publicada na rede distribuída para execução e depois enviada para a cadeia, o que é severamente limitado pelo desempenho e custo da blockchain.
Embora o EVM seja completo em Turing e possa teoricamente expressar lógica arbitrária, suas características são muito desfavoráveis para o desenvolvimento de jogos, tais como:
Podemos ver que tipo de token e informações de saldo um determinado endereço possui de ferramentas como Etherscan. Estes são indexados por ferramentas periféricas como navegadores de blockchain, e estes últimos precisam construir um banco de dados dedicado enorme e rastreá-lo completamente. Somente coletando todos os dados de bloco ou monitorando eventos na cadeia, todos os dados na cadeia podem ser resumidos.
Os desenvolvedores Web3 geralmente têm que integrar provedores de dados de terceiros como Etherscan, NFTscan, The Graph, etc., e até mesmo pagar pela sua API KEY. Além disso, esses serviços de terceiros são essencialmente bancos de dados off-chain, o que pode causar atrasos, erros, exceder os limites de chamadas, indisponibilidade de serviço e outras falhas.
Vamos comparar as diferenças entre a forma de banco de dados da maioria dos jogos e os métodos de armazenamento de dados na blockchain. A diferença entre os dois é óbvia. A estrutura de dados da maioria dos jogos é completamente personalizada por si só, tem boas capacidades de expressão e indexação, e não precisa depender de quaisquer serviços de terceiros.
Os ativos de jogo existentes (como adereços e personagens) geralmente não são criados e gerenciados na blockchain. Migrar esses ativos para a blockchain geralmente envolve a conversão de tipos de dados comuns, mas de longo prazo, em NFTs ou Tokens padrão, o que envolve um trabalho de migração e integração complexo e afetará o sistema econômico de jogo existente.
No Ethereum, uma vez que um contrato inteligente é implantado, o código é imutável, tornando os upgrades e patches mais complexos do que o software tradicional. Os desenvolvedores frequentemente usam contratos de proxy ou padrões de versionamento para contornar essa limitação, mas isso aumenta a complexidade da estrutura geral. Os contratos de proxy precisam ser usados com cuidado especial para evitar a corrupção de dados causada por conflitos de slots de armazenamento. Além disso, o risco de vazamento de direitos administrativos também é sério.
A atualização de código de jogos tradicionais não é tão complicada em termos de estrutura técnica. A única coisa que pode precisar ser restrita é a autoridade centralizada de atualização. Isso pode ser alcançado por meio de métodos como DAO, em vez de depender de contratos inteligentes.
Além disso, os jogos tradicionais costumam tirar instantâneos ou backups do banco de dados. Isso pode não ser muito importante normalmente, mas se você encontrar um bug importante na atualização, você pode rapidamente reverter os dados, o que é basicamente um fantasia na blockchain. Mesmo que alguns dados do jogo sejam revertidos reconstruindo o contrato, como migrar os dados e o status do contrato antigo para o novo contrato ainda é complicado.
Diferentes cadeias públicas e VMs têm idiomas de contratos inteligentes, arquiteturas, estruturas de dados, etc., completamente diferentes. No Web2, os desenvolvedores de jogos escolherão motores front-end multiplataforma como Unity, que podem fazer um conjunto de códigos ligeiramente adaptados para serem executados em ambientes diferentes, como iPhone, Android e desktop. Como o back-end não é executado no terminal do usuário, não há problemas de multiplataforma.
Em Web3, isso é basicamente um luxo. Migrar para uma cadeia ou VM diferente significa reconstruir o projeto inteiro e incorrer em custos enormes. Além disso, os desenvolvedores que são novos no Web3 não têm nenhuma experiência para escolher um ecossistema que lhes convém. Isso é visto de uma perspectiva técnica ou ecológica?
No nível da experiência do usuário, as interações em blockchain são extremamente complexas. O conceito de abstração de conta, que era tão popular anteriormente, surgiu precisamente para resolver os problemas de experiência do usuário do web3, então não vou entrar em detalhes aqui.
Depois de listar os 6 principais argumentos acima, vamos resumir: os desenvolvedores da web2 para a web3 enfrentam um grande limiar de adaptação. Se eles são os principais desenvolvedores na web2, não há necessidade de abandonar sua carreira na web2 e ir para um estranho como a web3. Neste ambiente, estamos desenvolvendo alguns negócios que não sabemos se podem ser bem-sucedidos ou não.
Pode-se dizer que a maioria dos principais desenvolvedores de jogos não entraram no Web3. Em certa medida, isso faz com que a maioria dos jogos Web3 sejam tendenciosos para a especulação financeira em vez de terem uma jogabilidade e diversão particularmente altas.
Os obstáculos da mesma natureza também existem no lado do usuário. Os jogos Web3 têm uma série de etapas de operação que dificultam as taxas de conversão do usuário, resultando em um grande grupo de usuários do Web2 que não estão dispostos a experimentar ou até mesmo completamente inconscientes da existência dos jogos Web3.
Existe algum projeto de infraestrutura que possa resolver os problemas acima? Tabi Chain pode ser um projeto muito próximo de uma das soluções finais para jogos Web3. Seu conceito principal é a 'Camada de Execução Omni': os desenvolvedores não precisam mais se preocupar com as diferenças entre várias VMs ou ambientes de operação. Eles podem usar diretamente seus ambientes de operação familiares ou até personalizáveis para desenvolver ou portar jogos diretamente.
Além disso, a Tabi Chain também possui consenso modular, camada de segurança e outras funcionalidades. Tudo é modular e personalizável para atender às necessidades de diferentes jogos e aplicativos.
Vamos revisitar o conceito fundamental de blockchain. Enquanto alguns podem descrevê-lo como um livro-razão descentralizado e imutável, é mais precisamente definido como a sincronização verificável do estado permanente de uma máquina de estado dentro de uma rede distribuída.
Essencialmente, o blockchain mantém uma máquina de estado universalmente aceita e seu status operacional:
Assim, o sistema de consenso de uma blockchain não precisa se limitar a uma única camada de execução (como apenas EVM). Independentemente do número de camadas de execução, desde que a cadeia consiga verificar os estados em várias camadas, permitindo que cada jogo opere em seu próprio ambiente, podemos abordar as várias questões discutidas anteriormente.
Em Tabi, cada jogo ou dApp pode construir seu próprio Serviço independente. Todos os Serviços submetem seus próprios blocos gerados ao sistema de consenso da cadeia; Os Nós Supervisores incluem o tempo de execução/VM em todos os Serviços para verificar o status dos blocos de serviço. O núcleo da camada de execução abrangente do Tabi pode ser considerado como uma VM com capacidades polimórficas, por isso é chamado de VM de Polimorfismo.
Para as VMs de blockchain existentes, uma VM de Polimorfismo precisa integrar essas VMs dentro de seu ambiente de tempo de execução e fornecer os métodos de chamada de interface necessários. O conceito de "integração" aqui pode ser implementado de duas maneiras:
Estado do Mundo Compartilhado: Semelhante ao Ethermint, que suporta a EVM no Cosmos. A EVM atua como uma camada superficial, focando nas interações do usuário e nas operações de contrato, fazendo com que todas as atividades do lado do usuário pareçam ser executadas na EVM. No entanto, os resultados finais e os dados dessas operações são armazenados em outros módulos do Cosmos. Assim, essa compatibilidade com a EVM é essencialmente um mapeamento dos dados subjacentes.
Esta relação de mapeamento pode ser estendida para outras Máquinas Virtuais também. Por exemplo, o Ethermint pode incorporar uma camada de módulo SVM adicional, onde tanto o SVM quanto o EVM correspondem aos mesmos dados subjacentes.
Isso é semelhante ao uso do VMWare em um PC para executar uma máquina virtual do Windows. O VMWare pode acessar tanto o disco rígido virtual da máquina virtual quanto o disco rígido físico do computador. Se você então iniciar uma máquina virtual do Mac, ela pode montar os dados do disco físico da mesma maneira. Essa configuração permite efetivamente que várias máquinas virtuais compartilhem os recursos e o estado do mesmo ambiente.
O Serviço Principal da Tabi Chain utilizará uma abordagem de estado mundial compartilhado. Isso significa que, desde que a VM correspondente seja adaptada, os dApps desenvolvidos para essa VM podem ser implantados diretamente no Serviço Principal sem a necessidade de criar um serviço separado.
Independent World State: Diferentes aplicativos e jogos têm requisitos únicos, e alguns jogos usam runtimes personalizados. Portanto, uma abordagem universal de integrar todas as VMs por meio de um “estado de mundo compartilhado” na VM de Polimorfismo não é adequada para todos os casos. Um estado de mundo independente também é necessário, pois é mais simples de implementar e ideal para serviços com dados totalmente separados.
Independentemente da abordagem usada, ela deve ser verificável pelos nós do supervisor. Isso significa que a VM de polimorfismo deve incluir todas as VMs ou tempos de execução usados pelos vários métodos de implementação.
Exemplo de portabilidade de jogos Web2
O VM de Polimorfismo é altamente personalizável, o que o torna particularmente benéfico para desenvolvedores Web2. Eles podem usar linguagens e estruturas familiares para portar qualquer lógica de negócios para o VM de Polimorfismo.
Suponha que o Minecraft queira fazer a portabilidade para Tabi. O processo geral seria o seguinte:
Com isso, todo o processo está completo.
Para os desenvolvedores, essas modificações são feitas dentro da linguagem e estrutura Java existente. O mesmo conceito se aplica aos jogos desenvolvidos usando qualquer outro método. Para os usuários, a interação do jogo permanece em grande parte inalterada. Claramente, este método de portar jogos Web2 é muito rápido e eficiente, potencialmente se tornando o modelo fundamental para a adoção em massa de jogos Web3.
Detalhes das Funções do Jogo STR (State Transition Runtime)
O exemplo anterior forneceu uma visão geral geral de como portar um jogo Web2. Para obter uma compreensão mais profunda, precisamos nos aprofundar em mais detalhes. Desta vez, usaremos um exemplo geral em vez de um jogo específico para ilustrar os detalhes envolvidos na execução da Camada de Execução Omni.
Essencialmente, personalizar o ambiente de execução de um jogo pode ser visto como criar a máquina de estados do jogo na blockchain, referida como Tempo de Execução de Transição de Estado (TET) no Tabi.
O exemplo acima é o processo geral de portabilidade de jogos Web2. Ainda precisamos saber mais sobre os detalhes. Desta vez, usamos um exemplo geral em vez de um exemplo de jogo específico para mostrar os detalhes envolvidos na execução em tempo de execução na camada de execução onipotente.
Basicamente, personalizar o ambiente de execução de um jogo pode ser considerado como criar uma máquina de estados para um determinado jogo na blockchain, que é chamado de Tempo de Execução de Transição de Estado em Tabi.
STR pode ser integrado ao Polymorphism VM na forma de binário ou módulo.
Em um sistema semelhante a blockchain, precisamos garantir a transparência das entradas, visibilidade pública das transições de estado e expressividade do estado global. Para atender a esses requisitos, precisamos construir um tempo de execução com as seguintes características:
As seguintes estruturas organizacionais são elementos essenciais deste STR. O Gate fornecerá um SDK por padrão para facilitar os desenvolvedores a criarem o tempo de execução.
World DB
Na prática, um jogo ou aplicativo provavelmente usará mais de um banco de dados, e esses bancos de dados podem ser de tipos diferentes. Vamos supor que um jogo específico use tanto um banco de dados relacional quanto um banco de dados chave-valor.
O seguinte é um exemplo simples de banco de dados relacional:
Este é um banco de dados simples de chave-valor:
Função de Transição de Estado
Esta é uma função de transição de estado simples. Quando esta função recebe entrada do usuário, simplesmente a multiplica por 5 e modifica os dados no banco de dados relacional.
Acumulador de Estado Mundial
Podemos construir um acumulador de hash simples para representar o estado do mundo:
A_s+1 = hash(A_s + hash(query))
Este método garante que, após qualquer modificação no banco de dados mundial, sempre haverá um estado único e definitivo correspondente a essa modificação.
É importante notar que cada função de transição de estado deve implementar este método. Este requisito pode ser aplicado usando modificadores, interfaces, ganchos ou outros mecanismos específicos da linguagem. Devido às diferentes características de várias linguagens de programação, não entraremos em detalhes específicos aqui.
O processo de atualização para um banco de dados chave-valor (KVDB) segue o mesmo princípio.
Números Aleatórios
As funções de transição de estado não devem incluir números aleatórios, pois isso causaria resultados diferentes quando validados por verificadores diferentes, quebrando a consistência. Números aleatórios devem ser incluídos como parte dos parâmetros de entrada do sistema.
A partir dos exemplos acima, podemos ver que a Camada de Execução Omni da Tabi Chain fornece aos desenvolvedores de jogos significativa flexibilidade por meio de uma abordagem modular. Devido a restrições de espaço, não podemos discutir todos os detalhes aqui, mas os pontos principais mencionados são suficientes para demonstrar que a solução da Tabi Chain é ao mesmo tempo prática e inovadora.
No ecossistema Web3 atual, os trabalhos desenvolvidos em diferentes blockchains e VMs geralmente carecem de portabilidade. Para os jogos da Web2 fazerem a transição para a Web3, muitas vezes significa reescrever o jogo em idiomas e ambientes desconhecidos, enfrentando várias restrições incompreensíveis.
Com o Tabi, os desenvolvedores podem usar sua linguagem original, plataforma de desenvolvimento e mecanismo. Eles só precisam fazer adaptações e modificações simples, semelhantes a chamar um SDK, para trazer seus projetos para o mundo da blockchain. Isso resulta em melhorias exponenciais na eficiência e reduções na complexidade.
Esperamos que o Tabi Chain possa se tornar um catalisador para a adoção em massa de jogos Web3, atraindo talentosos desenvolvedores de jogos Web2 e trazendo jogos verdadeiramente divertidos e jogáveis para o espaço Web3.
Isso claramente está em desacordo com o modelo de desenvolvimento de jogos tradicionais. Jogos tradicionais bem-sucedidos atraem muitos usuários por meio de mecânicas de jogo envolventes, permitindo que os desenvolvedores construam caminhos lucrativos e potencialmente se expandam para mercadorias e IPs relacionados. Esses jogos operam em um ciclo positivo onde os jogadores desfrutam do jogo e frequentemente obtêm benefícios econômicos tanto dentro quanto fora do jogo.
Em contraste, os jogos blockchain atuais atraem principalmente os jogadores por meio de retornos financeiros. Além de sua baixa jogabilidade, os jogos Web3 também enfrentam problemas de longa data, como altas barreiras de entrada e processos de interação complicados.
Qual é a causa raiz desses problemas? As opiniões variam. A equipe TabiChain acredita que um fator significativo é que os talentosos desenvolvedores de jogos tradicionais lutam para entrar no ecossistema Web3 devido a barreiras técnicas e de aprendizado. Para aqueles que não estão familiarizados com o desenvolvimento de jogos ou software, a transição do Web2 para o Web3 pode parecer apenas uma mudança de narrativa e ambiente, mas a realidade é muito mais severa.
Então, como podemos criar um ambiente mais acolhedor para desenvolvedores de jogos tradicionais ou empresas relacionadas por meio da tecnologia? Nas próximas seções, analisaremos minuciosamente os desafios enfrentados pelos jogos Web3 e suas soluções, explicando como a indústria de jogos Web3 do futuro pode ser tecnicamente adaptada para atender melhor aos desenvolvedores de jogos tradicionais.
No artigo anterior, mencionamos brevemente que a tecnologia não amigável e os altos custos de aprendizado são os principais fatores que impedem os praticantes de jogos tradicionais de entrarem no ecossistema web3. A chamada tecnologia não amigável e os altos custos de aprendizado podem ser expandidos para os seguintes pontos:
Blockchain e as aplicações nela (dApps) são fundamentalmente diferentes da arquitetura de software tradicional e exigem que os desenvolvedores tenham um novo sistema de conhecimento, como o princípio de funcionamento do blockchain, protocolos de consenso, modelos de programação de contratos inteligentes, etc. Os desenvolvedores de jogos tradicionais precisam passar muito tempo aprendendo Solidity ou outras linguagens de contratos inteligentes e precisam entender como o EVM funciona.
Além disso, a lógica de jogo tradicional geralmente é executada em um servidor centralizado, que pode lidar de forma flexível com estados de jogo complexos e interações de alta frequência. Executar a lógica de jogo na blockchain requer um alto grau de simplificação ou refatoração, porque cada operação deve ser publicada na rede distribuída para execução e depois enviada para a cadeia, o que é severamente limitado pelo desempenho e custo da blockchain.
Embora o EVM seja completo em Turing e possa teoricamente expressar lógica arbitrária, suas características são muito desfavoráveis para o desenvolvimento de jogos, tais como:
Podemos ver que tipo de token e informações de saldo um determinado endereço possui de ferramentas como Etherscan. Estes são indexados por ferramentas periféricas como navegadores de blockchain, e estes últimos precisam construir um banco de dados dedicado enorme e rastreá-lo completamente. Somente coletando todos os dados de bloco ou monitorando eventos na cadeia, todos os dados na cadeia podem ser resumidos.
Os desenvolvedores Web3 geralmente têm que integrar provedores de dados de terceiros como Etherscan, NFTscan, The Graph, etc., e até mesmo pagar pela sua API KEY. Além disso, esses serviços de terceiros são essencialmente bancos de dados off-chain, o que pode causar atrasos, erros, exceder os limites de chamadas, indisponibilidade de serviço e outras falhas.
Vamos comparar as diferenças entre a forma de banco de dados da maioria dos jogos e os métodos de armazenamento de dados na blockchain. A diferença entre os dois é óbvia. A estrutura de dados da maioria dos jogos é completamente personalizada por si só, tem boas capacidades de expressão e indexação, e não precisa depender de quaisquer serviços de terceiros.
Os ativos de jogo existentes (como adereços e personagens) geralmente não são criados e gerenciados na blockchain. Migrar esses ativos para a blockchain geralmente envolve a conversão de tipos de dados comuns, mas de longo prazo, em NFTs ou Tokens padrão, o que envolve um trabalho de migração e integração complexo e afetará o sistema econômico de jogo existente.
No Ethereum, uma vez que um contrato inteligente é implantado, o código é imutável, tornando os upgrades e patches mais complexos do que o software tradicional. Os desenvolvedores frequentemente usam contratos de proxy ou padrões de versionamento para contornar essa limitação, mas isso aumenta a complexidade da estrutura geral. Os contratos de proxy precisam ser usados com cuidado especial para evitar a corrupção de dados causada por conflitos de slots de armazenamento. Além disso, o risco de vazamento de direitos administrativos também é sério.
A atualização de código de jogos tradicionais não é tão complicada em termos de estrutura técnica. A única coisa que pode precisar ser restrita é a autoridade centralizada de atualização. Isso pode ser alcançado por meio de métodos como DAO, em vez de depender de contratos inteligentes.
Além disso, os jogos tradicionais costumam tirar instantâneos ou backups do banco de dados. Isso pode não ser muito importante normalmente, mas se você encontrar um bug importante na atualização, você pode rapidamente reverter os dados, o que é basicamente um fantasia na blockchain. Mesmo que alguns dados do jogo sejam revertidos reconstruindo o contrato, como migrar os dados e o status do contrato antigo para o novo contrato ainda é complicado.
Diferentes cadeias públicas e VMs têm idiomas de contratos inteligentes, arquiteturas, estruturas de dados, etc., completamente diferentes. No Web2, os desenvolvedores de jogos escolherão motores front-end multiplataforma como Unity, que podem fazer um conjunto de códigos ligeiramente adaptados para serem executados em ambientes diferentes, como iPhone, Android e desktop. Como o back-end não é executado no terminal do usuário, não há problemas de multiplataforma.
Em Web3, isso é basicamente um luxo. Migrar para uma cadeia ou VM diferente significa reconstruir o projeto inteiro e incorrer em custos enormes. Além disso, os desenvolvedores que são novos no Web3 não têm nenhuma experiência para escolher um ecossistema que lhes convém. Isso é visto de uma perspectiva técnica ou ecológica?
No nível da experiência do usuário, as interações em blockchain são extremamente complexas. O conceito de abstração de conta, que era tão popular anteriormente, surgiu precisamente para resolver os problemas de experiência do usuário do web3, então não vou entrar em detalhes aqui.
Depois de listar os 6 principais argumentos acima, vamos resumir: os desenvolvedores da web2 para a web3 enfrentam um grande limiar de adaptação. Se eles são os principais desenvolvedores na web2, não há necessidade de abandonar sua carreira na web2 e ir para um estranho como a web3. Neste ambiente, estamos desenvolvendo alguns negócios que não sabemos se podem ser bem-sucedidos ou não.
Pode-se dizer que a maioria dos principais desenvolvedores de jogos não entraram no Web3. Em certa medida, isso faz com que a maioria dos jogos Web3 sejam tendenciosos para a especulação financeira em vez de terem uma jogabilidade e diversão particularmente altas.
Os obstáculos da mesma natureza também existem no lado do usuário. Os jogos Web3 têm uma série de etapas de operação que dificultam as taxas de conversão do usuário, resultando em um grande grupo de usuários do Web2 que não estão dispostos a experimentar ou até mesmo completamente inconscientes da existência dos jogos Web3.
Existe algum projeto de infraestrutura que possa resolver os problemas acima? Tabi Chain pode ser um projeto muito próximo de uma das soluções finais para jogos Web3. Seu conceito principal é a 'Camada de Execução Omni': os desenvolvedores não precisam mais se preocupar com as diferenças entre várias VMs ou ambientes de operação. Eles podem usar diretamente seus ambientes de operação familiares ou até personalizáveis para desenvolver ou portar jogos diretamente.
Além disso, a Tabi Chain também possui consenso modular, camada de segurança e outras funcionalidades. Tudo é modular e personalizável para atender às necessidades de diferentes jogos e aplicativos.
Vamos revisitar o conceito fundamental de blockchain. Enquanto alguns podem descrevê-lo como um livro-razão descentralizado e imutável, é mais precisamente definido como a sincronização verificável do estado permanente de uma máquina de estado dentro de uma rede distribuída.
Essencialmente, o blockchain mantém uma máquina de estado universalmente aceita e seu status operacional:
Assim, o sistema de consenso de uma blockchain não precisa se limitar a uma única camada de execução (como apenas EVM). Independentemente do número de camadas de execução, desde que a cadeia consiga verificar os estados em várias camadas, permitindo que cada jogo opere em seu próprio ambiente, podemos abordar as várias questões discutidas anteriormente.
Em Tabi, cada jogo ou dApp pode construir seu próprio Serviço independente. Todos os Serviços submetem seus próprios blocos gerados ao sistema de consenso da cadeia; Os Nós Supervisores incluem o tempo de execução/VM em todos os Serviços para verificar o status dos blocos de serviço. O núcleo da camada de execução abrangente do Tabi pode ser considerado como uma VM com capacidades polimórficas, por isso é chamado de VM de Polimorfismo.
Para as VMs de blockchain existentes, uma VM de Polimorfismo precisa integrar essas VMs dentro de seu ambiente de tempo de execução e fornecer os métodos de chamada de interface necessários. O conceito de "integração" aqui pode ser implementado de duas maneiras:
Estado do Mundo Compartilhado: Semelhante ao Ethermint, que suporta a EVM no Cosmos. A EVM atua como uma camada superficial, focando nas interações do usuário e nas operações de contrato, fazendo com que todas as atividades do lado do usuário pareçam ser executadas na EVM. No entanto, os resultados finais e os dados dessas operações são armazenados em outros módulos do Cosmos. Assim, essa compatibilidade com a EVM é essencialmente um mapeamento dos dados subjacentes.
Esta relação de mapeamento pode ser estendida para outras Máquinas Virtuais também. Por exemplo, o Ethermint pode incorporar uma camada de módulo SVM adicional, onde tanto o SVM quanto o EVM correspondem aos mesmos dados subjacentes.
Isso é semelhante ao uso do VMWare em um PC para executar uma máquina virtual do Windows. O VMWare pode acessar tanto o disco rígido virtual da máquina virtual quanto o disco rígido físico do computador. Se você então iniciar uma máquina virtual do Mac, ela pode montar os dados do disco físico da mesma maneira. Essa configuração permite efetivamente que várias máquinas virtuais compartilhem os recursos e o estado do mesmo ambiente.
O Serviço Principal da Tabi Chain utilizará uma abordagem de estado mundial compartilhado. Isso significa que, desde que a VM correspondente seja adaptada, os dApps desenvolvidos para essa VM podem ser implantados diretamente no Serviço Principal sem a necessidade de criar um serviço separado.
Independent World State: Diferentes aplicativos e jogos têm requisitos únicos, e alguns jogos usam runtimes personalizados. Portanto, uma abordagem universal de integrar todas as VMs por meio de um “estado de mundo compartilhado” na VM de Polimorfismo não é adequada para todos os casos. Um estado de mundo independente também é necessário, pois é mais simples de implementar e ideal para serviços com dados totalmente separados.
Independentemente da abordagem usada, ela deve ser verificável pelos nós do supervisor. Isso significa que a VM de polimorfismo deve incluir todas as VMs ou tempos de execução usados pelos vários métodos de implementação.
Exemplo de portabilidade de jogos Web2
O VM de Polimorfismo é altamente personalizável, o que o torna particularmente benéfico para desenvolvedores Web2. Eles podem usar linguagens e estruturas familiares para portar qualquer lógica de negócios para o VM de Polimorfismo.
Suponha que o Minecraft queira fazer a portabilidade para Tabi. O processo geral seria o seguinte:
Com isso, todo o processo está completo.
Para os desenvolvedores, essas modificações são feitas dentro da linguagem e estrutura Java existente. O mesmo conceito se aplica aos jogos desenvolvidos usando qualquer outro método. Para os usuários, a interação do jogo permanece em grande parte inalterada. Claramente, este método de portar jogos Web2 é muito rápido e eficiente, potencialmente se tornando o modelo fundamental para a adoção em massa de jogos Web3.
Detalhes das Funções do Jogo STR (State Transition Runtime)
O exemplo anterior forneceu uma visão geral geral de como portar um jogo Web2. Para obter uma compreensão mais profunda, precisamos nos aprofundar em mais detalhes. Desta vez, usaremos um exemplo geral em vez de um jogo específico para ilustrar os detalhes envolvidos na execução da Camada de Execução Omni.
Essencialmente, personalizar o ambiente de execução de um jogo pode ser visto como criar a máquina de estados do jogo na blockchain, referida como Tempo de Execução de Transição de Estado (TET) no Tabi.
O exemplo acima é o processo geral de portabilidade de jogos Web2. Ainda precisamos saber mais sobre os detalhes. Desta vez, usamos um exemplo geral em vez de um exemplo de jogo específico para mostrar os detalhes envolvidos na execução em tempo de execução na camada de execução onipotente.
Basicamente, personalizar o ambiente de execução de um jogo pode ser considerado como criar uma máquina de estados para um determinado jogo na blockchain, que é chamado de Tempo de Execução de Transição de Estado em Tabi.
STR pode ser integrado ao Polymorphism VM na forma de binário ou módulo.
Em um sistema semelhante a blockchain, precisamos garantir a transparência das entradas, visibilidade pública das transições de estado e expressividade do estado global. Para atender a esses requisitos, precisamos construir um tempo de execução com as seguintes características:
As seguintes estruturas organizacionais são elementos essenciais deste STR. O Gate fornecerá um SDK por padrão para facilitar os desenvolvedores a criarem o tempo de execução.
World DB
Na prática, um jogo ou aplicativo provavelmente usará mais de um banco de dados, e esses bancos de dados podem ser de tipos diferentes. Vamos supor que um jogo específico use tanto um banco de dados relacional quanto um banco de dados chave-valor.
O seguinte é um exemplo simples de banco de dados relacional:
Este é um banco de dados simples de chave-valor:
Função de Transição de Estado
Esta é uma função de transição de estado simples. Quando esta função recebe entrada do usuário, simplesmente a multiplica por 5 e modifica os dados no banco de dados relacional.
Acumulador de Estado Mundial
Podemos construir um acumulador de hash simples para representar o estado do mundo:
A_s+1 = hash(A_s + hash(query))
Este método garante que, após qualquer modificação no banco de dados mundial, sempre haverá um estado único e definitivo correspondente a essa modificação.
É importante notar que cada função de transição de estado deve implementar este método. Este requisito pode ser aplicado usando modificadores, interfaces, ganchos ou outros mecanismos específicos da linguagem. Devido às diferentes características de várias linguagens de programação, não entraremos em detalhes específicos aqui.
O processo de atualização para um banco de dados chave-valor (KVDB) segue o mesmo princípio.
Números Aleatórios
As funções de transição de estado não devem incluir números aleatórios, pois isso causaria resultados diferentes quando validados por verificadores diferentes, quebrando a consistência. Números aleatórios devem ser incluídos como parte dos parâmetros de entrada do sistema.
A partir dos exemplos acima, podemos ver que a Camada de Execução Omni da Tabi Chain fornece aos desenvolvedores de jogos significativa flexibilidade por meio de uma abordagem modular. Devido a restrições de espaço, não podemos discutir todos os detalhes aqui, mas os pontos principais mencionados são suficientes para demonstrar que a solução da Tabi Chain é ao mesmo tempo prática e inovadora.
No ecossistema Web3 atual, os trabalhos desenvolvidos em diferentes blockchains e VMs geralmente carecem de portabilidade. Para os jogos da Web2 fazerem a transição para a Web3, muitas vezes significa reescrever o jogo em idiomas e ambientes desconhecidos, enfrentando várias restrições incompreensíveis.
Com o Tabi, os desenvolvedores podem usar sua linguagem original, plataforma de desenvolvimento e mecanismo. Eles só precisam fazer adaptações e modificações simples, semelhantes a chamar um SDK, para trazer seus projetos para o mundo da blockchain. Isso resulta em melhorias exponenciais na eficiência e reduções na complexidade.
Esperamos que o Tabi Chain possa se tornar um catalisador para a adoção em massa de jogos Web3, atraindo talentosos desenvolvedores de jogos Web2 e trazendo jogos verdadeiramente divertidos e jogáveis para o espaço Web3.