繁体   English   中英

使用私钥创建的钱包实例自动创建和签署交易

[英]create and sign transaction automatically with wallet instance created with a private key

我有一份合同,我想在某些时候从我的 web3 应用程序中使用特定的钱包自动与之交互。 只有我的钱包 (A) 可以与合约交互。 我创建了一个所述钱包的实例,当我使用该钱包登录时,我可以单击 Web 前端上的一个按钮,让它弹出让我签名。

然而,我需要的是让另一个用户单击该按钮,然后钱包调用合同上的方法并对其进行签名,而无需我对其进行签名。

用户A:使用私钥创建的钱包,可以调用solidity合约中的方法。 用户 B:拥有来自同一合约的代币,使用它们登录并在网页上做某事。 无法调用该方法。

简而言之,场景是用户 B 使用他们的钱包登录网站,做了一些最终用户 A 的钱包调用合约中的方法并吃掉费用的事情。

当我这样做时,我可以很好地调用该方法

  const provider = new ethers.providers.Web3Provider(window.ethereum);
  const wallet = new ethers.Wallet(PRIVATE_KEY, provider);
  const contract = new ethers.Contract(address, abi, wallet);
  contract.method();

使用该钱包登录时,钱包会弹出并要求我签名。 假设它有汽油钱,我将如何自动执行此操作,在需要时签名而不被提示?

只需创建钱包并导出您的私钥,然后使用此代码

let privateKey="your private key"; 
let wallet = new ethers.Wallet(privateKey); 
 let provider = "the provider";
 let walletWithProvider = new ethers.Wallet(privateKey, provider); 

现在您不需要每次都接受合约交易您可以在此处查看文档以获取更多信息https://docs.ethers.io/v5/api/signer/

暂无
暂无

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

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