Last updated: 2025-01-21 01:10:36.118330 File source: link on GitLab
Table of Contents
Primary Actor: AI Developer
Supporting Actors:
Hosting Service
Storage Service
Billing Service
The user wants to deploy a new application on a decentralized hosting platform, using the NuActor framework for secure authentication.
The user has an application that is using working implementation of the the NuActor model (in our case DMS).
The Hosting Service supports NuActor Auth and is functional (is running on DMS).
The Storage Service is available for storing files.
The user initiates a request to deploy a hosting environment.
User requests deployment: The user sends a deployment request to the Hosting Service, including their DID.
Authenticate user:
The user submits their DID to the hosting provider requesting permission deploy, along with a token addressed to the hosting providers DID that the hosting provider can use to authenticate (provide) their response back to the user. (the message is sent encrypted over the NuActor Substrate, libp2p)
The hosting provider creates an access token with the rights to deploy the application.and expiry timestamp and sends it back to the user, additionaly the hosting provider includes the token issued by the user additionally signed by them that proves they are who they say they are.
The user then saves this token and "provides" it in all future requests to the hosting provider. until such a time that it expires. The hosting provider will respect the capabilities in the certificate until its expiry (or any other certificates in it's chain) unless it is revoked.
Provision hosting: -The user submits the deployment request to the hosting service (this can be direct to the device/s that will run the application) The submission includes the token signed by the hosting provider that gives them access to launch the app.
Files are uploaded to the Storage Service and linked to the user’s DID.
Start billing:
The Nunet observability framework begins tracking hosting usage for the user.
Confirm deployment: The Hosting Service confirms successful deployment to the user.
Authentication failure:
If the token is invalid, the Hosting Service denies the request and notifies the user.
Storage failure:
If the Storage Service is unavailable, the Hosting Service retries or returns an error.
To be rewritten in Gherkin features as use-case specific regression tests and integrated into test-suite.
Create a Hosting Deployment: As a user, I want to deploy an application on a decentralized platform so that I can host my data securely using my DID for authentication.
The Hosting Service must send a cryptographic challenge to the user's wallet upon a deployment request.
The user must be able to sign the challenge with their DID private key.
The Hosting Service must verify the signed challenge using the DID Document.
Upon successful verification, the system must provision a hosting environment and store the user's files via the Storage Service.
The deployment must be linked to the user’s DID, and a confirmation message must be sent to the user.
Access Hosted Content: As a user, I want to securely access my hosted content so that I can manage or view it without unauthorized access.
The Hosting Service must require DID Auth for all access requests.
A cryptographic challenge must be generated and verified before granting access.
The Storage Service must retrieve the user’s files only if the DID Auth process is successful.
If authentication fails, the system must deny access and notify the user.
Update Hosting Deployment: As a user, I want to update my hosted application so that I can modify its content securely.
The Hosting Service must authenticate the user using DID Auth before any update request is processed.
Updated files must be securely uploaded to the Storage Service and linked to the user’s DID.
A confirmation message must be sent after the update is complete.
The following diagrams are added from from manually rendered source files in ./specs/
folder relative to this file. Current diagrams are just placeholders for further collaborative work aimed at reflecting actual design of the use-case.