Summary

Overview

This proposal upgrades the KinicDB backend to v0.2.2. The release introduces a new feature that enables cycle top-ups from the launcher canister to the memory canister. Users can top up cycles to their own memory canister if they subscribe to our monthly cycle top-up plan.

To authenticate a user principal from our Web2 subscription server, we use vetKeys (VETKD) to exchange an access token between the Chrome extension and our server. We chose this approach because verifying a principal’s signature on the Web2 side is not currently supported by official tools.

Authenticating the User Principal on the Web2 Server

Our protocol largely follows the approach described in Identity-based encryption (IBE).

  1. The user requests an access token.
  2. The Web2 server mints an access token for a specific principal.
  3. The Web2 server derives a user-specific public key.
  4. The Web2 server encrypts the access token with that public key.
  5. The user receives the encrypted access token and decrypts it using their derived private key.
  6. If the user does not yet have the derived private key, they can fetch it from our backend canister.
  7. The user calls the Web2 server APIs using the decrypted access token.
  8. The Web2 server validates the token and confirms it was correctly decrypted.

Changes

  • Add mint_cycles (update call).
  • Add top_up_cycles (update call).
  • Add get_remaining_cycles (query call).
  • Add vetkd_derive_key (update call).
  • Add vetkd_public_key (update call).
Payload

Proposal to Upgrade an SNS Controlled Canister

Target canister: xfug4-5qaaa-aaaak-afowa-cai

Wasm info

Embedded module with 1357460 bytes and SHA256 6c3e6a969f8ee821177efcb43525a6426f7e481d42786be74e3535fac0dd4834.

Mode: Upgrade

Argument info

Upgrade argument with 16 bytes and SHA256 4449444c016b01c88ddcea0b7f010000.

Overview