【问题标题】:How to send transaction from metamask wallet to backend node js如何将交易从元掩码钱包发送到后端节点 js
【发布时间】:2022-01-05 18:20:20
【问题描述】:

我正在构建简单的 dapp 应用程序,我想在其中验证某些内容,然后只进行合约交互,但现在我正在努力放置一个中间件,该中间件的作用就像用户将通过元掩码进行 txn 一样,然后这个 txn 或其他东西将转到任何语言的后端服务器都可能是节点 js,我会做一些检查,如果一切正常,然后将其发送到区块链。

有什么建议吗?

现在它全部在反应前端和元掩码浏览器扩展中......我不能限制客户端代码 而且我什至不能要求私钥。

【问题讨论】:

    标签: node.js ethereum web3 web3js metamask


    【解决方案1】:

    设计上不可能。交易需要由发送者的私钥签名。所以除非用户愿意给你他们的私钥(这样你就可以在后端为他们签署交易),你需要改变你的方法。

    如果您需要只允许您的应用授权的用户与合约交互,则合约需要保存授权地址列表。您的应用程序可以更新该列表(该应用程序拥有owner 地址的私钥)。示例:

    pragma solidity ^0.8;
    
    contract MyContract {
        address public owner = address(0x123);
        mapping(address => bool) public isAuthorized;
    
        function setAuthorized(address _address, bool _isAuthorized) external {
            require(msg.sender == owner, 'Only the contract owner can set authorized addresses');
            isAuthorized[_address] = _isAuthorized;
        }
    
        function foo() external {
            require(isAuthorized[msg.sender], 'Only authorized addresses can execute this function');
            // ...
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-12-15
      • 2020-07-06
      • 2018-12-22
      • 2021-08-17
      • 1970-01-01
      • 2021-10-30
      • 1970-01-01
      • 2023-02-19
      • 2021-08-22
      相关资源
      最近更新 更多