We have developed around 50+ blockchain projects and helped companies to raise funds.
You can connect directly to our Blockchain developers using any of the above links.

Talk  to Blockchain Developer

How to Write a Smart Contract in Solidity

Solidity is a programming language specifically designed for writing smart contracts that run on the Ethereum platform. It is the most commonly used language for writing Ethereum smart contracts, and it is designed to be easy to use and understand, while also providing a number of features that make it well-suited for writing smart contracts. Solidity developers are responsible for designing, coding, and testing Solidity contracts, as well as maintaining and updating existing contracts.

Ethereum is a decentralized virtual computer with a native cryptocurrency ETH which allows the transfer of value in form of ETH between addresses and deploys codes to the blockchain to run logic and store statements. Ethereum is designed for decentralized applications or dApps with a client that enables peer-to-peer messages on the network. It is also a generalized blockchain with a built-in programming language that lets anyone build any kind of application they can imagine such as social networks, browsers, search engines, financial applications, healthcare applications, and a lot more. Applications on Ethereum are fully trustworthy and transparent since they run on the blockchain.

What is a Smart Contract?

To understand smart contracts, think about a kick-starter campaign. You set a goal and promote your campaign so that others can support you. If you hit your targeted amount, the platform will offer you an equivalent amount to help you smash your goals. If you fail to meet the target, the donated funds will be paid back to those who donated to your cause. The same goes for smart contracts and it is why some people call them if this then that statement. A smart contract is a piece of code that does something if something happens.

The most basic smart contracts can include such statements as if I add 1ETH to the contract, then 100 BAT tokens should be released to me or if all participants contributing to a pool reach a certain amount, then each contributor should receive a certain amount. The participants could also get exclusive access to an event, or receive a digital asset. Smart contracts are codes on the blockchain that get run to achieve an objective once they are triggered. They are immutable, and can only be overwritten with a new smart contract if that is ever necessary. Smart contracts are also distributed which implies that the code is validated by everyone on the network, and not a single individual can manipulate the code.

Ethereum was specifically designed for running smart contract applications known as dApps. Smart contracts on Ethereum are written in a Turing complete programming language known as Solidity. Solidity resembles JavaScript in its syntax and is by far the most popular programming language used by blockchain developers. In this article, we shall explore how to write codes in Solidity in a manner that is suitable for beginners and possibly beneficial for professionals who would love to go back to the basics.

A Step-by-Step Process of Writing Smart Contracts

Visit Remix.ethereum.org to get started with writing your smart contract. Note that there is also a language similar to Python which is less used but serves the same purpose as Solidity. A screen like this should appear on your computer when you visit the said website. Remix is a browser-based IDE that lets you write Ethereum smart contracts without setting up a development environment.

Select the file icon to create a new file, then declare the version of solidity that you intend to use. Using the latest version such as version 0.8.17 is the best option to write the safest codes, and stay up to date with improvements to the programming language. In our first piece of code, we will use the count function to update certain values like you would do with other programming languages to update databases.

Using Events in Smart Contracts

You can also create events in the smart contracts such as increments and decrements which are important in state retrievals when working on more complex projects. After writing our increment or decrement function, we can edit the contract to tell the solidity where the function can be called. In this case, we set the increment function to the public. Adding public to the contracts lets you call the function outside the contract.

Constructor Functions in Smart Contracts

Next, we can use a constructor function, a special function that gets run when the smart contract is initialized to set a default value for our count. Remember that smart contracts are codes that exist on the blockchain, and whenever we deploy smart contracts we update the state of the blockchain by running the smart contracts on the Ethereum virtual machine. Create the function and set the visibility to the public, and create the count to zero.

Another way to run your smart contract is to simply add a value to the count such as 0 or 1,000 and test the contract out in the Remix IDE. To test the contract, deploy it on the test blockchain connected to the Remix IDE. Select the compiler tab shown below, and choose the version of solidity you imputed earlier in your code. In our case, we used v0.8.17 which is the latest release according to the GitHub repository available here: https://github.com/ethereum/solidity/releases. Keep in mind that recent solidity smart contracts require an SPDX comment which may cause your code to return an error, also ensure that your curly brackets are connected so that when you click one of the brackets, the IDE highlights the corresponding opening and closing bracket.

Deploying Smart Contracts

To deploy your smart contracts, visit the deploy tab and select from JavaScript virtual machine, Injected Web 3.0, and Web 3.0 provider. We will be using the JVM environment to test our smart contract. You will find an account that is preloaded with test Ethereum tokens which you can use to test your smart contracts. Select any of these accounts and click on the deploy button to test your smart contracts. Select the deployed contract at the lower left of the deployment tab and you will have a button that can be incremented or decremented. To actually increment our count, we need to write a function that says get count, set the view of this function to the public, and make the initial uint of count public as well. Click the trash icon to remove the smart contract we deployed previously since that is useless to us now, then deploy the new smart contract in the image below.

If you have followed the steps above, you should now understand how smart contracts work at some level, but we need to do a bit more for you to see an actual smart contract working. We will now proceed to write an actual smart contract that is used in most DAOs for decision-making, and it is a voting smart contract. If you have been following along it would be pretty easy for you to move on with the following. Although, if you haven’t been following, you can go back to check how we got up to this point. Note that every step in the process is relevant, and critical if you must follow through with the next steps. Now, let's start coding our election smart contract.

Scale your solidity projects with us

Creating a Voting Smart Contract For Decentralized systems

Grouping Data in Smart Contracts

We want to write a contract that lets participants in a decentralized system, for example, vote in a free and fair election. Using the same Remix IDE we will start by creating a data type, struct which allows us to group other data types to define a candidate struct. We will also define a struct for the voter that will store whether or not a voter has voted and the candidate they voted for.

Tracking Data in Smart Contracts

Next, we must keep track of the owner of the contract since they have special rights to authorize voters. We must also keep a mapping to store voter information and a dynamically sized array of candidates that will be initialized on construction. Use square brackets after the data type of a variable to define an array. Also, track the time when an election ends using an integer timestamp.

Creating Constructors

Initialize the list of candidates in the constructor, passing in a name for the election, the duration of the election in minutes, and an array of the names of candidates. Solidity does not support two-dimensional arrays so we would use two-string arguments representing two candidates in the election. If we must support multiple candidates we can push in an array of bytes 32.

To define candidate objects we must use the provided names. We will then define an authorization function that allows the owner to give voting authorization to any address. In the function, we will initialize the voter object for the address. The process is not the same as initializing an object in the voter’s mapping. Instead, we initialize with the default boolean value present in the mapping. To prevent anyone from participating in the election, we need to add weight to the voter struct authorizing people we assign a voter weight of 1.

Defining Transactions in Smart Contracts

Voters must submit an integer representing the zero-based index represented in the list. Anyone can access the list of candidates and vote within the time for a valid candidate. To increase the vote count for the specified candidate by the weight assigned to the voter. We can also add a statement that checks that the message sender has a weight of at least 1. Next, we write an end function that allows the owner to end the election only when the time is up.

Let's build together on Solidity

Let's Help You Build Your Next Blockchain Application

We specialized in building and developing logical smart contracts for financial applications, business, and social applications. Our codes are properly audited in-house and our process ensures that no mistakes move from prior stages of development to cause glitches at the final stages. Ethereum development can get really complex but we handle and resolve all problems with finesse and experience.

Haven worked for some of the biggest names in the blockchain space, deploying projects across blockchains, we are poised on working with the biggest brands as well as startups to transform simple business ideas into working solutions that are automated, trusted, and decentralized. Newer implementation of smart contracts requires the development of unique logic and structures that needs to be tested and tried before implementation. With the rise of hacking and other backdoor activities mostly targeting blockchain and crypto projects, working with us puts you at rest assured that all the critical drawbacks will be taken care of without issues.

You can get started even though you are unsure about how smart contracts work. The most important thing is that you have spotted a unique case where smart contracts can be applied to make your business easy or you have seen areas where it has been applied before and you are interested in implementing a similar solution. For newer areas, our in-house solidity development company team researches the use case and develops prototypes to check and ensure that it is feasible and there are no loopholes. After that, we walk you through the process, responding kindly to all the questions you may have and additional things you would like us to consider.


Smart contracts are the essential ingredient in Ethereum development. It is impossible for DApps to function on any blockchain without clearly written smart contracts. Since the blockchain is decentralized, it is impossible to change or influence the instructions coded in smart contracts this is why developers must check for errors and potential drawbacks before launching a smart contract live on the mainnet of the blockchain.

Thankfully, most blockchains have sufficient testnet resources for testing and deploying smart contracts to ensure that they do what they are meant to do. Unlike mainnets, it costs nothing to run a smart contract on a testnet, and there are ample opportunities to change and try out the results of an application.

Once a smart contract is deployed, there are no know means of updating it onchian unless you call a more advanced function like SelfDestruct which we shall leave for discussion another day. Smart contracts are the backbone of DApps on Ethereum, Avalanche, and other programmable blockchains. Although some blockchains have their unique programming languages for writing smart contracts, solidity remains the most popular blockchain among developers and could remain so as the syntax is pretty easy to pick up. If you are a developer who wishes to learn more about solidity, you can visit the Ethereum documentation at https://soliditylang.org/.

Next Article

Ethereum development

How to do Game Development Using Solidity


NFTs, or non-fungible tokens, became a popular topic in 2021's digital world, comprising digital music, trading cards, digital art, and photographs of animals. Know More

Blockchain is a network of decentralized nodes that holds data. It is an excellent approach for protecting sensitive data within the system. Know More


The Rapid Strategy Workshop will also provide you with a clear roadmap for the execution of your project/product and insight into the ideal team needed to execute it. Learn more

It helps all the stakeholders of a product like a client, designer, developer, and product manager all get on the same page and avoid any information loss during communication and on-going development. Learn more

Why us

We provide transparency from day 0 at each and every step of the development cycle and it sets us apart from other development agencies. You can think of us as the extended team and partner to solve complex business problems using technology. Know more

Other Related Services From Rejolut

Hire NFT

Solana Is A Webscale Blockchain That Provides Fast, Secure, Scalable Decentralized Apps And Marketplaces

Hire Solana

olana is growing fast as SOL becoming the blockchain of choice for smart contract

Hire Blockchain

There are several reasons why people develop blockchain projects, at least if these projects are not shitcoins

Why Rejolut?

1 Reduce Cost
RCW™ is the number one way to reduce superficial and bloated development costs.

We’ll work with you to develop a true ‘MVP’ (Minimum Viable Product). We will “cut the fat” and design a lean product that has only the critical features.
2 Define Product Strategy
Designing a successful product is a science and we help implement the same Product Design frameworks used by the most successful products in the world (Facebook, Instagram, Uber etc.)
3 Speed
In an industry where being first to market is critical, speed is essential. RCW™ is the fastest, most effective way to take an idea to development. RCW™ is choreographed to ensure we gather an in-depth understanding of your idea in the shortest time possible.
4 Limit Your Risk
Appsters RCW™ helps you identify problem areas in your concept and business model. We will identify your weaknesses so you can make an informed business decision about the best path for your product.

Our Clients

We as a blockchain development company take your success personally as we strongly believe in a philosophy that "Your success is our success and as you grow, we grow." We go the extra mile to deliver you the best product.



Tata Communications

Malaysian airline

Hedera HashGraph



Jazeera airline


Hbar Price





The Purpose Company

Hashing Systems




Verified Network

What Our Clients Say

Don't just take our words for it

I have worked with developers from many countries for over 20 years on some of the most high traffic websites and apps in the world. The team at rejolut.com are some of most professional, hard working and intelligent developers I have ever worked with rejolut.com have worked tirelessly and gone beyond the call of duty in order to have our dapps ready for Hedera Hashgraph open access. They are truly exceptional and I can’t recommend them enough.
Joel Bruce
Co-founder, hbarprice.com and earthtile.io
Rejolut is staying at the forefront of technology. From participating in, and winning, hackathons to showcase their ability to implement almost any piece of code. To contributing in open source software for anyone in the world to benefit from the increased functionality. They’ve shown they can do it all.
Pablo Peillard
Founder, Hashing Systems
Enjoyed working with the Rejolut team. Professional and with a sound understanding of smart contracts and blockchain. Easy to work with and I highly recommend the team for future projects. Kudos!
Founder, 200eth
They have great problem-solving skills. The best part is they very well understand the business fundamentals and at the same time are apt with domain knowledge.
Suyash Katyayani
CTO, Purplle

Think Big, Act Now & Scale Fast

Speed up your digital transformations with our proven frame work

We are located at


We are located at