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合约
93 1
|
JavaScript 前端开发 Go
【智能合约】Go语言调用以太坊 | geth
目录 1. geth 简介 1.1 下载地址: 1.2 安装: 1.3 查看是否安装成功 2. geth命令介绍 3. geth常用命令 3.1 指定数据目录 --datadir 3.2 账户相关 3.3 控制台console: 3.4 删除数据: 3.5 help 3.6 常见错误 4. Go语言调用合约 4.1 启动rpc端口 4.2 Go调用以太坊 4.3 调用接口 net_version net_listening net_peerCount eth接口 personal接口 db接口 最后
1129 0
【智能合约】Go语言调用以太坊 | geth
|
编译器 区块链
Solidity函数学习
Solidity函数学习
166 0
Solidity函数学习
|
区块链
solidity 合约间调用以及参数传递
在 以太坊中合约间是可以相互调用,并且正常进行参数传递以及返回值处理. contract1.sol pragma solidity ^0.4.0; contract Test1 { uint256 public v=7; function vote(uint256 a) pu...
3367 0
|
存储 JavaScript 前端开发
【一步步一起学DApp开发】(三)Solidity语言讲解 | 用Solidity编写智能合约 下
【一步步一起学DApp开发】(三)Solidity语言讲解 | 用Solidity编写智能合约
248 0
|
存储 编译器 区块链
【一步步一起学DApp开发】(三)Solidity语言讲解 | 用Solidity编写智能合约 上
【一步步一起学DApp开发】(三)Solidity语言讲解 | 用Solidity编写智能合约
568 0
|
Java 区块链
【智能合约】Solidity 进阶编程 | 注意一下合约中的细节
目录 1. 内置的全局变量 2. 错误处理 3. 访问函数 4. 创建合约 5. 合约继承 6. 修饰器modifier 最后
248 0
【智能合约】Solidity 进阶编程 | 注意一下合约中的细节
|
JSON Go 区块链
【智能合约】Go语言调用智能合约 | geth
目录 1. 获取abi文件 2. 安装abigen工具 3. remix连接私有链 4. 合约部署 5. 初始化私有链节点创世块 6. 合约部署 7. 调用
1379 0
【智能合约】Go语言调用智能合约 | geth
|
区块链
solidity智能合约如何判断地址为0或空
solidity智能合约如何判断地址为0或空
416 0
|
区块链
solidity 智能合约之间的调用
solidity 智能合约之间的调用
632 0