我想创建合同在围棋使用坚实,我开始了“你好世界”计划。
我创建了一个专用网络:
$geth --genesis private.json --networkid 1234 --datadir /home/user/Documents/genesisdata console在这里,我创建了一个新的帐户,然后我编写了下面的链接https://www.ethereum.org/greeter。
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() returns (string) { return greeting; } function test() returns (string){ return greeting; } }'我得到了:未定义
当我像这样在没有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() returns (string) { return greeting; } function test() returns (string){ return greeting; } }'我得到了:
“契约凡间{地址所有者;函数凡间(){ owner = msg.sender;}函数杀死(){ if (msg.sender == owner)自助解构(所有者);} contract是凡间{ string问候语;函数greet(String _greeting) public {问候= _greeting;}函数greet()返回(字符串){返回问候语;}函数测试()返回(字符串){返回问候语;}
因此,我在没有var的情况下继续代码,我编译:
greeter = greeterContract.new(_greeting,{from:web3.eth.accounts[0], data: greeterCompiled.greeter.code, gas: 210000}, function(e, contract){
if(!e) {
if(!contract.address) {
console.log("Contract transaction send: TransactionHash: " + contract.transactionHash + " waiting to be mined...");
} else {
console.log("Contract mined! Address: " + contract.address);
console.log(contract);
}
}
else{
console.log("Error:>>>>>>>>>>>>>");
console.log(e);
}})
直到:
greeter.greet();TypeError:“问候”不是1:1的函数
我不知道该怎么解决。
请给我看看我在这个过程中遇到的问题。
谢谢。
发布于 2016-07-22 09:08:25
你似乎不编译源代码吗?您刚刚声明了一个保存源代码的变量。这是主要的问题。
而且,显然,函数greet()不是用关键字constant声明的。因此,您必须用greeter.greet.call()调用它
PS :不需要做这些复杂的事情来创建你的开发链。只需运行get --dev --mine --minerthreads 1
发布于 2016-07-22 09:11:32
var greeterSource=...是正确的,Javascript每次都向您抛出这个undefined。别理它。
通过再次键入greeterSource,您可以看到变量的设置是正确的。您需要编译您与solc的合同,以便使用它,如tutoral所示。
https://ethereum.stackexchange.com/questions/7315
复制相似问题