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-%e6%99%ba%e8%83%bd%e5%90%88%e7%ba%a6%e4%b9%8b%e9%97%b4%e7%9a%84%e8%b0%83%e7%94%a8/

公众号

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容