Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Intro to Velocity Network
Velocity NetworkTM is a public permissioned distributed network, based on a permissioned version of the Ethereum Blockchain utilizing Hyperledger Besu. Operating a node and writing to the Velocity Ledger requires permission from the Velocity Network FoundationR.
The following data is stored on chain:
organization metadata - DID, profile, endpoint
credential metadata (encrypted) - ID, type, public key, revocation status
verification voucher transactions
credential types and schemas
Holder - a person that holds the credential on behalf of the subject (themselves or another person)
Issuer - an organization that creates and issues credentials
first party issuer - an entity that can directly attest to the claims within the credential
notary issuer - an entity that can evaluate evidence to attest to the claims within the credential
Relying Party - an entity that requests and verifies credentials from a Holder
Wallet Provider (Holder App Provider) - an organization offering digital wallets to be used by Holders
Credential Agent Operator - an organization operating a credential agent
Agent - an interface to the network used by organizations (Issuer, Relying Party, Holder) - call contracts, retrieve account states - form the 'layer-2' network
Tenant - an organization’s delegate on which behalf the agent is acting
Node Operator - an organization operating a node
Node - a participant on the network holding copies of the underlying ledger
Members (Stewards) - read-only nodes with limited data access that forward write operations to Validators
Validators - full-write permission nodes that participate in consensus
Velocity Network Registrar - a set of centralized services that are used for administering the accredited organizations and credential types on the Network
Credits hub - a module where Velocity credits are administered and credit reward transactions can be executed
Voucher hub - a module where Velocity vouchers are administered and top up transactions can be executed
The ledger - the distributed blockchain-based, continuously-replicated, global cryptographic database maintained by Stewards operating nodes communicating with the Velocity consensus protocol
Issuing - the process of asserting claims about a Holder who receives the verifiable credential
by writing a transaction to the Velocity Ledger which includes the credential ID, its type, the Issuer ID, and the public key matching the private key that signed it
Revocation - the act of an Issuer revoking the validity of a credential
by writing a transaction to the Velocity Ledger marking the credential as revoked
Verification - the process of confirming that a verifiable credential is not modified, revoked or expired and is issued by a trusted authority
by accessing the Velocity Ledger to retrieve the unique public key associated with credential and verify its signature
Velocity currently uses the JWT format for encoding credentials with JWS signatures using SECP256K1 as proofs.
Verifiable credentials are divided into the following categories:
Layer-1 credential types - network’s core set of credential types (e.g. Email, IdDocument, OpenBadgeCredential)
for each issued credential, the Issuer receives a reward in the form of Velocity Credits
Layer-2 credential types - any custom credential type
should be mapped to a Layer-1 type in order for the Issuer to be eligible for a reward
More about credential types here https://docs.velocitynetwork.foundation/docs/developers/basics-credential-types.
did:ion - used to identify organizations or individuals
received when registering with the Registrar
did:velocity - used to identify credentials
is immutable
stores only a single key and credential type
resolving it will burn an NFT to permit DID resolution
This section describes the main steps required to interact with Velocity network:
The verification process (inspection) is initiated by disclosure exchanges where the Relying Party requests credentials from Holder. These exchanges can be encoded in the following ways:
deep links - a URI that matches the spec:
QR-codes - a visual representation of a deep link
Depending on the use case, the Relying Party can request either:
verified credentials
requires payment in tokens
returns the verification checks (policies) result
unverified credentials:
requires no payment in tokens
can be verified later
The verification checks performed against the credential are the following:
UNTAMPERED
pass - hasn't been tampered
fail - has been tampered
voucher_reserve_exhausted - a voucher is required for verification
TRUSTED_ISSUER
pass - issuer is trusted
fail - issuer is not a member of Velocity
self_signed - data attested by the Holder
voucher_reserve_exhausted - a voucher is required for verification
UNREVOKED
pass - hasn't been revoked
has been revoked
voucher_reserve_exhausted - a voucher is required for verification
UNEXPIRED
pass - hasn't expired
fail - has expired
More details on credential verification checks can be found at https://docs.velocitynetwork.foundation/docs/developers/developers-guide-disclosure-exchange#credential-verification-checks.
More on credential verification at https://docs.velocitynetwork.foundation/docs/developers/developers-guide-disclosure-exchange.
This section describes the following functions implemented as part of Velocity network integration:
Velocity network specific operation are available under the velocity
command:
In order to operate on Velocity network, any entity (regardless of scope - issuer, relying party or credential agent operator) has to register with the network.
The onboarding is currently done manually and will custody a DID on the DID:ION network:
get an account with the registrar
by sending an email to support@velocitynetwork.foundation
set up the organization(s)
set the required services according to the use case:
issuer - VlcCareerIssuer_v1
verifier - VlcInspector_v1
agent operator - VlcCredentialAgentOperator_v1
configure the tenants
add the required keys according to the use case:
issuer - ISSUING_METADATA
verifier - EXCHANGES
agent operator - DLT_TRANSACTIONS
The configuration steps from above can be completed either using:
or Rest API
More information on Velocity onboarding can be found at https://docs.velocitynetwork.foundation/docs/developers/developers-guide-getting-started.
Issuing involves an exchange between a Holder and an Issuer, by which the Holder receives a set of offers from the Issuer. Once the Holder accepts the offers, the Issuer converts them into verifiable credentials and supplies them to the Holder.
Depending on data source location and process initiating party, the following issuing types are supported:
custom - credential agent loads offers from itself as well as calling out webhooks
demand triggered - Holder initiates the credential claiming process
Issuer responds with the available credential offers according to Holder’s criteria
supply triggered - Issuer initiates the credential claiming process
offers are made available to the Holder using a notification mechanism by sending a deep-link or qr-code to claim the credentials
batch - credential agent loads offers only from itself
a specialized version of supply triggered custom issuing
More information on issuing can be found at https://docs.velocitynetwork.foundation/docs/developers/developers-guide-issuing.
The interaction with Velocity network is implemented in SSIKit using a Rest API client which currently exposes the functionality through the command-line-interface. The available functions can grouped as follows:
organization related
onboarding
tenant configuration
credential related
issuance
verification
In order to cover the credential related functions, but also tenant management, SSIKit uses a credential agent deployed on walt.id infrastructure. For this, walt.id is registered on Velocity network (currently only on testnet) as a credential agent operator and can issue and verify credentials on behalf of issuer using either issuer's keys or walt.id keys. The diagram below shows how Velocity integration is currently done with SSIKit.
The organization related functions, such as onboarding and DID acquisition, are implemented by calling Velocity network registrar Rest API.
Velocity credential verification is available with the verify
command:
E.g. Verify credential.
Velocity issuance commands are available under issue
command as follows:
offer management
credential management
Before being able to issue verifiable credentials, the credential data needs to be prepared. Offers represent the way to set up credential data. Basically, an offer is a credential that has not been signed. The offer management functions can be accessed from the command:
Currently available functions are:
create offer
E.g. Create an offer.
Credential management functions include:
issue credential
E.g. Issue credential.
Velocity onboading commands are available under the onboard
command as follows:
E.g. Onboarding organization.
Every organization needs a tenant on the credential agent. Tenant functions are available under the tenant
command:
create tenant
E.g. Add a tenant having verifier, issuer and agent operator purposes.
In order to be able to issue / verify credential, it is required to have the correct identification disclosure set up. Current disclosure management functions are:
create disclosure
E.g. Create an integrated issuing identification disclosure.
Once an account was set up with the registrar (see ), cli-tool can be used to register the organization, using the command: