forum.dfinity.org Open in urlscan Pro
2602:fd3f:3:ff01::2b  Public Scan

Submitted URL: http://forum.dfinity.org/
Effective URL: https://forum.dfinity.org/
Submission: On January 19 via api from US — Scanned from DE

Form analysis 1 forms found in the DOM

POST /login

<form id="hidden-login-form" method="post" action="/login" style="display: none;">
  <input name="username" type="text" id="signin_username">
  <input name="password" type="password" id="signin_password">
  <input name="redirect" type="hidden">
  <input type="submit" id="signin-button" value="Anmelden">
</form>

Text Content

Zum Hauptinhalt springen

RegistrierenAnmelden
 * 
 * 


SUMMARY

We would like to announce that we started looking into the canister
backup/restore problem. We are currently in the design phase and are looking for
your input on:

 * Importance of the problem for you and your use cases. This would help us to
   prioritise this relative to other problems.
 * Your thoughts on the potential snapshot-based solution presented here.
 * Your suggestions of alternative solutions.


BACKGROUND & PROBLEM STATEMENT

Currently, there is no easy way on the Internet Computer to backup data in the
event of corruption or data loss, and to restore it by reverting to a previous
state. Developers must manually implement a way to serialise the state of the
canister, download it off-chain, and then manually upload it if they need to
restore the data. This approach is error-prone, not scalable, expensive, and
cannot be easily done in a reasonable amount of time.

To address this issue, the IC should provide a way for canisters to take
snapshots of their state and restore them when necessary. Additionally, it would
be ideal if the data could be exported and imported to and from a local
environment, but this would require further engineering effort and can be
implemented in future iterations.

By solving this problem at the protocol level, controllers can fix a broken
canister by rolling back to a previously saved snapshot in the event of a bug.
This is a common problem encountered, especially when upgrading a canister.


POTENTIAL SOLUTION

At this stage, our current idea is to concentrate solely on developing a
prototype that offers endpoints for capturing on-chain snapshots of canister
states and loading the snapshots to canisters. A snapshot will naturally consist
of both the stable memory and the heap.

Of course, the initial iteration will have a few constraints, which will help to
make the problem as straightforward as possible while providing an improved
developer experience.

 * Only controllers have the authority to take a snapshot and restore it.
 * While it is not explicitly enforced, creating a snapshot only after stopping
   the canister is recommended. This follows the same principle as with
   upgrading a canister, as making sense of the callbacks may not be possible.
 * During the first iteration, only one snapshot per canister will be allowed,
   and taking a new snapshot will replace the old one. In later iterations, we
   may expand this feature to enable multiple snapshots per canister.

Below, you can find an API sketch for interacting with the IC when there is a
need to take a snapshot or recover the state from a snapshot identified by
snapshot_id.

type timestamp = nat;

type bytes = nat;

type snapshot = record {

    id: snapshot_id;
    
    taken_on: timestamp;
    
    label: opt text;
    
    total_size: bytes;
    
    // Checksum for correctness verification.
    
    checksum: blob;

};

service: {

    // Takes a snapshot of the given canister's state.
    
    take_snapshot: (canister_id, label: opt text) -> (snapshot_id);
    
    // Loads the snapshot to the canister identified by `canister_id`.
    
    load_snapshot: (snapshot_id, canister_id) -> ();
    
    // List the snapshots of the canister.
    
    list_snapshots: (canister_id) -> (vec snapshot);
    
    // Deletes the snapshot with the given ID.
    
    delete_snapshot: (snapshot_id) -> ();

}



FUTURE OUTLOOK

In the future, it should be possible to incorporate support for more features on
top of the existing proposal. Potential additional features that could be
implemented include:

 * Endpoint for downloading a snapshot of a canister to the local environment.
 * Endpoint for uploading a snapshot from a local environment to the IC.
 * Ability to create new canisters based on snapshots.

These new features are useful in scenarios such as downloading snapshots to a
local environment for debugging or backup purposes, restoring canister states
from an off-chain backup or creating new canisters with the data from previously
taken snapshots.

However, implementing these features would require considerable engineering
effort, including developing tools for manipulating local snapshots, debugging
and inspecting data from a snapshot.


WHAT WE ARE ASKING THE COMMUNITY

Please let us know if the problem of backup/restore is important for you. It
would be great if you could share your use case and requirements. We would also
like to know if the snapshot-based solution would work for you.

We welcome any alternative proposals that you may have. Thank you for taking the
time to share your thoughts with us.

 1. alle Kategorien
    
 2. alle Schlagwörter
    
    alle
    

 * Aktuell
 * Angesagt
 * Kategorien



Thema Antworten Aufrufe Aktivität

Announcing Technical Working Groups
Developers
Hello everyone, We at the DFINITY Foundation have been working to provide
greater visibility into our roadmap and more opportunities for the community to
provide feedback on DFINITY’s contributions to the Internet Compu… weiterlesen
33 15,7 T. Dez. '23

Welcome to the DFINITY Developer Forum

Welcome to the DFINITY Discourse Forum! In this post, you’ll find some helpful
information and resources about DFINITY as well as some guidelines for
contributing to and interacting within our forum. Introduction to DF…
weiterlesen 2 13,3 T. Juli '21 Voting for a new IC release - 2024-01-18_23-01
Governance
releasereplica
0 14 12 min Fix: NF Neurons Not Available for Direct Voting in NNS Dapp
Governance
0 19 27 min Assigned: BNT-5 - ICRC-7 NFT Implementation (Rust or Motoko)
Bounties
NFT
62 2,6 T. 32 min Proposal to create an SNS DAO for SNEED
Governance
community-considerationsns
111 7,2 T. 1 h ICP PR Collaborative - Open Offer To ICP Founders
General
1 240 2 h Protocol suite for chain-key ED25519?
Developers
8 225 2 h Trading is very slow is it the issue of limited boundary nodes?
Developers
Discussingcommunity-consideration
6 118 2 h Overview of EstateDAO - Revolutionizing Vacation Home Investment
Governance
community-considerationsns
0 28 2 h

Local Development test environment
Developers
1 39 3 h Canister Logging Support [Community Consideration]
Developers
community-consideration
11 307 3 h Comprehensive Overview of Gold DAO
Governance
community-considerationsns
82 8,8 T. 3 h Boundary Node Roadmap
Roadmap
Boundary-nodes
71 5,5 T. 3 h BitBasel - A marketplace for buying and selling fine digital
artwork
Showcase
4 124 3 h Allow installation of large Wasm modules
Developers
Discussingcommunity-consideration
68 2,4 T. 4 h ckETH integration
Language Support
1 70 4 h Hobbi, the disruptive social platform that changed the rules of the
game
Showcase
4 215 5 h Technical Working Group DeAI
Developers
68 2,6 T. 5 h Increased Canister Smart Contract Memory
Roadmap
in-progress
178 22,7 T. 5 h Node-motoko Question - Dependency on oCAML?
Language Support
16 544 6 h Question about getting the Representation-Independent hashing of a
Structure Data
Developers
10 105 6 h Add “Staking” category to the ICP ecosystem showcase
General
0 57 11 h What do you need from ICP in 2024?
Developers
68 2,1 T. 12 h New Node Provider Proposals
Roadmap
community-considerationin-progress
345 14,7 T. 14 h IC WebSocket: Stable Release
General
35 1,9 T. 15 h Call for Participation: NFT Token Standard Working Group [Status
Updated]
Developers
161 4,3 T. 19 h Non replicated HTTPS outcalls
Developers
13 408 19 h

How do I serialize an object into CBOR format in Motoko?
Developers
8 165 22 h Collaboration on Reviving a Classic Amiga Game within the IC
Ecosystem
Showcase
3 110 23 h








Invalid date Invalid date