NOVO: Helius adquire a Light Protocol
O que são Extensões de Token?
Blog/Pesquisa

O que são Extensões de Token?

Engenheiro de Experiência do DesenvolvedorOwen Venter no XOwen Venter no LinkedIn
13 min de leitura

O desenvolvimento no ecossistema Solana avançou rapidamente no último ano, com muitas tecnologias novas e empolgantes sendo lançadas. A Solana é conhecida por suas velocidades de processamento ultrarrápidas e taxas de transação mais baixas, mas, mesmo com essas vantagens impressionantes, sempre há espaço para melhorias. É aí que entram as Extensões de Token, um novo programa de tokens criado para aprimorar a funcionalidade atual dos tokens na Solana. Vamos explorar o que o padrão de Extensões de Token reserva para o ecossistema Solana.

O programa de tokens atual da Solana

Todos os tokens na Solana que não são o token nativo $SOL são considerados tokens SPL. Isso inclui tanto tokens fungíveis, como o $BONK, quanto tokens não fungíveis (NFTs). O programa de tokens define funções comuns para criar e trabalhar com tokens fungíveis e não fungíveis. Ele oferece alguns recursos aos quais desenvolvedores e usuários finais já estão acostumados. Essas operações incluem a emissão, a transferência e a queima de tokens. Além disso, oferece funcionalidades como atualizar e congelar o token, permitindo congelar uma conta de token e impedir qualquer alteração em seu estado até que ela seja descongelada.

O que são Extensões de Token e por que elas são necessárias?

Você pode pensar nas Extensões de Token como uma versão nova e aprimorada do programa de tokens da Solana. Elas são compatíveis tanto com tokens fungíveis quanto com tokens não fungíveis. Esse novo programa mantém todos os recursos do antigo programa de tokens, mas agora inclui um conjunto de novas funcionalidades úteis, criado para aprimorar o funcionamento dos tokens na Solana. Esses novos recursos, que são a verdadeira magia do Token2022, vêm na forma de extensões.

Mas por que as Extensões de Token são necessárias? Conforme a Solana avança, cresce a demanda por funcionalidades de token mais complexas e adaptáveis. Embora o programa de tokens atual da Solana atenda às necessidades básicas de tokens fungíveis e não fungíveis por meio de um conjunto simples de recursos, essa simplicidade cria limitações que podem prejudicar a inovação. Desenvolvedores com novas ideias muitas vezes precisam criar um fork do programa de tokens para adicionar a funcionalidade necessária, o que dificulta uma adoção ampla. O modelo de programação da Solana exige a inclusão de programas e contas nas transações, o que complica a criação de transações que envolvem vários programas de tokens. Além disso, carteiras e programas on-chain precisam confiar em qualquer programa de tokens que decidam oferecer suporte, o que pode ser arriscado. Em resposta a esse cenário em evolução, a Solana apresenta o Token2022 — um conjunto de recursos e melhorias adicionais criado para ampliar os recursos dos tokens no ecossistema.

Apresentando as extensões: um passo evolutivo

Os recursos revolucionários desse novo padrão estão nas extensões disponíveis, um conjunto de novos campos introduzido para atender a diferentes necessidades. Em termos simples, no contexto das Extensões de Token, uma extensão é um recurso ou funcionalidade adicional que pode ser incluído em um token para ampliar seus recursos e sua utilidade. As extensões permitem que os criadores personalizem o comportamento e as características de seus tokens para atender a necessidades ou objetivos específicos. Ao criar um token, você pode optar por usar qualquer quantidade dessas extensões. Vamos analisar algumas das principais extensões e seu possível impacto no ecossistema Solana. É importante observar que nem todas essas extensões estão disponíveis no momento.

Extensões de mint

Veja uma explicação de cada extensão de mint:

1. Taxas de transferência

Embora o programa de tokens existente não permita cobrar taxas sobre transferências, o padrão de Extensões de Token muda isso ao permitir a configuração de uma taxa de transferência no nível do protocolo. Esse mecanismo introduz um novo nível de controle financeiro sobre as transações.

2. Hooks de transferência

A extensão Transfer Hook oferece aos criadores de tokens uma camada adicional de controle sobre as transferências de seus tokens. Isso é especialmente importante para lidar com desafios relacionados a royalties de NFT. A extensão Transfer Hook permite que os criadores desenvolvam programas personalizados que os tokens usarão sempre que forem transferidos. Quando uma transferência de token é iniciada, o token se comunica com esse programa personalizado, permitindo que qualquer ação subsequente seja executada.

3. Encerramento do mint

As Extensões de Token solucionam uma lacuna significativa no programa de tokens ao permitir que contas de mint sejam encerradas por um endereço escolhido, algo que antes era impossível. Isso é feito inicializando a extensão MintCloseAuthority antes de inicializar o mint. Assim, alguém que não seja a carteira de autoridade pode encerrar o mint de um token.

4. Tokens que rendem juros

As Extensões de Token introduzem uma extensão InterestBearingMint, que permite representar de forma diferente a quantidade de tokens exibida na interface, incorporando os juros acumulados. Essencialmente, esse recurso permite que os tokens “rendam juros”, tornando-os mais valiosos quanto mais tempo você os mantém.

5. Tokens intransferíveis (tokens soulbound)

A extensão de mint NonTransferable permite criar tokens “soulbound” que não podem ser movidos de uma carteira. Isso é ideal para conquistas ou recompensas exclusivas. Esses tokens também podem ser ótimos para ingressos de eventos, pois você não poderia enviar o ingresso para outra pessoa.

6. Transferências confidenciais

As Extensões de Token introduzem uma nova extensão de token confidencial, conhecida como Transferências Confidenciais, um recurso de privacidade que utiliza provas de conhecimento zero para criptografar saldos de tokens e valores de transferência de tokens SPL.

O objetivo geral dessa extensão é melhorar a privacidade dos usuários com foco na confidencialidade, e não no anonimato. Como valores podem ser adicionados aos saldos ou subtraídos deles, o padrão de Extensões de Token exige um esquema de criptografia que permita essas operações matemáticas ocultas. A criptografia precisa ser homomórfica. A criptografia homomórfica é uma classe especial de esquema de criptografia que permite realizar tipos específicos de cálculo em dados criptografados sem precisar descriptografá-los. Assim, esses cálculos ocultos geram um resultado criptografado que, quando descriptografado, equivale ao resultado da aplicação das mesmas operações matemáticas ao texto simples. As transferências confidenciais usam a “Criptografia ElGamal Distorcida” para permitir a execução de operações matemáticas ocultas em textos cifrados.

Como observação para quem quiser se aprofundar, a Criptografia ElGamal Distorcida é uma variante simples do esquema de criptografia ElGamal padrão, em que um texto cifrado é dividido em um compromisso de Pedersen da mensagem criptografada e um identificador de descriptografia para permitir a execução de operações matemáticas ocultas no texto cifrado.

As Transferências Confidenciais são validadas por meio de Protocolos Sigma, uma classe específica de provas de conhecimento zero em que uma parte, o provador, consegue demonstrar a outra parte, o verificador, que conhece um segredo sem revelar o segredo em si. Esses Protocolos Sigma são necessários para várias instruções fornecidas com a extensão. Vamos analisar cada prova:

Prova de validade (de chave pública)

  • Verifica se uma chave pública Twisted ElGamal está formatada corretamente
  • Pense nisso como validar a “identidade digital” de outra pessoa antes de iniciar uma conversa segura
  • Isso é necessário para a instrução ConfigureAccount

Prova de validade (do texto cifrado)

  • Garante que a mensagem criptografada esteja bem formada
  • Pense nisso como receber uma caixa lacrada: você sabe que ela não foi adulterada porque continua lacrada
  • Isso é necessário para as instruções Withdraw, Transfer e TransferWithFee

Prova de saldo zero

  • Prova que o texto cifrado Twisted ElGamal criptografa o número zero
  • Pense nisso como uma maneira de verificar se o saldo da sua conta bancária é zero sem abrir o aplicativo do banco
  • Isso é necessário para a instrução EmptyAccount

Prova de igualdade

  • Confirma dois tipos de igualdade: entre dois textos cifrados ElGamal ou entre um texto cifrado ElGamal e um compromisso de Pedersen
  • Pense nisso como ter dois depósitos trancados e cheios de ferramentas e provar que ambos têm exatamente as mesmas ferramentas sem precisar abri-los
  • Isso é necessário para as instruções Transfer, TransferWithFee, WithdrawWithheldTokensFromMint e WithdrawWithheldTokensFromAccounts

Prova Sigma de taxa

  • Prova que uma taxa de transferência comprometida está correta
  • Pense nisso como confirmar à FedEx que você pagou os impostos de importação do seu pacote sem informar o valor exato pago
  • Isso é necessário para a instrução TransferWithFee

Prova de intervalo

  • Confirma que um número criptografado está dentro de determinado intervalo
  • Pense nisso como estimar a altura de uma pessoa e provar que seu palpite está dentro de um intervalo correto sem revelar a altura real dela
  • A Solana usa Bulletproofs para essas provas. Você pode saber mais neste artigo acadêmico e na implementação dalek

Resumindo: essas provas de conhecimento zero são usadas para validar que uma parte conhece um segredo que outra parte consegue verificar sem que ele seja revelado. Esses diferentes tipos de prova ajudam a garantir que os saldos e as transferências de tokens funcionem matematicamente como esperado, de maneira totalmente privada por meio de criptografia.

Somente o titular da conta, que possui a chave de descriptografia, pode visualizar seu saldo nesse sistema confidencial. No entanto, pode haver casos em que um terceiro externo precise revisar os saldos, seja para fins de auditoria ou de conformidade. A extensão de token confidencial possibilita isso com seu sistema de Auditor Global. Nesse sistema, cada conta pode ter uma chave de descriptografia distinta, permitindo que o titular forneça seletivamente acesso de leitura a contas específicas. O mint, ou a entidade que emite os ativos, possui uma estrutura de dados especial que pode incluir opcionalmente uma “chave de criptografia global do auditor”. O código é o seguinte:

Código
Transfer {
  amount_sender: PKE::encrypt(pke_pubkey_sender, 10),
  amount_receiver: PKE::encrypt(pke_pubkey_receiver, 10),
  amount_auditor: PKE::encrypt(pke_pubkey_auditor, 10),
  range_proof: RangeProof,
  equality_proof: EqualityProof,
  ...
}

O parâmetro amount_auditor é o valor da transferência criptografado com a chave pública de criptografia do auditor. Qualquer pessoa com a chave secreta do auditor pode descriptografar amount_auditor e, assim, auditar os valores das transações de um mint específico.

Se você se interessa por segurança, talvez tenha percebido uma possível falha nesse design. Suponha que Alice gere uma prova referente ao seu saldo criptografado. Porém, ao mesmo tempo, Bob envia tokens para Alice e a transação dele é processada primeiro. Nesse caso, a transação de Alice é rejeitada porque a prova gerada não reflete o estado recém-atualizado da conta. Esse tipo de ataque, conhecido como front-running, poderia inutilizar a conta de Alice se Bob inundasse continuamente a rede com transferências para ela. Para evitar esse tipo de ataque, o saldo criptografado de uma conta é dividido entre seu saldo pending e seu saldo available:

Código
let ct_pending = PKE::encrypt(pke_pubkey, 10);
let ct_available = PKE::encryption(pke_pubkey, 50);

Account {
    mint: Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB,
    owner: 5vBrLAPeMjJr9UfssGbjUaBmWtrXTg2vZuMN6L4c8HE6,
    encryption_key: mpbpvs1LksLmdMhCEzyu5UEWEb3dsRPbB5,
    pending_balance: ct_pending,
    account_balance: ct_available,
    ...
}

Todos os fundos enviados são subtraídos do saldo disponível, enquanto os fundos recebidos são adicionados ao saldo pendente.

As Transferências Confidenciais ainda não estão disponíveis, e a documentação da Solana para as seções Introdução e Guia de Início Rápido ainda está em desenvolvimento. Você pode, no entanto, acompanhar as tarefas restantes das Transferências Confidenciais nesta issue do GitHub, no repositório solana-program-library. A documentação contém uma Análise Aprofundada do Protocolo, mas é importante observar que você não precisa entender o conteúdo dessa análise para usar a extensão. O resumo acessível sobre Transferências Confidenciais apresentado nos parágrafos acima deve ser mais do que suficiente para você começar a usá-las quando tudo estiver disponível.

Extensões de conta

Veja uma explicação de cada extensão de conta:

1. Memo obrigatório em transferências recebidas

As Extensões de Token incluem um recurso que exige memos em todas as transferências recebidas. Memos são basicamente mensagens curtas on-chain. Esse recurso funciona como receber um bilhete com um presente, para que você saiba quem o enviou e por quê.

2. Propriedade imutável

A extensão ImmutableOwner adiciona uma camada de segurança ao impossibilitar a reatribuição da propriedade de uma conta. Essa medida aumenta a segurança das transações de tokens. Para entender melhor, precisamos analisar como os tokens são armazenados no programa de tokens padrão. Normalmente, quando alguém quer enviar um token para uma carteira, a primeira etapa é criar uma conta de token para armazená-lo na carteira do destinatário. Essa conta é criada a partir de uma combinação do endereço de mint do token e do endereço da carteira do destinatário. Isso funcionaria perfeitamente, não fosse o fato de que, depois de criada, a propriedade dessa conta pode ser transferida para outra pessoa. Com a extensão Immutable Owner do Token2022, isso não será mais possível.

3. Estado padrão da conta

A extensão DefaultAccountState permite que os criadores de mints restrinjam o uso de tokens definindo todas as novas contas de token como congeladas por padrão. Ela oferece uma camada adicional de controle sobre a distribuição e o uso dos tokens. Isso significa que você poderia receber um token, mas não conseguiria fazer nada com ele até que os criadores permitissem.

4. Delegado permanente

Com as Extensões de Token, é possível definir um delegado permanente de conta para um token. Isso permite nomear alguém, o delegado, que sempre terá autoridade para gerenciar os tokens de um mint. Essa pessoa poderá realizar ações como transferir ou queimar tokens. Se essa extensão for usada, a autoridade terá privilégios ilimitados de delegação sobre qualquer conta desse mint. Isso pode ser muito perigoso, pois esse delegado poderia transferir ou queimar tokens na carteira de qualquer pessoa.

Extensões de Token vs. Ethereum e Binance Smart Chain (BSC)

A Ethereum e a Binance Smart Chain (BSC) já avançaram muito no espaço DeFi, e vimos alguns dos recursos das Extensões de Token em tokens dessas redes.

Um exemplo é o SafeMoon na BSC, que introduziu uma taxa de 10% sobre cada transação, dos quais 5% são redistribuídos a outros detentores de SafeMoon. Isso incentiva os detentores a fazer HODL. O conceito de transferências confidenciais usando provas de conhecimento zero também não é novo. Na Ethereum, projetos como o Aztec Protocol exploraram transações privadas.

Embora a Solana tenha demorado um pouco mais para oferecer esses recursos, sua velocidade superior e seus custos de transação mais baixos criam um ambiente favorável para as Extensões de Token prosperarem, oferecendo uma vantagem competitiva sobre a Ethereum e a BSC.

Primeiros usuários das Extensões de Token

Desenvolvedores, dApps e carteiras precisam se adaptar a essas novas funcionalidades para aproveitar ao máximo o que as Extensões de Token oferecem. Veja alguns dos primeiros projetos a adotar o novo programa:

$BERN / BonkEarn

O $BERN, criado pela comunidade do $BONK, é um dos primeiros tokens desenvolvidos sobre o programa de Extensões de Token. Atualmente, o $BERN usa a extensão Transfer Fee para cobrar uma taxa de 6,9% sobre todas as transferências. A equipe do $BERN usa essa taxa para recompensar tanto os detentores de $BERN quanto os de $BONK.

Detalhamento completo:

  • 5% para a “Taxa de Bônus Bernzy”, usada para recompensar os detentores de $BERN
  • 1% para comprar e queimar $BONK
  • 0,5% para queimar $BERN
  • 0,3% para o fundo de desenvolvimento, usado para pagar mais taxas e adicionar recursos ao pool de liquidez do token.
  • 0,1% para a DAO do $BONK

Corretoras descentralizadas

A FluxBeam é uma DEX na Solana que atualmente oferece suporte a tokens criados com o programa de Extensões de Token.

Carteiras

A Backpack, uma extensão de carteira popular, já adicionou suporte a Extensões de Token , e a Phantom em breve terá essa funcionalidade.

Ferramentas

As ferramentas para emitir seu próprio token com o programa de Extensões de Token já estão disponíveis na FluxBeam.

O RugCheck , uma ferramenta para analisar mercados de tokens e diferentes tokens na Solana, já permite verificar tokens criados com o Token 2022.

Abraçando o futuro

A introdução das Extensões de Token representa um enorme avanço na jornada web3 da Solana. Ela traz diversas funcionalidades inéditas e, ao mesmo tempo, amplia os recursos existentes. Suas extensões inovadoras não apenas oferecem mais controle e flexibilidade aos criadores de tokens, como também abrem novas possibilidades no espaço DeFi. Embora outras blockchains já ofereçam recursos semelhantes, a vantagem da Solana em velocidade e acessibilidade, combinada às funcionalidades do Token2022, cria um concorrente formidável no mundo cripto. Conforme o suporte dos primeiros usuários e da ampla comunidade continua crescendo, o Token2022 está pronto para aprimorar e elevar o ecossistema Solana.

Assine a Helius

Acompanhe as novidades mais recentes do desenvolvimento Solana e receba atualizações quando publicarmos