---
title: "Como chamar outro smart contract na Ethereum"
description: "Motivos para chamar outro smart contract e exemplos"
---

# Como chamar outro smart contract na Ethereum

É possível, em [Solidity](https://www.alchemy.com/overviews/solidity), criar smart contracts que tomam emprestadas [funções de outros contratos](https://www.alchemy.com/overviews/solidity-functions). Chamamos o smart contract que toma emprestado de **caller smart contract**, e o smart contract cuja função é emprestada de **called smart contract**.

Este artigo vai explicar quando desenvolvedores devem chamar outro contrato, com um tutorial e um exemplo de código.

## **Por que chamar outro contrato**

Um dos maiores avanços que Ethereum trouxe para blockchains foi a capacidade de fazer upload e computar código on-chain. Depois que esses programas, [conhecidos como smart contracts](https://www.alchemy.com/overviews/solidity-smart-contract), são enviados para a blockchain, eles não podem ser editados. Qualquer um pode visualizá-los e, se codificados corretamente, podem ser interagidos por smart contracts, mesmo que seus donos não se conheçam, o que efetivamente transforma smart contracts em bibliotecas reutilizáveis. Um smart contract cujo dono pretendia usar seu código para um propósito pode ser reutilizado por milhares de outras pessoas para seus próprios casos de uso por meio de chamadas.

Outro motivo pelo qual as pessoas chamam outros smart contracts é que, durante a programação, seu smart contract original atingiu o limite de tamanho de 24.577 bytes antes de ser concluído. Para contornar isso, desenvolvedores movem funções suficientes para um novo smart contract de modo que fiquem abaixo do limite de bytes.

## **Exemplo de chamada de outro smart contract**

Criamos dois exemplos de smart contracts abaixo para ensinar como um contrato pode chamar outro smart contract.

### **Chamar contrato e atualizar valores**

Neste primeiro contrato, o valor contido em `CalledContract` é atualizado pelo `CallerContract`.

### **Enviando ETH com uma chamada**

Neste segundo contrato, não apenas o valor de x em `CalledContractReceivesEther` é atualizado por `CallerContractAndSendEther`, como ETH também será enviado junto com a chamada.

## Como aprender mais sobre Solidity

Quer [aprender mais Solidity](https://www.alchemy.com/overviews/learn-solidity)? Com a recente aquisição da ChainShot, uma plataforma de educação em [Solidity](https://www.alchemy.com/dapps/solidity), a Alchemy University está oferecendo um curso intensivo de 7 semanas para [desenvolvedor Ethereum](https://university.alchemy.com/?a=bd8da13d63), originalmente um bootcamp de certificação de $3.000, gratuitamente ao público. Garanta sua vaga hoje!

Se você é novo no desenvolvimento em geral, o **curso intensivo de JavaScript de 3 semanas** da Alchemy é um ótimo pré-requisito antes de começar um bootcamp de Ethereum.
