-1

我一直在尝试创建一个具有拍卖物品功能的 NFT 市场。但我不知道如何通过签署交易来实现这一点。
我尝试使用几乎所有从 web3.js 进行签名的方法,但它需要用户的私钥
但是有一个web3.eth.signTransaction不需要任何私钥来签署交易的功能,但它会在控制台上给出错误。说:Error: The method 'eth_signTransaction' does not exist / is not available
有人可以给我概述一下如何执行此签名和发送交易,以实现拍卖 nft (如 nft 市场)的功能:opensea 或基金会。

错误图片

4

1 回答 1

1

文档

签署交易。此帐户需要解锁。

它不需要私钥,但需要在节点上解锁帐户(用于签署交易)。这意味着节点需要持有私钥才能解锁帐户。

它通常允许在本地节点(例如 Ganache 或私有节点)上使用。

Infura 等公共节点通常禁用此功能(因此错误消息“eth_signTransaction不可用”),因为它们不存储您的私钥。


您可以要求用户使用他们的钱包签署交易。例如使用 MetaMask(或任何其他实现以太坊提供者 API的钱包):

const transactionParameters = {
  from: ethereum.selectedAddress, // must match user's active address
  to: 'your address'
};

await ethereum.request({
  method: 'eth_sendTransaction',
  params: [transactionParameters],
});
于 2021-09-27T11:44:39.197 回答