• Stars
    star
    179
  • Rank 214,039 (Top 5 %)
  • Language
    Shell
  • License
    Apache License 2.0
  • Created almost 5 years ago
  • Updated 8 months ago

Reviews

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

Repository Details

Fablo is a simple tool to generate the Hyperledger Fabric blockchain network and run it on Docker. It supports RAFT and solo consensus protocols, multiple organizations and channels, chaincode installation and upgrade.

Github Actions

Fablo

Fablo supports:

  • Environment: Docker
  • RAFT and solo consensus protocols
  • Multiple organizations and channels
  • Chaincode installation and upgrade
  • REST API client for CA and chaincodes (Fablo REST)
  • Blockchain Explorer which can be enabled for each organization

See it in action

How to use

Installation

Fablo is distributed as a single shell script which uses Docker image to generate the network config. You may keep the script in the root directory of your project or install it globally in your file system.

To install it globally:

sudo curl -Lf https://github.com/hyperledger-labs/fablo/releases/download/1.1.0/fablo.sh -o /usr/local/bin/fablo && sudo chmod +x /usr/local/bin/fablo

To get a copy of Fablo for a single project, execute in the project root:

curl -Lf https://github.com/hyperledger-labs/fablo/releases/download/1.1.0/fablo.sh -o ./fablo && chmod +x ./fablo

Getting started

To create a local Hyperledger Fabric network with Node.js chaincode and REST API client, install Fablo and execute:

./fablo init node rest
./fablo up

After a few minutes the whole network will be set up and running. You can check the running nodes via docker ps or docker stats, and you can query the network with command line (via cli.org1.example.com container) or REST API client (via Fablo REST).

Basic usage

fablo up /path/to/fablo-config.json

The up command creates initial configuration and starts Hyperledger Fabric network on Docker. In this case network configuration is saved in $(pwd)/fablo-target. Then you can manage the network with other commands, for example stop, start, down, prune.

Provided Fablo configuration file describes network topology: root organization, other organizations, channels and chaincodes. See the samples or Fablo config section.

There are two basic use cases. You may use Fablo to start and manage the network for development purposes, test different network topologies, run it in CI environment etc. In this case you should keep fablo-target directory intact and out of the version control. Fablo will manage it locally.

On the other hand you can use Fablo to generate initial network configuration, keep it in version control and tweak for specific requirements. In this case, however, you should use generated fablo-docker.sh instead of fablo script.

Managing the network

init

fablo init [node] [rest] [dev]

Creates simple network config file in current dir. Good step to start your adventure with Fablo or set up a fast prototype.

Fablo init command takes three parameters (the order does not matter):

  • Option node makes Fablo to generate a sample Node.js chaincode as well.
  • Option rest enables simple REST API with Fablo REST as standalone Docker container.
  • Option dev enables running peers in dev mode (so the hot reload for chaincode is possible).

Sample command:

fablo init node dev

Generated fablo-config.json file uses single node Solo consensus and no TLS support. This is the simplest way to start with Hyperledger Fabric, since Raft consensus requires TLS and TLS itself adds a lot of complexity to the blockchain network and integration with it.

generate

fablo generate [/path/to/fablo-config.json|yaml [/path/to/fablo/target]]

Generates network configuration files in the given directory. Default config file path is $(pwd)/fablo-config.json or \$(pwd)/fablo-config.yaml, default directory is $(pwd)/fablo-target. If you specify a different directory, you loose Fablo support for other commands.

If you want to use Fablo only to kick off the Hyperledger Fabric network, you may provide target directory parameter or just copy generated Fablo target directory content to desired directory and add it to version control. Note that generated files may contain variables with paths on your disk and generated crypto material for Hyperledger Fabric. Review the files before submitting to version control system.

up

fablo up [/path/to/fablo-config.json|yaml]

Starts the Hyperledger Fabric network for given Fablo configuration file, creates channels, installs and instantiates chaincodes. If there is no configuration, it will call generate command for given config file.

down, start, stop

fablo [down | start | stop]

Downs, starts or stops the Hyperledger Fabric network for configuration in the current directory. This is similar to down, start and stop commands for Docker Compose.

prune

fablo prune

Downs the network and removes fablo-target directory.

reset and recreate

fablo reset
fablo recreate [/path/to/fablo-config.json|yaml]
  • reset -- down and up steps combined. Network state is lost, but the configuration is kept intact. Useful in cases when you want a fresh instance of network without any state.
  • recreate -- prunes the network, generates new config files and ups the network. Useful when you edited fablo-config file and want to start newer network version in one command.

validate

fablo validate [/path/to/fablo-config.json|yaml]

Validates network config. This command will validate your network config try to suggest necessary changes or additional tweaks. Please note that this step is also executed automatically before each generate to ensure that at least critical errors where fixed.

snapshot and restore

Fablo supports saving state snapshot (backup) of the network and restoring it. It saves all network artifacts, certificates, and the data of CA, orderer and peer nodes. Note the snapshot does not contain Fablo config file and chaincode source code, since both can be located outside Fablo working directory.

Snapshotting might be useful if you want to keep the current state of a network for future use (for testing, sharing the network state, courses and so on).

fablo snapshot <target-snapshot-path>

If you want to restore snapshot into current directory, execute:

fablo restore <source-snapshot-path>

Example:

  1. Assume you have a working network with some state.
  2. Execute ./fablo snapshot /tmp/my-snapshot. It will create a file /tmp/my-snapshot.fablo.tar.gz with the state of the network. It is not required to stop the network before making a snapshot.
  3. Execute ./fablo prune to destroy the current network. If the network was present, Fablo would not be able to restore the new one from backup.
  4. Execute ./fablo restore /tmp/my-snapshot to restore the network.
  5. Execute ./fablo start to start the restored network.

Typically, a snapshot of the network with little data will take less than 1 MB, so it is easy to share.

fabric-docker.sh

The script fabric-docker.sh is generated among docker network configuration. It does not support generate command, however other commands work in same way as in fablo. Basically fablo forwards some commands to this script.

If you want to use Fablo for network configuration setup only, then the fabric-docker.sh file allows you to manage the network.

Managing chaincodes

chaincode(s) install

fablo chaincodes install

Install all chaincodes. Might be useful if for some reason, Fablo won't manage to do it by itself.

If you want to install a single chaincode defined in Fablo config file, execute:

fablo chaincode install <chaincode-name> <version>

chaincode upgrade

fablo chaincode upgrade <chaincode-name> <version>

Upgrades chaincode with given name on all relevant peers. Chaincode directory is specified in Fablo config file.

Running chaincodes in dev mode

Hyperledger Fabric allows to run peers in dev mode in order to allow simple develop of chaincodes. In this case chaincodes do not need to be upgraded each time, but they are run locally. This feature allows hot reload of chaincode code and speeds up the development a lot.

Fablo will run peers in dev mode when global.peerDevMode is set to true. Note: in this case TLS has to be disabled, otherwise config validation fails.

The simplest way of trying Fablo with dev mode is as follows:

  1. Execute fablo init node dev. It will initialize Fablo config file with sample node chaincode and dev mode enabled. In this case Fablo config file has global.peerDevMode set to true, and the package.json file for sample Node.js chaincode has a script for running chaincode in dev mode (start:dev).
  2. Start the network with fablo up. Because dev mode is enabled, chaincode containers don't start. Instead, Fablo approves and commits chaincode definitions from Fablo config file.
  3. Npm install and start the sample chaincode with:
    (cd chaincodes/chaincode-kv-node && nvm use && npm i && npm run start:watch)
    Now, when you update the chaincode source code, it will be automatically refreshed on Hyperledger Fabric Network.

Our sample chaincode definition contains some scripts for running chaincode in dev mode:

  "scripts": {
    ...
    "start:dev": "fabric-chaincode-node start --peer.address \"127.0.0.1:8541\" --chaincode-id-name \"chaincode1:0.0.1\" --tls.enabled false",
    "start:watch": "nodemon --exec \"npm run start:dev\"",
    ...
  },

Worth considering:

  • If you want chaincode to be running on multiple peers, you need to start it multiple times, specifying different --peer.address
  • In case of errors ensure you have the same --chaincode-id-name as CC_PACKAGE_ID in Fablo output.

Feel free to update this scripts to adjust it to your chaincode definition.

Channel scripts

channel help

fablo channel --help

Use it to list all available channel commands.
Commands are generated using fablo-config.json to cover all cases (queries for each channel. organization and peer)

channel list

fablo channel list org1 peer0

Lists all channels for given peer.

channel getinfo

fablo channel getinfo channel_name org1 peer0

Prints channel info, like current block height for given peer

channel fetch config

fablo channel fetch config channel_name org1 peer0 [file_name.json]

Fetches latest config block, decodes it and write to a JSON file.

channel fetch raw block

fablo channel fetch <oldest|newest|block-number> channel_name org1 peer0 [file_name.json]

Fetches oldest, newest or a block with given number, and writes it to a file.

Utility commands

version

fablo version [--verbose | -v]

Prints current Fablo version. With optional -v or --verbose flag it prints supported Fablo and Hyperledger Fabric versions as well.

use

fablo use

Lists all available Fablo versions.

use

fablo use <version-number>

Switches current script to selected version.

Fablo config

Fablo config is a single JSON or YAML file that describes desired Hyperledger Fabric network topology (network settings, CA, orderer, organizations, peers, channels, chaincodes). It has to be compatible with the [schema]. You may generate a basic config with ./fablo init command. See the samples directory for more complex examples.

The basic structure of Fablo config file is as follows:

{
  "$schema": "https://github.com/hyperledger-labs/fablo/releases/download/1.1.0/schema.json",
  "global": { ... },
  "orgs": [ ... ],
  "channels": [ ... ],
  "chaincodes": [ ... ]
}

global

Example:

  "global": {
    "fabricVersion": "2.4.2",
    "tls": false,
    "peerDevMode": false,
    "monitoring": {
      "loglevel": "debug"
    },
    "tools": {
      "explorer": false
    }
  },

orgs

Example:

  "orgs": [
    {
      "organization": {
        "name": "Org1",
        "domain": "org1.example.com"
      },
      "peer": {
        "instances": 2,
        "db": "LevelDb"
      },
      "orderers": [{
        "groupName": "group1",
        "type": "raft",
        "instances": 3
      }],
      "tools": {
        "fabloRest": true,
        "explorer": true
      }
    },
    ...
  ],

The other available parameters for entries in orgs array are:

  • organization.mspName (default: organization.name + 'MSP')
  • ca.prefix (default: ca)
  • ca.db (default: sqlite, other: postgres)
  • peer.prefix (default: peer)
  • peer.anchorPeerInstances (default: 1)
  • orderers (defaults to empty: [])
  • tools.explorer - whether run Blockchain Explorer for the organization (default: false)
  • tools.fabloRest - whether run Fablo REST for the organization (default: false)

property peer.db:

  • may be LevelDb (default) or CouchDb.

property orderers:

  • is optional as some organizations may have orderer defined, but some don't.
  • At least one orderer group is required to run Fabric network (requirement is validated before run).
  • If you want to spread orderers in group between many organizations use same groupName in every group definition.
  • The property orderers.type may be solo or raft. We do not support the Kafka orderer.

channels

Example:

  "channels": [
    {
      "name": "my-channel1",
      "groupName": "group1",      
      "orgs": [
        {
          "name": "Org1",
          "peers": [
            "peer0",
            "peer1"
          ]
        },
        {
          "name": "Org2",
          "peers": [
            "peer0"
          ]
        }
      ]
    },
    ...
  ],
  • Property groupName is optional (defaults to first orderer group found). If you want to handle channel with different orderer group define it in orgs and pass it's name here.

chaincodes

Example:

  "chaincodes": [
    {
      "name": "chaincode1",
      "version": "0.0.1",
      "lang": "node",
      "channel": "my-channel1",
      "directory": "./chaincodes/chaincode-kv-node",
      "privateData": {
        "name": "org1-collection",
        "orgNames": ["Org1"]
      }
    },
    {
      "name": "chaincode2",
      "version": "0.0.1",
      "lang": "java",
      "channel": "my-channel2"
    }
  ]

The other available parameters for entries in chaincodes array are:

  • init - initialization arguments (for Hyperledger Fabric below 2.0; default: {"Args":[]})
  • initRequired - whether the chaincode requires initialization transaction (for Hyperledger Fabric 2.0 and greater; default: false)
  • endorsement - the endorsement policy for the chaincode (in case of missing value for Hyperledger Fabric 2.0 and greater there is no default value - Hyperledger by default will take the majority of organizations; for Hyperledger Fabric below 2.0 Fablo generates an endorsement policy where all organizations need to endorse)

The property lang may be golang, java or node.

The privateData parameter is optional. You don't need to define the private data collection for the chaincode. By default there is none (just the implicit private data collection in Fabric 2.x).

hooks

Hooks in Fablo are Bash commands to be executed after a specific event. Right now Fablo supports only one kind of hook: postGenerate. It will be executed each time after the network config is generated -- after ./fablo generate command (executed separately or automatically by ./fablo up).

The following hook example will change MaxMessageCount to 1 in generated Hyperledger Fabric config:

  "hooks": {
    "postGenerate": "perl -i -pe 's/MaxMessageCount: 10/MaxMessageCount: 1/g' \"./fablo-target/fabric-config/configtx.yaml\""
  }

Genrated Hooks are saved in fablo-target/hooks.

Sample YAML config file

---
"$schema": https://github.com/hyperledger-labs/fablo/releases/download/1.1.0/schema.json
global:
  fabricVersion: 2.4.2
  tls: false
orgs:
  - organization:
      name: Orderer
      domain: root.com
    orderers:
      - groupName: group1
        prefix: orderer
        type: solo
        instances: 1 
  - organization:
      name: Org1
      domain: org1.example.com
      tools:
        fabloRest: true
        explorer: true
    peer:
      instances: 2
  - organization:
      name: Org2
      domain: org2.example.com
    peer:
      instances: 1
channels:
  - name: my-channel1
    orgs:
      - name: Org1
        peers:
          - peer0
          - peer1
      - name: Org2
        peers:
          - peer0
chaincodes:
  - name: and-policy-chaincode
    version: 0.0.1
    lang: node
    channel: my-channel1
    init: '{"Args":[]}'
    endorsement: AND('Org1MSP.member', 'Org2MSP.member')
    directory: "./chaincodes/chaincode-kv-node"
    privateData:
      - name: org1-collection
        orgNames:
          - Org1

Kubernetes support

TODO

Other features

Connection profiles

Fablo will generate the connection profiles for each organization defined in the configuration. You can find them in fablo-target/fablo-config/connection-profiles directory in json and yaml format.

REST API

Fablo is integrated with simple REST API for CA and chaincodes, supported by Fablo REST. If you want to use it, provide for your organization "tools": { "fabloRest": true }. Visit the Fablo REST project for more documentation.

Blockchain Explorer

Fablo can run Blockchain Explorer for you. Provide for your organization "tools": { "explorer": true }, if you want to use it per organization, or provide the same value in global section of the config, if you want to use one global Explorer for all organizations.

Testimonials

Fablo was originally created at SoftwareMill by @Hejwo and @dzikowski. In December 2021, Fablo joined Hyperledger Labs.

More Repositories

1

blockchain-explorer

JavaScript
1,394
star
2

Scorex

Scorex 2.0 Core
Scala
545
star
3

minifabric

Do fabric network the right and easy way.
Jinja
299
star
4

blockchain-carbon-accounting

This project implements blockchain applications for climate action and accounting, including emissions calculations, carbon trading, and validation of climate claims. It is part of the Linux Foundation's Hyperledger Climate Action and Accounting SIG.
TypeScript
181
star
5

university-course

A Hyperledger Lab focused developing materials for a university course.
TeX
179
star
6

mirbft

MirBFT is a consensus library implementing the Mir consensus protocol.
Go
157
star
7

convector

Smart Contract Systems the easy way. Open source development framework.
TypeScript
145
star
8

yui-ibc-solidity

IBC in Solidity
Solidity
132
star
9

private-data-objects

The Private Data Objects lab provides technology for confidentiality-preserving, off-chain smart contracts.
C++
112
star
10

fabric-operations-console

A UI for managing Fabric peers, orderers, and CAs
JavaScript
103
star
11

hyperledger-labs.github.io

Hyperledger Labs
100
star
12

SmartBFT

Implementation of the SmartBFT consensus library (https://arxiv.org/abs/2107.06922)
Go
88
star
13

fabric-token-sdk

The Fabric Token SDK is a set of API and services that lets developers create token-based distributed application on Hyperledger Fabric.
Go
80
star
14

microfab

Microfab is a containerized Hyperledger Fabric runtime for use in development environments
Go
73
star
15

fabric-docs-cn

This lab has graduated to the overall Fabric project.
71
star
16

TrustID

Decentralized Identity solution compatible with different Hyperledger platforms.
TypeScript
67
star
17

open-enterprise-agent

Open Enterprise Cloud Agent
Scala
62
star
18

minbft

Implementation of MinBFT consensus protocol.
Go
60
star
19

fabric-operator

Hyperledger Fabric Kubernetes Operator
Go
57
star
20

business-partner-agent

The Business Partner Agent is a SSI wallet and controller based on aries cloud agent python.
Java
55
star
21

weaver-dlt-interoperability

A platform, a protocol suite, and a set of tools, to enable interoperation for data sharing and asset movements between independent networks built on heterogeneous blockchain, or more generally, distributed ledger, technologies, in a manner that preserves the core blockchain tenets of decentralization and security.
Go
52
star
22

fabric-smart-client

The Fabric Smart Client is a new Fabric Client that lets you focus on the business processes and simplifies the development of Fabric-based distributed application.
Go
51
star
23

go-perun

πŸŒ” Perun's Blockchain-Agnostic State Channels Framework in Go.
Go
47
star
24

hyperledger-fabric-based-access-control

A Hyperledger Fabric Based Access Control system to mediate access control flow from centralized applications.
HTML
41
star
25

nephos

Python library and Helm charts for deployment of Hyperledger Fabric to Kubernetes.
Python
37
star
26

nft-auction

NFT Auction application lets user to create NFTs and auction them off to other users in a marketplace model using Hyperledger Fabric
JavaScript
37
star
27

yui-fabric-ibc

IBC implementation in Hyperledger Fabric
Go
36
star
28

eThaler

Model a sample CBDC in TTF and implement in Besu
Java
34
star
29

cc-tools

The cc-tools package provides a relational-like framework for programming Hyperledger Fabric chaincodes.
Go
33
star
30

cordentity

The Cordentity app integrates Indy capabilities into the Corda platform.
Kotlin
32
star
31

yui-relayer

IBC Relayer implementations for heterogeneous blockchains
Go
32
star
32

orion-server

Go
30
star
33

yui-docs

Solidity
29
star
34

fabex

Block explorer for Hyperledger Fabric
Go
28
star
35

fabric-chaincode-wasm

Hyperledger Fabric Chaincode using WebAssembly
Go
28
star
36

fabric-chrome-extension

Hyperledger Fabric Chrome Extension
JavaScript
28
star
37

fabric-builder-k8s

Kubernetes chaincode builder for Hyperledger Fabric
Go
27
star
38

pubsub-interop

A blockchain interoperability solution for permissioned blockchain networks based on a publish/subscribe pattern.
HTML
26
star
39

cc-tools-demo

Basic example of how to use cc-tools to easily program a Hyperledger Fabric chaincode.
Shell
25
star
40

zeto

Privacy-preserving implementations of fungible and non-fungible tokens, using UTXO as the underlying transaction model
Solidity
24
star
41

fabric-opssc

Operations Smart Contract (OpsSC) for Hyperledger Fabric v2.x
Go
23
star
42

blockchain-analyzer

Analyze ledger data stored within a Hyperledger Fabric peer (key updates and operational data such as number of blocks and transactions).
Go
23
star
43

fabric-chaincode-haskell

Haskell support for smart contracts in Hyperledger Fabric
Haskell
23
star
44

pluggable-hcs

Go
20
star
45

yui-corda-ibc

IBC implementation in Corda
Kotlin
20
star
46

sawtooth-healthcare

This project focuses on interaction between Insurer, Insured Person (Patient), and Medical Facility
Python
20
star
47

harmonia

Regulated Network Interoperability
Java
20
star
48

acapy-java-client

Aries Cloud Agent Python Java Client Library
Java
18
star
49

agora-glass_pumpkin

agora-glass_pumpkin
Rust
18
star
50

perun-node

State channel node of the blockchain-agnostic state channels framework Perun.
Go
18
star
51

umbra

This lab is to make running Hyperledger distributed ledgers under the Mininet platform.
Python
18
star
52

fabric-debugger

A Hyperledger Fabric chaincode debugging plugin for VS code.
JavaScript
18
star
53

blockchain-verifier

bcverifier: Blockchain verification tool
TypeScript
16
star
54

fabric-machine

Xilinx Blockchain Machine for Hyperledger Fabric.
Go
14
star
55

crypto-lib

A lab for experimentation on creating shared cryptography modules for cross-project collaboration
Rust
14
star
56

aifaq

AI FAQ Proof-of-Concept project: it provides a chatbot that replies to the questions on Hyperledger Ecosystem
Jupyter Notebook
14
star
57

z-mix

z-mix will offer a generic way to create Zero-Knowledge proofs, proving statements about multiple cryptographic building blocks, containing signatures, commitments, and verifiable encryption.
Rust
14
star
58

private-transaction-families

Provides a mechanism for privacy over Hyperledger Sawtooth by enforcing a policy of access control to the ledger.
C
13
star
59

cckit

Programming toolkit for developing and testing Hyperledger Fabric applications, started as https://github.com/s7techlab/cckit
Go
13
star
60

agora-unknown_order

agora-unknown_order
Rust
12
star
61

hlf-connector

Integrate with Hyperledger Fabric using REST and Kafka with Block and Chaincode Event emitter.
Java
12
star
62

SParts

The Software Parts (SParts) lab delivers a Sawtooth-based ledger that provides both accountability and access to the open source components used in the construction of a software part. A software part is any software component (e.g., library, application, container or an entire operating system runtime) that is comprised of between 0% and 100% open source.
Go
12
star
63

fabric-block-archiving

Go
11
star
64

fabric-multi-channel-network-samples

This lab provides samples for multi channel network using Hyperledger Fabric.
Shell
11
star
65

keyhole-fabric-api-gateway

Client Access to Hyperledger Fabric Blockchain Network through Restful API's
JavaScript
11
star
66

PerformanceSandBox

Sandbox for Hyperledger Projects Performance research usage
Shell
11
star
67

orion-sdk-go

Go
10
star
68

cardea-mobile-agent

JavaScript
9
star
69

bdls-lab

BDLS
Go
9
star
70

perun-eth-contracts

πŸŒ” Perun's Ethereum State Channel Contracts
TypeScript
9
star
71

hyperledger-community-management-tools

Tools used to manage and evaluate the Hyperledger Community
JavaScript
9
star
72

solidity2chaincode

This tool converts Solidity contract into Javascript chaincode through source-to-source translation for running them onto Hyperledger Fabric.
JavaScript
9
star
73

solang-vscode

A VSCode plugin for a Solidity to WASM compiler written in Rust
Rust
8
star
74

learning-tokens

Uses the composable Interwork Alliance Token Taxonomy Framework (IWA TTF) to produce a Learning Token
TypeScript
8
star
75

perun-doc

Blockchain-agnostic state channels framework
Python
8
star
76

cardea

8
star
77

modern-pharmacy-management

This Lab will focus on leveraging blockchain to transform and modernize prescriptions management by enabling flexibility and managing fraud
Shell
8
star
78

fabric-chaincode-ocaml

OCaml support for smart contracts in Hyperledger Fabric
OCaml
8
star
79

fabric-ansible-collection

Ansible collection for building Hyperledger Fabric networks
Python
8
star
80

chaincode-analyzer

Go
8
star
81

karma-charity-platform

Blockchain-based charity foundation platform
TypeScript
7
star
82

patient-consent

Python
7
star
83

aries-fabric-wrapper

TypeScript
7
star
84

weft

CLI tool to work with Hyperledger Fabric identities and connection profiles; enables conversion between the various forms used by different codebase.
TypeScript
7
star
85

besu-operator

Kubernetes operator to provide an easier way of packaging, deploying, and managing Hyperledger Besu network.
Go
7
star
86

did-webs-resolver

A reference implementation for the did:webs DID method specified here https://github.com/trustoverip/tswg-did-method-webs-specification. The original work for the reference impl started here https://github.com/WebOfTrust/did-keri-resolver
Python
7
star
87

fabric-consortium-management

Go
5
star
88

byzantine-config

GUI Utility that simplifies creating configuration blocks and generating user keys
JavaScript
5
star
89

perun-cosmwasm-backend

Go-Perun CosmWasm Backend
Go
5
star
90

dancap

A lab for exploring attestation portability
C++
5
star
91

cardea-mobile-secondary-verifier-agent

JavaScript
5
star
92

HL-Starterkit

Hyperledger CLI Starter Kit
Shell
5
star
93

documentation-template

Template for creating documentation for Hyperledger projects
HTML
5
star
94

fabric-topologies

Scripts and configurations to easily setup various Hyperledger Fabric topologies that exercise advanced Hyperledger Fabric capabilities.
Shell
4
star
95

perun-credential-payment

Trustless payment for verifiable credentials using go-perun.
Go
4
star
96

fabric-vms-provision

This entry will provide an example on how to provision, using Ansible, Hyperledger Fabric native binaries on multiple Softlayer vms. A build your second network example.
Python
4
star
97

aries-sdk-mendix

Aries SDK for Mendix low-code platform
SCSS
4
star
98

milk-donor

Donor Milk Transparency and Traceability
JavaScript
3
star
99

pdo-contracts

C++
3
star
100

business-partner-agent-chart

Smarty
2
star