The server portion of a distributed ledger purpose-built for decentralized identity.
This codebase embodies all the functionality to run nodes (validators and/or observers) that provide a self-sovereign identity ecosystem on top of a distributed ledger. It is the core project for Indy; over time, all other indy-* projects may collapse into this one, except for indy-sdk.
Indy has its own distributed ledger based on RBFT.
This code is independent from but commonly associated with The Sovrin Foundation. The Sovrin Foundation is a public utility for identity, built on top of this codebase. People who install sovrin packages (e.g., with
sudo apt install sovrin) get prepackaged genesis transactions that integrate with an Indy validator pool using Sovrin's governance and trust framework. However, it is possible to use Indy Node with a different network, using whatever conventions a community chooses.
If you haven't done so already, please visit the main resource for all things "Indy" to get acquainted with the code base, helpful resources, and up-to-date information: Hyperledger Wiki-Indy.
indy.readthedocs.iofor the most current documentation and walkthroughs
Indy Node repo consists of the following parts: - indy-node: - indy-plenum-based implementation of distributed ledger - Extends plenum's base pool functionality with specific transactions support (CLAIMDEF, SCHEMA, POOLUPGRADE, etc.) - indy-common - Common code for indy-node - scripts - Some scripts that can be run for installed Node (in particular, scripts to start Nodes, generate keys, prepare test Network, etc.) - doc - A folder with documentation - dev-setup - A folder with scripts helping to configure development environment (python, dependencies, projects, virtual environment)
Bugs, stories, and backlog for this codebase are managed in Hyperledger's Jira. Use project name
Join us on Hyperledger's chat in or to discuss.
You can have a look at Start Nodes to understand what needs to be done to create a Network, initialize and start Nodes, and what scripts are provided for this.
The described process is automated in one of the ways below (it allow to install a test Network):
Docker Start Pool with Docker
Docker-based pool using with new libindy-based CLI:
Also coming soon: Create virtual machines in AWS.
Please have a look at Dev Setup
Please have a look at Continuous integration/delivery
designfolder (as markdown or PlantUML diagram) for a new feature before implementing it
flake8 .on the project root to check it; you can install flake8 from pypi:
pip install flake8)
#indy-pr-reviewchannel in Rocket.Chat
test this pleasecomment to the PR)
If you made changes in both indy-plenum and indy-node, you need to do the following: - Raise a PR to indy-plenum's master and wait until code is reviewed and merged (see above) - So, a new build of indy-plenum is created - Note a just built version
X.Y.Z.devBof indy-plenum (you can check it in pypi or on CI server). - Change indy-plenum's dependency version to the new one in indy-node's setup.py. - Raise PR to indy-node's master and wait until code is reviewed and merged (see above) - So, a new build of indy-node is created