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:
- Private Transaction Creation: A GoQuorum node initiates a private transaction, which is then routed to Tessera.
- Privacy-Preserving Encoding: Tessera encrypts the private transaction using a privacy-preserving technique, such as homomorphic encryption or a threshold signature scheme.
- Private Transaction Execution: Tessera executes the encrypted transaction, preserving its privacy and confidentiality.
- 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.