问题标签 [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.
ethereum - 使用 solcjs 部署合约
我正在尝试按照该教程博客文章https://blog.topl.me/how-to-deploy-solidity/使用 solcjs 部署合同
这是我的代码
现在,当我实际运行脚本时,编译器会将那个错误发回给我。
错误:状态变量不支持类型“bytes32”。\n 映射 (address => bytes32) 餐馆;\n
这是我的合同代码。
我正在使用 solcjs 版本 0.4.4 错误不依赖于节点客户端,它在开发网络上的 geth 和 js-eth 都发生
node.js - 使用修饰函数实现智能合约层次结构的 ACL
我有 3 份合同要执行。合同是master
和。所以主合约是由一个人发起的,即私有链的所有者(基于geth)。管理合约提供对某些地址的访问。这些管理实例由主创建。我正在使用修饰符来确保这一点。客户合同只能由管理员和主合同进行交互。admin
customer
我已将这些地址映射到存储在本地 Redis 数据库中的帐户(使用用户名和密码)。我的合同结构截图如下:
主合同
管理合同
客户合同
现在我需要进一步了解如何组合这些合约,并参考客户合约中的 master 和 admin 地址来使用修饰符checkMasterAndAdminAccess
。理想情况下,当编译成 ABI 并在我的 Nodejs 应用程序中使用它时,我希望将这些合约放入单独的文件中,因为它们会变得很大。
这是推荐的做法吗?
只有一个人控制一个主合约实例(因此只有一个地址可以访问它)。其他合约可能被多次实例化
我可以就如何实现上述目标获得一些指导。
javascript - 格式错误:地址无效
我有一个问题。我需要在 Javascript 中初始化具有钱包地址的人,然后将其传递给 Solidity 函数,但出现格式错误的错误。
我的 JavaScript 函数
并调用这个函数
和 Solidity 代码
但在那之后我有错误无效地址
solidity - 在solidity 中,keccak 256 函数返回一个哈希值。keccak 256 返回多少位?
我使用了以下命令: keccak256('abc', 'pqr', 123); 一旦我运行它,我就会得到一个值。这是多少位值?
blockchain - 向以太坊智能合约发送价值时出错
我有 geth 1.5.2 并使用 Mist-linux64-0-8-7 在 testnet 上工作。当我尝试通过调用任何函数向我的合约发送一些以太(值)时,我遇到了一个简单的问题。例如,即使这个虚拟函数也不能使用非零值,但可以正常使用零值:
令人惊讶的是,我可以在 Mist 中看到一条警告消息“似乎此交易将失败。如果您提交它,它可能会消耗您发送的所有气体。” 这不取决于我提供的气体量。即使我投入了 500,000 的 gas,交易似乎也没有完成。
你可以在这里看到它的结果: https ://testnet.etherscan.io/tx/0x3206118530079d1b416dc649c6f0a89283f9457e9189f259b3429cf0c6a998d0
有消息
警告!合约执行过程中遇到错误【错误跳转目的地】
我试图在不同的合约中运行不同的功能。我什至使用 sendTransaction 功能直接从 geth 控制台执行相同操作,但我仍然无法使其工作。没查到有没有人有类似的问题。如果您有任何想法,请帮助我。
ethereum - 在 Solidity 中返回对象数组
我试图从合同中返回样本对象,但数据始终为空白。我使用 BlockApps WebApi 来完成这项工作(http://blockapps.net/documentation)。它总是只返回一个逗号分隔的空白字符串。有什么帮助吗?
ethereum - Solidity 卡在挖矿交易中
我正在尝试在以太坊区块链中部署一个可靠的合约。当我直接按下它下方的创建按钮时,一条消息说“等待交易被挖掘......”无限期地出现。我尝试部署的合同非常简单直接,我是从 youtube 教程中获得的。在本教程中,按下创建按钮后,元掩码插件会弹出一条消息,以确保您要部署合约,在我的情况下它不会因为它卡在“等待交易被挖掘...”。任何想法为什么会这样?先感谢您
ethereum - 创建以太坊代币并设置交易费用
由于与以太坊创建智能合约涉及到以太币的用户,因此重新填充所有用户的以太币对公司来说成本很高。因此,假设一家公司决定通过以太坊网络发行代币,而该代币代表一种新货币。每次用户向其他人发送代币时,代币的原始创建者能否获得交易费用?这样,公司就可以轻松地用以太币重新填充每个人的代币。
token - Solidity 合约中代币的自动转移
我是 Solidity 的新手,我完成了一个教程来创建我自己的令牌。
有没有办法在某个时间间隔自动将我的代币转移到指定地址?换句话说...
我应该在合约中添加什么代码,将 100 个代币转移到钱包地址 0x... 每天一次,直到未来?
我使用了以太坊基金会网站上的代码:https ://www.ethereum.org/greeter
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”。
那么我哪里做错了?