Ethereum

Hire the Top 3% of Freelance Ethereum Developers

Toptal is a marketplace for top Ethereum developers, engineers, programmers, coders, architects, and consultants. Top companies and start-ups choose Toptal Ethereum freelancers for their mission-critical software projects.

No-Risk Trial, Pay Only If Satisfied.

Clients Rate Toptal Ethereum Developers4.6 / 5.0on average across 34 reviews as of Sep 28, 2020

Hire Freelance Ethereum Developers and Engineers

Belma Gutlic

Freelance Ethereum Developer

CroatiaToptal Member Since March 26, 2019

Belma has a master's degree in software engineering and has been a full-stack developer since 2015. As a big crypto enthusiast, she decided to fully focus on blockchain development. She already has big experience with dApps creation where most of them were built using Ethereum (public or private network). Belma is a great team player and takes time understanding projects and delivering them in the best way.

Show More

Frédérique Mittelstaedt

Freelance Ethereum Developer

United KingdomToptal Member Since September 16, 2017

Frédérique is a software engineer and entrepreneur with an MSc in theoretical physics from Imperial College London. He excels at building full-stack systems with the web, desktop, and mobile apps, microservices, and external integrations. Frédérique co-founded an international marketing agency and three startups in developer tools, cybersecurity, and AI. Frédérique regularly releases TypeScript packages and contributes to other open-source projects.

Show More

David Mihal

Freelance Ethereum Developer

United StatesToptal Member Since April 16, 2016

David has been developing websites and web applications for all of his adult life. As a software engineer, he's worked for many diverse software companies from early-stage startups to Google. David is experienced with many web frameworks and environments, but he particularly enjoys developing with Meteor.js. He appreciates the importance of quality code as well as the need to meet scheduling demands.

Show More

Nikola Tanković

Freelance Ethereum Developer

CroatiaToptal Member Since February 17, 2018

Nikola is a software architect, researcher, and software engineer. As a university assistant professor with a Ph.D. in computer science, Nikola has a robust analytical approach to problem-solving, which yields practical and effective solutions. Nikola's communication and coordination skills were developed throughout a six-year CTO and consultancy stint in various software engineering projects from diverse business domains.

Show More

Fabrice Triboix

Freelance Ethereum Developer

United KingdomToptal Member Since July 4, 2017

Fabrice is a cloud architect, devops engineer, and software developer with 20+ years of experience. He worked for clients such as Topps, Cisco, Samsung, Philips, and Alcatel. He specializes in designing secure, highly available, scalable, and cost-effective solutions on AWS. He's also assumed managerial positions in the past as a team leader and release manager. He is very keen on automation, IaC, and CI/CD, and he can code in Python.

Show More

John R. Kosinski

Freelance Ethereum Developer

ThailandToptal Member Since October 28, 2015

As a veteran full-stack developer, John's great breadth and depth of experience include cryptocurrency, IoT, Blockchain, and mobile projects. His foundation is in C and C++ with many years of experience in .NET. His work experience up until 2009 was in the NYC and NYC area; since 2009, he's been living abroad and working remotely. Currently, finishing up a brief hiatus to study Blockchain and smart contract development.

Show More

Ashwin Mangale

Freelance Ethereum Developer

IndiaToptal Member Since September 29, 2016

Ashwin is a computer science professional with over a dozen years of experience. From studying the Linux kernel as a part of his academic studies to building a scalable, transactional order management system to travel/trip organizer engine, he has done it all. He has been a member of key product development teams including those at the most widely used database.

Show More

Faister Cabrera Carvalho

Freelance Ethereum Developer

BrazilToptal Member Since July 11, 2019

Faister is an experienced developer and system analyst who now specializes in JavaScript back-end development. He is comfortable working with many languages and platforms and has recently dedicated himself to developing back-end applications using Node.js, Express.js, and MongoDB. He also has some experience with blockchain technology and a master's degree in applied mathematics.

Show More

Sign up now to see more profiles.

Start Hiring

A Hiring Guide

Guide to Hiring a Great Ethereum Developer

Ethereum's revolutionary distributed application (dapp, sometimes "ĐApp") paradigm is poised to disrupt the status quo when it comes to payments, communications, the IoT industry, and even community governance. The high-profile concept of "unstoppable applications" built on smart contract technology is making it ever more lucrative to leverage. But with its complexity and recency, it's difficult to know where to start when hiring an Ethereum developer.

Read Hiring Guide
Trustpilot
Toptal in the press

... allows corporations to quickly assemble teams that have the right skills for specific projects.

Despite accelerating demand for coders, Toptal prides itself on almost Ivy League-level vetting.

Our clients
Building a cross-platform app to be used worldwide
Thierry Jakicevic
Building a cross-platform app to be used worldwide
1
2
3
Creating an app for the game
Conor Kenney
Creating an app for the game
1
2
3
Leading a digital transformation
Elmar Platzer
Leading a digital transformation
1
2
3
Testimonials

Tripcents wouldn't exist without Toptal. Toptal Projects enabled us to rapidly develop our foundation with a product manager, lead developer, and senior designer. In just over 60 days we went from concept to Alpha. The speed, knowledge, expertise, and flexibility is second to none. The Toptal team were as part of tripcents as any in-house team member of tripcents. They contributed and took ownership of the development just like everyone else. We will continue to use Toptal. As a start up, they are our secret weapon.

Brantley Pace, CEO & Co-Founder

Tripcents

In addition to sharp technical skills, Faruk had a great attitude and is a really exceptional communicator. He always let us know where he was with his work, thoroughly and reliably. That's not always the case, and it made working remotely considerably easier. He was an easy integration into the team.

Leif Abraham, Co-Founder

AND CO Ventures Inc

I am more than pleased with our experience with Toptal. The professional I got to work with was on the phone with me within a couple of hours. I knew after discussing my project with him that he was the candidate I wanted. I hired him immediately and he wasted no time in getting to my project, even going the extra mile by adding some great design elements that enhanced our overall look.

Paul Fenley, Director

K Dunn & Associates

The developers I was paired with were incredible -- smart, driven, and responsive. It used to be hard to find quality engineers and consultants. Now it isn't.

Ryan Rockefeller, CEO

Radeeus

Toptal understood our project needs immediately. We were matched with an exceptional freelancer from Argentina who, from Day 1, immersed himself in our industry, blended seamlessly with our team, understood our vision, and produced top-notch results. Toptal makes connecting with superior developers and programmers very easy.

Jason Kulik, Co-Founder

ProHatch

As a small company with limited resources we can't afford to make expensive mistakes. Toptal provided us with an experienced programmer who was able to hit the ground running and begin contributing immediately. It has been a great experience and one we'd repeat again in a heartbeat.

Stuart Pocknee , Principal

Site Specific Software Solutions

We used Toptal to hire a developer with extensive Amazon Web Services experience. We interviewed four candidates, one of which turned out to be a great fit for our requirements. The process was quick and effective.

Abner Guzmán Rivera, CTO and Chief Scientist

Photo Kharma

Sergio was an awesome developer to work with. Top notch, responsive, and got the work done efficiently.

Dennis Baldwin, Chief Technologist and Co-Founder

PriceBlink

Working with Marcin is a joy. He is competent, professional, flexible, and extremely quick to understand what is required and how to implement it.

André Fischer, CTO

POSTIFY

We needed a expert engineer who could start on our project immediately. Simanas exceeded our expectations with his work. Not having to interview and chase down an expert developer was an excellent time-saver and made everyone feel more comfortable with our choice to switch platforms to utilize a more robust language. Toptal made the process easy and convenient. Toptal is now the first place we look for expert-level help.

Derek Minor, Senior VP of Web Development

Networld Media Group

Toptal's developers and architects have been both very professional and easy to work with. The solution they produced was fairly priced and top quality, reducing our time to launch. Thanks again, Toptal.

Jeremy Wessels, CEO

Kognosi

We had a great experience with Toptal. They paired us with the perfect developer for our application and made the process very easy. It was also easy to extend beyond the initial time frame, and we were able to keep the same contractor throughout our project. We definitely recommend Toptal for finding high quality talent quickly and seamlessly.

Ryan Morrissey, CTO

Applied Business Technologies, LLC

I'm incredibly impressed with Toptal. Our developer communicates with me every day, and is a very powerful coder. He's a true professional and his work is just excellent. 5 stars for Toptal.

Pietro Casoar, CEO

Ronin Play Pty Ltd

Working with Toptal has been a great experience. Prior to using them, I had spent quite some time interviewing other freelancers and wasn't finding what I needed. After engaging with Toptal, they matched me up with the perfect developer in a matter of days. The developer I'm working with not only delivers quality code, but he also makes suggestions on things that I hadn't thought of. It's clear to me that Amaury knows what he is doing. Highly recommended!

George Cheng, CEO

Bulavard, Inc.

As a Toptal qualified front-end developer, I also run my own consulting practice. When clients come to me for help filling key roles on their team, Toptal is the only place I feel comfortable recommending. Toptal's entire candidate pool is the best of the best. Toptal is the best value for money I've found in nearly half a decade of professional online work.

Ethan Brooks, CTO

Langlotz Patent & Trademark Works, Inc.

In Higgle's early days, we needed the best-in-class developers, at affordable rates, in a timely fashion. Toptal delivered!

Lara Aldag, CEO

Higgle

Toptal makes finding a candidate extremely easy and gives you peace-of-mind that they have the skills to deliver. I would definitely recommend their services to anyone looking for highly-skilled developers.

Michael Gluckman, Data Manager

Mxit

Toptal’s ability to rapidly match our project with the best developers was just superb. The developers have become part of our team, and I’m amazed at the level of professional commitment each of them has demonstrated. For those looking to work remotely with the best engineers, look no further than Toptal.

Laurent Alis, Founder

Livepress

Toptal makes finding qualified engineers a breeze. We needed an experienced ASP.NET MVC architect to guide the development of our start-up app, and Toptal had three great candidates for us in less than a week. After making our selection, the engineer was online immediately and hit the ground running. It was so much faster and easier than having to discover and vet candidates ourselves.

Jeff Kelly, Co-Founder

Concerted Solutions

We needed some short-term work in Scala, and Toptal found us a great developer within 24 hours. This simply would not have been possible via any other platform.

Franco Arda, Co-Founder

WhatAdsWork.com

How to Hire Ethereum Developers through Toptal

1

Talk to One of Our Industry Experts

A Toptal director of engineering will work with you to understand your goals, technical needs, and team dynamics.
2

Work With Hand-Selected Talent

Within days, we'll introduce you to the right Ethereum developer for your project. Average time to match is under 24 hours.
3

The Right Fit, Guaranteed

Work with your new Ethereum developer for a trial period (pay only if satisfied), ensuring they're the right fit before starting the engagement.

FAQs

  • How are Toptal Ethereum developers different?

    At Toptal, we thoroughly screen our Ethereum developers to ensure we only match you with talent of the highest caliber. Of the more than 100,000 people who apply to join the Toptal network each year, fewer than 3% make the cut. You'll work with engineering experts (never generalized recruiters or HR reps) to understand your goals, technical needs, and team dynamics. The end result: expert vetted talent from our network, custom matched to fit your business needs. Start now.

  • Can I hire Ethereum developers in less than 48 hours through Toptal?

    Depending on availability and how fast you can progress, you could start working with an Ethereum developer within 48 hours of signing up. Start now.

  • What is the no-risk trial period for Toptal Ethereum developers?

    We make sure that each engagement between you and your Ethereum developer begins with a trial period of up to two weeks. This means that you have time to confirm the engagement will be successful. If you're completely satisfied with the results, we'll bill you for the time and continue the engagement for as long as you'd like. If you're not completely satisfied, you won't be billed. From there, we can either part ways, or we can provide you with another expert who may be a better fit and with whom we will begin a second, no-risk trial. Start now.

Share
Ethereum

How to Hire a Great Ethereum Developer

The new paradigm of Ethereum development brings with it many moving parts. Smart contracts, distributed applications (or “dapps”, sometimes stylized “ĐApps”), the “ether” cryptocurrency, a world-wide virtual machine where work is measured in “gas”—all of this is in addition to the basic underlying blockchain technology.

Navigating this isn’t anywhere close to being second nature for most people, even from a user standpoint. That said, how can a non-expert make a reasonable assessment of a potential Ethereum developer candidate?

First, let’s get acquainted with some basic Ethereum background. After that, we’ll jump into questions and answers one might expect in an interview for an Ethereum-related position.

Who’s Driving Ethereum?

In 2013 Vitalik Buterin invented Ethereum, in 2014 it had ICO backing, and in 2015 it went live. The technology is still very young, but Ethereum development is an exciting frontier. At the time of writing, there are not too many blockchain engineers in general, and even fewer who are Ethereum developers.

Interactions between Ethereum experts are what drive the technology.

So early in the history of Ethereum, it may seem unreasonable in some cases to expect to be able to hire actual experts: Those who have run meetup groups, helped startups as advisors, successfully completed an ICO, etc.

That being the case, it’s important that contemporary Ethereum developers are committed to becoming true experts. It’s best that they’re connected to current Ethereum experts in meaningful ways. The engineer who knows people in their local blockchain community, or attends meetups or conferences, or who has a good reputation in online Ethereum communities—they will likely have a suitable passion for the subject and level of outside support to effectively develop Ethereum blockchain technology for your project.

Key Ethereum Concepts

With a technology so new and unfamiliar as Ethereum is, there’s a tendency to try to use it as a solution to the wrong set of problems. It may be wise to consult an experienced Ethereum developer in depth to figure this out, before deciding whether to try to hire a whole team. After all, Ethereum developer jobs are more plentiful than Ethereum developers at the moment.

But with a few key concepts in mind, you’ll find it a lot easier to have a sensible conversation about where and how Ethereum can be used in your project—and where it might ultimately be a bad fit.

The Ethereum Blockchain

Just like bitcoin and many other cryptocurrencies, the Ethereum project is an implementation of blockchain technology.

A blockchain is a distributed database. It consists of sets of data, called blocks, with each block containing a reference to the previous one, in addition to its actual data payload and timestamp. The references to the previous blocks are what link the blocks together, forming the chain. The true components of the blocks vary between implementations: Ethereum’s blocks don’t follow the exact same format as bitcoin’s, for example.

The key points are that by design, blockchains are unchangeable: With every new block linking to the permanent state of the previous block, its history can be traced all the way back to the first block. In addition, the balance of every account is publicly visible.

Adding transactions means there will temporarily be multiple copies of the blockchain within the network. The effect of synchronizing these copies is that, in the end, one longest chain emerges, and consensus is reached. Based on these attributes and the democratic mechanisms to achieve consensus, blockchains can guarantee the integrity of their assets.

It’s not really necessary for all Ethereum developers to have a thorough understanding of the contents of every block nor of the cryptography underlying the ether cryptocurrency. But when you’re looking to to implement new protocols or create tools for other developers, it will be very meaningful to hire Ethereum developers who have a background in cryptography and/or strong familiarity with the underlying distributed ledger technology.

In the end, if you’re looking for decentralized alternatives to working-but-centralized solutions, then your final product should be designed in line with the technology you leverage. You’ll want to hire an Ethereum developer who can explain to you, with clarity, even the most complex aspects of Ethereum architecture.

Proof of Consensus?

Since every real node on the blockchain network has a copy of the blockchain, and new transaction blocks need to be synchronised among nodes, a few problems arise:

  • How to prevent attackers from flooding the network with invalid blocks
  • How to maintain an integral transaction history such that the nodes in the network will treat it as the source of truth
  • How to minimize the risk of double-spending

Any Ethereum developer worth hiring will be able to comment on the above issues and how they are approached in the Ethereum model.

But that’s not the only issue. Ethereum currently uses a proof-of-work algorithm, called Dagger-Hashimoto, to achieve consensus. But why is that a problem?

It turns out that there’s a major flaw related to proof-of-work algorithms in blockchain technology: They are very costly and have a strong impact on the environment. As of February 2018, Ethereum power consumption was closing in on that of the Dominican Republic and outweighed that of around 150 other countres. In fact, it has grown by around 200 percent since June 2017, to almost 15 TWh.

Even though the numbers seem massive, it is less than half of what bitcoin is using. To be precise, Ethereum uses 34 percent of bitcoin’s current yearly energy consumption, which currently is 51 TWh. Those numbers are already comparable; meanwhile, side-effects like this are already a reality:

Data available on a coal-powered bitcoin mine in Mongolia indicates the mine is responsible for 8,000 to 13,000 kg of carbon dioxide emissions per bitcoin, and 24,000 to 40,000 kg per hour. Tweeter Matthias Bartosik noted similar estimates: the average European car emits 0.1191 kg of carbon dioxide per kilometer driven. For every hour, the bitcoin mine emits at least the carbon dioxide equivalent of more than 203,000 car kilometers traveled.
Lester Coleman, Bitcoin Price Surge Leads to Electricity Consumption Spike: Blog Questions Environmental Impact, November 2017

The massive energy use of blockchains using proof-of-work for reaching consensus was one of the motivators for the plan to move Ethereum towards another algorithm: proof-of-stake. While that resolution would be bright for the world’s ecology, the algorithm planned for the official release of Ethereum v1.0, called Ethash, is still an extension of its original proof-of-work algorithm. Proof-of-stake, on the other hand, is planned for Ethereum v1.1.

In the proof-of-stake method of achieving consensus, the next node to mine a block is chosen based on randomness and the size of a miner’s stake. In effect, the next miner could be any node in the system, but the ones holding more coins are more likely to win.

There are some modifications to that basic algorithm, like weighing in the age of the coin. But it’s been criticized as being less safe to the integrity of the network, because the nodes have less motivation to act honestly.

To answer this, Buterin (Ethereum’s inventor, you’ll recall) suggested a punitive version of the proof-of-stake algorithm, called Slasher. If that would be put into place, any dishonest nodes would actually lose coins.


Ethereum Questions and Answers

Keep in mind that hiring is art and science both: It’s not necessary for a developer to be able to answer every question perfectly. What’s important is to what degree a particular question applies to the specific job or project at hand.

Now, for the purposes of this hiring guide, we will provide a short example of a smart contract, outlining some common structures used in Ethereum applications. The example is based on a sketch used in the Blockchain-IoT open-source project.

Ethereum specializes in smart contracts, which are the basis for ĐApps. Smart contracts are most commonly written in the Solidity language.

The referenced smart contract is written in Solidity, the most popular language for smart contracts. It compiles to Ethereum Virtual Machine (EVM) bytecode. To compile the contract, you need a compiler like Solc-js—see the end of this article for other such tools and resources.

For the following contract, explain what each line of Solidity code does:

pragma solidity 0.4.18;

import "./Vehicle.sol";


contract VehicleOwner {
    address public owner;
    mapping(bytes32 => address) public vehicles;

    event NewVehicleAdded(address indexed newVehicle, uint256 timestamp);

    function VehicleOwner() public {
        owner = msg.sender;
    }

    /**
    * @dev Throws if called by any account other than the owner.
    */
    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    function createNewVehicle(string model, string make, bytes32 vin) public onlyOwner {
        address newVehicle = new Vehicle(model, make, vin);
        vehicles[vin] = newVehicle;
        NewVehicleAdded(newVehicle, now);
    }
}

Let’s walk through the code, line by line.

pragma solidity 0.4.18;

That line only specifies the version of the compiler, in this case, 0.4.18.

import "./Vehicle.sol";

With that line, we import a smart contract used to represent new vehicles.

contract VehicleOwner {

That line opens the VehicleOwner contract definition, which is closed on the last line.

    address public owner;
    mapping(bytes32 => address) public vehicles;

Here, we define public variables, or the properties of the contract. The first one, called owner, represents the Ethereum address that created any given instance of the VehicleOwner contract. The second one, called vehicles, will be used to store a list of the vehicles owned by the owner, by assigning their contracts’ addresses to the provided vehicle identification numbers (VINs).

    function VehicleOwner() public {
        owner = msg.sender;
    }

Note the particular naming of that single function. It’s the contract constructor, named exactly like the contract, written in upper camel case, or Pascal case—i.e., each compound word starts with an uppercase letter. The only thing that this constructor does is assign the address that called the function—i.e. the person who is creating the contract—as the contract owner.

    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

That particular function modifier is used to limit access to only the owner of the contract. The underscore yields for the body of the function, to which the modifier is later applied. If the require condition passes, the function call is executed.

    function createNewVehicle(string model, string make, bytes32 vin) public onlyOwner {
        address newVehicle = new Vehicle(model, make, vin);
        vehicles[vin] = newVehicle;
        NewVehicleAdded(newVehicle, now);
    }

That public function of the contract, with access limited to the contract owner’s address by the modifier, creates a new contract on the blockchain—a representation of a vehicle. The vehicle contract’s constructor receives three properties: model, make, and vin, the latter of which can be used to identify that particular vehicle.

Creating a new contract returns its newly assigned address. In the function, using the vehicles mapping, we bind the given vin to that address. Finally, the function broadcasts a new event, passing in the address and the current timestamp.

Now that you have an overview of the above script, you’re in a better position to ask the following questions about programming in Solidity before you hire an Ethereum developer:

How is the contract constructor defined?

The constructor is defined as a function, named exactly the same as the contract.

Where are events logged in Ethereum?

The events emitted by contracts are the logs. These terms are used interchangeably, based on the context. They are parts of their transactions’ receipts, and the results of LOG opcodes executed on the EVM. For optimization reasons, they are logged alongside the blockchain, but they are not stored in the blockchain itself.

What is the purpose of using events?

They can be used as means to communicate with front ends, or as cheap storage for data. Basically, the return values of transactions are only the transactions hashed, because it takes a bit of time for the blockchain to reach consensus and validate the transactions, by mining them into new blocks. By emitting events and having front ends listen (watch) for those events, efficient communication is achieved.

What is the purpose of modifiers?

Modifiers are similar to decorators: They modify the body of the functions that use them, in such a way that the conditions of the modifier must be met before the original function body is executed. If they are not met, the modifier throws an error.

What are mappings?

Mappings are data types in Ethereum that are similar to hash tables. Mappings are not exactly the same as hash tables, though: Their values are not stored inside them.

Storing data in objects requires definition of a struct type (schema, interface). Storage processes are some of the most expensive operations, in terms of transaction costs.

Why are smaller smart contracts preferred?

Reasons for compact code structures are common in software engineering. Simple, well-structured code with low cyclomatic complexity is easier to understand, reuse, test, and maintain.

Creating large, monolithic contracts is not the best idea, because there are gas limits for blocks and transactions. Basically, blocks can only store a limited amount of data. That limit may simply block your contract from being migrated to the blockchain.

Creating contracts on Ethereum is basically making a transaction to an empty address, with the contract’s EVM code as data. With every transaction, the sender specifies the amount of gas allocated and gas unit price. There is a gas cost for every code structure when deploying a smart contract.

The client software used to make the transaction and deploy the contract should be able to prevent migrating any contract that exceeds the limits. It is not easy, however, to predict the exact final cost associated with a transaction. In the case that the supplied gas amount is not enough to cover the fees, the computations are stopped and the used gas is not returned.

(The Ethereum yellow paper has a list of fees for your reference.)

How would you update a smart contract?

This question is particularly tricky. The problem is that any updates to a contract result in a new smart contract with a new address. The old address and contract persist. Until now, there is no single best practice for dealing with this. However, there are many approaches.

One rather elegant solution was described by Aigang. They issued a contract register, which stored all the addresses to their contracts, but returned only the latest one. Then before making any calls to their contracts, they would obtain the most recent address from the registry.

There was another problem, though: The data is stored with the contract. The solution there was to keep the data in a separate contract. Obviously there are limitations to this approach, but it seems manageable, especially after the early stages of development.

But there’s a simpler approach. The main idea here is to simply use new contracts. Obviously there is again the problem of data storage. The final approach should be suited to the actual needs of one’s project.

Explain Ethereum libraries.

Libraries are used to separate concerns in smart contracts. In particular, they isolate integral pieces of logic. Libraries are not instantiated and they cannot store data. Their code is called using DELEGATECALL in the context of the calling contract.

It is as if the code in the library were a part of the smart contract that’s calling it. The main difference is that it is not actually part of it, and it can be reused by other contracts. Using libraries also helps with reducing contract complexity and gas cost. It pays off!

How do Ethereum smart contracts communicate with the outside world?

Smart contracts cannot communicate with the outside world, by definition, because all of the nodes need to be able to access all the processed data (or derived values) to validate the integrity of the blockchain. The data in the outside world is not immutable and certainly not predictable like that.

The workaround to that limitation is delivered by oracles. An oracle is a piece of software—sometimes embedded—that listens for specific blockchain events and responds by sending data from the outside world to smart contracts on the blockchain.

The problem remains that in order for the blockchain to validate such a transaction, trust must be placed in the oracle. A more elegant solution, much like the blockchain itself: Single oracles aren’t trusted, but a swarm of oracles facilitate consensus on the processed data.

Two notable companies delivering oracle services are smartcontract.com and Oraclize.

What is integer division, and why is it important for smart contract development?

Integer division is the arithmetic operation in which the integer quotient is obtained from two operands. The fractions of the result are discarded and the result itself is “truncated towards zero”, i.e. rounded down to the nearest integer, compared to the result of floating point division. For example:

10 / 3 = 3

Consider its application to a real-world scenario:

uint totalShares = 99;
uint stakeholders = 5;
uint sharesPerStakeholder = totalShares / stakeholders; // 19
uint totalSharesLeveled = sharesPerStakeholder * stakeholders; // 95
uint remainder = totalShares - totalSharesLeveled; // 4

Arithmetic operations in Solidity are done on the lowest denomination of ether, called wei.

1 ether = 1 wei * 10**18 // or 1e18 wei

Since by convention, we tend to trade in the ether cryptocurrency, the situation is the equivalent of ether having 18 decimal points. That magic number, 18, may be turning into a decimal standard for Ethereum tokens. Most clients look for the public variable decimals to represent the held integer value in ether. While not obligatory, ERC20 tokens often implement it:

uint8 public constant decimals = 18;

What are wei, szabo, finney?

These are ether denominations named after the cypherpunks, researchers, and developers of cryptocurrencies. wei, being the lowest denomination of ether, is also called the base unit of ether. In fact, ether is expressed as 1e18 (one quintillion) wei, or 1,000,000,000,000,000,000 wei.

Szabo and finney are similar-but-higher denominations: 1e12 (one trillion) and 1e15 (one quadrillion) wei, respectively. Note that there are also other denominations, named similarly, e.g., one shannon is 1e9 (one billion) wei, but you may also see it referred to as Gwei (giga-wei).

The particular trivia behind the main three denominations:

  • Wei Dai is the inventor of b-money, which was one of the inspirations for bitcoin.
  • Hal Finney is the first bitcoin user (apart from the author) and the first recipient of a bitcoin transaction.
  • Nick Szabo is a smart contracts researcher.

What is the relationship between ether and gas?

Gas is the cost of Ethereum resource utilization, i.e., the cost of executing transactions on the EVM. Obviously, simple transfers will cost less than migrating a smart contract to the blockchain, but both of these transactions have their processing cost expressed in units of gas.

The price of executing transactions on Ethereum blockchain is meant to stay constant over time. The price for a gas unit is not bound to the value of ether, but it is expressed in ether. In other words, the cost of transactions should not rise together with ether.

When sending out a transaction, in addition to the value in ether, the sender specifies the maximum amount of gas to use for the transaction, as well as the gas price. The final cost is calculated by the simple formula transaction cost = gas × gas price. Transaction fees are paid out in ether to miners.


What’s Your Ethereum Stack?

We’re almost at the end of this compact guide about hiring Ethereum developers. You, the recruiter—and also the right candidate—should have a clear understanding of the mechanics of Ethereum’s blockchain. Most importantly, you should be aware of the distinction between designing software for traditional, centralised systems versus decentralized blockchains.

Consider how bitcoin and Ethereum were designed to allow for direct, trustless transactions between the networks’ participants. Due to leveraging proof-of-work, among other algorithms, for reaching consensus, the platforms strive to avoid reliance upon trusted third parties.

That has strong implications for the design of apps that are meant to be published on the blockchain. Thinking of Ethereum application architecture, keep in mind that blockchain takes over many of the responsibilities of traditional, centralized servers, but it also brings changes. If the services or products that you plan to offer via blockchain are somehow bound to your company, then you are still making centralized apps.

This presents two challenges. The first one is to develop a plan that will allow users to benefit from the smart contracts you provide, without having to refer to your company. A smart contract should allow two parties to make some form of transaction, involving cryptocurrency, stocks, bartering, etc. The second challenge is to find the business “in,” i.e. how to make money with your products!

A success story for this is EtherDelta, a truly decentralized trading platform. Their service stands in contrast to typical exchanges, which deal with cryptocurrency but in reality are centralized platforms with the trading happening off-chain. Placing orders on EtherDelta does not require an Ethereum transaction, but trading does, that way it actually leverages blockchain and is safer to use.

It is also transparent to the point where new types of coins are added via GitHub pull request. EtherDelta charges a 0.3% taker fee (for withdrawals). Therefore, it’s definitely possible for public, open, decentralized apps to be profitable.

On the other hand, for some businesses, it wouldn’t make sense to keep everything on a blockchain. In particular, sensitive data should be stored securely and kept secret—in many cases, this is even a legal requirement.

It is also very important to note that every transaction on Ethereum is rather expensive and slow. Even when transactions become validated, it is best to wait for a few more blocks to be mined. The reason is that very recent blocks can potentially become identified as not part of the canonical blockchain, and already-mined transactions then get reverted. That process is called chain reorganization, and it happens quite often.

Also, the code on a blockchain cannot communicate on its own with external services. For those reasons, keeping all business operations on a blockchain may just be too much for most businesses. While it’s crucial for smart contracts to be independent and built with openness in mind, there’s no wrong in making your SaaS and Ethereum ĐApps the very best interface for the contracts in question! This seems okay, as long as other interfaces can be built without having to rely on your business.

Be Smart about Smart Contract Developers

Smart contracts, including the one given as an example, are public on the blockchain. Business motivations drive the creation of new software, but the right Ethereum engineer will design smart contracts so that they are in line with the public, transparent nature of blockchains, lest they fail trying to transition centralized logic to a blockchain. There are also the limitations of smart contracts to be taken into account. In some cases, even, it’s still rather early for full blockchain adoption because more changes are underway.

In the end, you’ll want to hire an Ethereum blockchain developer who also has as good a mind for business as they do for programming. The world of Ethereum app development is a wild one—all the more reason to hire the most dependable and expert developers you can find.

Further Ethereum Resources to Explore

We recommend the following high-quality public resources, to study various Ethereum-related subjects in detail, and experiment with different tools:

  • Truffle, the most popular framework using Solidity and JavaScript
  • Truffle boxes, starter kits, including some based on React
  • Embark, another popular JavaScript framework, with integrations beyond Ethereum EVM
  • Exonum, a framework in Rust
  • Populus, a smart contract development framework for Python
  • Open Zeppelin library, a collection of secure, tested, and community-audited smart contracts, for use as building blocks, integrated with the Truffle framework

Basic Tools

  • Web3.js, the Ethereum JavaScript API
  • Solium, a linter for Solidity

Advanced Tools

  • Metamask, allowing for full-featured interaction with ĐApps through the browser
  • Vyper, an experimental programming language for writing smart contracts, actively developed
  • Whisper, a messaging protocol for ĐApp-to-ĐApp communication

Learning Materials:

Blockchain IoT Open-Source Project

Finally, we invite you to learn from 2017 Toptal Open Source Grant Award Winner, the Blockchain IoT project, as it gets built.

Featured Toptal Ethereum Publications

Top Ethereum Developers are in High Demand.

Start Hiring