问题标签 [web3js]

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 回答
703 浏览

solidity - 使用 truffle 在solidity 中调用函数时出现新的 BigNumber() 错误。如何修复错误?

当我尝试使用 truffle 调用我的solidity 函数时出现此错误。

在此处输入图像描述

我的可靠性代码如下:

我打电话的方式returnNumber()是:

此外,这个解决方案根本没有帮助。因此,我单独询问。

0 投票
4 回答
12063 浏览

reactjs - 在 React 中使用来自 MetaMask 的 web3

我正在尝试在 React js 应用程序中使用 MetaMask 中的 web3,如下所示:

这是我在 chrome 的开发控制台中得到的输出:

在此处输入图像描述

显然,在某些时候,MetaMask 根据前两行正确定义了 web3,但随后 react 会抛出一个错误,指出 web3 没有为它出现在 if(typeof web3 !== 'undefined') 中的实例定义。我尝试过的一切都会导致相同的错误或 web3 无法加载。

0 投票
2 回答
6305 浏览

ethereum - 将签名的交易发送到 Ropsten

使用 web3js 调用不需要签名的函数(例如不更新合约状态的函数)很容易。但是,除了手动解锁我的 MetaMask 钱包和调用Remix环境中的函数外,还不清楚如何调用需要签名的函数。

第一次将我的 dapp 部署到 Ropsten 后,我需要调用createItem(string name, uint price)100 次来最初填充items数组。由于我不想在 Remix 中手动执行此操作,因此我想编写一个自动执行此操作的脚本。

看起来我ethereumjs-tx除了以web3js编程方式签署交易之外还需要有 MetaMask。我还需要我的accountand privateKey。有了所有这些信息和官方 web3js 文档,我想出了以下内容:

代码运行,但txParams实际上缺少一个键:nonce. 运行此程序时,您会收到以下错误:

以下是我的问题:

  1. 这通常是做我想做的事情的正确方法吗?
  2. 如果 1 为真,我如何获取nonce已部署合约的参数?

参考:

  1. http://web3js.readthedocs.io/en/1.0/
  2. https://github.com/ethereumjs/ethereumjs-tx
  3. https://ethereum.stackexchange.com/questions/21402/web3-eth-call-how-can-i-set-data-param
  4. https://ethereum.stackexchange.com/questions/6368/using-web3-to-sign-a-transaction-without-connecting-to-geth

更新:

感谢亚当,现在我学会了如何获得nonce. 所以我添加了以下代码:

但现在我一直遇到这个异常:

未处理的拒绝错误:返回错误:rlp:输入字符串对于 uint64 而言太长,解码为 (types.Transaction)(types.txdata).AccountNonce

除了让我找到这个具有异常处理程序的文件( https://github.com/ethereum/go-ethereum/blob/master/rlp/decode.go )之外,谷歌搜索并没有帮助。有谁知道如何解决这个问题?

0 投票
1 回答
3737 浏览

ethereum - 如何检测将在 web3js 中失败的事务

我最近刚刚完成了与 Remix IDE 的一项相当复杂的合同。我现在将 web3 附加到前端,但是当我调用应该失败的函数时,它们仍然会通过 Metamask。

在 Remix 中测试我的合约时,我经常单击并调用某些需要语句的函数,我知道这些语句会失败,只是为了确认合约状态被正确记录。Remix 没有将事务发送到 metamask,而是输出错误消息,我也想自己处理事务错误。

我如何检查我的合同调用以查看它是否会失败。我必须使用预测气体的方法并以这种方式检测它吗?如果是,如何?我当前的代码如下:

上面的代码将拒绝元掩码确认视为错误,但应该失败的交易会通过设置异常高的气体限制的元掩码。函数 callFunction 在合约中,不带参数,但对区块链有影响,因此需要交易。函数的第一行是“require(state == 1);” 我目前将合同设置为状态 2,所以我预计交易会失败,我只想检测到它失败。

0 投票
1 回答
3585 浏览

web3js - web3 - 从地址获取 erc20 代币的数量

在 etherscan 上,Token Trackr 部分中的 View Tokens 下拉列表列出了该地址有多少不同的 ERC20 代币以及数量,这是如何完成的?

我在这里或网上找不到很多教程或文章。

0 投票
1 回答
1165 浏览

javascript - 如何在按钮点击反应时呈现承诺中的价值?

我有两个模块

应用程序.jsx

和contract.jsx

我正在将accounts(承诺)函数从contract.jsxto导出app.jsx。由于我无法从 Promise 中返回值,因此我需要将值分配给 PromiseApp内的组件状态(检查componentDidMount)。为此,我需要将accounts函数中的 'console.log(result)' 替换为 'this.setState({'accounts':result})'。但是组件和accounts位于不同的模块中并且应该是独立的。我无法App在我的accounts函数中设置组件的状态。

如何将承诺中的值分配给App组件内部的状态?还有其他更好的方法吗?我还可以使用一些代码更正来使我的组件更好地工作。

0 投票
1 回答
7286 浏览

web3js - 如何使用 web3 js 通过地址获取令牌交易列表

我正在使用web3js。我想要按地址的令牌交易列表(不是交易列表)。我已经使用过该getBlock功能,但它仅适用于特定块。我没有阻止列表,我只想要按地址列出的列表。所以请帮助我如何获得令牌交易列表

0 投票
0 回答
1220 浏览

javascript - 无法让 Metamask 弹出窗口出现

我设法编写了以下代码。这个想法是能够弹出一个询问我想要发送多少 ETH 的窗口。

但我无法获得弹出窗口。我花了几个小时来解决这个问题,但无法得出结论。

我有时能够得到弹出窗口,但只有当我刷新页面时。

谢谢!

0 投票
1 回答
848 浏览

ethereum - 为什么我的 web3.js 调用以太坊智能合约没有错误但没有效果?

我曾使用 MIST 将以太坊代币合约部署到我的私有链上。我可以毫无问题地使用 MIST 与这个代币合约进行交互。我可以在帐户之间转移令牌。但是当我使用我的 web3.js 脚本与我的私有链进行交互时,它没有错误但它只是无法在帐户之间转移令牌。但我可以使用这个 web3.js 脚本来获得正确的账户余额。我是以太坊开发的新手。欢迎任何帮助!我使用命令启动私有链:

为了让 Mist 连接到我的私有链,我使用以下命令:

这是我的 web3.js 脚本:

0 投票
0 回答
228 浏览

solidity - Web3 和智能合约中的椭圆曲线密码学

我一直在尝试使用 web3 库对智能合约中的数据进行签名。我在 truffle 开发控制台上试了一下,我尝试在 Solidity 中使用 erecover 来取回地址。不幸的是,我无法取回签名的地址。我在 Ganache 上进行了测试。代码中是否有任何错误?