【问题标题】:AssertionError Address changing in hardhat tests安全帽测试中的 AssertionError 地址更改
【发布时间】:2022-07-21 02:17:20
【问题描述】:

我遇到了这个 AssertionError。我正在使用从安全帽网络生成的公钥。它保存为 const const recipient = "0x8626f6940e2eb28930efb4cef49b2d1f2c9c1199";

正如您在下面的错误中看到的,收件人的值正在发生变化(大写字母与小写字母)。知道为什么以及如何发生这种情况吗?

应该使用 ERC2981 版税:

  AssertionError: expected '0x8626f6940E2eb28930eFb4CeF49B2d1F2C9…' to equal '0x8626f6940e2eb28930efb4cef49b2d1f2c9…'
  + expected - actual

  -0x8626f6940E2eb28930eFb4CeF49B2d1F2C9C1199
  +0x8626f6940e2eb28930efb4cef49b2d1f2c9c1199

这是实际测试:

it("should work with ERC2981 royalties", async function () {
    const Token = await ethers.getContractFactory("Token");
    const token = await Token.deploy();
    await token.deployed();

    await token.setRoyalties(0, recipient, 1000);
    let getRoyalties = await token.getRaribleV2Royalties(0);
    assert.equal(getRoyalties[0].value, "1000");
    assert.equal(getRoyalties[0].account, recipient);
    let royalties = await token.royaltyInfo(0, 100000);

    assert.equal(royalties.royaltyAmount.toString(), "10000");
    assert.equal(royalties.receiver, recipient);
});

【问题讨论】:

    标签: blockchain solidity chai web3js hardhat


    【解决方案1】:

    这是地址校验和。您可以使用 ethers.utils.getAddress() 函数 (docs) 对地址进行校验和。

    【讨论】:

    • 谢谢!你能解释一下为什么会发生这种情况吗?
    • @codestomping 在问题的上下文中:节点返回校验和的地址(通过royalties.receiver)但你的sn-p声明它未校验(在const recipient中)......但如果你的意思是为什么首先存在校验和机制:它允许检查地址是否有效并且不包含拼写错误。请参阅EIPthis article 了解更多信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-23
    • 1970-01-01
    • 2016-10-21
    • 2022-08-09
    • 2013-08-30
    • 2021-10-01
    相关资源
    最近更新 更多