Proposed migration plan from 1 ⇒ 1.1 and from 1.x ⇒ 2.

1 ⇒ 1.1

Motivation

Version 1.1 allows projects to burn tokens easily, move from 0% reserved to any other value more safely, pause inbound payments, and mint more of its own tokens on demand.

Projects will now be able to pause recieving payments on a per-funding cycle basis using an added funding cycle metadata property, and successfully call printReservedTickets when their reserved rate is 0%. Anyone will be able to burn their tokens with a call to redeem.

There is no more printPreminedTicket transaction. It is instead printTickets, and can be called by the project owner at any time during a funding cycle that allows printing via an added metadata flag.

It also fixes a small bug that prevents overflow from being displayed correctly for projects that have yet to distribute funds during the current cycle.

This update will solve many of the annoyances current projects running on the Juicebox protocol have been coming across. This update will reduce the risk vector across the paltform.

Logistics

Once the TerminalV1_1 contract is deployed, projects will be able to voluntarily migrate to it using the built in migrate call of TerminalV1. Once complete, TerminalDirectory.terminalOf(<projectId>) will change to return the address of TerminalV1_1, all of the project's current outstanding reserved tokens will be distributed, and the project's funds will transfer over.

Projects will not have to relaunch, reissue its tokens, reconfigure its funding cycles, or do anything else for that matter.

All new projects can be made using 1.1 directly.

Caveats

In order for a project's reserved token accounting to remain correct after migrating, the project's treasury must have non-zero funds in it upon migrating. Projects that do not have a balance in Juicebox are required to add some ETH (any amount) via addToBalance before calling migrate.