Logo
  • Home
  • Blog
  • Contact
Help us build Valis
🇵🇹

Um Guia Não Oficial para Integração de Serviços Qubic

image

Um Guia Não Oficial para Integração de Serviços Qubic

Integrar o Qubic em serviços existentes através de nó completo, nó remoto, servidor de arquivo ou API, com controlo e complexidade variáveis.

Qsilver - 17 de fevereiro de 2024.

Introdução

A integração do Qubic nos serviços existentes pode ser feita de quatro maneiras principais, cada uma oferecendo diferentes níveis de controlo e complexidade:

  1. Executar um nó completo: Acesso direto aos dados em memória para operações.
  2. Executar um nó remoto: Consulta de nós completos públicos para obter os dados necessários para as operações.
  3. Executar um servidor de arquivo: Criar um arquivo local completo de todos os dados Qubic para as operações.
  4. Interface com o servidor Qubic API: Método mais simples, mas com menos controlo sobre a disponibilidade dos dados.

Quanto mais baixo for o número, maior será o trabalho envolvido, mas maior será o controlo sobre a disponibilidade dos dados. Independentemente do nível que escolher, é essencial compreender as diferenças importantes sobre o Qubic.

Diferenças importantes sobre o Qubic

Para serviços que lidam com valor monetário, as duas diferenças mais importantes do Qubic são:

  1. Mesmo que um txid esteja incluído num tick validado, pode não ter feito nada.
  2. O saldo do endereço pode ser alterado sem que uma transação específica seja transferida de A para B, por exemplo, através de uma operação de contrato inteligente.

Devido a estas diferenças, o processamento Qubic deve basear-se nas alterações do saldo do endereço, garantindo que as alterações efectuadas por contratos inteligentes não confundem a lógica.

Tratamento de depósitos

Para simplificar o tratamento dos depósitos, recomenda-se a utilização de transacções normais. Os depósitos efectuados com contratos inteligentes podem ser ignorados ou tratados manualmente (com um custo adicional para cobrir os custos).

  1. Iterar por todas as transacções em cada tick e identificar os endereços de destino pertencentes aos clientes.
  2. Assinalar estes endereços para verificação do saldo.
  3. Obter informações sobre a entidade dos endereços assinalados para ver quais os que receberam novos fundos.
  4. Atualizar a informação atual da entidade para os endereços que receberam novos fundos.

As alterações de saldo podem não corresponder ao montante da transação devido a falhas de txid ou depósitos de contratos inteligentes. Ignorar os depósitos SC garante que o utilizador é creditado pelos depósitos SC mesmo que o txid tenha falhado.

Processamento de depósitos com base no saldo

Este método pode exigir mais largura de banda, mas é viável para serviços de médio porte, pesquisando centenas de milhares de endereços na rede através de um nó remoto. Garante que todos os métodos de depósito são devidamente creditados, melhorando a experiência do utilizador.

  1. Manter os últimos dados de entidade validados para cada endereço de utilizador.
  2. Num ciclo de sondagem, comparar os dados mais recentes da entidade com os dados validados da entidade.
  3. Validar os dados mais recentes da entidade utilizando a árvore de merkle.
  4. Se forem validados, atualizar os dados da entidade validada e gerar um evento de depósito com base na diferença no total de depósitos.

Processamento de retiradas

Pequenos volumes

  1. Obter dados de entidade validados para o endereço de envio.
  2. Colocar em fila uma transação de retirada com base no destino e no valor.
  3. Gerar os dados de entidade esperados para outgoingAmount e o outgoingAmount atual + montante da retirada.
  4. Processar a fila criando e transmitindo a transação de levantamento.
  5. Após um determinado período de tempo, verificar se os dados da entidade outgoingAmount foram alterados para o montante esperado.
  6. Em caso afirmativo, marca a retirada como concluída, remove-a da fila e actualiza os dados validados da entidade. Caso contrário, tente novamente o processo.

Volumes médios

  1. Use o comando SENDMANY SC para agrupar até 25 retiradas em uma única transação.
  2. Aplique a mesma lógica que para pequenos volumes, usando SENDMANY em vez de simples transações de envio.
  3. Um único endereço que utilize SENDMANY pode efetuar cerca de 100 levantamentos por minuto.

Grandes volumes

  1. Use o aplicativo sendmany para enviar até 15.625 pagamentos, concluindo em cerca de 20 ticks (~8000 retiradas por minuto).
  2. O aplicativo sendmany usa o SENDMANY SC em um fanout de três níveis. Os pagamentos são especificados num ficheiro .csv, processados para calcular o montante total e enviados para um endereço especial.
  3. Quando os fundos chegam, são distribuídos em três gerações (25 x 25 x 25 pagamentos).

Repositório sendmany

Para obter detalhes sobre o programa sendmany, visite o repositório:

Repositório GitHub do sendmany

Conclusão

A integração do Qubic nos serviços existentes requer uma análise cuidadosa do tratamento dos dados, nomeadamente no que diz respeito às transacções monetárias. Ao escolher o método de integração adequado e ao compreender os aspectos únicos do Qubic, os serviços podem gerir eficazmente os depósitos e os levantamentos a várias escalas.

Leia a série "Não Oficial" de Qsilver

  • 🇵🇹Detalhes do Qubic Crypto
  • 🇵🇹Um Whitepaper Interino Não Oficial do Qubic
  • 🇵🇹Um Guia Não Oficial para Escrever Contratos Inteligentes Qubic
  • 🇵🇹Um Guia Não Oficial para Integração de Serviços Qubic
Para as últimas atualizações, junta-te ao Discord da Valis, segue-nos no X e adiciona o nosso blog aos marcadores.

← Anterior

🇵🇹Configurando e Executando um Servidor de Arquivo Qubic

Seguinte →

🇵🇹Qwallet, Qclient e Qserver

Nesta página

  • Um Guia Não Oficial para Integração de Serviços Qubic
  • Introdução
  • Diferenças importantes sobre o Qubic
  • Tratamento de depósitos
  • Processamento de depósitos com base no saldo
  • Processamento de retiradas
  • Pequenos volumes
  • Volumes médios
  • Grandes volumes
  • Repositório sendmany
  • Conclusão
  • Leia a série "Não Oficial" de Qsilver

Publicações relacionadas

Logo

Execution

|

Transparency

XRSSDiscordGitHub