WEB3DEV

Cover image for Ativos Ilimitados Algorand e Contratos Inteligentes.
Panegali
Panegali

Posted on • Atualizado em

Ativos Ilimitados Algorand e Contratos Inteligentes.

Visão rápida do artigo

Algorand Algod 3.5.1 e Indexador 2.10.0

Ativos e aplicativos ilimitados
Endpoints REST Algod modificados e adicionados
Endpoints REST dos indexadores modificados e adicionados

Com o lançamento da versão 3.5.1, a Algorand agora suporta ativos ilimitados e contratos inteligentes por endereço! Esta atualização abrirá opções adicionais e cenários de aplicação para os desenvolvedores. Este artigo cobre algumas destas, bem como mudanças e restrições adicionais de API dos quais os desenvolvedores devem estar cientes.

Observação

A fim de apoiar este modelo muito mais flexível, a equipe de engenharia investiu um tempo significativo na otimização da estrutura do banco de dados subjacente para melhorar o desempenho do livro razão. Devido a esta remodelação, quando o nó ou indexador for atualizado, levará mais tempo do que o normal para concluir a atualização. Durante este tempo, o nó não participará de um consenso ou responderá às chamadas REST. Estes tempos são estimados abaixo, mas dependem em grande parte de seu hardware específico.

3.5.1 Nó não arquivístico da Rede Principal Algod - ~15 minutos
3.5.1 Nó de arquivamento da Rede Principal Algod - ~60 minutos
2.10.0 Indexador da Rede Principal - ~30 minutos

Ativos e aplicativos ilimitados

Em lançamentos anteriores, a Algorand limitou o número de Ativos e Aplicações (ou seja, Contratos) que uma conta específica poderia criar ou optar por criar. Esta restrição foi em grande parte por razões de desempenho, mas tornou a construção de projetos de grande escala mais desafiadora. Este lançamento representa o culminar de um grande trabalho para resolver as preocupações de desempenho e permitir que esses limites fossem removidos.

Com esta mudança, os desenvolvedores podem facilmente criar projetos NFT de maior escala, aplicativos de ingressos baseados em eventos, direitos de música e vídeo, licenciamento de software on-chain, ativos digitais de jogos ou moedas, e muitos outros. Além disso, isto permite que contas individuais participem de um conjunto ilimitado de aplicativos (ou seja, Apps DeFi), coleções NFT, e marketplaces.

Algod e Indexador de mudanças de API

Com a mudança vêm algumas modificações e novas APIs disponíveis para manipular grandes listas de ativos e dados contratuais. Os exemplos mostrados estão utilizando o curl, mas também estão disponíveis em todos os SDKs. Estas mudanças estão resumidas abaixo. Consulte os esquemas API REST (Algod e Indexador) para obter informações adicionais. Veja também a documentação do desenvolvedor para o Indexador, para obter mais detalhes sobre como chamar e analisar os resultados usando os APIs SDK do Indexador.

Modificações do API REST Algod

O API REST Algod GET /v2/account/{address} foi alterado para suportar o novo modelo ilimitado. Uma nova bandeira está disponível para a chamada de suporte à exibição de um conjunto reduzido de informações. O parâmetro exclude pode ser definido para all ou none.

Exemplo de registro de conta abreviada retornado para a bandeira exclude definida como none ou a bandeira é omitida.

{
   "address":"W6R…Y",
   "amount":3999999999998000,
   "amount-without-pending-rewards":3999999999998000,
   "apps-local-state":[
      {
         "id":25,
         "schema":{
            "num-byte-slice":0,
            "num-uint":0
         }
      }
   ],
   //Contratos Inteligentes Aceitos em - Estado Local
   "apps-total-schema":{
      "num-byte-slice":0,
      "num-uint":0
   },
   //Ativos aceitos em
   "assets":[
      {
         "amount":0,
         "asset-id":31,
         "is-frozen":false
      }
   ],
   //Aplicações Criadas(Contratos)
   "created-apps":[

   ],
   //Ativos criados
   "created-assets":[

   ],
   "min-balance":300000,
   "participation":{
      "selection-participation-key":"wkf0Z8hDERFDW65KEMCDHzacP1D/d0yxYlWoG5rJYcw=",
      "state-proof-key":"tMABZKNjOxaadSfsIKglZr/FUwUTQmYwKP3O8kISHtSn5LFQW/NJX+usLVQVxo/0YKKpf27Nuyt7/TgyMtnJbQ==",
      "vote-first-valid":0,
      "vote-key-dilution":10000,
      "vote-last-valid":10000,
      "vote-participation-key":"E6s7WQ6GLIcC0/udcMX2yEN4KuByjTp9pG60r8lX5ZU="
   },
   "pending-rewards":0,
   "reward-base":0,
   "rewards":0,
   "round":25,
   "status":"Online",
   //Ativos Totalizados e Contratos
   "total-apps-opted-in":1,
   "total-assets-opted-in":1,
   "total-created-apps":0,
   "total-created-assets":0
}
Enter fullscreen mode Exit fullscreen mode

Quando definimos all, os detalhes da conta são retornados, mas os ativos e aplicações criados ou optados pela conta são removidos da lista. Você ainda receberá um número total de ativos e aplicações criadas ou ativadas, mas sem detalhes adicionais.

curl "$BASE_URL/accounts/$ASSET_ACCOUNT?exclude=all" -H "$TOK

Quando definidas como none, as listas de ativos e aplicações que o usuário criou ou pela qual optou são exibidas. Isto também conterá informações sobre os ativos e a configuração do contrato. Se esta lista retornar mais de 100.000 (padrão) itens, a chamada REST gerará automaticamente um código de erro 400 e reprovará. Este limite pode ser configurado (usando a configuração do nó MaxAPIResourcesPerAccount) especificamente para que um nó aumente este limite, se necessário.

curl "$BASE_URL/accounts/$ASSET_ACCOUNT?exclude=none" -H "$TOKEN_HEADER"

Novas chamadas REST Algod

Duas novas chamadas API REST estão disponíveis dentro do endpoint REST Algod . Uma para recuperar dados de ativos (GET /v2/contas/{endereço}/ativo/ID}) e outra para retornar dados de aplicação (GET /v2/contas/{endereço}/aplicação/{ID}) para uma conta e identificação específicas.

O endpoint REST GET /v2/contas/{endereço}/ativo/ID} retorna o valor de retenção da conta e o status congelado do ativo. Se o usuário também criou o ativo, a informação de configuração da criação também é devolvida. Além disso, o número da rodada atual é retornado.

curl "$BASE_URL/accounts/$ASSET_ACCOUNT/assets/$ASSET_ID" -H "$TOKEN_HEADER"

O endpoint REST GET /v2/contas/{endereço}/aplicação/{ID} retorna o estado local da conta para a aplicação se a conta optou pelo contrato. Se o usuário criou o contrato, os parâmetros de configuração do contrato também são devolvidos. Além disso, o número da rodada atual é devolvido.

curl "$BASE_URL/accounts/$APP_ACCOUNT/applications/$APPLICATION_ID" -H "$TOKEN_HEADER"

Modificações da API REST do indexador

A chamada API REST do indexador GET /v2/accounts/{address} foi modificada para suportar grandes conjuntos de dados.

Se esta chamada retornar mais de 1.000 (padrão) itens, a chamada REST irá gerar automaticamente um código de erro 400 e reprovará. Este limite pode ser configurado (usando a configuração do indexador MaxAPIResourcesPerAccount) especificamente para que o indexador aumente este limite se necessário. Além disso, esta chamada suporta paginação se você fornecer um parâmetro limit e usar o campo next-token. Consulte Resultados Paginados para obter mais informações.

Abaixo está um exemplo de um registro de conta abreviado retornado pelo indexador.

{
   "account":{
      "address":"OUN…",
      "amount":"....",
      //Contratos Inteligentes Aceitos em - Estado Local
      "apps-local-state":[
         {
            "deleted":false,
            "id":25,
            "opted-in-at-round":24,
            "schema":{
               "num-byte-slice":0,
               "num-uint":0
            }
         }
      ],
      //Ativos aceitos em
      "assets":[
         {
            "amount":10,
            "asset-id":31,
            "deleted":false,
            "is-frozen":false,
            "opted-in-at-round":23
         }
      ],
      //Aplicações criadas (Contratos)
      "created-apps":[
         {
            "created-at-round":19,
            "deleted":false,
            "id":25,
            "params":{
               "approval-program":"BiAC…Q==",
               "clear-state-program":"BoEBQw==",
               "creator":"OUN….",
               "global-state-schema":{
                  "num-byte-slice":0,
                  "num-uint":0
               },
               "local-state-schema":{
                  "num-byte-slice":0,
                  "num-uint":0
               }
            }
         }
      ],
      //Ativos criados
      "created-assets":[
         {
            "created-at-round":23,
            "deleted":false,
            "index":31,
            "params":{
               "clawback":"OUN…",
               "creator":"OUN…..",
               "decimals":0,
               "default-frozen":false,
               "freeze":"OUN…",
               "manager":"OUN…",
               "name":"tester",
               "name-b64":"dGVzdGVy",
               "reserve":"OUN…",
               "total":10
            }
         }
      ],
      "created-at-round":0,
      "deleted":false,
      "participation":{
         "selection-participation-key":"tLi0x…4=",
         "state-proof-key":"dz….w==",
         "vote-first-valid":0,
         "vote-key-dilution":10000,
         "vote-last-valid":10000,
         "vote-participation-key":"pA…Y="
      },
      "pending-rewards":0,
      "reward-base":0,
      "rewards":0,
      "round":23,
      "sig-type":"sig",
      "status":"Online",
      //Ativos Totalizados e Contratos
      "total-apps-opted-in":1,
      "total-assets-opted-in":1,
      "total-created-apps":1,
      "total-created-assets":1
   },
   "current-round":23
}
Enter fullscreen mode Exit fullscreen mode

Está disponível uma nova bandeira que reduzirá a quantidade de dados que esta chamada retorna. O parâmetro exclude pode ser definido como all, created-apps, created-assets, apps-local-state, assets ou none.

Com a bandeira definida para all, esta chamada retornará informações de conta para o endereço específico, mas não retornará nenhuma informação detalhada do ativo ou do contrato. No entanto, os números totais de ativos e aplicativos optados ou criados serão devolvidos.

curl "$INDEXER_URL/accounts/$ASSET_ACCOUNT?exclude=all" -H "$TOKEN_HEADER"

Quando o filtro é definido como none, todas as informações da conta são retornadas. O conjunto de retorno incluirá ativos aceitos, ativos criados, estado local para aplicativos aceitos e aplicativos criados.

Se a bandeira for definida como created-assets, os detalhes da conta serão retornados, mas excluirão qualquer informação sobre ativos criados. Os aplicativos criados ou aceitos ainda serão devolvidos. Os ativos optados ainda serão devolvidos.

curl "$INDEXER_URL/accounts/$ASSET_ACCOUNT?exclude=created-assets" -H "$TOKEN_HEADER"

Se a bandeira for definida para created-apps, os detalhes da conta serão devolvidos, mas excluirão qualquer informação sobre as aplicações criadas. Os ativos criados ou adotados por criar ainda serão devolvidos. O estado local para aplicações optadas ainda será devolvido.

curl "$INDEXER_URL/accounts/$ASSET_ACCOUNT?exclude=created-apps" -H "$TOKEN_HEADER"

Se a bandeira for definida para app-local-state, os detalhes da conta serão devolvidos, mas excluirá qualquer informação sobre o estado local das aplicações em que a conta optou. Os ativos criados ou optados ainda serão devolvidos. Os aplicativos criados ainda serão devolvidos.

Se a bandeira for definida para assets, os detalhes da conta serão devolvidos, mas excluirão qualquer informação sobre os ativos pelos quais a conta optou. As aplicações criadas ou adotadas ainda serão devolvidas. Os ativos criados ainda serão devolvidos.

Observação
O campo creator também foi removido da seção de assets do registro da conta.

Novas chamadas REST do indexador

As seções individuais do registro da conta também podem ser recuperadas, usando uma das várias novas chamadas API REST do Indexador. Estas chamadas
GET /v2/accounts/{address]/created-apps,
GET /v2/accounts/{address}/created-assets,
GET /v2/accounts/{address}/assets, e
GET /v2/accounts/{address}/apps-local-state

recuperam as seções individuais do registro da conta.

#aplicativos criados
curl "$INDEXER_URL/accounts/$APP_ACCOUNT/created-apps" -H "$TOKEN_HEADER"
#ativos criados
curl "$INDEXER_URL/accounts/$ASSET_ACCOUNT/created-assets" -H "$TOKEN_HEADER"
#estado local para aplicações escolhidas em
curl "$INDEXER_URL/accounts/$ASSET_ACCOUNT/apps-local-state" -H "$TOKEN_HEADER"
#Ativos escolhidos em
curl "$INDEXER_URL/accounts/$ASSET_ACCOUNT/assets" -H "$TOKEN_HEADER"
Enter fullscreen mode Exit fullscreen mode

Estas novas chamadas também podem ser filtradas usando algumas novas bandeiras de consulta. Os resultados podem ser retornados para uma identificação específica se definidos usando as bandeiras asset-id ou application-id.

O número de resultados ainda é restrito à configuração do indexador MaxAPIResourcesPerAccount, mas pode ser limitado usando a bandeira limit e paginado usando o campo de resultado next-token. Veja Resultados Paginados para mais informações. Por padrão, os resultados mostram apenas os Ativos e Aplicações atuais que foram criados ou adotados. Os ativos e aplicações eliminados não são devolvidos. Ao usar a bandeira include-all e defini-la como verdadeira, estas chamadas retornarão todos os itens, incluindo as aplicações excluídas, os ativos destruídos, os ativos optados e os estados locais com aplicações fechadas.


Este artigo foi escrito por Jason Weathersby e traduzido por Marcelo Panegali. O original pode ser encontrado aqui.

Latest comments (0)