问题标签 [solidity]

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

ethereum - 使用 solcjs 部署合约

我正在尝试按照该教程博客文章https://blog.topl.me/how-to-deploy-solidity/使用 solcjs 部署合同

这是我的代码

现在,当我实际运行脚本时,编译器会将那个错误发回给我。

错误:状态变量不支持类型“bytes32”。\n 映射 (address => bytes32) 餐馆;\n

这是我的合同代码。

我正在使用 solcjs 版本 0.4.4 错误不依赖于节点客户端,它在开发网络上的 geth 和 js-eth 都发生

0 投票
0 回答
73 浏览

node.js - 使用修饰函数实现智能合约层次结构的 ACL

我有 3 份合同要执行。合同是master和。所以主合约是由一个人发起的,即私有链的所有者(基于geth)。管理合约提供对某些地址的访问。这些管理实例由主创建。我正在使用修饰符来确保这一点。客户合同只能由管理员和主合同进行交互。admincustomer

我已将这些地址映射到存储在本地 Redis 数据库中的帐户(使用用户名和密码)。我的合同结构截图如下:

主合同

管理合同

客户合同

现在我需要进一步了解如何组合这些合约,并参考客户合约中的 master 和 admin 地址来使用修饰符checkMasterAndAdminAccess。理想情况下,当编译成 ABI 并在我的 Nodejs 应用程序中使用它时,我希望将这些合约放入单独的文件中,因为它们会变得很大。

这是推荐的做法吗?

只有一个人控制一个主合约实例(因此只有一个地址可以访问它)。其他合约可能被多次实例化

我可以就如何实现上述目标获得一些指导。

0 投票
1 回答
1336 浏览

javascript - 格式错误:地址无效

我有一个问题。我需要在 Javascript 中初始化具有钱包地址的人,然后将其传递给 Solidity 函数,但出现格式错误的错误。

我的 JavaScript 函数

并调用这个函数

和 Solidity 代码

但在那之后我有错误无效地址

0 投票
1 回答
10750 浏览

solidity - 在solidity 中,keccak 256 函数返回一个哈希值。keccak 256 返回多少位?

我使用了以下命令: keccak256('abc', 'pqr', 123); 一旦我运行它,我就会得到一个值。这是多少位值?

0 投票
1 回答
1613 浏览

blockchain - 向以太坊智能合约发送价值时出错

我有 geth 1.5.2 并使用 Mist-linux64-0-8-7 在 testnet 上工作。当我尝试通过调用任何函数向我的合约发送一些以太(值)时,我遇到了一个简单的问题。例如,即使这个虚拟函数也不能使用非零值,但可以正常使用零值:

令人惊讶的是,我可以在 Mist 中看到一条警告消息“似乎此交易将失败。如果您提交它,它可能会消耗您发送的所有气体。” 这不取决于我提供的气体量。即使我投入了 500,000 的 gas,交易似乎也没有完成。

你可以在这里看到它的结果: https ://testnet.etherscan.io/tx/0x3206118530079d1b416dc649c6f0a89283f9457e9189f259b3429cf0c6a998d0

有消息

警告!合约执行过程中遇到错误【错误跳转目的地】

我试图在不同的合约中运行不同的功能。我什至使用 sendTransaction 功能直接从 geth 控制台执行相同操作,但我仍然无法使其工作。没查到有没有人有类似的问题。如果您有任何想法,请帮助我。

0 投票
1 回答
4397 浏览

ethereum - 在 Solidity 中返回对象数组

我试图从合同中返回样本对象,但数据始终为空白。我使用 BlockApps WebApi 来完成这项工作(http://blockapps.net/documentation)。它总是只返回一个逗号分隔的空白字符串。有什么帮助吗?

0 投票
2 回答
453 浏览

ethereum - Solidity 卡在挖矿交易中

我正在尝试在以太坊区块链中部署一个可靠的合约。当我直接按下它下方的创建按钮时,一条消息说“等待交易被挖掘......”无限期地出现。我尝试部署的合同非常简单直接,我是从 youtube 教程中获得的。在本教程中,按下创建按钮后,元掩码插件会弹出一条消息,以确保您要部署合约,在我的情况下它不会因为它卡在“等待交易被挖掘...”。任何想法为什么会这样?先感谢您

0 投票
2 回答
1853 浏览

ethereum - 创建以太坊代币并设置交易费用

由于与以太坊创建智能合约涉及到以太币的用户,因此重新填充所有用户的以太币对公司来说成本很高。因此,假设一家公司决定通过以太坊网络发行代币,而该代币代表一种新货币。每次用户向其他人发送代币时,代币的原始创建者能否获得交易费用?这样,公司就可以轻松地用以太币重新填充每个人的代币。

0 投票
1 回答
1997 浏览

token - Solidity 合约中代币的自动转移

我是 Solidity 的新手,我完成了一个教程来创建我自己的令牌。

有没有办法在某个时间间隔自动将我的代币转移到指定地址?换句话说...

我应该在合约中添加什么代码,将 100 个代币转移到钱包地址 0x... 每天一次,直到未来?

我使用了以太坊基金会网站上的代码:https ://www.ethereum.org/greeter

0 投票
0 回答
518 浏览

test-coverage - solcover 无法使用我的简单添加合同生成测试覆盖率

我想使用 solcover 生成合同的测试覆盖率。

https://github.com/JoinColony/solcover

我用简单的测试它:

这是我的测试代码:

但是编译时会出现一些错误。

Add.sol:2:1: Warning: Source file does not specify required compiler version!Consider adding "pragma solidity ^0.4.6 contract Add { ^ Spanning multiple lines. Compilation failed. See above. fs.js:549

然后我添加这样的编译版本:

现在它通过了编译。但是这次我得到了错误:

cp: no such file or directory: ./../originalContracts/Migrations.sol rm: no such file or directory: ./allFiredEvents Compiling Add.sol... Contract: Add ✓ should return 5 when add 2 and 3 1 passing (15s) fs.js:549 return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode); ^ Error: ENOENT: no such file or directory, open './allFiredEvents' at Error (native) at Object.fs.openSync (fs.js:549:18) at Object.fs.readFileSync (fs.js:397:15) at Object.<anonymous> (/Users/maiffany/graduate/mytest/solcover/runCoveredTests.js:60:13) at Module._compile (module.js:409:26) at Object.Module._extensions..js (module.js:416:10) at Module.load (module.js:343:32) at Function.Module._load (module.js:300:12) at Function.Module.runMain (module.js:441:10) at startup (node.js:139:18)

在 runCoveredTests.js 我发现了这个:

55:shell.cp("./../originalContracts/Migrations.sol",./../contracts/Migrations.sol"); 56: 57:shell.rm('./allFiredEvents'); //Delete previous results 58:shell.exec('truffle test --network coverage'); 59: 60:events = fs.readFileSync('./allFiredEvents').toString().split('\n')

我想也许是这个命令生成了文件“allFiredEvents”。所以我在命令行中尝试这个:

truffle test --network coverage Compiling Add.sol... Contract: Add ✓ should return 5 when add 2 and 3 1 passing (24s)

但我仍然找不到文件“allFiredEvents”。

那么我哪里做错了?