问题标签 [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.
ethereum - 将签名的交易发送到 Ropsten
使用 web3js 调用不需要签名的函数(例如不更新合约状态的函数)很容易。但是,除了手动解锁我的 MetaMask 钱包和调用Remix环境中的函数外,还不清楚如何调用需要签名的函数。
第一次将我的 dapp 部署到 Ropsten 后,我需要调用createItem(string name, uint price)
100 次来最初填充items
数组。由于我不想在 Remix 中手动执行此操作,因此我想编写一个自动执行此操作的脚本。
看起来我ethereumjs-tx
除了以web3js
编程方式签署交易之外还需要有 MetaMask。我还需要我的account
and privateKey
。有了所有这些信息和官方 web3js 文档,我想出了以下内容:
代码运行,但txParams
实际上缺少一个键:nonce
. 运行此程序时,您会收到以下错误:
以下是我的问题:
- 这通常是做我想做的事情的正确方法吗?
- 如果 1 为真,我如何获取
nonce
已部署合约的参数?
参考:
- http://web3js.readthedocs.io/en/1.0/
- https://github.com/ethereumjs/ethereumjs-tx
- https://ethereum.stackexchange.com/questions/21402/web3-eth-call-how-can-i-set-data-param
- 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 )之外,谷歌搜索并没有帮助。有谁知道如何解决这个问题?
ethereum - 如何检测将在 web3js 中失败的事务
我最近刚刚完成了与 Remix IDE 的一项相当复杂的合同。我现在将 web3 附加到前端,但是当我调用应该失败的函数时,它们仍然会通过 Metamask。
在 Remix 中测试我的合约时,我经常单击并调用某些需要语句的函数,我知道这些语句会失败,只是为了确认合约状态被正确记录。Remix 没有将事务发送到 metamask,而是输出错误消息,我也想自己处理事务错误。
我如何检查我的合同调用以查看它是否会失败。我必须使用预测气体的方法并以这种方式检测它吗?如果是,如何?我当前的代码如下:
上面的代码将拒绝元掩码确认视为错误,但应该失败的交易会通过设置异常高的气体限制的元掩码。函数 callFunction 在合约中,不带参数,但对区块链有影响,因此需要交易。函数的第一行是“require(state == 1);” 我目前将合同设置为状态 2,所以我预计交易会失败,我只想检测到它失败。
web3js - web3 - 从地址获取 erc20 代币的数量
在 etherscan 上,Token Trackr 部分中的 View Tokens 下拉列表列出了该地址有多少不同的 ERC20 代币以及数量,这是如何完成的?
我在这里或网上找不到很多教程或文章。
javascript - 如何在按钮点击反应时呈现承诺中的价值?
我有两个模块
应用程序.jsx
和contract.jsx
我正在将accounts
(承诺)函数从contract.jsx
to导出app.jsx
。由于我无法从 Promise 中返回值,因此我需要将值分配给 PromiseApp
内的组件状态(检查componentDidMount
)。为此,我需要将accounts
函数中的 'console.log(result)' 替换为 'this.setState({'accounts':result})'。但是组件和accounts
位于不同的模块中并且应该是独立的。我无法App
在我的accounts
函数中设置组件的状态。
如何将承诺中的值分配给App
组件内部的状态?还有其他更好的方法吗?我还可以使用一些代码更正来使我的组件更好地工作。
web3js - 如何使用 web3 js 通过地址获取令牌交易列表
我正在使用web3
js。我想要按地址的令牌交易列表(不是交易列表)。我已经使用过该getBlock
功能,但它仅适用于特定块。我没有阻止列表,我只想要按地址列出的列表。所以请帮助我如何获得令牌交易列表
javascript - 无法让 Metamask 弹出窗口出现
我设法编写了以下代码。这个想法是能够弹出一个询问我想要发送多少 ETH 的窗口。
但我无法获得弹出窗口。我花了几个小时来解决这个问题,但无法得出结论。
我有时能够得到弹出窗口,但只有当我刷新页面时。
谢谢!
ethereum - 为什么我的 web3.js 调用以太坊智能合约没有错误但没有效果?
我曾使用 MIST 将以太坊代币合约部署到我的私有链上。我可以毫无问题地使用 MIST 与这个代币合约进行交互。我可以在帐户之间转移令牌。但是当我使用我的 web3.js 脚本与我的私有链进行交互时,它没有错误但它只是无法在帐户之间转移令牌。但我可以使用这个 web3.js 脚本来获得正确的账户余额。我是以太坊开发的新手。欢迎任何帮助!我使用命令启动私有链:
为了让 Mist 连接到我的私有链,我使用以下命令:
这是我的 web3.js 脚本:
solidity - Web3 和智能合约中的椭圆曲线密码学
我一直在尝试使用 web3 库对智能合约中的数据进行签名。我在 truffle 开发控制台上试了一下,我尝试在 Solidity 中使用 erecover 来取回地址。不幸的是,我无法取回签名的地址。我在 Ganache 上进行了测试。代码中是否有任何错误?