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

Posted

技术标签:

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

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

有什么建议吗?

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

【问题讨论】:

【参考方案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');
        // ...
    

【讨论】:

以上是关于如何将交易从元掩码钱包发送到后端节点 js的主要内容,如果未能解决你的问题,请参考以下文章

元掩码未连接到 localhost 8545

Web3 发送没有元掩码的合约方法

如何使用 Hardhat 将以太币添加到我的 localhost Metamask 钱包?

如何使用 jquery 将数据从本地存储发送到后端

想要从 React UI 上传 zip 文件夹并将其发送到后端节点 js 服务器,我可以从那里将该文件夹放置在我系统上的某个路径中

如何将表单数据从 React 发送到 Node JS 后端服务器