OpenZeppelin / openzeppelin-sdk

OpenZeppelin SDK repository for CLI and upgrades.js. No longer actively developed.
MIT License
431 stars 201 forks source link

Add 0.6.0 support for openzeppelin-sdk/packages/lib/contracts #1463

Open Amxx opened 4 years ago

Amxx commented 4 years ago

Contracts in openzeppelin-sdk/packages/lib/contracts can be used by other project, the upgradeability part in particular.

It would be nice to add solidity 0.6.0 support so that projects can continue using them.

abcoathup commented 4 years ago

Hi @Amxx! Thanks for the suggestion, it is really appreciated.

The project owner should review your suggestion during the next week.

Please wait until we have discussed this idea before writing any code or submitting a Pull Request, so we can go through the design beforehand. We don’t want you to waste your time!

abcoathup commented 4 years ago

Related to: https://github.com/OpenZeppelin/openzeppelin-sdk/issues/1391

spalladino commented 4 years ago

Thanks for the suggestion @Amxx! v2.7 has shipped with support for 0.6 in Initializable only, but it's true that we need to upgrade the remaining contracts as well. As a matter of fact, this would be a great opportunity to move the Proxies to Contracts. WDYT @frangio?

Amxx commented 4 years ago

For the time being I made a fork of some proxy with 0.6.0 in my solidity tooling repo: https://github.com/iExecBlockchainComputing/iexec-solidity/tree/master/contracts

This is a repo I use in addition of openzeppelin contracts. So anything (like proxy) you include in contracts would be a great move from my point of view

frangio commented 4 years ago

We're planning to include the proxies in OpenZeppelin Contracts 3.1, including support for Solidity 0.6. There's no date for that release yet, but it might be about a month from now.

Can you describe the scenarios for which you need support for 0.6? In most cases it should be possible to use the precompiled proxies that are shipped in the npm package.

orenyodfat commented 4 years ago

we are using @openzeppelin/upgrades and @openzeppelin/contracts-ethereum-package in our project . We implemented a DAOFactory contract which is based(and use) on @openzeppelin/upgrades. We would like to be able to compile this contract + all other contracts with solc 0.6 .. We can come out with a workaround which works with the precompiled contracts you provide (can you give a reference to a truffle project which doing so? ) though I guess that it will complicated our truffle project..I would like to avoid it.

frangio commented 4 years ago

We'll look into this in the next couple of days. Unless there's anything unexpected the migration should be easy. We'll post updates here once we have more certainty.

orenyodfat commented 4 years ago

any update re that @frangio ?

julianmrodri commented 4 years ago

Hi all, Im also interested in the 0.6 version of the Ugrades contract. In my case we are working on a quite extense Smart contract which has been developed on 0.6.2 and I want to make it ownable, upgradable and pausable. If it is possible even with the current version of the Upgrades package it would be great to know!

julianmrodri commented 4 years ago

@spalladino is the support for Initializable in 0.6 enough to make a smart contract in 0.6.2 Upgradable and Pausable? Which use case does it cover? Thanks!

abcoathup commented 4 years ago

Hi @julianmrodri, It sounds like you are after an upgradeable version of OpenZeppelin Contracts 3.0 (currently at release candidate) which has Solidity 0.6 support. (Assuming that you are wanting to add Ownable and Pausable to your contract)

You will need OpenZeppelin Contracts Ethereum Package when it is created once OpenZeppelin Contracts 3.0 is released, see the following issue: https://github.com/OpenZeppelin/openzeppelin-contracts-ethereum-package/issues/79

julianmrodri commented 4 years ago

@abcoathup actually I coundt find the Pausable contract in the 3.0 version (Candidate release). Looks like it has been removed is it possible?

frangio commented 4 years ago

@orenyodfat Apologies for taking so long to reply.

There is an initial migration of most contracts to Solidity 0.6 in the solc-0.6 branch. It hasn't been tested though. Unfortunately, although the contract migration itself is quite straightforward, migrating all of the tests and setup to use 0.6 will be quite a bit more work that we don't have the bandwidth to do at the moment.

We have additionally decided to migrate the proxy contracts to OpenZeppelin Contracts, which we estimate will be included in its 3.1 release. Once there they will be tested and released on npm. Keep in mind that the contracts in the application directory of @openzeppelin/upgrades are going to be deprecated, so we will not migrate those.

orenyodfat commented 4 years ago

thanks @frangio, for curiosity , why the application contracts going to be deprecated ? will you provide an alternative for the package/directory mechanism ?
are you referring to #1488 ?

frangio commented 4 years ago

Yes #1488 will be the alternative.