feat(contracts): implement upgradeable smart contract pattern (closes #838)#875
Open
Blaqkenny wants to merge 1 commit into
Open
feat(contracts): implement upgradeable smart contract pattern (closes #838)#875Blaqkenny wants to merge 1 commit into
Blaqkenny wants to merge 1 commit into
Conversation
…racverse#838) Adds the on-chain upgrade pattern required by Stellar Wave issue Fracverse#838: - New admin-gated entrypoints on inheritance-contract: initialize (one-time admin pin), set_admin (admin rotation), get_admin, upgrade (wasm hash swap via host deployer), and version (expected bump source for off-chain consumers). - Strict admin credentials: every entrypoint that mutates governance state calls addr.require_auth() on the stored InstanceDataKey::Admin. The admin is stored in instance storage so it survives across wasm swaps. - Persistent storage retention: the host update_current_contract_wasm swap leaves DataKey::Plan entries and instance storage untouched; instance TTL is bumped in upgrade/version/initialize/set_admin so the admin record cannot expire between the upgrade committing and the new code taking over. - New error variants: Error::AlreadyInitialized and Error::NotInitialized. - Bumps CONTRACT_VERSION (pub const) to 1 so version() is a forward-compatible marker for future releases. - Tests: 11 new cases cover init success/dup, get_admin, admin rotation, unauthorized set_admin/upgrade (should_panic), successful upgrade by admin, persistent plan retention across upgrade, and admin retention across upgrade. Uses a real pre-built wasm fixture at testdata/inheritance_contract.wasm so the host wasm parser accepts the upload.
|
@Blaqkenny Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits. You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀 |
Contributor
|
@Blaqkenny |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements the on-chain upgrade pattern required by Stellar Wave issue #838 on `inheritance-contract`:
Acceptance criteria mapping
Tests
`cargo build --target wasm32-unknown-unknown --release -p inheritance-contract`
Files
Closes #838