§ Verana Frontend Specification

Specification Status: Pre-Draft

Latest Draft: verana-labs/verana-frontend-spec

Editors:
Fabrice Rochette (The Verana Foundation, 2060.io)
Participate:

GitHub repo

File a bug

Commit history


§ About this Document

This specification is for the Verana Network frontend, a container-based App easily deployable locally, or in any modern cloud infrastructure.

§ Introduction

This section is non-normative.

§ What is Verana?

Verana is the Zero Trust layer that makes the Internet verifiable.

Like the DNS (Domain Name System) provides a way of resolving domain names, Verana provides a way of resolving, verifying, and proving trust.

Verana is a public, decentralized ecosystem run by volunteers around the world. Anyone can participate and contribute to the ecosystem.

Participants build a Proof-of-Trust reputation over time, and are financially rewarded by the network for their trustworthiness.

§ Based on Verifiable Credentials and GDPR compliant

§ The Verana Foundation

As a non-profit organization, the Verana Foundation’s mission is to provide the required bricks for enabling a Zero Trust layer: governance and leadership, open source software, and a verifiable trust registry of essential credential schemas.

§ Governance and Leadership

The Verana Foundation is governed and leaded by its contributors, participants, and ambassadors.

§ Software

Open source software and modules that implement the Verifiable Trust specification

§ Essential Credential Schemas (ECS) Trust Registry

a Trust Registry of Essential Credential Schemas:

These credential schemas provide the required basic features of the Zero Trust layer, that can be queried by users, organizations, user agents…:

A trust registry governance framework defines the rules for participating in the ECSs as credential Issuer. Provided that they comply with the Governance Framework, any organization can join the ECS Trust Registry.

§ Benefits

Fraud and Identity theft are eradicated.

§ For the End User

§ For Service Providers

§ The Verana App provides

§ Terminology

TBW

§ Specification

§ [GENERAL] General

The Verana App MUST be delivered as a container.

§ [GENERAL-DEPLOYMENT] General - Deployment

§ [GENERAL-ENV] General - Container Variables

Type Variable Description Default Value (if unspecified)
General APP_NAME Veranito
APP_LOGO logo.svg
ADDRESS_EXPLORER https://www.mintscan.io/verana/address/VERANA_ADDRESS
Network Configuration API_ENDPOINT https://api.verana.network
RPC_ENDPOINT https://rpc.verana.network
IDX_ENDPOINT https://idx.verana.network
CHAIN_ID vna-mainnet-1
CHAIN_NAME Mainnet
TOPUP_VS List of VSs for top-up did:example:123, did:example:456
Internationalization DEFAULT_LOCALE Failover locale en_US
SUPPORTED_LOCALES en_US, fr_FR, en:en_US, fr:fr_FR

§ General - Fee Calculation and Preview

As mentioned in this issue

Front end must calculate an estimation of trust fees in Trust Unit and use trust_unit_price, trust_deposit_rate, user_agent_reward_rate + wallet_user_agent_reward_rate to calculate trust fees.

  1. For DID directory create/renew: value is set as a global variable did_directory_trust_deposit
  2. For trust registry creation: trust_registry_trust_deposit
  3. For Credential Schema: credential_schema_trust_deposit
  4. For Start Permission / Renew Permission: for the selected validator permission, Permission. validation_fees + trust_deposit_rate%
  5. Session: use query method Find Beneficiaries, and add trust_deposit_rate + user_agent_reward_rate + wallet_user_agent_reward_rate %

Plus gas fees obviously.

Other methods have just gas fees. Gas fee estimation depends on the size of the sent message. Default might be enough - this spec does not define how to calculate gas fee, but how to calculate required trust fee / deposit.

§ General - Internationalization

[GENERAL-I18N-DEFAULT]

[GENERAL-I18N-LOCALE-DATA] All texts, labels, rollover texts, images with texts, videos, sounds, text icons MUST be centralized in a directory per locale

[GENERAL-I18N-CONTENT-KEY] Each content MUST be identified by its key, content_key.

[GENERAL-I18N-RENDER-CONTENT] Render content from content_key:

Get locale from settings.locale from user settings. If null, use locale from user agent.

NOTE

At least the content of the default locale MUST be provided by development/design team. Default locale for development MUST be en_US.

WARNING

Right to left text (like Arabic) MUST be supported.

§ [GENERAL-LAYOUT] General - Layout

[GENERAL-LAYOUT-RESPONSIVE] App MUST be usable from any device, layout MUST be responsive.

[GENERAL-LAYOUT-HEADER] Header MUST include a squared App logo and App name on the left side, and on the right side the setting icon, a dark/light mode, and a crypto account zone. Optionally, if layout is very small, a Menu hamburger icon CAN appear on te left side of the header, and the App name MAY disappear.

[GENERAL-LAYOUT-FAVICON] Package available in favicons directory. Add all including the site.webmanifest.

§ Header - Not Connected

layout-header-not-connected

§ Header - Connected

layout-header-connected

§ Header - Crypto account details

layout-header-crypto-account

[GENERAL-LAYOUT-MENU] On the left size, a menu. When size of window is small, menu is hidden and a hamburger icon appears for showing the menu.

[GENERAL-LAYOUT-MENU-NORMAL]

normal menu

[GENERAL-LAYOUT-MENU-SMALL]

small menu

[GENERAL-LAYOUT-MENU-SMALL-OPENED]

small menu - opened

[GENERAL-LAYOUT-CONTENT] The content zone.

content zone

[MENU] Menu entries:

§ Crypto Wallet Integration

§ Crypto Wallet Integration - General

[CW-GENERAL-KIT] Use a kit such as the interchain-kit repo to easily integrate any wallet to the Verana App.

[CW-CONNECT-WALLET]

If user reaches the App through any URL of the App, and if a detected installed wallet is found and it has been already granted, App MUST connect to it immediately with no user intervention. (same will happen if I am connected and I reload the page in my browser).

connect wallet

§ Crypto Wallet - Browser Extension

[CW-CONNECT-WALLET-EXT]

Follow kit instructions and be inventive. Example mockup:

connect wallet ext

§ Crypto Wallet - Connect with Mobile

[CW-CONNECT-WALLET-MOB]

Follow kit instructions and be inventive. Example mockup:

connect wallet mobile

§ Crypto Wallet - Connected

[CW-CONNECT-WALLET-CONNECTED]

Redirect user to where he was before connecting.

just connected

§ Dashboard

[DASHBOARD]

dashboard-not connected

dashboard-not connected

§ Crypto Transaction execution

[CRYPTO-TRANSACTIONS-DISPLAY-ZONE]

When a transaction is executed, it MUST be always shown as a popup. Transaction info (a text, renew DID did:example:abc in the example below) MUST be passed as a description so that the display text can be shown in the popup.

display zone

[CRYPTO-TRANSACTIONS-EXEC] When executing a transaction:

pending

[CRYPTO-TRANSACTIONS-SUCCESS] when transaction is successful:

success

[CRYPTO-TRANSACTIONS-ERROR] when error:

error

§ Account

[ACCOUNT-MAIN]

Account shows balances:

and 3 use cases:

account

Header Actions

§ Account - Get VNA

Present a list of services to top-up my verana account.

The list of the services is configurable in variables *TOPUP-VS which depends on network. Use this list of service to generate a radio button type select.

account

§ Account - Claim Interests

[ACCOUNT-TD-CLAIM-INTERESTS] If interests are available, user sees the text and the cancel / confirm buttons like in mockup. Else, show text “You do not have interests to claim yet.” with no buttons.

account

§ Account - reclaim TD

[ACCOUNT-TD-RECLAIM] If reclaimable trust deposit is not equal to 0, user sees the text, confirm check, and the cancel / confirm buttons like in mockup. Else, show text “You do not have reclaimable trust deposit.” with no check box and no buttons.

account

§ Settings

All customized settings MUST be persisted in browser session.

[SETTINGS-MAIN] The Settings page MUST be shown when user hits the settings icon in header. Settings include 2 sections: General and Networks. Settings MUST work even if user is not connected.

settings

§ Settings - General

[SETTINGS-GENERAL-LOCALE-SELECT] Default to user agent presented locale “Browser Default” which sets settings.locale to NULL (undefined). User can force a locale here and store it to settings.locale. Locale list MUST contain all supported locales. Changing locale does not require any confirmation and is immediate.

alt text

§ DID Directory

§ List DIDs

[DIDS-LIST-RESULTS]

When screen size is reduced, column are progressively eliminated, in this order:

DID and expire MUST be shown always.

[DIDS-LIST-QUERY-PERSISTENCE]

By default, Did query option is preselected with “Show DIDs I control / All DIDs”. When user customizes the query, query is persisted in user session. If user go to DID Info by clicking a result row, and go back to list using the browser “back” or clicks “back to directory” from other DID screens, query is loaded from session. If user hits the “DID Directory” menu, query session is cleared.

[DIDS-LIST-DIDS-I-CONTROL]

list I control

[DIDS-LIST-SEARCH-DID]

alt text

[DIDS-LIST-FOR-CONTROLLER]

list for controller

§ DID Infos

[DIDS-DID-INFOS] Show DID infos and Action use cases:

did infos

§ Add a DID

[DIDS-DID-ADD] Adds a DID to the Directory. Use [MOD-DD-MSG-1-2-2] from VPR spec to estimate approx transaction cost.

add a DID

§ Renew a DID

[DIDS-DID-RENEW] Renew a DID. Use [MOD-DD-MSG-2-2-2] from VPR spec to estimate approx transaction cost.

renew a DID

§ Touch a DID

[DIDS-DID-TOUCH] Renew a DID. Use [MOD-DD-MSG-4-2-2] from VPR spec to estimate approx transaction cost.

touch a DID

§ Remove a DID

[DIDS-DID-REMOVE] Renew a DID. Use [MOD-DD-MSG-3-2-2] from VPR spec to estimate approx transaction cost.

remove a DID

§ Trust Registries

§ List Trust Registries

[TR-LIST-RESULTS]

When screen size is reduced, column are progressively eliminated, in this order:

DID and expire MUST be shown always.

List Trust Registries

§ Add a Trust Registry

[TR-NEW] Adds a Trust Registry.

When user confirms:

new Trust Registry

§ Trust Registry Infos - Basic Information

[TR-INFOS] Show Trust Registry infos. To switch to edit user hits the “edit” icon.

alt text

Edit:

mod-tr-msg-4-update-trust-registry

alt text

NOTE

primary governance framework language cannot be modified

§ Trust Registry - Add Governance Framework Document

[TR-EGF-ADD-DOC] Add EGF document.

When user confirms:

§ Trust Registry - Set EGF version active

[TR-EGF-SET-ACTIVE] Set EGF version active.

When user confirms:

§ Trust Registry - Credential Schema List

Show existing Credential Schemas for this Trust Registry ordered by id desc, with a link for creating a new Credential Schema at the top.

[TR-CS-LIST]

TR CS List

§ Trust Registry - New Credential Schema

Create a new Credential Schema

[TR-CS-NEW]

TR CS New1

part2:

TR CS New2

When user confirms:

§ Trust Registry - View Credential Schema

[TR-CS-VIEW]

Do not show permissions yet.

TR CS View

Table of Contents
undefined