Esta publicação descreve como criar um cliente básico que registra a atividade no Cadeia de blocos descentralizada Stellar. A Stellar hospeda uma lista crescente de tokens e moedas alternativas de criptomoedas novas e diferentes. Com o código desta publicação, você pode criar uma ferramenta de consulta básica de ativos mantidos em uma conta Stellar, usando o Couchbase para armazenamento e consulta.

O que você precisará

Couchbase

Para acompanhar, configure uma versão recente do Couchbase que seja igual ou superior à 7.0.2. Você pode fazer a maioria das coisas com versões anteriores, mas em postagens futuras não será possível acessar os gráficos, escopos ou coleções incorporados. Couchbase Capella O banco de dados como serviço também está disponível com uma avaliação gratuita simples, ou você pode instalar um banco de dados local ou Versão do Docker do Couchbase.

Usando a UI de administração integrada do Couchbase - escolha a opção Balde na barra lateral e o menu Adicionar balde (canto superior direito). Crie um bucket chamado estelarconforme mostrado na Figura 1. Ele precisa de um mínimo de memória atribuída a ele; o meu padrão é 300 MB, o que será mais do que suficiente. 

Add a new data bucket to the Couchbase cluster

Figura 1. Adicionar um novo bucket de dados ao cluster do Couchbase.

Ele levará um minuto para aquecer antes de ficar verde para mostrar que está disponível, conforme mostrado na Figura 2.

 The new bucket is now available

Figura 2. O novo bucket já está disponível.

Endereço da carteira Stellar

Em seguida, você precisará de um endereço de carteira Stellar para monitorar. Para encontrar uma conta interessante, use Stellar.expert e seu navegador de contas para encontrar uma carteira de identidade.

Para meus experimentos, estou usando esse endereço, pois ele tem uma coleção pequena, mas interessante, de tokens: 

SDK do Python

Em seguida, usaremos o Python 3 e o Couchbase Python SDK. Instale o Python SDK usando o comando tubulação conforme descrito no comando documentação. Inclua também o solicitações que precisaremos para fazer o download da API da Web do Stellar.

Teste a instalação iniciando o Python e importando o módulo Couchbase:

Se ele for concluído sem erros, então estamos prontos para começar. Pressione CTRL+D para desistir.

Conexão com o Couchbase

O Olá, Couchbase na documentação mostram as informações básicas de conexão que você precisa adicionar ao nosso script Python. No mínimo, para nos conectarmos ao nosso novo bucket, precisamos de: 

  • O nome de usuário/senha do administrador (ou alguém com direitos de acesso ao novo bucket)
  • O nome/IP do servidor/cluster do Couchbase
  • O nome do novo bucket (por exemplo,, estelar)

Crie um script chamado app.py:

Você pode executar o script e verificar se há algum erro antes de continuar.

Revisão do esquema de contas do Stellar.org

Para este projeto, faremos o download das informações da conta diretamente do API da Web estelar e armazenar os dados JSON brutos no Couchbase para consulta posterior.

Para acessar uma conta Stellar, usaremos o serviço Horizon e acessaremos a conta /public/asset ponto final. Por exemplo, eu uso Carteiro.co para fazer uma visualização rápida do JSON resultante para ter uma ideia do esquema, conforme mostrado na Figura 3.

 Sample of the Stellar accounts JSON document

Figura 3. Amostra do documento JSON das contas Stellar.

Na figura, observe que eu reduzi alguns objetos e listas para ver as coisas com mais clareza. Os elementos de nível raiz, como account_id, subentry_counte last_modified_time são potencialmente úteis. Mas a maioria das entradas está na seção balanços objeto, quase 1.700 linhas na verdade. 

Esses são os elementos essenciais do detentor do ativo. Vamos examiná-los um pouco mais detalhadamente na Figura 4 abaixo.

Two entries from the balances list

Figura 4. Duas entradas da lista de saldos.

Na figura acima, são mostrados dois tipos de balanços. Há dezenas de outros que não estão sendo mostrados, mas todos são semelhantes ao primeiro mostrado aqui. Ele lista um saldo do número de tokens (1.7), o asset_code (ZDC são Fichas do Zodíaco), e o emissor de ativos (já que muitas contas podem emitir o mesmo ativo). Observe também o tipo de ativo (crédito_alphanum4).

A segunda entrada acima é a única diferente tipo de ativo na lista (nativo). Nesse caso, é um saldo base no nível da conta, o token nativo da carteira Lobstr do proprietário, nesse caso Lumens estelares (XLM). Esse saldo pode ser trocado por saldos de qualquer outro ativo e vice-versa por meio da conta de negociação de ativos.

Planejamento do nosso fluxo de trabalho

Com o exposto acima em mente, podemos planejar como armazenar e acessar todas as informações de nosso interesse. Então, no que estamos interessados?

Primeiro, estamos interessados em uma atualização diária das estatísticas sobre a conta. Portanto, suponha que executaremos nosso script diariamente e atualizaremos as informações no banco de dados.

Será bom saber os saldos atuais, inclusive o valor nativo de XLM e os saldos de outros tokens. Desde que mantenhamos esses detalhes nos documentos que armazenamos, poderemos consultá-los a qualquer momento. Também teremos que nos certificar de que nossa chave seja uma espécie de carimbo de data/hora ou ID incremental para que nossos documentos não sejam substituídos por entradas mais recentes.

Também poderíamos fazer alguns cálculos intermediários para manter outro documento atualizado com os totais da base, etc., mas deixaremos isso para uma postagem futura.

As próximas duas etapas são fazer o download desse documento JSON e carregá-lo no Couchbase. Em seguida, veremos o resultado na interface do usuário do Console da Web e testaremos as consultas e os gráficos.

Download de dados de contas Stellar com Python

Este é, reconhecidamente, um exemplo muito simples que podemos desenvolver nas próximas semanas.

Para acessar uma API da Web, usamos o módulo de solicitações do Python e armazenamos os resultados em um objeto JSON.

Incluo um exemplo de loop simples para mostrar como é fácil se você quiser vê-lo impresso de uma forma bem feia. Há técnicas de impressão mais bonitas, mas usaremos as que estão incorporadas no Couchbase para facilitar o processo, em vez de escrever mais código aqui.

Envio de documento JSON para o Couchbase

Em seguida, usamos o objeto do nosso bucket do Couchbase e fazemos uma chamada de upsert. Upsert é o mesmo que um comando de inserção de documento ou banco de dados, mas atualizará qualquer documento existente, se ele já existir. No nosso caso, também queremos gerar um ID exclusivo e usá-lo como ID do documento.

Vamos adicionar um carimbo de data/hora unix usando o tempo e criar uma chave, conforme mostrado no guia de introdução do Python SDK, que também inclui algumas capturas básicas de exceções.

Juntando tudo

Agora, vamos dar um passo atrás e examinar o exemplo de código consolidado criado com várias funções para ajudar a compartimentar tudo e torná-lo um pouco mais reutilizável.

O resultado listará o URL da API da Web que foi usado e mostrará um erro ou a mensagem Resultado da operação Detalhes:

Ver os resultados do token no console da Web

Depois de executar o script algumas vezes, você deverá ter alguns documentos no bucket do projeto. Quando você tiver selecionado o estelar balde, pressione o botão Documentos (canto superior direito) para ver uma lista de documentos com os quais você pode interagir, um resultado é mostrado na Figura 5.

Sample Stellar account document open in Couchbase web console

Figura 5. Exemplo de documento de conta Stellar aberto no console da Web do Couchbase.

Para permitir a consulta, precisamos criar alguns índices. Alterne para o índice Consulta e insira o seguinte N1QL para configurar alguns índices. Observe que estamos usando uma coleção padrão de documentos, portanto, colocamos um prefixo no nome do bucket para indicar isso. (Em uma postagem futura, separaremos nossos documentos para diferentes finalidades e usaremos coleções para isso).

Para cada um dos diferentes ativos:

Em seguida, teste o índice com uma consulta básica:

 

O Resultados deve mostrar uma saída básica com o número de documentos no compartimento, nesse caso, 7 documentos, conforme mostrado na Figura 6.

Sample query to count the documents in the bucket

Figura 6. Exemplo de consulta para contar os documentos no compartimento.

Consulta de atributos em um conjunto de documentos JSON

Você pode criar consultas facilmente, pois o N1QL é muito semelhante ao SQL padrão, mas com a inteligência JSON incorporada. Há funções que nos permitem acessar entradas na tabela balanços como se cada uma delas fosse uma coluna. Usando INÚTIL, cada uma das subentradas se torna um nome de campo acessível na consulta.

Por exemplo, a consulta a seguir lista todos os ativos e saldos:

A janela de consulta mostra os resultados em JSON por padrão, mas você pode alternar para a opção Tabela e ver nossos resultados até o momento:

Table Option View

Próximas etapas

Em nosso próximo post, vamos nos aprofundar e criar alguns gráficos e usar mais magia de consulta.

Aqui estão alguns links adicionais para ler sobre os tópicos que discutimos:

Autor

Postado por Tyler Mitchell - Gerente sênior de marketing de produtos

Trabalha como Gerente Sênior de Marketing de Produto na Couchbase, ajudando a levar o conhecimento sobre os produtos para o centro das atenções do público e, ao mesmo tempo, apoiando nossas equipes de campo com conteúdo valioso. Sua paixão pessoal são todas as coisas geoespaciais, tendo trabalhado em GIS durante metade de sua carreira. Agora, a IA e a pesquisa vetorial estão em sua mente.

Deixar uma resposta