Solidity笔记-合约间的互相调用

简介: Solidity笔记-合约间的互相调用

前言


合约间偶尔也有需要互相调用的场景, 跟Go的接口声明挺像的


示例代码


调用加密猫和usdt的合约, 分别获取加密猫信息和usdt余额


pragma solidity ^0.4.19;
contract KittyInterface {
    /// @notice Returns all the relevant information about a specific kitty.
    /// @param _id The ID of the kitty of interest.
    function getKitty(uint256 _id)
    external
    view
    returns (
        bool isGestating,
        bool isReady,
        uint256 cooldownIndex,
        uint256 nextActionAt,
        uint256 siringWithId,
        uint256 birthTime,
        uint256 matronId,
        uint256 sireId,
        uint256 generation,
        uint256 genes
    );
}
contract TetherInterface {
    function balanceOf(address who) public constant returns (uint);
}
contract HelloWord {
    KittyInterface kittyContract;
    TetherInterface tetherContract;
    function HelloWord(address _kittyAddress, address _tetherAddress) {
        kittyContract = KittyInterface(_kittyAddress);
        tetherContract = TetherInterface(_tetherAddress);
    }
    // @dev getKittyInfo 获取加密猫的信息
    function getKittyInfo(uint256 _id) public returns (bool) {
        bool isReady;
        (,isReady,,,,,,,,) = kittyContract.getKitty(_id);
        return isReady;
    }
    // @dev getTetherBalance 获取usdt余额
    function getTetherBalance(address who) public returns (uint) {
        return tetherContract.balanceOf(who);
    }
}

声明对应的interface合约接口, 然后通过合约地址初始化调用就可以了


目录
相关文章
|
6月前
|
IDE 区块链 开发工具
智能合约开发环境搭建及Hello World合约
智能合约开发环境搭建及Hello World合约
89 1
|
编译器 区块链
Solidity函数学习
Solidity函数学习
164 0
Solidity函数学习
|
区块链
solidity 合约间调用以及参数传递
在 以太坊中合约间是可以相互调用,并且正常进行参数传递以及返回值处理. contract1.sol pragma solidity ^0.4.0; contract Test1 { uint256 public v=7; function vote(uint256 a) pu...
3366 0
|
存储 区块链 数据库
Solidity开发智能合约
一个简单的智能合约 在Solidity中,一个合约由一组代码(合约的函数)和数据(合约的状态)组成。合约位于以太坊区块链上的一个特殊地址。
1516 0
|
存储 编译器 区块链
【一步步一起学DApp开发】(三)Solidity语言讲解 | 用Solidity编写智能合约 上
【一步步一起学DApp开发】(三)Solidity语言讲解 | 用Solidity编写智能合约
566 0
|
存储 JavaScript 前端开发
【一步步一起学DApp开发】(三)Solidity语言讲解 | 用Solidity编写智能合约 下
【一步步一起学DApp开发】(三)Solidity语言讲解 | 用Solidity编写智能合约
248 0
|
Java 区块链
【智能合约】Solidity 进阶编程 | 注意一下合约中的细节
目录 1. 内置的全局变量 2. 错误处理 3. 访问函数 4. 创建合约 5. 合约继承 6. 修饰器modifier 最后
246 0
【智能合约】Solidity 进阶编程 | 注意一下合约中的细节
|
区块链
solidity智能合约如何判断地址为0或空
solidity智能合约如何判断地址为0或空
416 0
|
区块链
solidity 智能合约之间的调用
solidity 智能合约之间的调用
627 0
|
程序员 PHP 区块链
solidity生成了智能合约封装包,但是智能合约的二进制文件为什么空的?
如果在Solidity中定义了一个接口,但其中一个方法的实现与原始接口定义不匹配,则生成的二进制文件将是空白的。 在下面的例子中: contract Web3jToken is ERC20Basic, Ownable { .
1601 0