跳至內容
0%

如何在 Ethereum 上呼叫另一個智能合約

Alchemy team headshot

作者 Alchemy

發布於 2022年10月4日閱讀時間 1 分鐘

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 訓練營前很好的先修課程。

Background gradient

打造區塊鏈魔法

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