Um guia não oficial para escrever contratos inteligentes Qubic
Este guia não oficial fornece uma visão geral do desenvolvimento de Qubic Smart Contracts, detalhando as principais funções, 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 tem como objetivo fornecer uma visão geral clara e concisa sobre como desenvolver e implementar contratos inteligentes no 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 ficheiro QPI no GitHub. QPI significa Qubic Programming Interface (Interface de Programação Qubic), análogo a uma API (Interface de Programação de Aplicação) mas específico para Qubic.
O ficheiro QPI inclui:
- Caracteres proibidos: Sem operadores de multiplicação ou divisão, sem diretivas de pré-processador.
- Estrutura do código principal:
- 5000 linhas de código: Define todos os tipos de tamanho de variável, desde bits únicos até matrizes com milhões de elementos.
- 1000 linhas de código: Gere várias filas e tipos de dados relacionados para um tratamento eficiente dos dados.
- Algumas centenas de linhas finais: Permitem o acesso ao estado da rede Qubic.
Funções-chave do QPI
Eis algumas das funções essenciais do 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; // Returns “true” if the entity has been found, “false” otherwise
uint8 hour() const; // [0..23]
sint64 invocationReward() const;
id invocator() const; // Returns the id of the user/contract that triggered this contract; returns NULL_ID if none
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; // Returns the id of the user who triggered the entire chain of invocations; returns NULL_ID if none
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 é que isto significa?
Os Qubic Smart Contracts são Turing completos, o que significa que pode implementar praticamente qualquer lógica computacional. No entanto, certas restrições garantem que os SCs sejam executados em um ambiente altamente compartimentado e seguro.
Alocação de memória
SCs usam um modelo de alocação de memória estática onde toda a memória deve ser pré-alocada. Esta conceção é crucial para gerir eficientemente as estruturas de dados dentro de um limite de 1GB de RAM. Embora este limite deva duplicar no futuro, continua a ser uma atribuição fixa, exigindo um planeamento cuidadoso da utilização da memória.
Utilização de bibliotecas
Atualmente, não é possível utilizar bibliotecas externas nos SCs; todo o código necessário deve ser incluído diretamente no código fonte. Ao longo do tempo, à medida que mais SCs incorporam várias bibliotecas, estas podem ficar disponíveis para uso público noutros SCs.
Transacções e Mensagens da Rede RCF
Cada SC tem um endereço único derivado de uma chave pública, sendo o ID do contrato os 64 bits mais baixos. As SCs são invocadas através de transacções enviadas para este endereço, com inputData
a especificar a operação. Além disso, o estado de um SC pode ser consultado através de mensagens da rede RCF.
Exemplo: SC de lançamento aéreo
Um SC de lançamento aéreo poderia iterar através de um conjunto de dados e distribuir QU ou tokens para cada endereço em um tick por transação SC. Com um limite atual de 1024 transacções por tick, isto poderia resultar em até 500 milhões de transferências por tick. A taxa de transferência real depende da complexidade do SC.
Como testar o seu SC
- Desenvolvao seu SC: Escreva e depure o seu código de contrato inteligente.
- Atualizar o qubic-cli: Assegure-se de que as suas transacções SC e as funções RCF estão integradas.
- Criar uma Atualização do Núcleo de Testnet: Integrar o seu SC num ambiente de testnet.
- Executar testes: Use o qubic-cli para consultar seu nó testnet e validar o desempenho do SC.
- Teste de stress: Realize testes de carga e testes automatizados para garantir a estabilidade.
- Submeter para aprovação: Quando a depuração estiver concluída, submeta o seu SC para aprovação do quórum e, em seguida, avance para o IPO.
Ao seguir estes passos, pode garantir que os seus contratos inteligentes são robustos, eficientes e estão prontos para serem implementados na rede Qubic. Boa codificação!
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
Nesta página
- Um guia não oficial para escrever contratos inteligentes Qubic
- Introdução
- Visão geral dos contratos inteligentes Qubic
- Funções-chave do QPI
- O que é que isto significa?
- Alocação de memória
- Utilização de bibliotecas
- Transacções e Mensagens da Rede RCF
- Exemplo: SC de lançamento aéreo
- Como testar o seu SC
- Leia a série "Não Oficial" de Qsilver
Publicações relacionadas