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