Um Guia Não Oficial para Escrever Contratos Inteligentes Qubic
Este guia não oficial fornece uma visão geral do desenvolvimento de Contratos Inteligentes Qubic, detalhando funções-chave, alocação de memória e procedimentos de teste para garantir uma implantação robusta e eficiente.
Qsilver · 27 de junho de 2024.
Introdução
Bem-vindo ao guia não oficial para escrever Contratos Inteligentes Qubic (SC). Este guia visa fornecer uma visão clara e concisa de como desenvolver e implementar contratos inteligentes dentro do ecossistema Qubic, com base na documentação principal do QPI.
Visão Geral dos Contratos Inteligentes Qubic
Atualmente, a documentação principal para escrever SCs é o arquivo QPI no GitHub. QPI significa Interface de Programação Qubic, análoga a uma API (Interface de Programação de Aplicações) mas específica para Qubic.
O arquivo QPI inclui:
- Caracteres Proibidos: Sem operadores de multiplicação ou divisão, sem diretivas de pré-processador.
- Estrutura de Código Básica:
- 5000 linhas de código: Define cada tipo de tamanho de variável desde bits únicos até arrays com milhões de elementos.
- 1000 linhas de código: Gerencia várias filas e tipos de dados relacionados para um manuseio eficiente de dados.
- As últimas centenas de linhas: Permitem o acesso ao estado da rede Qubic.
Funções Principais no QPI
Aqui estão algumas das funções essenciais fornecidas no QPI:
id arbitrator() const;
id computor(uint16 computorIndex) const; // [0..675]
uint8 day() const; // [1..31]
uint8 dayOfWeek() const; // [0..6]
uint16 epoch() const; // [0..9'999]
bit getEntity() const; // Retorna “true” se a entidade foi encontrada, “false” caso contrário
uint8 hour() const; // [0..23]
sint64 invocationReward() const;
id invocator() const; // Retorna o id do usuário/contrato que acionou este contrato; retorna NULL_ID se nenhum
template <typename T> id K12(const T& data) const;
uint16 millisecond() const; // [0..999]
uint8 minute() const; // [0..59]
uint8 month() const; // [1..12]
id nextId(const id& currentId) const;
sint64 numberOfPossessedShares() const;
id originator() const; // Retorna o id do usuário que acionou toda a cadeia de invocações; retorna NULL_ID se nenhum
uint8 second() const; // [0..59]
bit signatureValidity() const;
uint32 tick() const; // [0..999'999'999]
uint8 year() const; // [0..99] (0 = 2000, 1 = 2001, …, 99 = 2099)
O Que Isso Significa?
Contratos Inteligentes Qubic são Turing completos, o que significa que você pode implementar praticamente qualquer lógica computacional. No entanto, certas restrições garantem que SCs funcionem em um ambiente altamente compartimentado e seguro.
Alocação de Memória
SCs utilizam um modelo de alocação de memória estática onde toda a memória deve ser pré-alocada. Este design é crucial para gerenciar estruturas de dados de forma eficiente dentro de um limite de 1GB de RAM. Embora este limite esteja programado para dobrar no futuro, ele permanece uma alocação fixa, exigindo um planejamento cuidadoso do uso de memória.
Uso de Bibliotecas
Atualmente, você não pode usar bibliotecas externas em SCs; todo o código necessário deve ser incluído diretamente no código-fonte. Com o tempo, à medida que mais SCs incorporarem várias bibliotecas, estas poderão se tornar disponíveis para uso público dentro de outros SCs.
Transações e Mensagens de Rede RCF
Cada SC possui um endereço único derivado de uma chave pública, com o ID do contrato sendo os 64 bits mais baixos. SCs são invocados por meio de transações enviadas para este endereço, com inputData
especificando a operação. Além disso, o estado de um SC pode ser consultado usando mensagens de rede RCF.
Exemplo: SC de Airdrop
Um SC de airdrop pode iterar através de um conjunto de dados e distribuir QU ou tokens para cada endereço em um tick por transação de SC. Com um limite atual de 1024 transações por tick, isso pode resultar em até 500 milhões de transferências por tick. A taxa de transferência real depende da complexidade do SC.
Como Testar Seu SC
- Desenvolva seu SC: Escreva e depure seu código de contrato inteligente.
- Atualize o qubic-cli: Certifique-se de que suas transações de SC e funções de RCF estão integradas.
- Crie uma Atualização de Core do Testnet: Integre seu SC em um ambiente de testnet.
- Execute Testes: Use qubic-cli para consultar seu nó de testnet e validar o desempenho do SC.
- Teste de Estresse: Realize testes de carga e testes automatizados para garantir a estabilidade.
- Envie para Aprovação: Uma vez que a depuração esteja completa, envie seu SC para aprovação de quórum e então prossiga para IPO.
Seguindo estas etapas, você pode garantir que seus contratos inteligentes sejam robustos, eficientes e estejam prontos para implantação na rede Qubic. Feliz codificação!
Leia a série “Não Oficial” de Qsilver
- Um Qubic Interim Whitepaper Não Oficial
- Detalhes sobre Qubic
- Um Guia Não Oficial para a Integração de Serviços Qubic
- Um Guia Não Oficial para Escrever Contratos Inteligentes Qubic
Para obter as atualizações mais recentes, junte-se ao Discord do Valis, siga-nos no X e adicione nosso blog aos favoritos.
Próximo →
Nesta página
- Um Guia Não Oficial para Escrever Contratos Inteligentes Qubic
- Introdução
- Visão Geral dos Contratos Inteligentes Qubic
- Funções Principais no QPI
- O Que Isso Significa?
- Alocação de Memória
- Uso de Bibliotecas
- Transações e Mensagens de Rede RCF
- Exemplo: SC de Airdrop
- Como Testar Seu SC
- Leia a série “Não Oficial” de Qsilver