【问题标题】:Verify a (Metamask) transaction has happened on NodeJS验证 NodeJS 上是否发生了(元掩码)事务
【发布时间】:2021-03-29 12:12:26
【问题描述】:

在 NodeJS 上验证(元掩码)交易是否发生的最佳方法是什么?

用例:

用户用以太币购买了一张数字卡。用户购买数字卡后,服务器上的路由运行一些代码,制作PDF等。

让服务器 (ExpressJS) 验证 tx 是否发生并成功的推荐方法是什么?

我在考虑两个选项,但我对以太坊还很陌生,所以我可能在这里遗漏了一些细节。

让服务器监听合约中的事件。当一个事件发生时,它会有用户的地址并证明他们已经付款。然后我就可以制作卡片了。 我在这里唯一关心的是卡的某些细节可能是私人的。如果它在日志中,它将是公开的。

或者..

或者让用户在本地签署消息,将其推送到服务器并以某种方式将其发送到合同。我不确定这条路线的细节是什么。 有没有推荐的方法来完成这样的事情?

【问题讨论】:

    标签: blockchain ethereum solidity smartcontracts


    【解决方案1】:

    我不确定我是否能正确理解这个问题,但我会尽力提供一些帮助。

    在第一种情况下,日志不会包含任何私有信息,除非您将其写入事件、返回或存储在公共变量中。您主要关心的应该是如何将信息发送到合同,如果它没有以某种方式加密,它可能是一个问题。也就是说,我更喜欢第二种解决方案。

    此外,您可以等待事务日志并检查它是否成功或异步进行。

    const receipt = await contract.methods.yourFunction().send({ from: address });
    
    contract.methods
                .yourFunction()
                .send({ from: address })
                .then(receipt => {
                    // Do something with your receipt
                });
    

    【讨论】:

    • 提示:如果您对问题不确定,可以发表评论要求澄清。
    • 我知道如何向以太坊提交 tx,问题是如何验证服务器上是否发生了 tx。
    猜你喜欢
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 2020-12-03
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多