【问题标题】:Sending or minting tokens to a user wallet using server side code使用服务器端代码向用户钱包发送或铸造代币
【发布时间】:2022-10-25 01:15:07
【问题描述】:

我在Goerli 上有一个已部署的合约,并希望让用户认领/铸造代币,但我不确定如何让用户支付汽油费,因为交易发生在服务器上。

这是服务器上的工作代码:

        const amountInEther = "15000000.01"

        const provider = ethers.getDefaultProvider("goerli", {
            etherscan: apiKey,
        })

        const signer = new ethers.Wallet(privateKey, provider);

        const DAI = new ethers.Contract(tokenContractAddress, ABI, signer)

       const txObj = await DAI.mintTo(secondWallet, ethers.utils.parseEther(amountInEther))

        return response.status(200).send({ txObj })

我认为这一切都需要在服务器上使用 api 密钥和 env 变量中的 privateKeys。

欢迎任何其他建议。

  • 编辑 - 我不认为我解释得很好

我正在构建一个玩家积累代币的游戏。在某一时刻,玩家可以索取代币。我在想两个选择:

  1. 铸造代币并将其保存在钱包中,通过在合约中调用transferTo 将代币分发给玩家。
  2. 让玩家通过在合约中调用mintTo 直接铸造他们的收入。

    我想在服务器上保留声明功能,因为我想使用将发送到后端的令牌中的用户 ID 来查询数据库。我不知道如何确保在客户端中玩家会铸造他们获得的正确数量。

【问题讨论】:

    标签: javascript node.js ethereum solidity


    【解决方案1】:

    以太坊交易在客户端上签名,因为那是他们的密钥所在。当前的标准是在浏览器上运行它。您不能让其他人为任意交易付费;任何人都可以使用您的地址。

    【讨论】:

    • 此端点需要在服务器上解码的令牌。只有在用户使用用户名和密码登录后才能访问它。我需要知道每个用户累积了多少,这样我才能发送正确的数量。
    • 那不重要。如果您可以在没有用户使用他们的密钥签名的情况下发送交易,那么您将能够使用任何人的 gas。您需要以一种或另一种方式请求他们的 ECDSA 签名。
    • 我不认为我第一次解释得很好。我编辑了我的问题。
    猜你喜欢
    • 2022-06-20
    • 2021-08-28
    • 2022-01-22
    • 2014-09-24
    • 1970-01-01
    • 2022-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多