我对创建一个代币交易(从用户1的账户到用户2的账户)作为区块链众筹平台的一部分感到有点困惑,我已经弄清楚了应用程序组件和其他东西的大部分问题,但MetaMask、账户和交易的整体集成仍然让我感到困惑。
我最初的目标是让NextJS后端(/api
路由)处理合约和事务调用,根据我的观察,大多数在线教程都是从react前端本身管理此类调用的。
从我过去与类似项目的互动来看,MetaMask扩展管理大量web3
设置,包括配置提供者(!)和帐户地址。
考虑到无MetaMask-less后端(NextJS API)将处理合约和事务调用。如何将MetaMask钱包集成到后端?我的初始思路如下:
当前配置计划:
- 网络:歌尔丽测试网
- 前端提供程序:(?)(这是MetaMask
window.ethereum
提供程序吗?) - 后端提供商:Infura WS/HTTP提供程序
逻辑流程:
1.用户在前端使用MetaMask登录
1.前端对包含所选钱包地址(AddrA)的后端进行API调用
1.后端接收钱包地址(AddrA)
1.发起某种形式的交易,将ETH发送到不同的用户钱包,地址为(AddrB)
这就是我遇到的障碍。我目前的观察是-
1.前端和后端提供商不同,尽管有相同的网络(或者我错了?)
1.如果要执行事务,MetaMask wallet是否会触发用户的批准提示?
1.如果事务由于配置不正确而无法执行,我可以做些什么来使MetaMask确认来自后端的事务请求?是否有任何文档说明了这一点
先谢谢你了,arnitdo
我已经搜索了很多关于元掩码和纯基于后端的事务的文档,但是我没有找到任何足够的文档。也许我的方向是错误的,或者我正在尝试一些不太可行的东西
1条答案
按热度按时间l7wslrjt1#
Metamask是一个chrome扩展,你不能在后端使用它。chrome扩展将一个属性注入到
window
全局对象中,在本例中metamask添加ethereum
属性。所以我们到达window.ethereum
来设置一个提供程序。Provider是一个 Package 器对象,它 Packagewindow.ethereum
,你通过第三方库创建provider。根据第三方api,您将拥有略微不同的提供者对象。Metamask只是一种使用钱包签署交易的简单方法,在幕后它使用Infura节点连接区块链。
如果您在后端,您可以通过注册infura创建您的提供商。
如果你在后台,因为你没有元掩码,你必须创建自己的使用密钥墙。你可以去元掩码,选择一个帐户,提取其密钥,并在后台创建一个钱包
然后构造一个事务,并通过签名者执行它