Try   HackMD

Azura Technical Overview

Azura Chain is built on the Cosmos Network, which includes Tendermint, Application Blockchain Interface (ABCI), Cosmos SDK, and utilize Ignite CLI. These technologies form the foundation for interoperability and scalability. In this section, Azura will introduce the technologies it is based on.

Cosmos Network: The Infrastrcuture

Cosmos is a network of interconnected, application-specific blockchains built using standardized and customizable tools for blockchain architecture. It employs several key components to create a comprehensive framework for developing robust and scalable blockchain applications. By understanding and leveraging these technologies, Azura can build blockchain systems tailored to the specific needs. This modular approach allows for greater flexibility and efficiency in creating custom blockchain solutions.

The system is structured and illustrated as follows:

Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →
Cosmos: System Architecture
  • Applications: Azura Chain supports gaming applications, allowing players to trade and utilize game assets as non-fungible tokens (NFTs). This integration enhances player engagement and ownership, paving the way for innovative gaming experiences.
  • Tendermint: The foundational element of the Cosmos framework serves as a consensus engine, providing Byzantine Fault Tolerance (BFT). Tendermint Core's versatility lies in its ability to support state machines developed in various programming languages through the ABCI protocol.
  • Cosmos SDK: Built atop Tendermint, the Cosmos SDK is an open-source framework designed for creating Proof-of-Stake (PoS) blockchains. Blockchains developed using the Cosmos SDK are composed of various standard modules such as Authentication, Bank, Governance, NFT, Staking, Distribution, Inter-Blockchain Communication (IBC), etc. These modules provide essential functionalities to meet the gaming application requirements.
  • Ignite CLI: This command-line interface tool streamlines the blockchain development process. With Ignite CLI, Azura can rapidly deploy blockchains based on the Cosmos stack, significantly reducing development time and complexity.

Tendermint: Constructing the Foundation

Azura Chain benefits from Tendermint consensus protocol, ensuring transaction security and consistency. Tendermint is a BFT consensus engine designed to replicate applications consistently and securely across multiple machines, which is commonly used in conjunction with PoS systems. It plays a crucial role in the blockchain ecosystem by ensuring all nodes agree on the same state, even in the presence of faulty or malicious nodes. It is designed to offer high performance, potentially capable of processing thousands of transactions per second, while maintaining robust security. Tendermint is composed of a consensus mechanism for blockchains and a versatile application interface. The core consensus engine, known as Tendermint Core, guarantees that all machines record identical transactions in the same sequence to achieve consistency.

  • Security: Allows it to function effectively even when up to 1/3 of the machines experience random failures.
  • Consistency: Achieved when all properly functioning devices maintain an identical transaction record and calculate the same state.

Note

Tendermint is now known as CometBFT. CometBFT is the authoritative implementation of the Tendermint consensus. It originated as a fork of Tendermint Core in early 2023 and has since evolved with modern features.

Application BlockChain Interface: Bridging Consensus and dApps

Azura uses the ABCI to ensure communication between the Tendermint consensus engine and the application layer. This facilitates the construction of gaming applications on top of Azura Chain. The ABCI is a protocol that bridges Tendermint with the application. It allows to build the application in any programming language while leveraging the Tendermint consensus engine. ABCI acts as the data channel connecting Tendermint Core, the secure consensus layer of the blockchain, to the application layer that maintains and utilizes the state of the blockchain.

The main components in ABCI consist of the following:

  • Consensus Logic: Manages the agreement on the order of transactions.
  • Mempool: Handles the management of unconfirmed transactions.
  • Application Logic: The business logic layer where state transitions occur.

The main message types in ABCI consist of the following:

  • CheckTx: Validates transactions before including them in a block.
  • DeliverTx: Processes transactions included in a block.
  • Commit: Finalizes the state after processing transactions.
Image Not Showing Possible Reasons
  • The image was uploaded to a note which you don't have access to
  • The note which the image was originally uploaded to has been deleted
Learn More →
Example: Communitation via ABCI Protocol

This diagram illustrates an example. When a transaction enters the mempool, the consensus logic sends a CheckTx message to the application logic via ABCI, checking for transaction validation. If valid, the transaction results are sent to the consensus logic. For each proposed block, the consensus logic sends DeliverTx messages to process transactions. After receiving pre-commits from 2/3 of validators, Tendermint Core sends a Commit message. The transaction results along with the state root are sent to the consensus logic.

Cosmos SDK: Building the Application Layer

Azura utilizes the Cosmos SDK that can develop a diverse range of modules to build the application layer. This flexibility allows Azura Chain to create a tailored blockchain environment suitable for gaming applications. The Cosmos SDK is a framework designed to streamline the creation of blockchain applications. By providing a comprehensive set of tools and libraries, it significantly simplifies the development process, allowing Azura to concentrate on crafting game logic rather than focusing on underlying blockchain infrastructure. Key features and advantages of the Cosmos SDK include:

  • Modular Architecture: The Cosmos SDK empowers Azura to construct the gaming applications by combining standard modules and custom modules tailored to specific needs. This modular approach enhances flexibility and promotes code reusability.
  • Go Programming Language: The Cosmos SDK modules are developed using Go, a statically typed and compiled language known for its performance and reliability. This choice of language contributes to the robustness and efficiency of applications built with the SDK.
  • Simplified Development: The Cosmos SDK significantly reduces the complexity and time required to complete blockchain projects by abstracting complex blockchain operations. This acceleration in development cycles can lead to faster innovation and time-to-market for blockchain solutions.
  • Inter-Blockchain Communication (IBC): The Cosmos SDK offers seamless integration of the IBC protocol module, enabling communication between different blockchains. This feature is crucial for creating interoperable blockchain ecosystems, enabling the exchange of data and assets across different blockchain networks (e.g., game-NFT transfers between Azura Chain and other chains).

Ignite CLI: Accelerating Blockchain Development

Azura takes advantage of Ignite CLI as a powerful tool designed to streamline the creation of blockchain networks built on the Cosmos SDK. The Ignite CLI (formerly Starport) can simplifies the process of creating and deploying Cosmos SDK-based blockchains. This command-line interface allows Azura to quickly establish Azura Chain ecosystems without the need for extensive manual setup. This streamlined approach enables the efficient and expedient creation of blockchain-based solutions.

Ignite CLI offers the following features:

  • Project Scaffolding: Create Azura Chain project with a single command, including configuration files, module directories, and a basic user interface.
  • Module Management: Easily add, modify, and remove standard or custom modules from the blockchain application.
  • Code Generation: Automatically generate boilerplate code for common tasks like message passing, state management, and client interactions.
  • Deployment & Testing: Tools for local testing, deploying to testnets, and eventually launching the blockchain to a live network.

Blockchain Creation - A Simplified Workflow

  1. Project Initialization: Use Ignite CLI to create Azura Chain project.
  2. Module Integration: Add standard modules (as listed below) using Ignite CLI.
  3. Custom Module Development: Build the specific game logic by creating custom modules with Azura's own message types, keeper and handler functions.
  4. Deployment & Testing: Utilize Ignite's testing framework and deployment tools to test the blockchain locally and deploy it to a testnet or mainnet.

Standard Modules in Cosmos SDK

Azura Chain is developed with the Cosmos SDK framework and incorporates multiple standard modules to offer various functionalities. These modules encapsulate essential blockchain functionalities and can be customized or extended as per requirements. Here are some of the critical modules utilized:

Module Description Key Features
Auth Manages account, transaction authentication / authorization * Secure identity management
* Transaction validation
Bank Handles basic token operations * Transfers between accounts
* Minting, burning, supply
Governance Enables on-chain governance mechanism * Proposal submission
* Voting and decision-making
NFT Supports creation, management, transfer of NFT * Essential for applications requiring unique digital asset representation
Staking Implements Proof-of-Stake consensus mechanism * Allows validators to stake tokens and earn rewards
Distribution Manages the distribution of staking rewards * Fair and transparent reward allocation to validators / delegators
IBC Enables interoperability between different blockchains * Cross-chain token transfers
* Inter-chain communications