如何将交易从 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');
// ...
}
}
我正在构建简单的 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');
// ...
}
}