The server portion of a distributed ledger purpose-built for decentralized identity.
Switch branches/tags
bulldog-phase-1-0.2 bulldog-phase-1-0.1 1.9.19-migrations-test 1.9.18-migrations-test 1.9.17-migrations-test 1.9.16-migrations-test 1.9.15-migrations-test 1.9.14-migrations-test 1.9.13-migrations-test 1.9.12-migrations-test 1.9.11-migrations-test 1.9.10-migrations-test 1.9.9-migrations-test 1.8.7-migrations-test 1.8.6-migrations-test 1.8.5-migrations-test 1.8.4-migrations-test 1.8.3-migrations-test 1.8.2-migrations-test 1.6.642-master 1.6.641-master 1.6.640-master 1.6.639-master 1.6.638-master 1.6.637-master 1.6.636-master 1.6.635-master 1.6.634-master 1.6.633-master 1.6.632-master 1.6.631-master 1.6.630-master 1.6.629-master 1.6.628-master 1.6.627-master 1.6.626-master 1.6.625-master 1.6.624-master 1.6.623-master 1.6.622-master 1.6.621-master 1.6.620-master 1.6.619-master 1.6.618-master 1.6.617-master 1.6.616-master 1.6.615-master 1.6.614-master 1.6.613-master 1.6.612-master 1.6.611-master 1.6.610-master 1.6.609-master 1.6.608-master 1.6.607-master 1.6.606-master 1.6.605-master 1.6.604-master 1.6.603-master 1.6.601-master 1.6.600-master 1.6.599-master 1.6.598-master 1.6.597-master 1.6.596-master 1.6.595-master 1.6.594-master 1.6.593-master 1.6.592-master 1.6.591-master 1.6.590-master 1.6.589-master 1.6.588-master 1.6.587-master 1.6.586-master 1.6.585-master 1.6.584-master 1.6.583-master 1.6.582-master 1.6.581-master 1.6.580-master 1.6.579-master 1.6.578-master 1.6.577-master 1.6.576-master 1.6.575-master 1.6.574-master 1.6.573-master 1.6.572-master 1.6.571-master 1.6.570-master 1.6.569-master 1.6.568-master 1.6.567-master 1.6.566-master 1.6.565-master 1.6.564-master 1.6.563-master 1.6.562-master 1.6.561-master
Nothing to show
Clone or download
andkononykhin Merge pull request #994 from spivachuk/remove-schema-revalidation
INDY-1753: Updated indy-plenum dependency
Latest commit 39c3e93 Oct 23, 2018
Failed to load latest commit information.
acceptance flake8 fixes 3 Oct 23, 2018
build-scripts/ubuntu-1604 Rise soft/hard nofiles limits for service, set clients connections li… Jul 11, 2018
ci INDY-1564: increment plenum and crypto version Aug 16, 2018
collateral/logos Add official versions of logos, vetted by Linux Foundation graphic ar… Aug 28, 2017
data INDY-1467: add migration to update clients connections limit in indy.… Jul 13, 2018
design INDY-1363: change permission to validator_info command May 24, 2018
dev-setup Pinned version for rocksdb. User can now provide the version number o… Oct 11, 2018
docs Split load script into several files; convert it to python package; a… Sep 13, 2018
environment Deprecated Vagrant method for running test network Jul 4, 2018
indy_client Flake8 fix Oct 9, 2018
indy_common INDY-798: Remove TGB from codebase Oct 9, 2018
indy_node Merge pull request #984 from ArtObr/indy_1723 Oct 22, 2018
pool_automation Use stateful_set in aws_manage role Oct 15, 2018
sample INDY-830: Removed Evernym and Sovrin brands (#351) Oct 2, 2017
scripts Merge pull request #991 from mgbailey/master Oct 22, 2018
tools/diagnostics Merge pull request #834 from ckochenower/master Jul 24, 2018
.flake8 INDY-1055: Environment migration (#510) Mar 28, 2018
.gitignore INDY-1055: Environment migration (#510) Mar 28, 2018
.travis.yml INDY-830: Removed Evernym and Sovrin brands (#351) Oct 2, 2017 changelog update 1.6.78 Oct 23, 2018
Jenkinsfile switched to new CD API (#387) Oct 26, 2017 optionally sets from env pr context to check Jul 3, 2018 catch exception for missed cleanWs step (#505) Dec 22, 2017
LICENSE Initial changes Dec 21, 2016 Improve jira hyperlink in README Jul 14, 2017 Feature Added: Repo consolidation (#215) Jul 10, 2017 add help Aug 28, 2018 INDY-156 POOL_UPGRADE txn unclear error message (#197) Jul 6, 2017 Deprecated Vagrant method for running test network Jul 4, 2018
node_reg.conf Feature Added: Repo consolidation (#215) Jul 10, 2017 INDY-830: Removed Evernym and Sovrin brands (#351) Oct 2, 2017
requirement.txt INDY-830: Removed Evernym and Sovrin brands (#351) Oct 2, 2017 Check test suit preparation exit status Feb 22, 2018 INDY-1753: Updated indy-plenum dependency Oct 23, 2018


About Indy Node

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.

Relationship with Sovrin

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.

Getting Started Guide
Hyperledger Wiki-Indy
  • 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.

Technical Overview of Indy Blockchain

Please visit Technical Overview of Plenum.

More documentation can be found in indy-plenum-docs and indy-node-docs.

Indy Node Repository Structure

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 (CLAIM_DEF, SCHEMA, POOL_UPGRADE, etc.)
  • indy-client
    • Contains client and CLI code
    • Will be deprecated soon in favor of indy-sdk, so please use indy-sdk for your own applications dealing with Indy ecosystem.
  • indy-common
    • Common code for both indy-node and indy-client parts
  • 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)

Dependent Projects

  • indy-plenum
    • The heart of the distributed ledger technology inside Hyperledger Indy.
    • Most probably you will need to make changes in Plenum if you want to contribute to Indy. So, if you want to work with Indy Node, you will need to have the Plenum code as well in most of the cases and work with two projects at the same time (see How to Start Working with the Code below).
  • indy-anoncreds
    • A python implementation of the anonymous credentials ideas developed by IBM Research.
    • This is quite independent from indy-node/plenum. So, in most cases you don't need this code to contribute to Indy-Node.
    • It will be deprecated soon in favor of anoncreds implementation in indy-sdk (see below).
  • indy-sdk
    • An official SDK for Indy.
    • it contains client and anoncreds implementation
    • You don't need it to contribute to Indy-Node. But please use indy-sdk for your own applications dealing with Indy ecosystem.
    • It will replace indy-client and indy-anoncreds parsts soon.
  • indy-crypto
    • A shared crypto library
    • It's based on AMCL
    • In particular, it contains BLS multi-signature crypto needed for state proofs support in Indy.

Contact us

  • Bugs, stories, and backlog for this codebase are managed in Hyperledger's Jira. Use project name INDY.
  • Join us on Jira's Rocket.Chat at #indy and/or #indy-node channels to discuss.

How to Contribute

How to Install a Test Network

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):

How to Start Working with the Code

Please have a look at Dev Setup

How to Start Indy Client CLI

Once installed, you can play with the command-line interface by running Indy from a terminal.

Note: For Windows, we recommended using either cmder or conemu.


Continuous Integration and Delivery

Please have a look at Continuous integration/delivery

How to send a PR

  • Make sure that you followed write code guideline before sending a PR
  • Do not create big PRs; send a PR for one feature or bug fix only. If a feature is too big, consider splitting a big PR to a number of small ones.
  • Consider sending a design doc into design folder (as markdown or PlantUML diagram) for a new feature before implementing it
  • Make sure that a new feature or fix is covered by tests (try following TDD)
  • Make sure that documentation is updated according to your changes
  • Provide a full description of changes in the PR including Jira ticket number if any
  • Make sure that all your commits have a DCO sign-off from the author
  • Make sure that static code validation passed (you can run flake8 . on the project root to check it; you can install flake8 from pypi: pip install flake8)
  • Put the link to the PR into #indy-pr-review channel in Rocket.Chat
  • A reviewer needs to start your tests first (add test this please comment to the PR)
  • You need to make sure that all the tests pass
  • A reviewer needs to review the code and approve the PR. If there are review comments, they will be put into the PR itself.
  • You must process them (feel free to reply in the PR threads, or have a discussion in Rocket.Chat if needed)
  • A reviewer or maintainer will merge the PR (we usually use Squash)

How to send a PR to both plenum and node

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 of indy-plenum (indy-plenum-dev in pypi): X.Y.Z (you can check it either on tags/releases page, pypi or on CI server).
  • Change indy-plenum-dev's dependency version to the new one in indy-node's
  • 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

Docs and links