Pular para o conteúdo
0%

O que são cross-program invocations na Solana?

Escrito por Tau

Publicado em 25 de janeiro de 20235 min de leitura

A invocação de programa cruzado (cross-program invocation) em tempo de execução na Solana permite um desenvolvimento de programas mais eficiente e flexível, o que a torna um recurso fundamental da plataforma. Cross Program Invocations (CPIs) referem-se à capacidade de um programa na blockchain Solana chamar outro programa e executar seu código.

Este artigo vai ajudar você a entender o que são as invocações de programa cruzado na Solana, seus casos de uso específicos e como você pode usá-las em seus programas Solana.

O que são invocações de programa cruzado (cpis)?

Em uma invocação de programa cruzado em tempo de execução, um programa na Solana pode chamar outro programa e passar dados a ele, permitindo a criação de sistemas de contratos inteligentes complexos e modulares.

O runtime da Solana fornece um ambiente seguro e descentralizado para executar essas invocações de programa cruzado. O runtime da Solana garante que o programa chamado seja executado corretamente e que os resultados sejam retornados ao programa que fez a chamada de forma verificável. Isso permite a criação de aplicações trustless e descentralizadas na blockchain Solana.

Quais são os casos de uso das invocações de programa cruzado?

As invocações de programa cruzado possibilitam uma ampla gama de casos de uso na blockchain Solana, como transações multisig, transferências de tokens, state channels, interoperabilidade entre apps, novos tipos de transação e compartilhamento de funcionalidades comuns.

1. Transações multi-assinatura (multisig)

Um programa multi-assinatura é aquele em que várias partes precisam assinar uma transação antes que ela seja executada na blockchain. Com invocações de programa cruzado, o programa multisig pode ser chamado por outros programas para verificar se uma transação tem o número necessário de assinaturas antes de ser processada.

2. Transferências de tokens

A Solana tem programas e contas de token para todas as transações relacionadas a um token. Esses programas de token podem ser chamados por outros programas para transferir tokens de uma conta para outra, permitindo a criação de aplicações como exchanges descentralizadas.

3. State channels

Programas Solana podem ser usados para implementar state channels, que permitem transações off-chain que são liquidadas on-chain. Por exemplo, um programa pode ser usado para implementar um state channel para um jogo simples na blockchain, em que o programa de estado pode ser chamado por outros programas quando os jogadores fazem movimentos, liquidando o estado final on-chain.

4. Interoperabilidade entre apps

As invocações de programa cruzado permitem que apps se comuniquem entre si e compartilhem dados, possibilitando interações mais fluidas entre diferentes apps na rede Solana.

5. Compartilhamento de funcionalidades comuns

Apps podem usar invocações de programa cruzado para compartilhar funcionalidades comuns, como funções criptográficas ou armazenamento de dados. Isso pode reduzir a quantidade de código que cada dApp precisa implementar e pode facilitar a construção de apps na Solana.

6. Habilitando novos tipos de transação

As invocações de programa cruzado possibilitam novos tipos de interação entre apps, como a capacidade de um dApp solicitar dados de outro dapp ou disparar uma ação em outro dApp.

Se você quer aplicar uma lógica de negócio complexa que envolve múltiplos programas, como em exchanges descentralizadas, criar carteiras multi-sig que exigem múltiplas assinaturas de diferentes programas, ou construir para escala com programas componíveis e reutilizáveis, implementar invocações de programa cruzado é a melhor abordagem.

Quais são alguns exemplos de invocações de programa cruzado?

Invocações de programa cruzado podem ser usadas de várias formas, incluindo uma carteira multi-sig, um marketplace de NFTs e programas modulares.

1. Carteira multisig na Solana

Usando invocações de programa cruzado, podemos criar uma carteira multi-sig como a Snowflake que exige duas assinaturas para executar uma transação. Isso pode ser feito criando dois programas: um para cada assinatura.

Quando uma transação é iniciada, o primeiro programa verifica a 1ª assinatura, chama o segundo programa para verificar a 2ª assinatura e, se ambas as assinaturas forem válidas, a transação é executada.

2. Marketplace de NFT na Solana

As invocações de programa cruzado também ajudam no desenvolvimento de marketplaces de NFT na Solana para compra e venda de tokens não fungíveis (NFTs). Os desenvolvedores podem fazer isso criando um programa para gerenciar o marketplace, e programas separados para cada tipo de NFT negociado no marketplace. O programa do marketplace pode chamar o programa de NFT apropriado para verificar a unicidade e a propriedade do NFT, e então executar a negociação se tudo for válido.

3. Programas modulares

As invocações de programa cruzado ajudam diretamente na criação de um programa complexo que envolve múltiplas etapas e interações. Isso é feito criando múltiplos programas, cada um tratando uma etapa ou aspecto específico do contrato. O programa de contrato principal pode então chamar os outros programas conforme necessário para executar as várias etapas do contrato.

Como executar invocações de programa cruzado

Construir invocações de programa cruzado em tempo de execução na Solana envolve as seguintes etapas: escrever, compilar, implantar e invocar.

Etapa 1: escreva seus programas Solana

Primeiro, você precisa escrever os programas que deseja que possam se invocar mutuamente. Esses programas podem ser escritos em Rust nativo, usando o framework Anchor, ou em Python usando o framework Seahorse.

Etapa 2: compile seus programas para wasm

Depois de escrever os programas, você precisa compilá-los para Wasm usando um compilador adequado. Isso vai produzir um binário Wasm que pode ser executado pelo runtime da Solana.

Etapa 3: implante seus programas na Solana

Em seguida, você precisa implantar os binários Wasm compilados na blockchain Solana. Isso pode ser feito usando a ferramenta de linha de comando solana-deploy, que é fornecida como parte do kit de desenvolvimento de software (SDK) da Solana.

Etapa 4: escreva transações para invocar seus programas

Depois de implantar os programas, você pode usar o Solana SDK para escrever uma transação que invoque um dos programas e passe dados a ele. Essa transação seria submetida à blockchain Solana, onde seria verificada e executada pelo ambiente de runtime.

Quando o programa chamado é executado, ele pode realizar qualquer computação possível dentro do runtime Wasm, incluindo chamar outros programas. Os resultados da computação podem ser retornados ao programa que fez a chamada e armazenados na blockchain Solana.

Em geral, construir invocações de programa cruzado em tempo de execução na Solana envolve escrever programas, compilá-los para Wasm, implantá-los na blockchain e usar o Solana SDK para invocar e passar dados entre eles. Isso permite a criação de sistemas de contratos inteligentes complexos e modulares na plataforma Solana.

Observação: as taxas de rent de programas Solana variam conforme o número de programas presentes.

Exemplo simples da implementação

Como exemplo, suponha que você tenha dois programas na Solana, program1 e program2, e queira invocar a função process_data em program1 a partir de program2.

Veja como você poderia fazer isso:

Em program1, adicione uma nova função process_data_interface que recebe os dados de entrada como parâmetro e retorna os dados de saída:

Em program2, adicione código para invocar process_data_interface em program1, passando os dados de entrada e recebendo os dados de saída:

Você pode então usar os dados de saída em program2 conforme necessário.

Observação: este é apenas um exemplo simples, e a implementação exata vai depender dos programas e funções específicos com os quais você está trabalhando. Você pode precisar adicionar código adicional para tratar erros, garantir a autorização adequada, etc.

Comece a usar as invocações de programa cruzado em tempo de execução na Solana

A Solana tem um recurso fundamental chamado Cross Program Invocations em tempo de execução, que permite que contratos inteligentes rodando em sua plataforma invoquem outros programas de forma segura e descentralizada. Na Solana, cada programa tem um endereço único na blockchain, e as CPIs são realizadas chamando o endereço do programa que você deseja executar. Isso permite que os programas interajam entre si e possibilita funcionalidades complexas de programas na blockchain Solana.

Em geral, as CPIs em tempo de execução da Solana são uma parte importante do conjunto de habilidades de um desenvolvedor Solana, pois permitem a criação de aplicações descentralizadas complexas e poderosas.

Se você quer começar sua jornada com o desenvolvimento na Solana e CPIs, crie uma conta Alchemy hoje mesmo!

Background gradient

Construa magia blockchain

A Alchemy combina os produtos e ferramentas de desenvolvimento Web3 mais poderosos com recursos, comunidade e suporte lendário.