Turn a mess of tricky Solidity tools into a smooth workflow

Unlock your productivity through flexibility, interoperability, and standardization.

hero

Buidler is a task runner for Ethereum smart contract developers.

It works with all developer tools, rather than replace any specific ones. It's value comes from being the connective tissue, rather than from specific functionality. It's an integration platform for other tools to build upon.

hero

How?

1. Write your contract


pragma solidity ^0.5.1;
    
contract DeathStar {

  address private owner;

  constructor (address owner) public {
    owner = owner;
  }

  function shoot(string memory planet) public {
    require(msg.sender == owner);
    // TODO: BAM
  }
}



2. Choose your plugins & setup

// For unit tests
usePlugin("@nomiclabs/buidler-truffle5");
usePlugin("@nomiclabs/buidler-ganache");

// Automatically generate testable contracts where
// internal methods are exposed as external.
usePlugin("@nomiclabs/buidler-autoexternal");

// Linting
usePlugin("@nomiclabs/buidler-solhint");

// For scripts
usePlugin("@nomiclabs/buidler-ethers");
usePlugin("@nomiclabs/buidler-faucets");

// Faster compilation
usePlugin("@nomiclabs/buidler-docker-solc");

module.exports = {};

3. Write your tasks



task("shoot", "Shoots the laser. Handle with care.")
  .addParam("target", "The target planet")
  .setAction(async (target) => {
    const DeathStar = artifacts.require("DeathStar");
    await DeathStar.at(..).shoot(target);
    
    console.log("Target destroyed.")
  });


module.exports = {};


4. Interact with your contract easily

$ npx buidler help shoot
Buidler version 1.0.0-beta.2

Usage: buidler [GLOBAL OPTIONS] shoot --target <STRING>

OPTIONS:

    --target      The target planet

shoot: Shoots the laser. Handle with care.

For global options help run: buidler help

$ npx buidler shoot --target alderaan
Target destroyed.

Some of the plugins shown above are currently under development.

Used By