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


目录
相关文章
|
存储 IDE 区块链
《Solidity 简易速速上手小册》第3章:Solidity 语法基础(2024 最新版)
《Solidity 简易速速上手小册》第3章:Solidity 语法基础(2024 最新版)
753 2
|
9月前
|
存储 运维 监控
Python日志模块(logging)最佳实践:让调试更高效
专业日志系统是保障应用稳定与可维护的关键。本文深入解析日志分级、模块化配置、异步写入、结构化输出与上下文追踪,结合电商、金融等实战案例,揭示从基础配置到ELK集成的进阶路径,助力提升故障排查效率、降低运维成本,构建高效可观测的系统体系。(238字)
627 6
|
5月前
|
存储 安全 JavaScript
零基础搞定 OpenClaw 部署:Windows 10/11 本地安装全攻略(重点解决下载报错)
本文为零基础用户量身打造的OpenClaw(小龙虾)Windows 10/11本地部署全攻略,聚焦高频“当前不支持该文件类型”下载报错,详解下载、解压、安装、排查全流程;突出本地存储、零代码、免配置、多场景自动化等核心优势,新手5–10分钟即可完成部署并上手办公自动化。
|
存储 前端开发 安全
前端如何存储数据:Cookie、LocalStorage 与 SessionStorage 全面解析
本文全面解析前端三种数据存储方式:Cookie、LocalStorage与SessionStorage。涵盖其定义、使用方法、生命周期、优缺点及典型应用场景,帮助开发者根据登录状态、用户偏好、会话控制等需求,选择合适的存储方案,提升Web应用的性能与安全性。(238字)
1348 0
|
10月前
|
数据采集 存储 数据管理
元数据管理是什么?怎么管?
元数据管理是让数据成为真正资产的关键。它通过统一管理“关于数据的数据”,解决找数难、口径不一、追溯困难等问题,建立业务与技术间的共识,实现数据可发现、可理解、可信任,推动企业数据驱动落地。
|
缓存 NoSQL Java
Java 项目实操高并发电商系统核心模块实现从基础到进阶的长尾技术要点详解 Java 项目实操
本项目实战实现高并发电商系统核心模块,涵盖商品、订单与库存服务。采用Spring Boot 3、Redis 7、RabbitMQ等最新技术栈,通过秒杀场景解决库存超卖、限流熔断及分布式事务难题。结合多级缓存优化查询性能,提升系统稳定性与吞吐能力,适用于Java微服务开发进阶学习。
826 0
|
Ubuntu Linux 应用服务中间件
Linux使用cpulimit对CPU使用率进行限制
cpulimit是一款简单易用的CPU使用率限制工具,支持对特定程序或整个CPU使用率进行限制。可通过源安装(如`yum`或`apt-get`)或编译安装获取。使用时,可针对程序名、进程号或绝对路径设置CPU占用上限(如`cpulimit -e xmrig -l 60 -b`)。ROOT用户可限制所有进程,普通用户仅限于权限范围内进程。注意,CPU百分比基于实际核心数(单核100%,双核200%,依此类推)。
2017 7
|
IDE 开发工具 C++
AvaloniaUI项目离线开发全攻略:IDE安装、模板应用与NuGet私有化部署一站式解决
本文详细介绍了在离线环境中开发Avalonia UI项目的完整解决方案,包括Visual Studio 2022和JetBrains Rider的离线安装、Avalonia UI模板的配置、私有NuGet服务的部署与使用,以及NuGet包的制作和上传。通过这些步骤,您可以在网络受限或完全离线的环境中顺利进行Avalonia UI项目的开发。
AvaloniaUI项目离线开发全攻略:IDE安装、模板应用与NuGet私有化部署一站式解决
|
机器学习/深度学习 人工智能 算法
[大语言模型-算法优化] 微调技术-LoRA算法原理及优化应用详解
[大语言模型-算法优化] 微调技术-LoRA算法原理及优化应用详解
[大语言模型-算法优化] 微调技术-LoRA算法原理及优化应用详解