ZeppelinOS May 2019 development update

Hey folks! After the release of ZeppelinOS 2.3.0 last week, we wanted to share with you what has kept us busy during May. Though most efforts went towards stabilizing 2.3, we also have some interesting features coming up for the next version, such as new proxy patterns and new commands for managing funds and transactions directly from the command line. We are also exploring the current state of front-end libraries for developing DApps, so you may expect a surprise from us on that front in the upcoming months.

Version 2.3 released

This new release included a lot of new features, especially on the CLI interface and usability. This meant a big effort in getting it ready for prime time, but we are super happy with the result! If you haven’t done already, npm install zos@2.3 and try it out!


As part of this release, we have also refactored Zepkit, our DApp starter kit. We split it into a scaffolding box, great for kickstarting your decentralized applications akin to create-react-app, and a tutorial box, best suited for learning.

We have also updated the Solidity hot loader webpack plugin to the 2.3 release, so you can get seamless automatic contract upgrades while developing your dapp. Make sure to check it out!

Minimal proxies support

Upgradeable proxies have been one of the core offerings of ZeppelinOS for a long time. However, we are aware that some of our users feel more comfortable if they know that some critical contracts in their projects cannot be modified. Governance of contract upgrades is no easy task, so having no upgrades at all can be the easiest route in some scenarios.

With this in mind, we have added support for minimal proxies (as specified by EIP1167). These proxies are immutable by design, so they cannot be upgraded. We set them up so they play along nicely with the current ZeppelinOS architecture, allowing you to have upgradeable and minimal proxies side-by-side on your project. This means that, whenever you create a new instance, you can decide whether it can be upgraded in the future or not.

A nice benefit of these proxies is that they are extremely cheap in terms of gas when deploying, about 10x than their upgradeable counterpart. This makes minimal proxies a perfect match for EVM packages: by having a single logic contract deployed on chain and shared as an EVM package, very cheap copies of it can be set up using these proxies. For example, you could create multiple ERC721 contracts at very low gas cost, by using the implementation already deployed by openzeppelin-eth.

Interacting with the network from your terminal

It is quite common that, while developing an app, we need to run a quick transaction, inspect a value in a contract, or fund a new account. A good example of this is transfering ETH from a pre-funded ganache account to the one set up in Metamask. Having to drop into a js console every time we need to do this is often cumbersome.

To address that, and borrowing a page from Clevis, we have added simple commands to the zos CLI to send transactions, move funds, query balance, or call contract methods directly from the terminal.

  • zos balance queries the balance of an account

  • zos transfer sends funds from one of your accounts to another

  • zos call calls a constant method in one of your contracts and returns the value

  • zos send-tx sends a transaction to one of your contracts

The transfer method only works with ETH at the moment, but we would love expand it to manage ERC20s as well. If you are interested in contributing to ZeppelinOS, this is a great issue to start, so feel free to reach out and send a pull request with this!

Gas station network collaboration

We have kept working together with the TabooKey team to push the gas station network release. Expect some news on this front real soon, but in the meantime, make sure to check out this tutorial by @dennison on how to use off-chain signatures in Ethereum, one of the main building blocks behind meta-transactions!


Our team was also busy around the world. @dennison and @martintel were in NYC for the blockchain week and EthNYC, and hosted a web3 stack meetup along with the NuCypher and GraphProtocols teams. Meanwhile, on the other side of the world, @rrecuero ran a DApp development workshop in Tokyo. Also, we had @dennison in Toronto on June 1st hosting a live coding workshop in the CryptoChicks hackathon.

During July, you can meet @jcarpanelli and @tinchoabbate in the Blockchain Summit Latam, where they will be talking about DApp development and security in smart contracts respectively. Don’t miss them!

What’s next

We want to speed up our release cycle, so we can get a preview of 2.4 to your hands as early as possible. One of our goals for this quarter is providing a good and homogeneous development experience, so you can handle all your tasks directly from the zos CLI, so you can expect more features in that direction, as well as our first steps in other areas. And of course, we will keep pushing forward the gas station network, so expect a testnet version ready to play with during June.

Happy coding!