solidity 智能合约之间的调用
智能合约之间的调用
在区块链上,有些功能往往无法通过一个智能合约完成,此时便会用到智能合约之间的调用。本篇文章带大家通过具体示例来了解一下智能合约之间的调用。
在智能合约的编译过程中,有两种情况:调用者和被调用者在一个sol文件中和分别在不同的文件中。
同sol文件的智能合约调用
在下面的智能合约中,Demo1和Demo在同一个文件中,可进行同时编译,然后逐个发布。
pragma solidity ^0.5.10;
contract Demo1{
uint public data;
function setData(uint _data) public {
data = _data;
}
}
contract Demo2{
function toSetData(Demo1 demo1,uint _data) public {
demo1.setData(_data);
}
}
当发布完成,可通过第Demo2的toSetData方法进行Demo1方法的调用。传递的第一个参数为Demo1的智能合约地址,第二个参数为要设置的值。
不同sol文件的智能合约调用
在大多数情况下,两个智能合约不存在于同一个sol文件中,那么就需要使用另外一种形式来进行调用。还拿调用Demo1方法来举例,用另外一个sol文件中的Demo3来调用Demo1。
首先需要声明接口,然后在Demo3中直接调用对应的接口。
pragma solidity ^0.5.10;
contract Demo1{
function setData(uint _data) public;
}
contract Demo3{
function toSetData(Demo1 demo1,uint _data) public {
demo1.setData(_data);
}
}
调用接口是传递的参数依旧同第一种情况。
原文链接:https://www.choupangxia.com/2019/07/30/solidity-智能合约之间的调用/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?