• Stars
    star
    647
  • Rank 69,579 (Top 2 %)
  • Language
    Python
  • License
    Apache License 2.0
  • Created almost 8 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The server portion of a distributed ledger purpose-built for decentralized identity.

logo

Open in Gitpod

Indy Node

Announcements

April 12 2023

The project branches have changed.

The main branch now contains the Ubuntu 20.04 work stream, and the previous main branch containing the Ubuntu 16.04 work stream has been moved to the ubuntu-16.04 branch. We encourage everyone to switch to using the new code and appreciate your patience while we stabilize the work flows and documentation on this new branch.

The following changes were made to the branches:

  • main (default) renamed to ubuntu-16.04
    • This retargeted the associated PRs.
  • ubuntu-20.04-upgrade set as the default branch.
  • ubuntu-20.04-upgrade (default) renamed to main

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

We recommend that developers should explore Indy Walk through to learn about Indy basics or Getting Started Guide with VCX and Getting Started Notebook.

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

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

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-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.
  • ursa
    • Hyperledger's shared crypto library
    • 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.

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

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 X.Y.Z.devB of 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

Docs and links

More Repositories

1

fabric

Hyperledger Fabric is an enterprise-grade permissioned distributed ledger framework for developing solutions and applications. Its modular and versatile design satisfies a broad range of industry use cases. It offers a unique approach to consensus that enables performance at scale while preserving privacy.
Go
14,808
star
2

hyperledger

Hyperledger is a Collaborative Project at The Linux Foundation.
3,702
star
3

fabric-samples

Samples for Hyperledger Fabric
Go
2,611
star
4

besu

An enterprise-grade Java-based, Apache 2.0 licensed Ethereum client https://wiki.hyperledger.org/display/besu
Java
1,314
star
5

solang

Solidity Compiler for Solana and Polkadot
Rust
1,180
star
6

fabric-sdk-java

Java
1,098
star
7

fabric-sdk-go

Go
885
star
8

cello

Operating System for Enterprise Blockchain
Python
850
star
9

fabric-sdk-node

Hyperledger Fabric SDK for Node https://wiki.hyperledger.org/display/fabric
JavaScript
777
star
10

caliper

A blockchain benchmark framework to measure performance of multiple blockchain solutions https://wiki.hyperledger.org/display/caliper
JavaScript
605
star
11

fabric-ca

Go
426
star
12

firefly

Hyperledger FireFly is the first open source Supernode: a complete stack for enterprises to build and scale secure Web3 applications. The FireFly API for digital assets, data flows, and blockchain transactions makes it radically faster to build production-ready apps on popular chains and protocols.
Go
423
star
13

iroha

Iroha - A simple, enterprise-grade decentralized ledger
C++
395
star
14

fabric-sdk-py

Hyperledger Fabric Python SDK
Python
394
star
15

aries-cloudagent-python

Hyperledger Aries Cloud Agent Python (ACA-Py) is a foundation for building decentralized identity applications and services running in non-mobile environments.
Python
373
star
16

bevel

An automation framework for rapidly and consistently deploying production-ready DLT platforms
Smarty
317
star
17

aries-rfcs

Hyperledger Aries is infrastructure for blockchain-rooted, peer-to-peer interactions
Python
311
star
18

fabric-chaincode-java

Hyperledger Fabric Contract and Chaincode implementation for Java https://wiki.hyperledger.org/display/fabric
Java
290
star
19

cacti

Hyperledger Cacti is a new approach to the blockchain interoperability problem
TypeScript
289
star
20

aries

Hyperledger Aries is infrastructure for blockchain-rooted, peer-to-peer interactions
257
star
21

bevel-operator-fabric

Hyperledger Fabric Kubernetes operator - Hyperledger Fabric operator for Kubernetes (v2.3, v2.4 and v2.5)
Go
239
star
22

fabric-chaincode-node

Hyperledger Fabric Node.js Smart Contracts
JavaScript
229
star
23

indy-plenum

Plenum Byzantine Fault Tolerant Protocol
Python
209
star
24

aries-framework-javascript

Aries Framework JavaScript (Built using TypeScript)
TypeScript
208
star
25

fabric-gateway-java

Hyperledger Fabric Gateway SDK for Java https://wiki.hyperledger.org/display/fabric
Java
201
star
26

fabric-contract-api-go

Packages for the implementation of the contract API for use in Go chaincode
Go
192
star
27

fabric-test

A collection of utilities used to test the core Hyperledger Fabric projects
Go
150
star
28

fabric-private-chaincode

FPC enables Confidential Chaincode Execution for Hyperledger Fabric using Intel SGX.
Go
147
star
29

fabric-chaincode-go

Hyperledger Fabric Packages for Go Chaincode
Go
130
star
30

aries-mobile-agent-react-native

Aries Mobile Agent React Native - Part of the Aries Bifold effort to provide SSI capabilities in a production ready app.
TypeScript
125
star
31

fabric-gateway

Go, Node and Java client API for Hyperledger Fabric v2.4+
Java
121
star
32

iroha-python

Python library for Hyperledger Iroha, a simple distributed ledger.
Python
104
star
33

caliper-benchmarks

Sample benchmark files for Hyperledger Caliper https://wiki.hyperledger.org/display/caliper
JavaScript
96
star
34

iroha-javascript

JavaScript library for Iroha, a Distributed Ledger Technology (blockchain) platform.
JavaScript
93
star
35

iroha-ios

iOS Swift library for Iroha, a simple distributed ledger
Objective-C
91
star
36

fabric-docs-i18n

Hyperledger Fabric is an enterprise-grade permissioned distributed ledger framework for developing solutions and applications. Its modular and versatile design satisfies a broad range of industry use cases. It offers a unique approach to consensus that enables performance at scale while preserving privacy.
Makefile
85
star
37

firefly-ethconnect

Ethereum connectivity bridge for Web Services & async Messaging APIs - familiar to Enterprise Apps
Go
72
star
38

indy-hipe

Hyperledger Indy Project Enhancements
TeX
71
star
39

web3j-evm

A library for running an embedded Ethereum EVM in-process on a JVM
Kotlin
61
star
40

aries-vcx

aries-vcx is set of crates to work with DIDs, DID Documents, DIDComm, Verifiable Credentials and Hyperledger Aries.
Rust
61
star
41

besu-docs

Documentation for Hyperledger Besu enterprise-grade Java-based, Apache 2.0 licensed Ethereum client https://wiki.hyperledger.org/display/besu
CSS
56
star
42

aries-agent-test-harness

Aries agent test framework, with agent backchannel support
Python
56
star
43

anoncreds-rs

anoncreds-rs
Rust
53
star
44

web3j-cli

Command-line interface for web3j
Java
53
star
45

aries-askar

Secure storage designed for Hyperledger Aries agents.
Rust
49
star
46

firefly-cli

FireFly Command Line Interface (CLI)
Go
47
star
47

indy-vdr

A library and proxy server for interacting with Hyperledger Indy Node ledger instances
Rust
47
star
48

aries-acapy-controllers

Web controllers for the Aries Cloud Agent - Python (ACA-Py)
HTML
44
star
49

fabric-protos-go

Generated Go bindings for fabric-protos
Go
44
star
50

anoncreds-spec

The specification for AnonCreds verifiable credential exchange.
CSS
39
star
51

fabric-protos

Makefile
38
star
52

web3j-docs

Web3j documentation repository.
35
star
53

firefly-ui

FireFly UI
TypeScript
31
star
54

toc

Hyperledger TOC documents
29
star
55

firefly-fabconnect

REST API to interact with a Fabric network and event streaming via websocket
Go
29
star
56

aries-mediator-service

HTML
29
star
57

fabric-rfcs

RFC process for Hyperledger Fabric. The RFC (request for comments) process is intended to provide a consistent and controlled path for major changes to Fabric and other official project components. https://wiki.hyperledger.org/display/fabric
29
star
58

iroha-java

Kotlin
28
star
59

iroha-ed25519

RFC8032 compatible Ed25519 implementation with pluggable hash (sha2-512, sha3-512)
Assembly
28
star
60

aries-framework-javascript-ext

Extension libraries for Aries Framework JavaScript
TypeScript
25
star
61

fabric-config

Hyperledger Fabric Packages for channel configuration transactions. Documentation at https://pkg.go.dev/github.com/hyperledger/fabric-config/configtx.
Go
24
star
62

web3j-unit

Smart contract testing framework via integrated EVM and various Ethereum clients
Kotlin
22
star
63

firefly-tokens-erc1155

ERC1155 token integration
TypeScript
21
star
64

aries-staticagent-python

Aries Static Agent library for Python
Python
20
star
65

firefly-transaction-manager

Blockchain transaction manager for Hyperledger FireFly. Integrates public blockchains through a pluggable FireFly Connector API framework. Extensible policy engine for managing gas & resubmission. Confirmation manager for managing finality on both transactions and event streams.
Go
20
star
66

fabric-cli

Go
19
star
67

indy-node-container

Providing Containers to run Indy Node
Shell
19
star
68

fabric-admin-sdk

Fabric SDK for Admin Capability services
Go
19
star
69

firefly-samples

Samples for FireFly
TypeScript
18
star
70

firefly-tokens-erc20-erc721

ERC20 and ERC721 token integration
TypeScript
18
star
71

indy-did-method

Indy DID Method Specification
CSS
17
star
72

indy-node-monitor

Python
14
star
73

firefly-helm-charts

Firefly Helm Charts
Smarty
14
star
74

aries-framework-swift

A Swift framework for Aries.
Swift
14
star
75

aries-javascript-docs

A documentation site for the Aries JavaScript ecosystem.
TypeScript
13
star
76

indy-shared-rs

Shared Rust data types and utility functions for Hyperledger Indy.
Rust
13
star
77

firefly-evmconnect

Firefly EVM Connect
Go
12
star
78

firefly-sdk-nodejs

FireFly SDK for Node.js
TypeScript
11
star
79

anoncreds-v2-rs

Anonymous Credential Exchange 2.0
Rust
11
star
80

firefly-sandbox

Hyperledger FireFly Sandbox
TypeScript
10
star
81

firefly-dataexchange-https

TypeScript
10
star
82

aries-mobile-test-harness

An acceptance test framework for testing mobile Aries wallets utilizing Python, Behave, Appium, and a mobile device cloud service.
Python
10
star
83

besu-native

Java
8
star
84

indy-test-automation

Automation tools for testing of Indy Project components.
Python
8
star
85

aries-socketdock

Websocket Relay Service for use with clustered Mediators
Python
8
star
86

anoncreds-tex

anoncreds
TeX
7
star
87

anoncreds-spec-v2

CSS
7
star
88

firefly-signer

Signing, Keystore, ABI and RLP encoding utilities for EVM / Ethereum / secp256k1 based blockchains. Written in Go with an enterprise friendly Apache 2.0 license, and a runtime JSON/RPC proxy server. Part of the Hyperledger FireFly project
Go
7
star
89

aries-framework-kotlin

aries-framework-kotlin
Kotlin
6
star
90

firefly-cordaconnect

Java
6
star
91

iroha-2-docs

TypeScript
6
star
92

hyperledger.github.io

HTML
6
star
93

hyperledger-hip

Hyperledger Improvement Proposal (HIP)
6
star
94

aries-acapy-tools

Hyperledger Aries
Python
6
star
95

firefly-fir

5
star
96

indy-did-networks

indy-did-networks
5
star
97

governance

5
star
98

aries-endorser-service

endorser-service
Python
5
star
99

fabric-amcl

Go
4
star
100

anoncreds-revocation

JavaScript
4
star