我如何创建一个函数来验证用户是否可以铸造?

How can i create a function to validate if an user can mint?

我曾经为 erc720 使用此函数 isValidSignatureNow,但现在我正在使用 erc1155 我需要这样的函数。

我正在尝试铸造,但在我需要知道那个钱包是否可以为此铸造之前,我创建了一个函数 isAvailable 但现在我得到了

TypeError:成员“isValidSignatureNow”在地址中的参数相关查找后未找到或不可见。 --> Migrations.sol:112:16: |

我该如何解决该错误?

如果我修复了那个错误,我的代码看起来不错吗?

function isAvailable(
    bytes memory signature, address _firmante
) internal view returns (bool whiteListed) {
    bytes32 result = keccak256(
        abi.encodePacked(msg.sender)
    );
    //doing hash by result
    hash= ... // dont care yet
    return isValidSignatureNow(_firmante, hash, signature);
}

我想使用此功能 'isValidSignatureNow' 来自:https://docs.openzeppelin.com/contracts/4.x/api/utils

SignatureChecker 是一个库,要调用其中的方法,您必须使用此语句:

[libraryName].[methodName]([parameters]);

对于您的情况,您必须更改这行代码:

return isValidSignatureNow(_firmante, hash, signature);

这样:

return SignatureChecker.isValidSignatureNow(_firmante, hash, signature);

注意:记得在您的智能合约中导入 SignatureChecker 库。