Repository navigation
Fix750 - #864
Merged
Merged
Fix750#864
Conversation
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.
feat: implement project data export and backup (#750)
Closes #750
Description
This PR introduces on-chain native backup and restoration flows. Projects can export their complete ledger state (including metadata, reviews, and verifications), which downstream frontends can then encrypt, sign, and securely store off-chain.
Acceptance Criteria Checklist
Added the
export_project_dataendpoint which meticulously gathers the coreProjectentity, all associatedReviewentities, andVerificationRecorditems tied to the project into a cohesiveProjectDataExportpayload.Access to both the
export_project_dataandimport_project_dataendpoints is firmly protected byowner.require_auth(). This effectively delegates encryption and client-side signature wrapping to the dApp frontend while ensuring unauthorized addresses can't hijack backups.The
import_project_dataRPC unpacks theProjectDataExportpayload, provisions a fresh auto-incremented Project ID, and surgically re-associates all imported reviews, statistics, and verification records to the newly created project in persistent storage.The
ProjectDataExportstruct natively embeds aversion: u32property. The current implementation defaults to version1and actively rejects unknown versions during the import phase to prevent schema corruption.Files Changed
src/types.rs: Defined theProjectDataExportschema integrating the project struct, arrays of reviews, verification records, and a strict version identifier.src/project_registry.rs: Implementedexport_project_datato serialize the project state andimport_project_datato reconstruct a fresh project entry, complete with calculated stats and mappings.src/lib.rs: Exported the aforementioned RPC endpoints directly to theDongleContractpublic interface.