如何将交易从 metamask 钱包发送到后端节点 js

How to send transaction from metamask wallet to backend node js

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

有什么建议吗?

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

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

如果您需要只允许您的应用程序授权的用户与合约进行交互,则合约需要包含授权地址列表。该列表可以由您的应用程序更新(它持有 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');
        // ...
    }
}