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合约接口, 然后通过合约地址初始化调用就可以了


目录
相关文章
|
1月前
|
IDE 区块链 开发工具
智能合约开发环境搭建及Hello World合约
智能合约开发环境搭建及Hello World合约
55 1
|
11月前
|
区块链
Jvav 调用 Conflux 智能合约
Jvav 调用 Conflux 智能合约
88 0
|
区块链
ERC20代币合约开发规则详解(源码示例)
ERC20代币合约是一个遵循ERC20标准的代币合约,它实现了代币转移、代币冻结、代币解锁等功能。作为一个通用的标准,ERC20代币合约可以被广泛应用于各种去中心化交易所、钱包、ICO等场景。
|
编译器 区块链
|
区块链
solidity 合约间调用以及参数传递
在 以太坊中合约间是可以相互调用,并且正常进行参数传递以及返回值处理. contract1.sol pragma solidity ^0.4.0; contract Test1 { uint256 public v=7; function vote(uint256 a) pu...
3341 0
|
Java 区块链
【智能合约】Solidity 进阶编程 | 注意一下合约中的细节
目录 1. 内置的全局变量 2. 错误处理 3. 访问函数 4. 创建合约 5. 合约继承 6. 修饰器modifier 最后
227 0
【智能合约】Solidity 进阶编程 | 注意一下合约中的细节
|
JSON Go 区块链
【智能合约】Go语言调用智能合约 | geth
目录 1. 获取abi文件 2. 安装abigen工具 3. remix连接私有链 4. 合约部署 5. 初始化私有链节点创世块 6. 合约部署 7. 调用
1321 0
【智能合约】Go语言调用智能合约 | geth
|
区块链
solidity智能合约如何判断地址为0或空
solidity智能合约如何判断地址为0或空
392 0
|
区块链
solidity 智能合约之间的调用
solidity 智能合约之间的调用
587 0