- RFC: 01-014
- Authors: Venkatraman Ramakrishna
- Status: Retired
- Since: 20-Oct-2020
This document specifies the functions performed and data managed by an IIN Steward Agent.
An IIN Steward Agent acts on behalf of an IIN Steward, and is built according to the canonical specification of an Indy Steward. The registration of the steward's verinym (DID) along with key-generation seed values (generated using a random number generator) in the Indy ledger occurs at genesis (or bootstrap) time.
This is built as a Hyperleder Aries service, which consists of a <controller, agent> pair, with the agent built using Aries Cloud Agent - Python as it supports persistent storage. This service has the capability to communicate with other agents using the peer-to-peer Aries protocol. It is recommended that this service be launched in a Docker container. Post-launch, the following actions must be carried out:
- Initialize a wallet to store DIDs, keys, and any other crypto material
- Create a DID record in the wallet and recreate the signing key using the seed value (which it must have obtained a priori using an out-of-band mechanism)
- Initialize local persistent storage or database for configuration files and runtime data
- Register credential schema and definition for
memberlist
on the IIN ledger - Register credential schema and definition for
membership
on the IIN ledger - Initialize an empty data structure in persistent storage to store member lists for networks. This is meant to be a key-value map, the key being a network ID, and the value being an array of network units' DIDs.
- Initialize an empty data structure in persistent storage to store network units' membership properties (currently only the network ID, as stated in the IIN spec). This is meant to be a key-value map, the key being the network unit's DID and the value being an instance of the
membership
schema. At this point, the IIN Steward Agent has ownership of the DID that was bootstrapped into the IIN ledger. By virtue of possessing the signing key, it is now ready to create new trust anchors if necessary, and issue verinyms and credentials to network units within participating networks.
The IIN Steward Agent can perform the following functions for an IIN Agent:
- Register a verinym (DID) on the IIN ledger for an IIN Agent as a unit of a given network, identified by a network ID. (This occurs through a multi-step protocol initiated by the IIN Steward, ending with a DID record for an IIN Agent stored in the IIN ledger, and a corresponding signing key stored in the IIN Agent's personal wallet)
- Supply the list of member DIDs of a network (identified by a network ID) upon request: this is a verifiable presentation
- Supply a membership credential (with membership properties) upon request: issued as a verifiable credential, which can be presented by the IIN Agent to other IIN Agents