Publishing a Smart Contract on Geth Console

Publishing a Smart Contract on Geth Console

Posted By : Abhishek Sagu | 14-Nov-2019

Smart Contracts are an integral part of the Ethereum blockchain. They assit in enablingg credible transaction executing without getting third parties invloved. Using this tutorial, you will learn how to deploy smart contracts on your geth node, be it testnet like ropsten and rinkeby or mainnet. You can also use this method to deploy contracts on a private testnet.


Pre Requisites

1) OS:- Ubuntu 16.04 or later

2) A running geth node


What exactly are smart contracts?

A smart contract is a self-executing contract with the terms of the agreement between buyer and seller being directly written into lines of code.It can be visualised as an application where the code and the agreements contained therein exist across a distributed, decentralized network like a blockchain network. The code controls the execution, and transactions are trackable and irreversible.


Once a smart contract is deployed , its code and functionality cannot  be changed. If you make any error while publishing , a new contract instance has to be published. Thats why we should test our smart contract by testing it on testnets first before publishing it on the mainnet.


Advantages of smart contracts

  1. Transparency:- The code for each smart contract is available for anyone to see on the ethernet explorer. This reduces any chance of foul play by the contract publisher.
  2. Immutability:- Once a smart contract is published , its code and functionality cannot be changed ,so users always get what they signed up for. 
  3. Speed :- High speed of execution thanks to the use of mathematical algorithms in blockchain applications instead of bureaucratic mechanisms.


Publishing the smart contract

Now that you know what smart contract are and what are its advantages ,you can use the following steps to deploy your own smart contract using geth console on the ethereum network.This network can be a private testnet , ropsten or even mainnet.


  1. Enter the geth console
  $ geth attach <ip>:<port on which geth is running>


For example , if you want to publish contract on your local machine , say at port 8545 , run

$ geth attach



  1. Take the bytecode of the contract you want to publish and store it in a variable name greeterHex
>greeterHex = "0x<copy and paste the contents of contract bin file  here>"


  1. Take the ABI of the contract and store it in a variable


 > greeterAbi = <Contract ABI here>


  1. Create Contract by using ABI variable
>greeterInterface = eth.contract(greeterAbi)


  1. Publish contract
>greeterTx =

"hello contract",


from: eth.accounts[0],

data: greeterHex,

gas: 1000000




Using this command, the coinbase address would publish the contract on the network.

If you want to publish the contract using some other address,


(i) first of all unlock that account using 

>personal.unlockAccount(<publisher address here>)


This will prompt you for the password to unlock this account 

(ii) After successfully unlocking the account you can use command mentioned in step 5, just replace eth.accounts[0] by account address of your publisher


  1. get transaction hash

Since deploying contract is also a type of transaction , you can see the transaction hash for the above contract using 


>greeterTxHash = greeterTx.transactionHash

Using the steps mentioned above ,

  1. check if miner is running or not


  1. If there is no mining , use 
> miner.start()


  1. Check if the transaction is mined using 
> eth.getTransactionReceipt(greeterTxHash)


  1. get the address at which the contract is published at
> publishedGreeterAddr = eth.getTransactionReceipt(greeterTxHash).contractAddress


  1. Calling function from Contract


The above statement calls a function greet from the published contract.If you want to call any other function, just use that function name instead of greet with the correct number and data type of arguments.



You learnt what smart contracts are and how you can publish a smart contract on the geth console. 

About Author

Abhishek Sagu

He is a MEAN stack developer with a problem solving attitude. He is proficient in nodejs and continuously learning new technology stacks in web development.

Leave a Comment

Name is required

Comment is required

Leave a Comment

    Request For Proposal

    Cookies are important to the proper functioning of a site. To improve your experience, we use cookies to remember log-in details and provide secure log-in, collect statistics to optimize site functionality, and deliver content tailored to your interests. Click Agree and Proceed to accept cookies and go directly to the site or click on View Cookie Settings to see detailed descriptions of the types of cookies and choose whether to accept certain cookies while on the site.

    We would love to hear from you!

    Oodles | Blockchain Development Company

    Please enter a valid Phone Number

    Please remove URL from text

    Recaptcha is required.