如何将常量 Solidity 地址变量传递给 JS 中的测试

问题描述 投票:0回答:2

我的固定地址是:

const addr = '0xcd3b766ccdd6ae721141f452c550ca635964ce71';

我的 Solidity 合约如下 -

function temp(address _myAddress) {
    // some code
}

如何将这个常量地址传递给JS测试

javascript solidity truffle hardhat
2个回答
0
投票

我明白了,伙计。你试图实施一个骗局。恭喜,您刚刚通过将此钱包导入我的 MetaMask 骗了我 0.5 ETH: 0xcd3b766ccdd6ae721141f452c550ca635964ce71

我正要收到一些钱,最后我把它发送到这个钱包,不知何故导入到我的 MetaMask 中。你拿走了它,偷走了我准备取出来支付家庭账单的钱。恭喜你,小偷。但请记住,你所做的一切在这个宇宙中都会加倍地回报给你。

我的钱包: https://arbiscan.io/address/0x98465f8a13e90689ca37c4b3fc38f2f93f8b65b4 恭喜你,你毁了我的项目,让我的生活大大恢复了。


-2
投票

在您的测试文件中可以使用三种不同的方法来执行此操作 -

方法一:

it ("Method1", async () => {
        const addr = '0xcd3b766ccdd6ae721141f452c550ca635964ce71';
        console.log(addr);
        await contract.temp(addr);
        const userAddress = await contract.getTempAddr(); // say this function exists
        expect(userAddressList).to.equal(addr);
        // Successfully passes address to solidity but gives assertion error (due to checksum error)
    });

方法二:

it ("Method2", async () => {
        const Web3 = require('web3');
        const web3 = new Web3(Web3.givenProvider);
        const addr = Web3.utils.toChecksumAddress('0xcd3b766ccdd6ae721141f452c550ca635964ce71');
        await contract.temp(addr);
        const userAddress = await contract.getTempAddr();
        expect(userAddressList).to.equal(addr);
    });

方法三:
直接创建钱包

it ("Method3", async () => {
        const addrWallet = new ethers.Wallet('0xcd3b766ccdd6ae721141f452c550ca635964ce71');
        await contract.temp(addrWallet.address);
        const userAddressList = await contract.getTempAddr();
        expect(userAddressList[0]).to.equal(addrWallet.address);
    });
© www.soinside.com 2019 - 2024. All rights reserved.