🔛Chame Seu Contrato
Last updated
Last updated
Agora que seu contrato foi totalmente implantado, podemos começar a interagir com ele! O Flipper possui apenas duas funções: flip()
e get()
. Vamos mostrar a você como é brincar com ambas.
Existem duas maneiras de chamar um contrato:
As chamadas de procedimento remoto, ou métodos RPC, são uma maneira de um programa externo - como um navegador ou aplicativo front-end - se comunicar com um nó Substrate. Por exemplo, você pode usar um método RPC para ler um valor armazenado, enviar uma transação ou solicitar informações sobre a cadeia a qual um nó está conectado.
Se uma interface de usuário exibe o valor de um contrato (por exemplo, o saldo de uma conta em um contrato ERC-20), isso geralmente é feito via RPC. Especificamente, é feito executando uma simulação síncrona do método do contrato e retornando seu resultado. O seguinte esquema ilustra isso.
As chamadas RPC não requerem tokens, apenas uma conexão com um nó na rede. É importante observar que a execução não resultará em nenhuma mutação de estado na blockchain, na verdade, é apenas uma simulação.
O outro método de executar uma chamada a um contrato é enviando uma transação na blockchain. Isso requer tokens da rede para pagar pelo custo da transação. A transação será colocada em uma fila de transações e processada de forma assíncrona. A implicação importante aqui é que durante o envio da transação, nenhum resultado está disponível. Isso difere de uma chamada RPC.
O padrão típico para como um cliente pode reconhecer o resultado da chamada do contrato é ter o contrato emitir um evento e fazer com que o cliente ouça ativamente por esse evento. Normalmente, bibliotecas (como polkadot-js/api
) fornecem funções de API para fazer exatamente isso. A lição importante é que os desenvolvedores de contratos precisam garantir que eventos sejam emitidos se desejarem que os clientes possam detectá-los.
get()
functionConfiguramos o valor inicial do contrato Flipper value
como false
quando instanciamos o contrato. Vamos verificar se isso é verdade.
Na seção Message to Send, selecione a mensagem "get(): bool" e aceite os valores padrão para as outras opções.
Pressione "Read" e confirme que ele retorna o valor false
:
flip()
functionVamos fazer o valor se tornar true
agora!
A mensagem alternativa a ser enviada pela interface do usuário é flip()
. Novamente, aceite os valores padrão para as outras opções e clique em Chamar.
Se a transação foi bem-sucedida, então deveríamos ser capazes de voltar para a função get()
e ver nosso armazenamento atualizado:
cargo-contract
Chamar um contrato também pode ser feito via linha de comando!
get()
functionflip()
function