Digital ID System Part 1
Hyperledger FireFly
uses Decentralized Identifiers (DIDs) to represent identities within its multi-party system, with a custom DID method named "firefly" to resolve these identifiers.
Each identity is uniquely identified by a DID & is managed through a decentralized address book system that relies on claims & verifications.
https://hyperledger.github.io/firefly/latest/reference/identities/
The system supports three primary identity types: organizations (org), nodes (node) & custom identities (custom).
Organizations represent logical on-chain signing identities, typically tied to a blockchain key, and serve as the root for other identities.
Nodes represent off-chain identities associated with a data exchange connector, such as an X.509 certificate, and must be children of an organization identity.
Custom identities allow applications to define more granular identity concepts, such as customers or clients, and are also tied to on-chain verifiers like organizations.
To establish an identity, a party must first claim it via a special broadcast message, which is an on-chain transaction that includes a public reference to off-chain data describing the claim.
https://hyperledger.github.io/firefly/latest/tutorials/create_custom_identity/
For root organization identities, this claim is a signed transaction from a blockchain account that binds the DID to a unique name and the signing key, which then becomes the identity's verifier.
For child identities, such as a custom identity under an organization, two messages are required: the claim signed by the new identity's key and a separate verification message signed by the parent identity's key.
https://hyperledger.github.io/firefly/latest/overview/key_components/digital_assets/#digital-asset-features
This verification process confirms the hierarchical relationship between the parent and child identities.
Once claimed and verified, an identity is assigned a unique DID, such as did:firefly:org/org_1, and is stored within a namespace, which can be used to isolate data and operations.
The FireFly system allows for multiple namespaces within a single supernode, enabling independent configurations for different parties or use cases, such as consortiums or direct blockchain interactions.
https://www.lfdecentralizedtrust.org/blog/2022/09/12/hyperledger-firefly-v1-1-is-now-available
Identities can be managed through the FireFly API, for example, by creating a custom identity via a POST request to the identities endpoint, specifying the parent organization's UUID and the new identity's signing key.
The system also supports the creation of private address books and multiple address books backed by different chains within the same node, enhancing privacy and flexibility.
https://hyperledger.github.io/firefly/latest/reference/identities/#org
The https://github.com/hyperledger/firefly/blob/main/README.md for Digital Assets, data flows & blockchain transactions makes it radically faster to build production-ready apps on popular chains & protocols.
https://hyperledger.github.io/firefly
https://github.com/hyperledger/firefly-cardano
The Hyperledger FireFly monorepo for Cardano blockchain offers a unified repository containing all the code, documentation & tools necessary for developing and deploying multi-enterprise blockchain applications on the Cardano network.
Services and libraries used to integrate Hyperledger FireFly and Cardano
https://github.com/hyperledger/firefly-fir
The FIR (FireFly Improvement Request) (pronounced "fire") process is intended to provide a consistent and controlled path for major changes to FireFly & other official project components, so that all stakeholders can be confident about the direction in which FireFly is evolving.
This process is intended to be substantially similar to the RFCs process other Hyperledger teams have adopted, customized as necessary for use with FireFly.
The http://README.md/ & http://0000-template.md/ files were forked from the Fabric RFCs repo which was in turn forked from the Sawtooth RFCss repo, which was itself derived from the Rust project.