Here is the deployment step from the excellent Q&As:
> var greeter = greeterContract.new(_greeting, {from: eth.accounts[0], data: greeterCompiled.greeter.code, gas: 4000000},
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);
}
}
})
Contract transaction send: TransactionHash: 0x90d201388971770036898a7a22ab252cb0bf3c556f988a7b87583315cdaf58bc waiting to be mined...
undefined
> Contract mined! Address: 0x083628160c1cf218d14f2f0998c7a8dc72aec180
[object Object]
Blocks Synced Up To Where You Have A Balance In Your Account
If your local geth node has synced up to the point where it has the block containing the transaction that creates the 0.1 ETH balance in your account, you WILL be able to deploy the Greeter contract.
Reference: My geth node is taking ages to sync, can I still send ether? where a regular transaction is sent when the blockchain is not synced. The same principle applies when sending contract creation transactions.
You should see the Contract transaction send: TransactionHash: ... message as your geth client will be able to broadcast the transaction.
However, you will not see the message Contract mined! Address: ... on your geth client because your client will not have received the new block on the Mainnet blockchain containing your contract creation transaction.
You will have to wait until your geth client syncs up to the block containing your contract creation transaction before the Contract mined! Address: ... message is displayed in your console.
Blocks NOT Synced Up To Where You Have A Balance In Your Account
In this case, you will have a zero balance in your account, and your geth client will prevent you from sending your contract creation transaction to the Mainnet blockchain.