-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Open
Description
Program Upgradability
This is the tracking issue for program upgradability.
Resources
- Refer to the ARC for the specification.
PRs
The component PRs listed in their desired review/merge order are:
- [Refactor] Global stack map. #2628
- [Redesign] Remove cached program metadata and add protections against large recursion. #2629
- Improves safety & readability on transaction root derivation logic #2668
- [Feature] Introduce
constructor
,Operand::Checksum
andOperand::Edition
#2653 (subsumed) - [Feature] Support program upgradability. #2655 (subsumed)
- [Feature] Support
program_owner
as an operand. #2717 (subsumed) - [Feature] Reject old executions after an upgrade. #2722 (subsumed)
- [Fix] Address feedback from program upgradability audits. #2758 (subsumed)
- [Feature] Complete implementation of program upgradability. #2807 (subsumes the above PRs)
TODOs
- Merge outstanding PRs into a single one.
- Merge in latest changes from staging. ([Feature] Complete implementation of program upgradability. #2807)
- Update ConsensusVersion ([Feature] Complete implementation of program upgradability. #2807)
- An ARC: ARC-0006: Program Upgradability ARCs#94
- A compatible snarkOS PR: [Feature] Program Upgradability. snarkOS#3638
- A compatible Leo PR: [Feature] Support program upgrades. leo#28593
- A documentation PR on developer.aleo.org: Add documentation for program upgradability. AleoNet/welcome#48
- Resolve discussion on invalidating stale executions. Stale executions are invalidated.
- Ensure
partially_verified_transactions
takes in program editions as key. Currently implemented in a private fork of snarkVM. Will be moved once reviews are complete.
Tests
In addition to testing in the component PRs, the following tests were run.
Program Regressions
- Verified that a
Process
/VM
could be constructed over existing programs on mainnet and testnet. [source1], [source2] - Verified that that
cost_in_microcredits_*
andget_number_of_calls
are equivalent for two different versions of snarkVM (v1.3.0 and eb1ca40). [source] - Performance profile between snarkVM 1.3.0 and eb1ca40 using the first and second tests.
Network
- Deadlock test on [Redesign] Remove cached program metadata and add protections against large recursion. #2629. Results: Grafana
- Sync test on [Redesign] Remove cached program metadata and add protections against large recursion. #2629 from genesis to tip for
canary
,testnet
, andmainnet
. This should be run in tandem with baseline sync test using the staging branch of snarkVM. The machine utilization stats should be saved for both. - Sync test on [Feature] Support program upgradability. #2655 verifying that new
Deployment
is backwards compatible
Metadata
Metadata
Assignees
Labels
No labels