繁体   English   中英

如何在不设置 private_key 的情况下使用 web3 或 ethers.js 创建交易

[英]How to create a transaction using web3 or ethers.js without setting private_key

我正在尝试做的事情:

构建一个允许用户以一定数量的代币购买服务的小型应用程序。 例如,服务 A 100 个代币,服务 B 500 个代币。这将用于和谐区块链上的自定义代币。

我所知道的:我已经知道如何连接到 metamask 并获取用户地址。 我可以使用签名者和提供者。

让我感到困惑的是:示例和文档都引用了 private_key 并创建了一个钱包,我不需要这样做,我需要使用用户现有的钱包。

我需要做什么:

  1. 提示用户钱包(和谐钱包或元掩码)中的交易,以获得一定数量的代币。

  2. 检查用户是否需要余额(知道我可以读取他们的余额似乎微不足道)。

  3. 进行交易。 阅读文档后似乎还可以。

  4. 获取收据,然后调用回调/我的代码。 同样,阅读文档后似乎还可以。

一切都非常简单,但是再一次 - 我阅读的每个文档总是提到设置私钥 - 我当然不需要这样做吗?

交易始终需要由生成发件人地址的私钥签名。 否则会被网络拒绝。

示例和文档都引用了 private_key 并创建了一个钱包,我不需要这样做,我需要使用用户现有的钱包。

我阅读的每个文档总是提到设置一个私钥——我当然不需要这样做吗?

后端方法是将私钥导入应用程序并使用它来签署交易。

但是,还有一种前端方法:向钱包浏览器扩展发送请求以签署交易并将其广播到网络。 然后钱包扩展会弹出一个 window 并让用户选择是否要签署交易(使用他们的私钥,不与应用程序共享)并广播它 - 或不。

您可以在MetaMask 文档页面中找到此类请求的示例。

这种方法的一个优点是您的应用程序不需要询问用户的私钥。 一个缺点是,如果用户没有安装与您的应用程序兼容的浏览器钱包,他们就无法发送交易(或者至少不那么容易)。


注意:我不熟悉 Harmony 钱包,但我假设它的工作方式与 MetaMask 类似——因为 Harmony 是一个与 EVM 兼容的网络,而 MetaMask 只支持与 EVM 兼容的网络。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM