如何在 Ethereum 上调用另一个智能合约
作者 Alchemy
在Solidity中,可以创建借用其他合约函数的智能合约。我们把执行借用的智能合约称为调用方智能合约(caller smart contract),把函数被借用的智能合约称为被调用方智能合约(called smart contract)。
本文将说明开发者何时应该调用另一个合约,并通过示例代码进行讲解。
为什么要调用另一个合约
Ethereum 为区块链带来的最大进步之一,就是能够在链上上传和执行代码。这些程序,也就是所谓的智能合约,一旦上传到区块链上就无法修改。任何人都可以查看它们,如果代码编写得当,其他智能合约也可以与之交互,即使双方的所有者互不相识——这实际上使智能合约成为可复用的库。某个所有者本来只打算用于某一用途的智能合约,可以通过调用被成千上万的其他人用于自己的应用场景。
人们调用其他智能合约的另一个原因是,在编写过程中,原本的智能合约在完成之前就达到了 24,577 字节的大小限制。为了解决这个问题,开发者会把足够多的函数移到一个新的智能合约中,使原合约的大小降到字节限制以下。
调用另一个智能合约的示例
我们下面创建了两个示例智能合约,用来说明一个合约如何调用另一个智能合约。
调用合约并更新数值
在第一个合约中,CalledContract 中的数值由 CallerContract 更新。
在调用中发送 ETH
在第二个合约中,不仅 CalledContractReceivesEther 中的 x 值会被 CallerContractAndSendEther 更新,调用时还会发送 ETH。
如何进一步学习 Solidity
想要进一步学习 Solidity吗?随着近期收购 Solidity 教育平台 ChainShot,Alchemy University 现在向公众免费提供为期 7 周的Ethereum 开发者速成课程——该课程原本是一个价值 3,000 美元的认证训练营。快来锁定名额吧!
如果你刚开始接触开发,Alchemy 的3 周 JavaScript 速成课程是开始 Ethereum 训练营之前很好的预备课程。
相关概览

构建区块链应用
Alchemy 将最强大的 Web3 开发者产品和工具与资源、社区及专业支持结合在一起。


