跳至内容
0%

如何在 Ethereum 上调用另一个智能合约

Alchemy team headshot

作者 Alchemy

发布于 2022年10月4日1 分钟阅读

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 训练营之前很好的预备课程。

Background gradient

构建区块链应用

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