1

I'm trying to build my first smart contract. I'm trying to do the example here https://www.ethereum.org/greeter. So it seems that this example is so out of date it doesn't work at all. I've been going through the questions about on here and I think I'm ALMOST there. I've been following the "open 2 windows" example here. I'm using geth 1.8.2-stable. In one window I'm running:

geth unlock (my_account) --mine --minerthreads 1 --dev

That seems to open and run fine.
In the second window I run, which gives me the geth console:

geth --dev attach ipc:/Users/pickles/Library/Ethereum/geth.ipc

The first clue something is wrong is that this always returns 0, even when I let the miner run for a while:

web3.fromWei(eth.getBalance(eth.accounts[0]).toNumber(), "ether")

and when I try to create the contract I get :

loadScript('createGreeter.js');  
Error: exceeds block gas limit  
true

Here's what's in my scripts:

web3.personal.unlockAccount(web3.personal.listAccounts[0],"password", 15000) var greeterFactory = eth.contract([{"constant":false,"inputs":[],"name":"kill","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"greet","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_greeting","type":"string"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]);

var greeterCompiled = "0x" + "6060604052341561000f57600080fd5b6040516103a93803806103a983398101604052808051820191905050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060019080519060200190610081929190610088565b505061012d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100c957805160ff19168380011785556100f7565b828001600101855582156100f7579182015b828111156100f65782518255916020019190600101906100db565b5b5090506101049190610108565b5090565b61012a91905b8082111561012657600081600090555060010161010e565b5090565b90565b61026d8061013c6000396000f30060606040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806341c0e1b514610051578063cfae321714610066575b600080fd5b341561005c57600080fd5b6100646100f4565b005b341561007157600080fd5b610079610185565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100b957808201518184015260208101905061009e565b50505050905090810190601f1680156100e65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610183576000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b565b61018d61022d565b60018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156102235780601f106101f857610100808354040283529160200191610223565b820191906000526020600020905b81548152906001019060200180831161020657829003601f168201915b5050505050905090565b6020604051908101604052806000815250905600a165627a7a72305820234e8969350f598da732b0617d2fee771c0d4bfae8c5747c53171290623ebf090029"

var _greeting = "Hello Pickles!!!"

and this is what I'm running that returns the error:

var greeter = greeterFactory.new(_greeting,{from:eth.accounts[0],data:greeterCompiled,gas:47000000}, function(e, contract){
    if(e) {
      console.error(e); // If something goes wrong, at least we'll know.
      return;
    }
    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);
    } });

Here's the code before it was compiled:

pragma solidity ^0.4.21;

contract mortal {
    /* Define variable owner of the type address */
    address owner;

    /* This function is executed at initialization and sets the owner of the contract */
    function mortal() public { owner = msg.sender; }

    /* Function to recover the funds on the contract */
    function kill() public { if (msg.sender == owner) selfdestruct(owner); }
}

contract greeter is mortal {
    /* Define variable greeting of the type string */
    string greeting;

    /* This runs when the contract is executed */
    function greeter(string _greeting) public {
        greeting = _greeting;
    }

    /* Main function */
    function greet() public constant returns (string)  {
        return greeting;
    }
}
  • I've never used geth in 'dev' mode but you can try adding --targetgaslimit '9000000000000' to your geth command line. – Ismael Apr 19 '18 at 1:09
  • Just tried that, I also removed the --dev flag. Still getting the same error – Pickles Apr 19 '18 at 20:11
0

I had the same issue. I just changed

gas:47000000 to gas:999999

And it worked! It seems the number they gave in the example is too high. I'm not sure why though....yet!

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.