`

Address

阅读更多
// contracts/Box.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

import "@openzeppelin/contracts/utils/Address.sol";
import "hardhat/console.sol";

contract MyTestContract {
    function foo(uint i) view external {
        console.log("foo",i);
    }

    function testContract() external{
        console.log("test is contract:");
        console.logBool(Address.isContract(msg.sender));
    }
}

contract TestAddress {
    using Address for address;
    //在构造函数中让另一个合约去判断msg.sender是否是合约会失败,因为构造的时候
    constructor(){
        MyTestContract f = new MyTestContract();
        f.testContract();
    }

    function testAddress(address addr) external {
        Address.functionCall(addr, abi.encodeWithSignature("foo(uint256)",1), "foo call reverted");
    }

    function testContract() external{
        MyTestContract f = new MyTestContract();
        console.logBool(Address.isContract(address(f)));
    }
}




const { ethers } = require("hardhat")

contractName = "TestAddress";
contractName2 = "MyTestContract";

describe(contractName, function () {
  it("test ", async function () {
    const Contract2 = await ethers.getContractFactory(contractName2);
    const contract2 = await Contract2.deploy();
    const Contract = await ethers.getContractFactory(contractName);
    const contract = await Contract.deploy();
    
    await contract.testAddress(contract2.address);
    await contract.testContract();
  });
});


  TestAddress
false
foo 1
true
分享到:
评论

相关推荐

    ipaddress 5.3.3 java版

    import inet.ipaddr.IPAddressString; import inet.ipaddr.ipv6.IPv6Address; import org.tinyradius.util.RadiusException; tinyradius-java 所需库 IPAddress-master.zip\IPAddress-master\IPAddress\dist\IP...

    Access violation at address 00000000.Read of adress 00000000解决方法

    ### Access Violation at Address 00000000 - 解决方法 在软件开发与维护过程中,遇到“Access violation at address 00000000.Read of adress 00000000”这类错误是常见的问题之一。这种类型的错误通常发生在程序...

    Access violation at address故障的解决方法 win7图文解决方案

    ### Access Violation at Address 故障的解决方法 #### 一、引言 在使用Windows 7操作系统的过程中,用户可能会遇到“Access violation at address”这一类错误提示。这类错误通常出现在使用某些特定软件或应用...

    QT 下载:Download from your IP address is not allowed

    Download from your IP address is not allowed 百度网盘永久连接: QT下载: qt-opensource-linux-x64-5.8.0.run: 链接:https://pan.baidu.com/s/1sQ3tqPaWdDnmhBYAc_XR7g qt-opensource-linux-x64-5.13.1....

    asap2SetAddress.m

    % >> rtw.asap2SetAddress('model.a2l', 'model.elf'); % % 2) Using DWARF debug information file to update ECU addresses % >> !readelf -wi model.elf > model_debug.dwarf; % >> rtw.asap2SetAddress('model....

    Change MAC Address(网卡物理地址管理器)V2.6.0.82 汉化绿色版

    《网卡物理地址管理——Change MAC Address V2.6.0.82 汉化绿色版详解》 在IT领域,网络通信是至关重要的,而每个网络设备都有一个独特的标识,那就是MAC(Media Access Control)地址,也被称为网卡物理地址。在...

    IP Address Control 使用实例

    在IT行业中,IP Address Control是一种常见的工具或组件,主要用于管理和控制网络设备的IP地址分配,以确保网络资源的有效利用和安全。在这个特定的实例中,我们聚焦于在VC++(Visual C++)环境下如何有效使用IP ...

    Linux下Socket编程的端口问题 ( Bind(): Address already in use ) PDF版

    ### Linux下Socket编程的端口问题 (Bind(): Address already in use) #### 一、问题背景与常见场景 在进行Linux下的网络编程时,经常会遇到端口绑定失败的问题,尤其是在使用`bind()`函数尝试绑定端口时,可能会...

    IP Address控件编辑IP地址.rar vc++

    总结来说,"IP Address控件编辑IP地址.rar"压缩包提供了在VC++6.0环境中使用IP Address控件的实例,帮助开发者了解如何在对话框中添加和控制IP Address控件,以及如何与之交互以满足网络通信编程的需求。通过学习和...

    用IP Address控件编辑IP地址

    `IP Address`控件就是为此目的设计的,它允许用户以直观且易于理解的四段式(如192.168.1.1)方式输入IP地址。在本文中,我们将深入探讨如何在VC++中使用`IP Address`控件来编辑IP地址,并介绍相关的编程技术。 ...

    exchang 全球地址导出工具AddressMagic

    《Exchange全球地址导出工具AddressMagic深度解析》 在企业级通信系统中,Microsoft Exchange Server作为一款强大的邮件服务器,为企业提供了高效、安全的邮件管理方案。然而,与之配套的Outlook客户端虽然功能强大...

    TMAC Technitium MAC Address Changer(MAC地址修改器)

    TMAC Technitium MAC Address Changer是一款强大的网络配置工具,专为用户提供了便捷的MAC地址修改功能。MAC(Media Access Control)地址,也被称为物理地址,是设备在网络上的唯一标识,通常由网络适配器(如无线...

    jquery.address.js

    《jQuery.address.js插件详解与应用实践》 jQuery.address.js是一款强大的URL地址管理插件,由Asual公司开发,主要用于实现页面内的锚点链接、页面无刷新跳转以及历史记录管理等功能。它使得Web应用程序在不刷新...

    USB枚举 SetAddress问题…

    在USB枚举过程中,SetAddress操作是一个关键步骤,它负责给USB设备分配一个独一无二的地址,以便主机识别和管理。 本文讨论了在USB枚举时遇到的一个具体问题——在SetAddress之后设备没有响应,导致枚举失败。这种...

    Advanced IP Address Calculator网络规划(中文版)

    "Advanced IP Address Calculator"是一款专为此目的设计的强大工具,它允许用户根据子网数量和计算机数量进行精确的网络规划。 首先,我们需要理解IP地址的基本概念。IP地址(Internet Protocol Address)是互联网...

    Address Magic Personal Edition 2.7.0

    《Address Magic Personal Edition 2.7.0:高效管理邮件地址的利器》 在信息化高度发展的今天,电子邮件已经成为人们日常沟通的重要工具。然而,随着联系人数量的增多,管理大量的邮件地址变得日益繁杂。此时,一款...

    nacos-address-server-1.1.0-bug修改.zip

    Nacos Address Server是一款重要的组件,它是阿里巴巴开源的分布式服务治理平台Nacos的核心组成部分。Nacos主要用于提供服务发现、配置管理和服务管理等功能,广泛应用于微服务架构中。在1.1.0版本中,Nacos Address...

    Get Thread StartAddress

    在提供的压缩包文件"StartAddress"中,可能包含了一个示例项目或代码片段,演示了如何在VS2008环境中实现这个功能。你可以解压文件并查看源码,以更深入地理解这个过程。通过实践和学习这个示例,你可以更好地掌握...

    前端开源库-ripple-address-codec

    ** Ripple Address Codec:前端开发中的XRP地址处理库** 在区块链技术中,Ripple(XRP)是一种流行的数字货币,其地址是由特定的编码规则生成的。`ripple-address-codec`是一个专门为前端开发者设计的开源库,它...

Global site tag (gtag.js) - Google Analytics