• Stars
    star
    316
  • Rank 128,245 (Top 3 %)
  • Language
    Shell
  • License
    Apache License 2.0
  • Created over 7 years ago
  • Updated 6 months ago

Reviews

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

Repository Details

Examples for Quorum

Quorum Examples

⚠️ Project Deprecation Notice ⚠️

quorum-examples will be deprecated on July 11th 2022, from when we will stop supporting the project.

From now on, we encourage all users to use to quorum-dev-quickstart which is a similar tool offering extra compatibility with Quorum products, in particular Hyperledger Besu and Orchestrate.

We will continue to support quorum-examples in particular fixing bugs until the end of July 2022.

If you have any questions or concerns, please reach out to the ConsenSys protocol engineering team on #Discord or by email.

Usage notice

This project is meant for Quorum users (mainly Quorum contributors) who are already familiar with Quorum deployments and who are looking for some configurations for their network.

If you have a limited experience with Quorum, or if you are looking to start a Quorum network for some testing purposes then you should instead use our quorum-dev-quickstart.

We do not guarantee that all scripts in this project work out of the box, in particular some scripts may be out of date and will require some adjustments from users to properly work on latest Quorum versions.

About

Current examples include:

  • 7nodes: Starts up a fully-functioning Quorum environment consisting of 7 independent nodes. From this example one can test consensus, privacy, and all the expected functionality of an Ethereum platform.

Additional examples exist highlighting and showcasing the functionality offered by the Quorum platform. An up-to-date list can be found in the Quorum Documentation site.

Installation

Clone the quorum-examples repo.

git clone https://github.com/Consensys/quorum-examples.git

Important note: Any account/encryption keys used in the quorum-examples repo are for demonstration and testing purposes only. Before running a real environment, new keys should be generated using Geth's account tool, Tessera's -keygen option, and Constellation's --generate-keys option

Prepare your environment

A 7 node Quorum network must be running before the example can be run. The quorum-examples repo provides the means to create a pre-configured sample network in minutes.

There are 3 ways to start the sample network, each method is detailed below:

  1. By running a pre-configured Vagrant virtual-machine environment which comes complete with Quorum, Constellation, Tessera and the 7nodes example already installed. Bash scripts provided in the examples are used to create the sample network: Running with Vagrant
  2. By running docker-compose against a preconfigured compose file to create the sample network: Running with Docker
  3. By installing Quorum and Tessera/Constellation locally and using bash scripts provided in the examples to create the sample network: Running locally

Your environment must be prepared differently depending on the method being used to run the example.

Running with Vagrant

  1. Install VirtualBox

  2. Install Vagrant

  3. Download and start the Vagrant instance (note: running vagrant up takes approx 5 mins):

    git clone https://github.com/Consensys/quorum-examples
    cd quorum-examples
    vagrant up
    vagrant ssh
  4. To shutdown the Vagrant instance, run vagrant suspend. To delete it, run vagrant destroy. To start from scratch, run vagrant up after destroying the instance.

Troubleshooting Vagrant

  • If you are behind a proxy server, please see ConsenSys/quorum#23.
  • If you are using macOS and get an error saying that the ubuntu/xenial64 image doesn't exist, please run sudo rm -r /opt/vagrant/embedded/bin/curl. This is usually due to issues with the version of curl bundled with Vagrant.
  • If you receive the error default: cp: cannot open '/path/to/geth.ipc' for reading: Operation not supported after running vagrant up, run ./raft-init.sh within the 7nodes directory on your local machine. This will remove temporary files created after running 7nodes locally and will enable vagrant up to execute correctly.

Troubleshooting Vagrant: VBoxManage error during vagrant up

If encountering an error like

VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component MachineWrap, interface IMachine

during vagrant up try the following:

  • macOS - Open Security & Privacy system preferences after VirtualBox installation. Allow installation of software from Oracle (as described here). Uninstalling and installing VirtualBox may be required to show the prompt again.
  • Download VM VirtualBox Extension Pack from VirtualBox downloads (macOS - Also allow installation as described above).

Troubleshooting Vagrant: Memory usage

  • The Vagrant instance is allocated 6 GB of memory. This is defined in the Vagrantfile, v.memory = 6144. This has been deemed a suitable value to allow the VM and examples to run as expected. The memory allocation can be changed by updating this value and running vagrant reload to apply the change.

  • If the machine you are using has less than 8 GB memory you will likely encounter system issues such as slow down and unresponsiveness when starting the Vagrant instance as your machine will not have the capacity to run the VM. There are several steps that can be taken to overcome this:

    1. Shutdown any running processes that are not required
    2. If running the 7nodes example, reduce the number of nodes started up. See the 7nodes: Reducing the number of nodes for info on how to do this.
    3. Set up and run the examples locally. Running locally reduces the load on your memory compared to running in Vagrant.

Running with Docker

  1. Install Docker (https://www.docker.com/get-started)
    • If your Docker distribution does not contain docker-compose, follow this to install Docker Compose
    • Make sure your Docker daemon has at least 4G memory
    • Required Docker Engine 18.02.0+ and Docker Compose 1.21+
  2. Download and run docker-compose
    git clone https://github.com/Consensys/quorum-examples
    cd quorum-examples
    docker-compose up -d
  3. By default, the Quorum network is created with Tessera privacy managers and Istanbul BFT consensus. To use Raft consensus, set the environment variable QUORUM_CONSENSUS=raft before running docker-compose. To start a Quorum node without its associated privacy transaction manager, set PRIVATE_CONFIG=ignore. QUORUM_CONSENSUS and PRIVATE_CONFIG can be set together.
    PRIVATE_CONFIG=ignore QUORUM_CONSENSUS=raft docker-compose up -d
    Note that additional geth command line parameters can also be specified via the environment variable QUORUM_GETH_ARGS
  4. Run docker ps to verify that all quorum-examples containers (7 nodes and 7 tx managers) are healthy
  5. Run docker logs <container-name> -f to view the logs for a particular container
  6. Note: to run the 7nodes demo, use the following snippet to open geth Javascript console to a desired node (using container name from docker ps) and send a private transaction
    $ docker exec -it quorum-examples_node1_1 geth attach /qdata/dd/geth.ipc
    Welcome to the Geth JavaScript console!
    
    instance: Geth/node1-istanbul/v1.7.2-stable/linux-amd64/go1.9.7
    coinbase: 0xd8dba507e85f116b1f7e231ca8525fc9008a6966
    at block: 70 (Thu, 18 Oct 2018 14:49:47 UTC)
     datadir: /qdata/dd
     modules: admin:1.0 debug:1.0 eth:1.0 istanbul:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0
    
    > loadScript('/examples/private-contract.js')
  7. Shutdown Quorum Network
    docker-compose down

Troubleshooting Docker

  1. Docker is frozen
    • Check if your Docker daemon is allocated enough memory (minimum 4G)
  2. Tessera crashes due to missing file/directory
    • This is due to the location of quorum-examples folder is not shared
    • Please refer to Docker documentation for more details:
  3. If you run Docker inside Docker, make sure to run the container with --privileged

Running locally

Note: Quorum must be run on Ubuntu-based/macOS machines. Constellation can only be run on Ubuntu-based machines. Running the examples therefore requires an Ubuntu-based/macOS machine. If running the examples using Constellation then an Ubuntu-based machine is required.

  1. Install Golang

  2. Download and build Quorum:

    git clone https://github.com/Consensys/quorum
    cd quorum
    make
    GETHDIR=`pwd`; export PATH=$GETHDIR/build/bin:$PATH
    cd ..
  3. Download and build Tessera (see README for build options)

    git clone https://github.com/Consensys/tessera.git
    cd tessera
    mvn install
  4. Download quorum-examples

    git clone https://github.com/Consensys/quorum-examples

Starting the 7nodes sample network

Note: This is not required if docker-compose has been used to prepare the network as the docker-compose command performs these actions for you

Shell scripts are included in the examples to make it simple to configure the network and start submitting transactions.

All logs and temporary data are written to the qdata folder.

The sample network can be created to run using Istanbul BFT, QBFT, Raft or Clique POA consensus mechanisms. In the following commands replace {consensus} with one of raft, istanbul qbft or clique depending on the consensus mechanism you want to use.

  1. Navigate to the 7nodes example directory, configure the Quorum nodes and initialize accounts & keystores:

    cd path/to/7nodes
    ./{consensus}-init.sh
  2. Start the Quorum and privacy manager nodes (Constellation or Tessera):

    • If running in Vagrant:

      ./{consensus}-start.sh

      By default, Tessera will be used as the privacy manager. To use Constellation run the following:

      ./{consensus}-start.sh constellation
      
    • If running locally:

      TESSERA_{JAR|SCRIPT}=/path/to/jar-or-startscript ./{consensus}-start.sh
      

      The {consensus}-start.sh scripts look for a Tessera executable at default paths unique to the Vagrant environment. When running locally these defaults must be overriden with the TESSERA_SCRIPT or TESSERA_JAR environment variables. Set TESSERA_SCRIPT when using the newer versions of Tessera distributed as a .tar - extract the tar and set TESSERA_SCRIPT to the contained runnable script. Set TESSERA_JAR when using older versions of Tessera distributed as an executable .jar.

  3. You are now ready to start sending private/public transactions between the nodes

  4. To stop the network:

    ./stop.sh

Running the example

quorum-examples includes some simple transaction contracts to demonstrate the privacy features of Quorum. See the 7nodes Example page for details on how to run them.

Variations

Reducing the number of nodes

It is easy to reduce the number of nodes used in the example network. You may want to do this for memory usage reasons or just to experiment with a different network configuration.

For example, to run the example with 5 nodes instead of 7, follow these steps:

  1. Update the list of nodes involved in consensus

    • If using Raft
      1. Remove node 6 and node 7's enode addresses from permissioned-nodes.json (i.e. the entries with raftport 50406 and 50407). Ensure that there is no trailing comma on the last row of enode details in the file.
    • If using IBFT
      1. Find the 20-byte address representations of node 6 and node 7's nodekey (nodekeys located at qdata/dd{i}/geth/nodekey). There are many ways to do this, one is to run a script making use of ethereumjs-wallet:
        const wlt = require('ethereumjs-wallet');
        
        var nodekey = '1be3b50b31734be48452c29d714941ba165ef0cbf3ccea8ca16c45e3d8d45fb0';
        var wallet = wlt.fromPrivateKey(Buffer.from(nodekey, 'hex'));
        
        console.log('addr: ' + wallet.getAddressString());
      2. Use istanbul-tools to decode the extraData field in istanbul-genesis.json
        git clone https://github.com/Consensys/istanbul-tools.git
        cd istanbul-tools
        make istanbul
        ./build/bin/istanbul extra decode --extradata <...>
      3. Copy the output into a new .toml file and update the formatting to the following:
        vanity = "0x0000000000000000000000000000000000000000000000000000000000000000"
        validators = [
          "0xd8dba507e85f116b1f7e231ca8525fc9008a6966",
          "0x6571d97f340c8495b661a823f2c2145ca47d63c2",
          ...
        ]
      4. Remove the addresses of node 6 and node 7 from the validators list
      5. Use istanbul-tools to encode the .toml as extraData
        ./build/bin/istanbul extra encode --config /path/to/conf.toml
      6. Update the extraData field in istanbul-genesis.json with output from the encoding
    • If using QBFT
      1. Find the 20-byte address representations of node 6 and node 7's nodekey (nodekeys located at qdata/dd{i}/geth/nodekey). There are many ways to do this, one is to run a script making use of ethereumjs-wallet:
        const wlt = require('ethereumjs-wallet');
        
        var nodekey = '1be3b50b31734be48452c29d714941ba165ef0cbf3ccea8ca16c45e3d8d45fb0';
        var wallet = wlt.fromPrivateKey(Buffer.from(nodekey, 'hex'));
        
        console.log('addr: ' + wallet.getAddressString());
      2. Use istanbul-tools to decode the extraData field in qbft-genesis.json
        git clone https://github.com/Consensys/istanbul-tools.git
        cd istanbul-tools
        make qbft
        ./build/bin/qbft extra decode --extradata <...>
      3. Copy the output into a new .toml file and update the formatting to the following:
        vanity = "0x0000000000000000000000000000000000000000000000000000000000000000"
        validators = [
          "0xd8dba507e85f116b1f7e231ca8525fc9008a6966",
          "0x6571d97f340c8495b661a823f2c2145ca47d63c2",
          ...
        ]
      4. Remove the addresses of node 6 and node 7 from the validators list
      5. Use istanbul-tools to encode the .toml as extraData
        ./build/bin/qbft extra encode --config /path/to/conf.toml
      6. Update the extraData field in qbft-genesis.json with output from the encoding
  2. After making these changes, the relevant init/start scripts can be run (replace {consensus} with the relevent consensus mechanism in the following):

    # ./{consensus}-init.sh --numNodes 5
    # ./{consensus}-start.sh
  3. private-contract.js by default sends a transaction to node 7. As node 7 will no longer be started this must be updated to instead send to node 5:

    1. Copy node 5's public key from ./keys/tm5.pub

    2. Replace the existing privateFor in private-contract.js with the key copied from tm5.pub key, e.g.:

      var simple = simpleContract.new(42, {from:web3.eth.accounts[0], data: bytecode, gas: 0x47b760, privateFor: ["R56gy4dn24YOjwyesTczYa8m5xhP6hF2uTMCju/1xkY="]}, function(e, contract) {...}

You can then follow steps described above to verify that node 5 can see the transaction payload and that nodes 2-4 are unable to see the payload.

Using a Tessera remote enclave

Tessera v0.9 introduced the ability to run the privacy manager's enclave as a separate process from the Transaction Manager. This is a more secure way of being able to manage and interact with your keys.

To start a sample 7nodes network that uses remote enclaves run ./{consensus}-start.sh tessera-remote. By default this will start 7 Transaction Managers, the first 4 of which use a remote enclave. If you wish to change this number, you will need to add the extra parameter --remoteEnclaves X in the --tesseraOptions, e.g. ./{consensus}-start.sh tessera-remote --tesseraOptions "--remoteEnclaves 7".

Experimenting with alternative curves in Tessera

By default tessera uses the NaCl(salt) library in order to encrypt private payloads. If you would like to experiment with/use alternative curves/symmetric ciphers you can choose to configure the EC Encryptor (which relies on JCA to perform a similar logic to NaCl). The tessera initialization script uses the the following environment variables to generate the encryptor section of the tessera configuration file:

Environment Variable Name Default Value Description
ENCRYPTOR_TYPE NACL The encryptor type. Possible values are EC or NACL.
ENCRYPTOR_EC_ELLIPTIC_CURVE secp256r1 The elliptic curve to use. See SunEC provider for other options. Depending on the JCE provider you are using there may be additional curves available.
ENCRYPTOR_EC_SYMMETRIC_CIPHER AES/GCM/NoPadding The symmetric cipher to use for encrypting data (GCM IS MANDATORY as an initialisation vector is supplied during encryption).
ENCRYPTOR_EC_NONCE_LENGTH 24 The nonce length (used as the initialization vector - IV - for symmetric encryption).
ENCRYPTOR_EC_SHARED_KEY_LENGTH 32 The key length used for symmetric encryption (keep in mind the key derivation operation always produces 32 byte keys - so the encryption algorithm must support it).

Based on the default values above (provided ENCRYPTOR_TYPE is defined as EC) the following configuration entry is produced:

...
    "encryptor": {
        "type":"EC",
        "properties":{
            "symmetricCipher":"AES/GCM/NoPadding",
            "ellipticCurve":"secp256r1",
            "nonceLength":"24",
            "sharedKeyLength":"32"
        }
    }
...

Example:

export ENCRYPTOR_TYPE=EC
export ENCRYPTOR_EC_ELLIPTIC_CURVE=sect571k1
./raft-init.sh

Next steps: Sending transactions

Some simple transaction contracts are included in quorum-examples to demonstrate the privacy features of Quorum. To learn how to use them see the 7nodes README.

Getting Help

Stuck at some step? Please join our discord community for support.

More Repositories

1

smart-contract-best-practices

A guide to smart contract security best practices
HTML
7,296
star
2

ethereum-developer-tools-list

A guide to available tools and platforms for developing on Ethereum.
5,172
star
3

quorum

A permissioned implementation of Ethereum supporting data privacy
Go
4,581
star
4

mythril

Security analysis tool for EVM bytecode. Supports smart contracts built for Ethereum, Hedera, Quorum, Vechain, Roostock, Tron and other EVM-compatible blockchains.
Python
3,683
star
5

Tokens

Ethereum Token Contracts
JavaScript
2,020
star
6

eth-lightwallet

Lightweight JS Wallet for Node and the browser
JavaScript
1,418
star
7

gnark

gnark is a fast zk-SNARK library that offers a high-level API to design circuits. The library is open source and developed under the Apache 2.0 license
Go
1,265
star
8

surya

A set of utilities for exploring Solidity contracts
JavaScript
1,027
star
9

ethql

A GraphQL interface to Ethereum 🔥
TypeScript
623
star
10

abi-decoder

Nodejs and Javascript library for decoding data params and events from ethereum transactions
JavaScript
605
star
11

vscode-solidity-auditor

Solidity language support and visual security auditor for Visual Studio Code
JavaScript
560
star
12

teku

Java Implementation of the Ethereum 2.0 Beacon Chain
Java
557
star
13

cakeshop

An integrated development environment and SDK for Ethereum-like ledgers
JavaScript
510
star
14

Token-Factory

Basic Token Factory dapp.
JavaScript
477
star
15

gnark-crypto

gnark-crypto provides elliptic curve and pairing-based cryptography on BN, BLS12, BLS24 and BW6 curves. It also provides various algorithms (algebra, crypto) of particular interest to zero knowledge proof systems.
Go
452
star
16

constellation

Peer-to-peer encrypted message exchange
Haskell
379
star
17

UniversalToken

Implementation of Universal Token for Assets and Payments
JavaScript
337
star
18

scribble

Scribble instrumentation tool
TypeScript
310
star
19

anonymous-zether

A private payment system for Ethereum-based blockchains, with no trusted setup.
Solidity
283
star
20

defi-score

DeFi Score: An open framework for evaluating DeFi protocols
Python
279
star
21

EthOn

EthOn - The Ethereum Ontology
HTML
245
star
22

Mahuta

IPFS Storage service with search capability
Java
230
star
23

doc.zk-evm

Linea documentation
JavaScript
224
star
24

solidity-metrics

Solidity Code Metrics
JavaScript
207
star
25

tessera

Tessera - Enterprise Implementation of Quorum's transaction manager
Java
169
star
26

PLCRVoting

Partial Lock Commit Reveal Voting System that utilizes ERC20 Tokens
JavaScript
169
star
27

ethjsonrpc

Python JSON-RPC client for the Ethereum blockchain
Python
156
star
28

zero-knowledge-proofs

Zero Knowledge Proofs and how they can be implemented in Quorum
C++
128
star
29

python-solidity-parser

An experimental Solidity parser for Python built on top of a robust ANTLR4 grammar 📚
Python
125
star
30

truffle-security

MythX smart contract security verification plugin for Truffle Framework
JavaScript
124
star
31

web3signer

Web3Signer is an open-source signing service capable of signing on multiple platforms (Ethereum1 and 2, Filecoin) using private keys stored in an external vault, or encrypted on a disk.
Java
122
star
32

btcrelay-fetchd

Just the fetchd script of btcrelay
Python
116
star
33

evm-dafny

An EVM interpreter in Dafny
Dafny
113
star
34

ethereum-dissectors

🔍Wireshark dissectors for Ethereum devp2p protocols
C
109
star
35

quorum-dev-quickstart

The Quorum Developer Quickstart utility can be used to rapidly generate local Quorum blockchain networks for development and demo purposes using Besu, GoQuorum, and Codefi Orchestrate.
Solidity
108
star
36

ethsigner

A transaction signing application to be used with a web3 provider.
Java
107
star
37

daedaluzz

Benchmark Generator for Smart-Contract Fuzzers
Solidity
106
star
38

solc-typed-ast

A TypeScript package providing a normalized typed Solidity AST along with the utilities necessary to generate the AST (from Solc) and traverse/manipulate it.
TypeScript
105
star
39

truffle-webpack-demo

A demo Webpack + React App using truffle-solidity-loader
JavaScript
95
star
40

orion

Orion is a PegaSys component for doing private transactions
Java
92
star
41

blockchainSecurityDB

JavaScript
88
star
42

quorum-kubernetes

Helm charts for Hyperledger Besu and GoQuorum
Mustache
85
star
43

gpact

General Purpose Atomic Crosschain Transaction Protocol
Java
84
star
44

quorum-docs

Documentation assets for Quorum
84
star
45

linea-attestation-registry

Verax is a shared registry for storing attestations of public interest on EVM chains, designed to enhance data discoverability and consumption for dApps across the network.
TypeScript
82
star
46

mythx-cli

A command line interface for the MythX smart contract security analysis API
Python
81
star
47

bytecode-verifier

Compile Solidity source code and verify its bytecode matches the blockchain
JavaScript
80
star
48

goff

goff (go finite field) is a unix-like tool that generates fast field arithmetic in Go.
Go
76
star
49

zsl-q

ZSL on Quorum
C++
71
star
50

security-workshop-for-devs

Secure smart contract development workshop hosted by ConsenSys Diligence and MythX.
70
star
51

Legions

Ethereum/EVM Node Security Toolkit
Python
69
star
52

eth2.0-dafny

Eth2.0 spec in Dafny
Dafny
67
star
53

starknet-snap

The MetaMask Snap for Starknet
TypeScript
65
star
54

quorum-docker-Nnodes

Run a bunch of Quorum nodes, each in a separate Docker container.
Shell
65
star
55

Project-Alchemy

Ethereum-Zcash Integration effort
63
star
56

handel

Multi-Signature Aggregation in a Large Byzantine Committees
Go
52
star
57

qubernetes

Quorum on Kubernetes.
Go
52
star
58

Uniswap-audit-report-2018-12

50
star
59

quorum-tools

Tools for running Quorum clusters and integration tests
Haskell
50
star
60

doc.teku

ConsenSys Ethereum 2.0 client
CSS
47
star
61

vscode-solidity-metrics

Generate Solidity Source Code Metrics, Complexity and Risk profile reports for your project.
JavaScript
46
star
62

private-networks-deployment-scripts

This repository contains out-of-the-box deployment scripts for private PoA networks
Shell
45
star
63

awesome-quorum

A curated list of awesome softwares, libraries, tools, articles, educational resources, discussion channels and more to build on ConsenSys Quorum.
45
star
64

wittgenstein

Simulator for some PoS or consensus algorithms. Includes dfinity, casper IMD and others
Java
45
star
65

vscode-ethover

Ethereum Account Address Hover Info and Actions
JavaScript
42
star
66

permissioning-smart-contracts

Smart contracts for the Besu permissioning system
TypeScript
41
star
67

besu-sample-networks

Hyperledger Besu Ethereum client quick-start makes you able to simply test all Besu features.
40
star
68

0x-review

Security review of 0x smart contracts
HTML
39
star
69

mythx-playground

Exercises to go along with smart contract security workshops by MythX and ConsenSys Diligence
Solidity
39
star
70

linea-tutorials

An EVM-equivalent zk-rollup for scaling Ethereum dapps
Shell
38
star
71

kubernetes-action

GitHub Action to run kubectl
Dockerfile
38
star
72

evm-analyzer-benchmark-suite

A benchmark suite for evaluating the precision of EVM code analysis tools.
HTML
38
star
73

quorum-key-manager

A universal Key & Account Management solution for blockchain applications.
Go
37
star
74

quorum-cloud

Deploy Quorum network in a cloud provider of choice
HCL
36
star
75

quorum.js

Quorum.js is an extension to web3.js providing support for JP Morgan's Quorum API
JavaScript
36
star
76

web3js-eea

EEA JavaScript libraries.
JavaScript
35
star
77

truffle-solidity-loader

A Webpack loader that will parse and provision Solidity files to Javascript using Truffle for compilation
JavaScript
35
star
78

rimble-app-demo

React Ethereum dApp demonstrating onboarding and transaction UX
JavaScript
35
star
79

secureum-diligence-bootcamp

Solidity
34
star
80

linea-contracts

Linea smart-contracts
Solidity
33
star
81

pythx

A Python library for the MythX smart contract security analysis platform
Python
33
star
82

react-metamask

JavaScript
32
star
83

infura-sdk

Infura NFT SDK
TypeScript
32
star
84

diligence-fuzzing

Python
32
star
85

quorum-aws

Tools for deploying Quorum clusters to AWS
HCL
32
star
86

web3studio-soy

Static Websites on the Distributed Web
JavaScript
31
star
87

boilerplate-react

React app boilerplate by ConsenSys France
JavaScript
29
star
88

hellhound

HellHound is a decentralized blind computation platform.
Go
29
star
89

aragraph

Visualize your Aragon DAO Templates
JavaScript
29
star
90

quorum-wizard

Quorum Wizard is a command line tool that allow users to set up a development Quorum network on their local machine in less than 2 minutes.
JavaScript
28
star
91

doc.goquorum

Documentation site for GoQuorum, the ConsenSys Enterprise Ethereum client
CSS
27
star
92

mythxjs

TypeScript
26
star
93

linea-token-list

Linea Token List
TypeScript
25
star
94

web3js-quorum

JavaScript
24
star
95

0x_audit_report_2018-07-23

0x Protocol v2 Audit
HTML
24
star
96

hackathon-2021-dapp-workshop

JavaScript
24
star
97

so101_canon

Resources on self-management/organization
24
star
98

quorum-explorer

A light-weight front-end explorer for Besu and GoQuorum to visualise private networks and deploy smart contracts
TypeScript
24
star
99

sidechains-samples

Sample code for Atomic Crosschain Transactions
Java
22
star
100

deposit-sc-dafny

Deposit smart contract in Dafny
Dafny
20
star