经过大量的研究,Ethereum.org Greeter示例代码似乎不再起作用了。下面是GitHub问题线程:https://github.com/ethereum/go-ethereum/issues/3793。有一些建议,我将在下面提及,尽管,作为一个菜鸟,它仍然不清楚。
这是一个可能的第一个地方,当开始开发Ethereum,所以我(和其他许多在那里)正在寻找一个明确的解决办法。
更好的例子:https://www.ethereum.org/greeter
在geth控制台中运行,下面是错误代码:
eth.getCompilers()
Error: The method eth_getCompilers does not exist/is not available
at web3.js:3104:20
at web3.js:6191:15
at web3.js:5004:36
at <anonymous>:1:1
var greeterSource = 'contract mortal { address owner; function mortal() { owner = msg.sender; } function kill() { if (msg.sender == owner) selfdestruct(owner); } } contract greeter is mortal { string greeting; function greeter(string _greeting) public { greeting = _greeting; } function greet() constant returns (string) { return greeting; } }' <-- obviously no error here
var greeterCompiled = web3.eth.compile.solidity(greeterSource)*
Error: The method eth_compileSolidity does not exist/is not available
at web3.js:3104:20
at web3.js:6191:15
at web3.js:5004:36
at <anonymous>:1:23我已经能够用'solc‘编译greeterSource,并且我在上面的GitHub线程上尝试了这个建议,尽管我不确定这在geth控制台中是否有效:
var fs = require('fs');
var exec = require('child_process').execSync;
exec('solc --bin --abi --optimize -o bin greeterSource.sol');
var abi = fs.readFileSync('bin/Greeter.abi');
var compiled = '0x' + fs.readFileSync('bin/Greeter.bin');即使在npm install fs之后,我仍然能理解:
Error: Cannot find module 'fs'
at s (web3.js:1:160)
at s (web3.js:1:122)
at <anonymous>:1:10这将处理Greeter示例中的下一个步骤:
var greeterContract = web3.eth.contract(greeterCompiled.greeter.info.abiDefinition);再一次,对于Ethereum开发来说,我确信经过一段时间之后,我会更好地掌握基础知识,尽管考虑到这个例子来自Ethereum.org,这应该更容易一些!谢谢!
P.S.>还可以就总体上更好的开发路径提供建议。我确实喜欢从命令行开始学习,但是一旦我得到它,您会推荐什么工具呢?
发布于 2017-08-02 17:12:25
自从1.6.0版本以来,Geth和web3库没有编译能力(比如web3.eth.compile.solidity())。
因此,您可以尝试部署Greeter合同的方法是使用solc编译它,然后将结果导入到geth控制台。以下是这种方法的完整示例:
在例子中
loadScript("test.js")用以代替
var abi = fs.readFileSync('bin/Greeter.abi');发布于 2017-06-20 01:18:12
调查Mist。这是一个超级方便的GUI工具,有一个内置的Solidity编译器。
首先在一个测试网上同步。一旦您拥有了测试以太,您就可以通过菜单部署合同。然后,只需将基本的欢迎契约代码复制并粘贴到窗口中来编译和部署它。
发布于 2017-08-03 05:57:07
如果您希望更多地坚持命令行,并一步一步地执行,那么下面是一个更新的版本,可以让您的第一段代码正常工作:https://alanbuxton.wordpress.com/2017/07/19/first-steps-with-ethereum-private-networks-and-smart-contracts-on-ubuntu-16-04/
https://ethereum.stackexchange.com/questions/18369
复制相似问题