首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >要求( msg.sender == owner(),'not‘)抛出异常,尽管msg.sender在事件中检查时等于msg.sender()

要求( msg.sender == owner(),'not‘)抛出异常,尽管msg.sender在事件中检查时等于msg.sender()
EN

Stack Overflow用户
提问于 2022-09-17 15:09:18
回答 1查看 126关注 0票数 -2

我有一个从openzeppelins ownable.sol继承的市场合同,我想检查对listNFT函数的访问,只由合同所有者完成。我尝试了onlyOwner修饰符,这个修饰符不起作用,引发了“调用者没有所有者”错误。然后,我试图理解msg.sender和owner()的确切值,并构建自己的事件来跟踪msg.sender和owner的值。您可以在这里看到相关代码。

代码语言:javascript
复制
    # Event to keep track of owner and caller
    event FunctionCall(
        address caller,
        address owner
    );

    // List the NFT on the marketplace
    function listNft( uint256 _tokenId, uint256 _price) public payable nonReentrant {

        # Emit event to inspect caller and owner
        emit FunctionCall(msg.sender ,owner());

        require(_price > 100, "Price must be at least 100 wei");

        # This line doesn't let me through and evaluates to false
        # require(msg.sender == owner(), "Must be owner");

      ...more code
    }

当我在不使用require语句的情况下调用合同时,我可以检查聚合扫描上的事件,这提供了以下内容

聚合扫描事件

事件显示msg.sender和所有者是相同的地址,之后的require语句如何计算为false?

我测试了强制转换msg.sender和owner()到address(msg.sender)和address(owner()),但是它没有工作。我遗漏了什么?

EN

回答 1

Stack Overflow用户

发布于 2022-09-18 08:18:10

签名方法有问题。早些时候,我像这样用Web3.py手动签署了事务

代码语言:javascript
复制
  transaction = contract.functions.transferFrom(w3.toChecksumAddress(<PublicKey>),w3.toChecksumAddress(to),  token_id).buildTransaction({
        'from': acct.address,
        'nonce': w3.eth.get_transaction_count(acct.address),
    })
    gas = w3.eth.estimate_gas(transaction)
    transaction.update({'gas': int(gas*1.5)})
    signed_transaction = w3.eth.account.sign_transaction(transaction, private_key=<PRIVKEY>)
    tx_hash = w3.eth.send_raw_transaction(signed_transaction.rawTransaction)
    tx_receipt = w3.eth.wait_for_transaction_receipt(tx_hash)

从web3.py切换到.transact()方法和中间件()之后,一切都正常。我仍然感到困惑,事件给出了正确的msg.sender在多边形扫描,但只要一切正常工作,我不会抱怨:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73756010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档