问题标签 [consensys-truffle]

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

ethereum - 在 Etherscan 上验证 Truffle 合约时出现 ParserError

我有一个已部署到以太坊主网络的合约,合约代码在部署时可以正常工作和编译,我可以使用 metamask/MEW 与合约交互。

然而,当我去验证 Etherscan 上的合约时,我得到了一个编译错误。

我正在使用 etherscan 的 beta truffle 编译器:https ://etherscan.io/verifyContract2

我使用 npm truffle-flattener 将我的所有代码捆绑在一起

我使用以下方法创建了编码的构造函数参数:https ://abi.hashex.org/

然后我在 truffle.js 中使用了优化器,runs = 200:

然后我使用了在下面的 JSON 文件中设置的编译器版本:

以下在指向 Ownable 合约的 etherscan 中引发 ParseError:

错误内容如下:

但是,我想指出,这段代码编译正确,在 truffle 中没有错误,并且我已经成功地与主网上的合约进行了交互。

任何想法为什么编译器会抛出此错误?

0 投票
2 回答
319 浏览

blockchain - 区块链松露迁移错误

truffle migrate 使用网络“开发”。

我的 Solidity 文件(Migration.sol)

我的迁移文件 1_initial_migration.js

松露版 Truffle v4.1.11(核心:4.1.11) Solidity v0.4.24(solc-js)

0 投票
1 回答
246 浏览

ethereum - 最佳实践:如何处理合约回调的 120 秒超时?

使用 Truffle,我们得到了一个很好的合约包装器。但它有一个让我头疼的功能:

文档中的示例:

这提出了四个问题:

  1. 如何防止用户获得 120 秒的超时,因为他的交易仍然可能在几分钟后被挖掘(取决于 gas 价格和网络状况)?如果我们谈论的是以太币发送交易,这一点尤其重要。我不想通过声称交易失败(并建议他们重复)来欺骗我的用户。
  2. 它会在哪里出错?在带有第二个参数 ( function(result, error)) 或整个事物 ( .then( function(result) {...} ).catch(e)) 的回调中?我无法在本地使用 Ganache 对其进行测试。
  3. 您如何告知用户交易状态?在这 120 秒期间,您是在任何情况下都显示“交易成功”还是使用某种 throbber(这就是我现在正在考虑的)?
  4. 如何尽快获得 tx-hash?通过使用 MEW 发送,我立即获得了指向 etherscan.io 的交易链接——即使交易尚未传播。

特别是问题 #1 让我很头疼。

问候

0 投票
0 回答
604 浏览

deployment - infura ropsten 的松露合约迁移问题

在迁移我的智能合约时,我遇到了以下命令的问题

truffle migrate --reset --network ropsten.Issue 如下所示

使用网络“ropsten”。运行迁移:1_initial_migration.js 部署迁移...遇到错误,保释。网络状态未知。手动查看成功的交易。未知地址 - 无法为该地址签署交易

但是我的地址有足够的以太币,因为它同时显示在 Metamask 和 Etherscan 中。谁能指出为什么会发生这个问题?

我正在将 ropsten infura 用于 truffle-hd-wallet-provider。感谢任何帮助。

谢谢, 阿努

0 投票
1 回答
289 浏览

ethereum - 可重入攻击的智能合约良好实践

我是一名使用 Solidity 和区块链技术的新手,我正在阅读一些好的实践来改进我的代码。

我有一个关于我不太了解的代码的问题:

来源https ://github.com/ConsenSys/smart-contract-best-practices/blob/master/docs/known_attacks.md

在上面的代码中被认为是不安全的,因为恶意代理可以调用​​第 2 步所需的次数。我对此的问题是,恶意代理如何调用 misuse this 并多次调用该行代码。我显然在这里遗漏了一些东西。

0 投票
0 回答
183 浏览

webpack - 使用 truffle-solidity-loader 和 webpack 时如何包含 truffle.js?

我有一个简单的项目,它只是使用 webpack 使用 truffle loader 编译 Solidity 合约。我把所有东西都连接起来并尝试运行它并得到......

我试过把松露js放在多个地方......

  • 源根目录(由 index.js 导入)
  • 项目根目录(如此处的示例所示
  • 在 webpack 根目录中(在我的例子中是 ./webpack)

这些似乎都不起作用,它们都产生相同的错误。我尝试过使用这两个 truffle.js 文件...

使用 webpack 加载器时如何连接 truffle.js?

更新

我还尝试了以下...

但我仍然遇到同样的问题。

0 投票
1 回答
821 浏览

blockchain - 在测试我的 Solidity 智能合约时遇到问题(带 Truffle)

所以我正在构建一个基本的 NF 令牌。创建了一个基本的铸币功能和映射。我用松露测试应用程序,尝试了可靠性测试和 JS 测试。有以下错误。

测试脚本在合约中运行一个简单的内部函数,该函数返回一个 int = 1000 并将其与测试中声明的预期变量(让预期 = 1000)进行比较。这是 JS 测试脚本

下面是 Solidity 测试脚本:

我还尝试根据我声明的映射测试铸造的令牌 ID,以及令牌的所有者,我遇到了同样的问题。用 javascript 编写测试合约时,它无法识别原始 NFT 合约中的功能。在编写一个可靠的测试合约时,它几乎总是说“错误:处理交易时出现虚拟机异常:恢复”,没有别的。

最后,这是我试图测试的合同。感谢任何和所有的帮助,我对编码和以太坊非常陌生,所以我可能犯了很多错误。

0 投票
1 回答
3994 浏览

solidity - 如何完全卸载松露?

我尝试卸载 Truffle,因为我需要旧版本。我尝试使用“npm uninstall -g truffle”,但之后检查版本是否仍然安装

0 投票
2 回答
2688 浏览

smartcontracts - 无法在 web3 对象中设置提供程序

我正在学习关于 DApp 创建的在线课程,我目前正在尝试设置将在教程中使用的应用程序。

Dapp 是在 Chrome 上使用 Truffle 和 Metamask 设置的。所有 Dapp 文件都由课程提供(实际上是提供了一个 Ubuntu linux 实例以在虚拟机中使用),但很快就很明显,由于 Metamask 最新版本的变化(我认为课程日期为 2017 年),网络与帐户地址相关的前端控件(显示它们的下拉列表和调用将帐户地址发送到合约的函数的按钮)被破坏。作为整个生态系统的新手,我遵循了一个同学的建议,修改了这个initWeb3函数

对此

我知道关键的区别是ethereum.enable()电话。这确实使相关控件出现在(Chrome)网页中,现在 Metamask 还显示一个弹出窗口,要求用户批准其与帐户的通信。问题是当网页加载时,Chrome 记录如下错误:

我认为这与app.js文件中的更改有关,但我找不到解决方案。我尝试用 原始版本中存在App.web3Provider = new Web3.providers.HttpProvider(App.url)的“新”版本替换App.web3Provider = new Web3.providers.HttpProvider('http://127.0.0.1:9545');,但这没有任何区别。与givenProvider和相同currentProvider

我和其他同学已经与课程背后的工作人员签订了合同以寻求帮助,但没有提供任何帮助(我也与他们讨论了这个问题)。我用谷歌搜索了这个错误并花了很多时间读回结果,但到目前为止还没有提供解决方案——一些结果表明这实际上是一个 Web3 错误,但我不能确定。如果有人可以帮助解决这个问题,我们将不胜感激。

谢谢

0 投票
0 回答
422 浏览

truffle - 部署智能合约时松露卡住了

我在 ropsten 上使用 ledger nano s 作为提供者部署智能合约时遇到了一点问题。该脚本只是停留在第一次迁移

操作系统:Ubuntu 20

以太坊客户端:geth 版本:1.9.14-stable

松露版(松露版):5.1.29

节点版本(节点 --version):10.21.0

npm 版本(npm --version):6.14.5

我还在 github truffle 问题上发布了