OpenZeppelin CLI 2.8: Release Candidate

This is a release candidate. View the final announcement at OpenZeppelin CLI 2.8: Opt out of Upgradeability.

Last week we released version 2.7 of the CLI, and we're already presenting the release candidate for version 2.8. How come?! Well, we've been working on this release for a few months already.

With this version you'll be able to deploy non-upgradeable instances of your contracts. Read on to find out more.

Help us test the release candidate and report any issues that you find!

npm install @openzeppelin/cli@rc

Opt out of Upgradeability

Until today, using the CLI you'd only be able to deploy upgradeable contracts. This developed from our initial goal of building an encompassing upgradeability solution. Over time, we realized that the CLI could be much more useful and added more general features like send-tx and call. Coupled with the interactive interface users have found these commands an essential part of their toolbox. The one thing missing was the ability to deploy non-upgradeable contract instances.

The CLI 2.8 ships with a brand new subcommand called deploy. It is the "one-stop shop" for deploying contracts. Using this command you will be able to deploy upgradeable and minimal proxy instances, like the current create command, and non-upgradeable instances, which we are calling regular, all under a unified interface.

Help us test the release candidate and report any issues that you find!

npm install @openzeppelin/cli@rc

The deploy command is our first step towards reducing the friction around using upgradeability. If you want to know more, check out our Q1 roadmap and the SDK 3.0 design document.

5 Likes

Hi @frangio,

So excited to see regular (non-upgradeable) deploys in the CLI!! :partying_face:

I found a couple of niggles, but nothing which stops me from deploying regular contracts to public testnets. The niggles I found have been resolved in RC2:

[Changed in RC2] Call to action changed to openzeppelin deploy: https://github.com/OpenZeppelin/openzeppelin-sdk/issues/1470
[Fixed in RC2] https://github.com/OpenZeppelin/openzeppelin-sdk/issues/1468
[Fixed in RC2] https://github.com/OpenZeppelin/openzeppelin-sdk/issues/1469
[Changed in RC2 to warn: Verification of regular instances is not yet supported.] https://github.com/OpenZeppelin/openzeppelin-sdk/issues/1471
[Fixed in RC2] https://github.com/OpenZeppelin/openzeppelin-sdk/issues/1419

1 Like

3 posts were split to a new topic: Will npm install @openzeppelin/cli@rc install RC2?

Hi @frangio,

Deploying a standalone contract (upgradeable) from OpenZeppelin Contracts Ethereum Package fails:
https://github.com/OpenZeppelin/openzeppelin-sdk/issues/1481

Hi, trying this out.

What is a ‘minimal’ deploy?

Minimal deploys are done using the minimal proxy of EIP1167. They are not upgradeable proxies. The purpose of the EIP is: “to simply and cheaply clone contract functionality in an immutable way”.

@spalladino had suggested changing the name to something that was more clear and descriptive. We should also include the reference to EIP1167. I wonder if putting a mention in oz deploy --help would help?

1 Like

My suggestion: minimal clone , with mention of EIP1167 in oz deploy --help

2 Likes

Just tested out the regular deployment with 2.8.0-rc.3. Deployment went smoothly! Though it seems verification of regular contracts is not supported.

I really like that the CLI makes it super easy to verify contracts that use imports, so I hope support for this gets added soon!

1 Like

Glad to hear that!

We were planning to implement verification for regular contracts in 2.8 but lately there have been some issues with the Etherscan API and we’ve postponed the efforts on our side for now. We will probably come back to this in a few weeks.

2 Likes

Hey @frangio! You may have seen this, but it seems Etherscan is doing some maintenance on the contract verification API which may resolve those issues.

1 Like

Continuing the discussion from OpenZeppelin CLI 2.8: Release Candidate:

Does anyone still use this?

OpenZeppelin CLI has been deprecated: