Buidler: the new smart contract development tool

Flexible. Extensible. Reliable.

It’s been about three months since we received a grant from the Ethereum Foundation, and a lot has happened since then. We are happy to tell you that the first beta release of Buidler is ready.

For those of you who don’t know, Buidler is an extensible developer tool that helps smart contract developers increase productivity by reliably bringing together the tools they want.

“Okay, but what is it good for exactly?”, you may ask.

As a smart contract developer, Buidler allows you to streamline your development workflow by making it easy to incorporate other tools into your process, as well as granting you the flexibility you need to adapt the tools to your needs. Exactly which dependencies and tools you use is up to you. Buidler will only help you orchestrate them.

We achieve this through user-defined tasks, and plugins. A lot of plugins.

Plugins and flexibility.

We’re releasing some for web3.js 0.2.x, web3.js 1.x, Truffle 4, Truffle 5, and Ethers.js. These allow you to use these libraries like you’re used to, but with a new tool doing the heavy lifting around running the code. You can find a list of plugins and links on the Buidler README file.

Buidler has been designed with flexibility as one of the core priorities, and this is already enabling interesting things. For example, by simply using buidler-truffle4, you can migrate your contracts to Solidity 5 without needing to migrate your tests to Truffle 5.

What’s new?

The entire list of changes since our alpha release includes:

  • Added support for Solidity 5.
  • Migrated the codebase to TypeScript.
  • Added the ability to import the config DSL explicitly.
  • Increased tests code coverage to 80%, with most core modules at 95% or higher.
  • Removed Web3 and Truffle dependencies from the core project.
  • Implemented EIP-1193 as the extension point offered to plugins to connect to Ethereum, as well as extensions adding automatic gas estimation, automatic gas price, network id validation, and sender account resolution to every tx.
  • Added top-level await to buidler console (requires node >= 10), as well as persistent history across sessions.
  • Created buidler/register which loads and injects the Buidler Runtime Environment into any script (see: babel/register, ts-node/register).
  • Created plugins for Web3.js 1.0.0 beta, Web3.js 0.20.x, Truffle 4 and 5 and Ethers.js.
  • A lot of polishing and stabilizing.

We’ve also written documentation to cover all the basic functionality in the form of tutorials, which you can find in the README file on Github.

Coming up the pipeline are integration plugins for TypeScript, TypeChain, ethlint, solhint and more. Take a look at our plugin creation tutorial to create your own, and let us know if you do! We would love to help you get started.

For any questions or feedback you may have, you can find us in the Buidler Support Telegram group.