我最近一直在尝试使用松露,并遵循以下教程:http://truffleframework.com/tutorials/pet-shop
每当我尝试设置事务时,我都会在下面遇到相同的错误
错误:错误:tx没有正确的nonce.account hasce of:14 tx hasce of:0
在网上查看并阅读了很多与此相关的文章,但到目前为止还没有找到可能导致此问题的原因.
根据我的理解,它似乎无法找到以前的事务来散列新的事务?
我正在使用 MetaMask 将交易发送到我的 DApp 中的合约。我需要有关如何在用户单击注销按钮时断开 MetaMask 帐户与我的 DApp 的帮助。
前端:ReactJS
后端:Web3js、Solidity(以太坊)
我的 dApp 必须连接到 MetaMask。文档中有两种粗鲁的解决方案:让用户每次手动单击连接 btn 或在页面加载后弹出连接确认。我想实现唯一方便的解决方案:第一次用户通过单击连接 btn 并与 MetaMask 弹出窗口交互来手动连接,然后我的 dApp 检测到连接仍然建立并使用此连接。我找不到解决方案,但我在其他 dApp 中看到了这个(例如捕获以太)我使用:
import detectEthereumProvider from '@metamask/detect-provider';
const provider = await detectEthereumProvider();
if (provider) {
connect(provider)
} else {
// kind of "Install the MetaMask please!"
}
function connect(provider) {
// How to check if the connection is here
if (//connection established) {
// Show the user connected account address
} else {
// Connect
provider.request({ method: "eth_requestAccounts" })
.then // some logic
}
}
Run Code Online (Sandbox Code Playgroud) 我目前正在升级以太坊 dApp(使用 React JS)以符合新的 EIP-1559 标准(又名伦敦硬分叉)。该应用程序使用 web3.js (v1.5.2) 发起交易,其形式类似于
const contract = new web3.eth.Contract(
contractABI,
CONTRACT_ADDRESS,
);
await contract.methods
.deposit(recepient, amount)
.send({ from: account, value })
Run Code Online (Sandbox Code Playgroud)
我们鼓励用户使用 MetaMask 与我们的应用程序交互。
尽管我在发送交易时既没有指定gasPrice、gasLimit、 也没有指定等效项maxPriorityFeePerGas或maxFeePerGas由 EIP-1559 指定,MetaMask 仍然警告(在我的本地测试环境中)“localhost 建议的汽油费”,并带有“未知的处理时间”和潜在的潜在风险。巨额费用。
单击“编辑”时会出现另一条警告消息,更糟糕的是,根据 MetaMask 的估计,我(或我猜 web3)所谓“建议”的值并不合理。
有没有办法使用 web3 与 MetaMask 接口来接受 MetaMask 的建议值,删除这些 MetaMask 警告并确保费用计算正确?我注意到查看https://app.uniswap.org/时发现,尽管 MetaMask 仍然显示第一个“app.unswap.org 建议的汽油费”警告,但 txn 时间已正确计算,并且单击“编辑”不会出现任何进一步的警告警告。Uniswap 与 MetaMask 更合理的交互是否可以使用 web3.js 复制?
我已将元掩码连接到使用安全帽创建的节点。http://localhost:8545设置链 id 以匹配安全帽网络链 id 后,我可以在元掩码中连接到网络上的此节点(31337)
如何将以太币发送到本地主机网络上的帐户/地址,以便这些帐户有足够的以太币来部署合约?
我正在 Linux 中设置安全帽。我首先使用这些命令设置了反应应用程序。
npx create-react-app react-dapp
cd react-dapp
Run Code Online (Sandbox Code Playgroud)
然后我使用此命令安装了一些安全帽依赖项。
npm install ethers hardhat @nomiclabs/hardhat-waffle \
ethereum-waffle chai \
@nomiclabs/hardhat-ether
Run Code Online (Sandbox Code Playgroud)
这一切都做得正确。然后我创建了安全帽配置和设置。
npx hardhat
Run Code Online (Sandbox Code Playgroud)
然后我编辑了hardhat.config.js文件。我有这样的地方。
module.exports = {
solidity: "0.8.4",
paths: {
artifacts: './src/artifacts',
},
networks: {
hardhat: {
chainId: 1337
}
Run Code Online (Sandbox Code Playgroud)
} }; 之后我创建了节点。
npx hardhat node
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
错误 HH604:运行 JSON-RPC 服务器时出错:错误:0308010C:数字信封例程::不受支持
我需要在我自己的域/服务器上验证连接了 MetaMask 钱包的用户是否是特定 NFT 的所有者,以便允许他使用特殊功能?基本上,我想让用户访问只有该 NFS 所有者才能访问的区域。
我原来的 NFT 在 opensea 中出售,但我不能使用 opensea 隐藏区域选项来为用户提供隐藏密码,因为下一个所有者(转售后)和旧所有者将拥有相同的密码,并且旧所有者仍然可以访问像这样。但我需要只有当前所有者才能访问。
我的用户/访问者已经可以在我自己的域中与 MetaMask 连接,并且我获得了活动帐户的公共 ETH 地址,但由于这只是 javascript 而我的后端是 PHP,所以我不能将 MetaMask 信息发布到我的 PHP 后端,因为这很容易被欺骗/破解。
如何确保当前连接的 MetaMask 帐户与 NFT 所有者(我知道)相同,并仅允许该用户访问 URL?
我当前的状态是用户连接他的 MetaMask,我使用 opensea API 来检查当前谁是 NFT 的所有者。我可以比较两个 eth 地址,但其中的缺陷显然是我使用 ajax 将 MetaMask 公共地址发送到我的后端,这仅用于测试,因为这当然是零保存!
预先感谢您提供我能得到的任何想法、帮助和提示。
PS:我的后端是PHP
我试图遵循devto.io的教程并将交易发送到智能合约,我需要使用运行npx hardhat node命令时创建的帐户之一连接我的 MetaMask 钱包。为此,我打开 MetaMask 并将网络更新为 Localhost 8545,但 Metamask 未连接到它并显示如下屏幕截图所示的错误。

我正在构建一个分散的应用程序,用户可以在其中将他们的加密货币钱包 (Metamask) 连接到我的网站。
They can initiate a connection request by clicking a button. On success, the wallet is connected and my website can interact with it.
Is there any way to initiate a disconnect request? Similar to a 'Log out' button. Currently, the users have to manually disconnect their wallet within Metamask settings which is not a straightforward process.