因此,这个provider: new HDWalletProvider(privateKey, config.child.rpc)不能在客户端浏览器中使用,因为我需要用一个签名提供程序替换它,但我没有成功。
对于init合同,我通常用钩子替换为:
const { account, chainId, library } = useWeb3React()
library?.getSigner(account)那么我就可以在我的合同中使用了。但是现在我很难使用matic.js,我不知道如何在客户机浏览器上正确地使用它,因为matic.js只给出了使用node.js和HDWallet/直接私钥的例子。
所以在我初始化matic.js之后
const posClient = async () => {
const posClientx = new POSClient()
return posClientx.init({
network: "testnet",
version: "mumbai",
log: true,
child: {
provider: library?.getSigner(account),
defaultConfig: {
from: account,
},
},
parent: {
provider: library?.getSigner(account),
defaultConfig: {
from: account,
},
},
})
}那就叫吧
const client = await posClient()
console.log(client, "client")
const erc721Token = client.erc721(
"0x94f1e509eb86201313557463d0d7a1f8f9d2d2fa",
true
)
console.log(erc721Token, "erc721Token")
const result = await erc721Token.approveAll()
const txHash = await result.getTransactionHash()
console.log("txHash", txHash)
const receipt = await result.getReceipt()
console.log("receipt", receipt)我无法接收弹出元问题,如果它在node.js上(使用私钥)将立即进行事务处理,请告诉我我做错了什么?
发布于 2022-08-06 05:35:22
可以使用window.ethereum作为提供程序。
// provider that is selected in metamask
// for transfer, switch to polygon network
var mainProvider = new Web3(window.ethereum);
var maticProvider = new Web3(window.ethereum);
parent: {
provider: mainProvider,
defaultConfig: {
from: currentAccount
}
},
child: {
provider: maticProvider,
defaultConfig: {
from: currentAccount
}
}https://ethereum.stackexchange.com/questions/128070
复制相似问题