问题标签 [metamask]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
587 浏览

ethereum - ERC20 代币。无法获取变量,也无法使用已部署合约的方法

我已经通过 Ropsten 网络上的 Metamask 部署了 ERC20 代币合约。问题是我正在尝试通过 web3 与它进行交互。我遵循了 SO 和 SE 中提供的与令牌传输和方法调用相关的答案。

正如你将看到的,我不是在这里转移代币,而是使用我的solidity合约方法来设置代币的初始所有者。合约中的方法接收 2 个参数,一个地址和一个 tokenId。

当我使用代码将令牌转移到测试 Metamask 帐户时,它会失败,因为如果我进入这个测试帐户并导入令牌,它没有。

作为参考,这个 tokenId 基本上是由我的变量 nextTokenIdToAssign 提供的,我这样称呼它:

奇怪的是,当我尝试 console.log 时,它返回为未定义。另外,在问题评论之后,我使用了这个问题

它只是返回一个空值。评论表明我的构造函数或父构造函数发生了崩溃。

我在这里遗漏了一些重要的细节吗?

完整代码如下:

编辑 1

这是 setInitialOwner 的合约代码:

编辑 2 我更改了 tokenToAssign 并添加了

0 投票
1 回答
634 浏览

javascript - 使用元掩码的公钥和私钥通过非对称加密在 ipfs 上上传文件

我想在使用用户的元掩码公共地址加密文件后上传文件,然后用户应该能够使用他的元掩码私钥对其进行解密。如何实现此功能?

0 投票
0 回答
128 浏览

ethereum - 未调用 web3 合同方法

我有以下代码片段,它使用 web3 调用合约方法,由于某种原因,当 Metamask 打开并单击确认发送交易时,没有任何反应。Metamask 只是继续加载并说交易已批准。此外,回调函数没有被执行。为什么会这样?

0 投票
1 回答
1345 浏览

events - Web3 事件监听器。检查元掩码登录

所以我有这个默认的元掩码事件侦听器来检查用户是否已连接。我添加了一个额外的函数(第 4 行),它将在容器中显示钱包地址。但是,如果在未检测到元掩码时尝试向容器附加不同的消息,则会得到一个空容器。我错过了什么?

0 投票
1 回答
914 浏览

ethereum - 使用 0x.js api 签署订单时获取无效签名

我一直在尝试向https://api.openrelay.xyz/v0发送订单 我使用 ZeroEx api 和 @0xproject/connect 来执行此操作。我正在使用 Ropstan 测试网络。

这是我使用的流程和代码:

  1. 首先我创建了一个订单对象:
  1. 然后将 exchangeContractAddress 属性添加到订单对象:

order.exchangeContractAddress = zeroEx.exchange.getContractAddress();

  1. 使用 getFeesAsync 方法添加一些其他费用属性:
  1. 然后尝试签署订单,以便我可以将订单发送到 openrelay 服务器:

这是我面临的问题:在尝试从元掩码弹出窗口中签署订单时,

“zeroEx.signOrderHashAsync”

fucntion 返回 false 而不是返回我应该获得签名的承诺,而不是抛出"INVALID SIGNATURE"错误。我也调试了signOrderHashAsync函数,发现订单哈希和制造商地址发送到已验证。在这个函数中,他们尝试从 orderhash 中获取制造商地址,然后检查它是否与作为参数传递的制造商地址匹配。但他们不匹配。从那里我猜到我生成的订单哈希不正确。但我正在使用ZeroEx.getOrderHashHex函数,它是 api 函数。我很困惑我在哪里做错了。你能帮我指导一下我做错了什么吗?

顺便说一句,我在 getOrderHashHex 函数中传递的订单对象是:

在这里,我通过字符串化来展示它。但在代码中我将它作为对象发送。我得到的订单哈希是:

“0x7795cee56f6167f6c50f177c08ecc1bffc778456f382b7664d40db42c07eac42”

先感谢您。问候

0 投票
2 回答
718 浏览

ethereum - 在循环中发送 .send 请求只会设置循环的最后一个值 i 次

我知道问题不是智能合约,因为我在 Remix 中对它进行了彻底的测试,并在不同的国家/地区进行了推送。我使用 web3 和 Metamask。

合约中的所有值都设置为“test4”

0 投票
1 回答
2343 浏览

ethereum - 从新创建的帐户中使用 web3 调用合约方法

我需要在不使用 MetaMask 的情况下从我的以太坊合约中调用方法。我使用 Infura API 并尝试从最近使用 web3.eth.create() 方法创建的帐户调用我的方法。此方法返回如下对象:

我还使用 infura 提供程序:

所以,当我尝试这样写时:

我有这个错误:

错误:在给定选项和默认选项中都没有指定“发件人”地址。

from如果我在选项中写它怎么可能不是地址?

PS 使用 Metamask 我的应用程序运行良好。但是当我从 MetaMask 注销并尝试创建新帐户并使用它时,我遇到了这个问题。

0 投票
1 回答
2904 浏览

javascript - web3.eth.accounts[0] 返回未定义

我是 Solidity 的新手,我正在通过一个简单的 web 应用程序来探索它。我有一个 Web 应用程序,它接受一些详细信息和一个按钮,应将详细信息部署到智能合约创建的块中。详细信息已从 remix IDE 成功部署,但通过 Web 应用程序进入时出现以下异常。

在网上冲浪时,我发现这可能是因为web3.eth.accounts[0]返回“未定义”,这就是我的情况。

相反,虽然在web3.eth控制台上显示它确实在索引 0 处显示帐户和MetaMask地址。我读到它可能是因为web3js 1.0MetaMask 可能还不完全支持,但我无法找到解决方案。

还有如何检查我正在使用的 web3 的版本,以及如何在必要时将其降级。

这就是我尝试访问的方式web3.eth.accounts[0]

我也尝试了以下方法,但无济于事:

这将返回帐户地址,但 myAccount 变量在 getAccounts 方法之外使用时再次返回“未定义”。在 if 部分中编写进一步的逻辑也无助于给出上述异常。

我已经尝试了一些事情,但无法找到解决方案。如果我有任何误解,请指导和纠正。

编辑

你可以在这里找到源代码。 https://github.com/anishsamant/Solidity-Demo

请参阅Courses.sol以获取 Solidity 文件 请参阅index.html以获取 Web 应用程序。

0 投票
1 回答
930 浏览

ethereum - 无法使用 MetaMask 在我的 Dapp 中注入 Web 3 - 请协助

我有一个带有以下代码的简单 HTML 文件,试图从 Chrome 连接到我的智能合约。

使用我的 localhost:8545 代码可以完美运行,但是当我停止 localhost 时,它只是没有通过 MetaMask 插件连接。我尝试了一切,关闭浏览器,退出 MetaMask 并重新登录新页面,重新安装 MetaMask。没有任何效果。我的刷新页面一直在寻找本地主机连接。

0 投票
0 回答
349 浏览

blockchain - Web3js 与没有元掩码的本地松露进行交互

我的 dapp 使用元掩码在 ganache 上正确运行以签署交易。但是,我想停止使用元掩码并让交易自己签名。

我想继续使用 ganache,因为这仅用于演示演示。但是,我不确定如何在没有元掩码的情况下连接智能合约。

请建议。