---
title: "Ethereum에서 다른 스마트 컨트랙트를 호출하는 방법"
description: "다른 스마트 컨트랙트를 호출하는 이유와 예시"
---

# Ethereum에서 다른 스마트 컨트랙트를 호출하는 방법

[Solidity](https://www.alchemy.com/overviews/solidity)에서는 [다른 컨트랙트의 함수](https://www.alchemy.com/overviews/solidity-functions)를 빌려오는 스마트 컨트랙트를 만들 수 있습니다. 함수를 빌려오는 스마트 컨트랙트를 **호출 스마트 컨트랙트(caller smart contract)**, 함수가 빌려지는 대상이 되는 스마트 컨트랙트를 **피호출 스마트 컨트랙트(called smart contract)**라고 부릅니다.

이 글에서는 개발자가 다른 컨트랙트를 호출해야 하는 상황을 설명하고, 예제 코드를 통해 튜토리얼을 진행합니다.

## **다른 컨트랙트를 호출하는 이유**

Ethereum이 블록체인에 가져온 가장 큰 발전 중 하나는 온체인에서 코드를 업로드하고 실행할 수 있게 된 것입니다. [스마트 컨트랙트라고 알려진](https://www.alchemy.com/overviews/solidity-smart-contract) 이 프로그램들은 블록체인에 업로드되면 수정할 수 없습니다. 누구나 이를 볼 수 있으며, 제대로 작성되었다면 소유자들이 서로를 몰라도 스마트 컨트랙트끼리 상호작용할 수 있어, 사실상 스마트 컨트랙트를 재사용 가능한 라이브러리로 만듭니다. 특정 목적을 위해 작성된 스마트 컨트랙트를 수천 명의 다른 사람들이 호출을 통해 각자의 용도로 재사용할 수 있습니다.

사람들이 다른 스마트 컨트랙트를 호출하는 또 다른 이유는, 프로그래밍 과정에서 원래 작성하던 스마트 컨트랙트가 완성 전에 24,577바이트라는 크기 제한에 도달했기 때문입니다. 이를 우회하기 위해 개발자들은 바이트 제한 이하가 되도록 충분한 수의 함수를 새로운 스마트 컨트랙트로 옮깁니다.

## **다른 스마트 컨트랙트를 호출하는 예제**

한 컨트랙트가 다른 스마트 컨트랙트를 어떻게 호출하는지 보여주기 위해 아래에 두 개의 예제 스마트 컨트랙트를 만들었습니다.

### **컨트랙트를 호출하고 값을 업데이트하기**

이 첫 번째 컨트랙트에서는 `CalledContract`에 담긴 값이 `CallerContract`에 의해 업데이트됩니다.

### **호출과 함께 ETH 보내기**

이 두 번째 컨트랙트에서는 `CalledContractReceivesEther`의 x 값이 `CallerContractAndSendEther`에 의해 업데이트될 뿐만 아니라, 호출과 함께 ETH도 함께 전송됩니다.

## Solidity에 대해 더 알아보는 방법

[Solidity를 더 배우고](https://www.alchemy.com/overviews/learn-solidity) 싶으신가요? 최근 Solidity 교육 플랫폼인 [ChainShot](https://www.alchemy.com/dapps/solidity)을 인수함에 따라, Alchemy University는 원래 3,000달러짜리 인증 부트캠프였던 7주 과정의 [Ethereum developer crash course](https://university.alchemy.com/?a=bd8da13d63)를 무료로 대중에게 제공하고 있습니다. 지금 바로 자리를 확보하세요!

개발 전반이 처음이라면, Ethereum 부트캠프를 시작하기 전 사전 과정으로 Alchemy의 **3주 JavaScript crash course**가 좋은 선택입니다.
