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.

We've been blown away by the level of talent we've been able to hire through Toptal.

Brad Rozran, Optimizely

Trusted by leading brands and startups

Our Exclusive Network of Ethereum Developers

Andras Fuchs

Ethereum Developer

Andras is one of the very first Toptal certified Blockchain specialists and he's also a Microsoft Certified .NET Application Developer. He enjoys being part... of a successful high performing team delivering a positive impact for businesses on a global scale. Besides his technical knowledge, Andras has strong communication and interpersonal skills. HackerRank.com also has ranked him the top 917 (top 0.15%) algorithm programmers globally. 

Hire Andras

Antonios Minas

Ethereum Developer

Antonios is a senior software engineer specializing in front-end, WordPress, Blockchain technology, PHP, and JavaScript frameworks with more than eight year...s of professional experience spanning from the IT sector to digital advertising. He is passionate about applying top-end solutions and software engineering patterns in order to solve complex problems. 

Hire Antonios

Radek Ostrowski

Ethereum Developer

Radek is a certified Toptal Blockchain Engineer particularly interested in Ethereum and smart contracts. In the fiat world, he is experienced in big data/ma...chine learning projects. He is a triple winner in two different international IBM Apache Spark competitions, co-creator of PlayStation 4's back-end, a successful hackathon competitor, and speaker at conferences in Australia, Poland, and Serbia. 

Hire Radek

Amaury Martiny

Ethereum Developer

Amaury is a certified Toptal Blockchain engineer currently working at Parity Technologies, where he focuses on DApp development. He also has several years o...f experience building full-stack web and mobile apps (Node.js, React), and he writes open-source code. Amaury is interested in entrepreneurship and has worked for startups of various sizes. In his spare time, he reads about mathematics, history, and philosophy. 

Hire Amaury

Máté Solymosi

Ethereum Developer

Máté is a full-stack software engineer with experience working on web applications and cloud systems of all sizes, from small greenfield projects of startup...s to complex legacy systems of large enterprises. He prides himself in designing scalable, future-proof architectures and writing clean, maintainable code. Máté also has a degree and experience in business, allowing him to deliver solutions that add the most value to your product. 

Hire Máté

Fabrice Triboix

Ethereum Developer

Fabrice is a cloud architect and software developer with 20+ years of experience who's worked for clients such as Cisco, Samsung, Philips, Alcatel, Sagem, e...tc. 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. Along with being very keen on automation, IaC, and CI/CD, he can also code in Python, C++, and Go 

Hire Fabrice

Aminadav Glickshtein

Ethereum Developer

Aminadav has 15+ years of professional experience and started coding at the age of seven, making programming like a native language for him. As a full-stack... and blockchain architect, developer, and consultant, he has in-depth knowledge of many areas and possesses the ability to code quickly and efficiently. During the past ten years, his primary focus has been on full stack development. StackOverflow rated him at the top 1% of developers. 

Hire Aminadav

Ryan Jurgensen

Ethereum Developer

Ryan is a full-stack developer with eight years of experience who enjoys working on new, challenging projects. He has recently contributed to key projects f...or Google (Gmail, Wallet, City Experts) and the US Navy as well as a few startups. He has proven ability to architect and lead large projects or join existing teams with equal ease, and his passion has molded him into a capable generalist with the perfect skill set for any development project. 

Hire Ryan

Andrii Soldatenko

Ethereum Developer

Andrii is a blogger and speaker as well as an expert back-end developer with Python/C and Golang. He has extensive knowledge of the Docker and Kubernetes. H...e also has an interest in databases; you can find his talks about full-text search and SQL optimization based in PostgreSQL at a number of Python conferences. I created a social network based in ElasticSearch for smart matching between similar user interests. 

Hire Andrii

Hire Ethereum Developers Seamlessly with Toptal

1
Talk to One of Our Industry Experts
A Toptal director of engineering will work 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 supply experts of the highest caliber. Of the more than 100,000 people who apply to join the Toptal network each year, we accept fewer than 3%. You'll work with engineering experts (never generalized recruiters or HR reps) to understand your goals, technical needs, and team dynamics. The end result: expertly-matched talent from our network, hand-selected to fit your business needs.

  • What is the no-risk trial period for 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.

  • How fast can I hire Ethereum developers through Toptal?

    Depending on availability and how fast you can progress, you could start your no-risk trial with an Ethereum developer within 48 hours of signing up. Most of our engagements start within 2 weeks of discussing your project with us.

Tap Into World-Class Talent

  • Trusted Experts Only

    Trusted Experts Only

    All of our talent are seasoned experts who ramp up quickly, readily contribute as core team members, and work with you to minimize onboarding time.

  • The Right Fit

    The Right Fit

    We have a knack for matching you with the right fit. Start working with your new hire on a no-risk trial period, paying only if satisfied.

  • Scale as Needed

    Scale as Needed

    Hire in under 2 weeks and scale your team up or down as needed, no strings attached.

  • Seamless Hiring

    Seamless Hiring

    We handle all aspects of billing, payments, and NDA’s. Let us take care of the overhead while you focus on building great products.

  • Flexible Engagements

    Flexible Engagements

    Choose the engagement type that suits your needs — hourly, part-time, or full-time — with the ability to change anytime.

  • Expert Talent Matching

    Expert Talent Matching

    Focus on your project and enjoy support from your dedicated account executive and expert talent matcher.

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 developer who also has as good a mind for business as they do for programming. The world of Ethereum development is wild one—all the more reason to hire the most dependable engineers 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.

Top Ethereum Developers are in high demand.

Get Started