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;
    }
}
Pickles
  • 11
  • 1
  • 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 01:09
  • Just tried that, I also removed the --dev flag. Still getting the same error – Pickles Apr 19 '18 at 20:11

1 Answers1

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!

Arran Duff
  • 121
  • 2