What is Architecture?

Architecture refers to the high-level design and structure of a system, outlining its key components and how they interact. It is a blueprint that guides the development and evolution of the system, ensuring consistency and scalability.

Why is Architecture important?

A well-defined architecture is crucial for several reasons:

  • Clarity and Understanding: It provides a common understanding of the system for all stakeholders, including developers, testers, and operations personnel.
  • Maintainability and Scalability: A modular and well-structured architecture makes it easier to maintain, enhance, and scale the system over time.
  • Decision Making: It provides a framework for making informed decisions regarding technology choices, resource allocation, and risk management.
  • Communication and Collaboration: It facilitates effective communication and collaboration among different teams involved in the development and deployment of the system.

GoQuorum Architecture

GoQuorum is a permissioned blockchain platform based on the Ethereum protocol. It extends Ethereum with privacy-enhancing features through integration with Tessera, a dedicated transaction manager.

GoQuorum Components

GoQuorum Node: A GoQuorum node is a full Ethereum node that runs the GoQuorum consensus engine. It is responsible for:

  • Executing transactions and maintaining the blockchain state.
  • Participating in the consensus mechanism to reach agreement on the blockchain’s history.
  • Communicating with other GoQuorum nodes in the network.

Tessera: Tessera is a dedicated transaction manager that handles private transactions. It provides:

  • Privacy: It enables transactions to be sent and stored privately, only visible to authorized parties.
  • Confidentiality: It ensures that transaction data is kept confidential and secure.
  • Scalability: It supports high-throughput private transactions.

Interaction between GoQuorum and Tessera

GoQuorum nodes and Tessera nodes work together to enable private transactions. Here’s how:

  1. Private Transaction Creation: A GoQuorum node initiates a private transaction, which is then routed to Tessera.
  2. Privacy-Preserving Encoding: Tessera encrypts the private transaction using a privacy-preserving technique, such as homomorphic encryption or a threshold signature scheme.
  3. Private Transaction Execution: Tessera executes the encrypted transaction, preserving its privacy and confidentiality.
  4. Result Dissemination: Tessera returns the transaction result to the GoQuorum node, which can be viewed only by authorized parties.

Architecture Diagram

docs/architecture/architecture.png

This diagram illustrates the key components of the GoQuorum architecture and their interaction.

Benefits of the GoQuorum Architecture

  • Privacy and Confidentiality: GoQuorum provides strong privacy guarantees through its integration with Tessera, ensuring that sensitive data is protected.
  • Flexibility and Customization: GoQuorum offers a flexible architecture that allows users to customize consensus mechanisms and transaction privacy features to meet their specific needs.
  • Scalability and Performance: GoQuorum’s architecture enables high-throughput transactions and can be scaled to accommodate large networks.
  • Interoperability: GoQuorum is compatible with the Ethereum ecosystem, allowing users to leverage existing Ethereum tools and applications.

Further Reading

This documentation provides a high-level overview of the architecture of GoQuorum. For more detailed information about specific components and features, please refer to the official documentation.

Top-Level Directory Explanations

accounts/ - This directory contains various subdirectories and files related to account management in Quorum, a private Ethereum implementation. The subdirectories include abi/, external/, keystore/, pluggable/, scwallet/, usbwallet/, and several Go files such as accounts.go and accounts_test.go.

cmd/ - This directory contains various subdirectors and files related to command-line tools and interfaces for Quorum. It includes subdirectories like abidump/, abigen/, bootnode/, clef/, devp2p/, ethkey/, evm/, faucet/, geth/, p2psim/, puppeth/, rlpdump/, utils/, and several Go files like api.go and api_backend.go.

common/ - This directory contains various utility modules used across Quorum. It includes subdirectories like bitutil/, compiler/, fdlimit/, hexutil/, http/, math/, mclock/, prque/, and several Go files like quorum.go and types.go.

consensus/ - This directory contains various subdirectories and files related to consensus algorithms used in Quorum. It includes subdirectories like clique/, ethash/, istanbul/, misc/, and several Go files like consensus.go and errors.go.

crypto/ - This directory contains various subdirectories and files related to cryptographic functions used in Quorum. It includes subdirectories like blake2b/, bls12381/, bn256/, ecies/, secp256k1/, signify/, and several Go files like crypto.go and signature_test.go.

Entrypoints and Where to Start

cmd/evm/main.go - Entry point for the EVM (Ethereum Virtual Machine) command, used for interacting with the Ethereum network and executing transactions.

core/mkalloc.go - Entry point for the mkalloc library, used for managing memory allocation in the Ethereum client.