Closed jtobin closed 4 years ago
Uh... probably don't do this? Nothing but the Ecliptic can be upgraded, and even there you want to keep a copy of the old version at Ecliptic1.sol or w/e. The contracts here should match their on-chain versions, and those just can't change.
Yeah, I figured we would only propose to merge that work conjointly with a proposal to the senate to upgrade the ecliptic (the old version would remain in the git history, of course).
For the others -- I just sort of lazily intuited that new versions of at least most could be deployed and ownership/permissions/etc. reassigned as necessary, appealing to the senate as needed to approve the required changes. Is that not true?
It seems like it would be nice to be able to use more recent solc, openzeppelin-contracts, etc. versions for potential security/gas cost improvements, but perhaps muh endeavour is misguided..
(Will merge this one in the meantime anyway.)
For the others -- I just sort of lazily intuited that new versions of at least most could be deployed and ownership/permissions/etc. reassigned as necessary, appealing to the senate as needed to approve the required changes. Is that not true?
This is not really true. Azimuth.sol is an exemplary example of why: there's a lot of data in there (keys, ownership, etc) that a newly initialized contract wouldn't have. Porting the data over into a new contract is theoretically possible, but you really don't want to do it. It's very non-trivial implementation-wise, has potentially enormous gas/ETH costs, and breaks promises around having a persistent data storage contract.
All of that is slightly more easily overcome for the other contracts, but I wouldn't do the work here if we aren't otherwise planning significant updates to those.
Azimuth.sol is an exemplary example of why
Right -- Azimuth is a big potential exception. It's mainly the others I'm thinking of. Regardless I definitely wouldn't imagine this becoming a major line of work any time soon, agreed.
This doesn't include much:
test-extras
npm script for running stuff intest-extras
, i.e. for now just the ERC721 compatibility tests, manuallyI also took the opportunity to fix up the
artifacts.require
path syntax in the migration and test scripts, and to ditch mocha, which wasn't being used at all. Also the lockfile wasn't being tracked via git, but probably should be, so I removed that from .gitignore.Related to fixing #13, I've started some work on updating the contracts (and everything else -- see the
jt/modernise
branch) with a sub-goal of finally resolving that issue, but just plan on picking at that stuff whenever I'm in the mood over the next indeterminate period of time. In the meantime: it's important to have some kind of useful CI running without needing to babysit it too much, so absent being able to make the ERC721 compatibility tests pass consistently, I don't think we should include them in CI.