如何在 Ethereum 上呼叫另一個智能合約
作者 Alchemy
在 Solidity 中,可以建立借用其他合約的函式的智能合約。我們將進行借用的智能合約稱為呼叫合約(caller smart contract),被借用函式的智能合約稱為被呼叫合約(called smart contract)。
本文將說明開發者何時該呼叫另一個合約,並透過範例程式碼進行教學。
為什麼要呼叫另一個合約
Ethereum 為區塊鏈帶來的最大進步之一,就是能夠在鏈上上傳並執行程式碼。這些程式,也就是所謂的智能合約,一旦上傳到區塊鏈後就無法修改。任何人都可以檢視它們,如果程式碼寫得正確,即使擁有者彼此不認識,智能合約之間也能互相互動,這實際上讓智能合約變成了可重複使用的函式庫。原本擁有者只打算用於某一用途的智能合約,可以透過呼叫的方式,被數千個其他使用者用於各自的用途。
另一個呼叫其他智能合約的原因是,開發者在撰寫程式時,原本的智能合約在完成前就已達到 24,577 bytes 的大小限制。為了解決這個問題,開發者會將部分函式移到新的智能合約中,讓兩者都低於此位元組限制。
呼叫另一個智能合約範例
我們建立了以下兩個範例智能合約,教你如何讓一個合約呼叫另一個智能合約。
呼叫合約並更新數值
在第一個合約中,CalledContract 中的數值會由 CallerContract 更新。
呼叫時傳送 ETH
在第二個合約中,不僅 CalledContractReceivesEther 中的 x 值會由 CallerContractAndSendEther 更新,呼叫時還會傳送 ETH。
如何進一步學習 Solidity
想要學習更多 Solidity 知識嗎?隨著近期收購 ChainShot(一個 Solidity 教育平台),Alchemy University 現正提供一個為期 7 週的 Ethereum developer crash course,這原本是一個要價 3,000 美元的認證訓練營,現在免費開放給大眾參加。立即報名,把握機會!
如果你剛開始接觸開發,Alchemy 的3 週 JavaScript crash course 是開始 Ethereum 訓練營前很好的先修課程。
相關總覽

打造區塊鏈魔法
Alchemy 結合最強大的 Web3 開發者產品與工具,並提供資源、社群與卓越的支援。


