> For the complete documentation index, see [llms.txt](https://cryptoarena.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cryptoarena.gitbook.io/docs/technology/foundational-concepts.md).

# Foundational Concepts

## Learn CryptoArena

CryptoArena is an experimental venture at the bleeding edge of defi & blockchain technology.

Our distribution blockchain is a Layer 2 solution built as a Parachain that shares its security and interoperability with Polkadot's Relay Chain (Layer 1) and the rest of L2s in the network.

This section is a handy reference guide for concepts and terminology relating to our the technologies involved in our solution and related to our [ecosystem](/docs/basics/ecosystem.md).

#### Sharded Shared Security

Parachains share in the security of the overall network and can interact **without trust bonds** much like smart contracts on Ethereum can interact without trust bonds — they share state and validation logic with the greater network.

Because Polkadot provides the security and validity guarantees, parachains are not subject to normal blockchain attack scenarios, like a 51% attack. Polkadot validators will reject invalid blocks, so a parachain only needs a single honest collator to submit blocks.&#x20;

This model opens up a new area of crypto-economics that could include token-less parachains, proof-of-stake parachains that use either a native parachain token or dot tokens, or other collator selection mechanisms. Block author information is normally part of the block header’s digest and is easy to verify.

## Glossary

### Adaptive Quorum Biasing (AQB)

A means of specifying a passing threshold for a referendum based on voter turnout. Positive turnout bias means that as more votes are cast, the passing threshold *decreases*; i.e. a higher turnout positively increases the likelihood of a referendum passing. Negative turnout bias means that the passing threshold *increases* as more votes are cast. Negative turnout bias is also called "default carries" as, given an apathetic voting body, the referendum will pass by default. A neutral turnout bias specifies a simple majority passing threshold. AQB removes the need for strict quorums, which are arbitrary and create undesirable governance mechanics. AQB is implemented in the [Democracy pallet](https://substrate.dev/docs/en/knowledgebase/runtime/frame#democracy), which provides the interfaces for a number of on-chain bodies (e.g. a [Collective](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#council) or any token holder) to call referenda with positive, neutral, or negative biases.

### AfG

An internal codename for "Al's Finality Gadget", which is named after [Alistair Stewart](https://w3f-research.readthedocs.io/en/latest/team_members/alistair.html) who invented it. AfG is synonymous with [GRANDPA](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#grandpa).

### Aggregation

Used in the context of [FRAME](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#frame), "[pallet](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#pallet) aggregation" means combining analogous types from multiple runtime modules into a single type. This allows each module's analogous types to be represented. Currently there are six such data types:

* `Call` - published functions that may be called with a set of arguments
* `Error` - used to inform users why a function invocation (`Call`) failed
* `Event` - pallets can emit events to make users aware of some state changes
* `Log` - an extensible header item
* `Metadata` - information that allows inspection of the above
* `Origin` - specifies the source of a function invocation (`Call`)

### Approval Voting

Voting system where voter can vote for as many candidates as desired. The candidate with highest overall amount of votes wins. Notably:

* voting for all candidates is exactly equivalent to voting for none; and
* it is possible to vote "against" a single candidate by voting for all other candidates.

Approval voting is used by the [FRAME Elections Phragmen pallet](https://substrate.dev/docs/en/knowledgebase/runtime/frame#elections-phragmen) that materializes as a governing [Council](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#council) on a number of Substrate-based chains.

### Author

The [node](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#node) that is responsible for the creation of a [block](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#block); block authors may be referred to as block "producers". In a proof-of-work chain these nodes are called "miners".

### Authority

Authorities are the [nodes](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#node) who, as a collective, manage [consensus](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#consensus) on a [blockchain](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#blockchain) network. In a [proof-of-stake](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#nominated-proof-of-stake-npos) network (such as one using [the Staking pallet](https://substrate.dev/docs/en/knowledgebase/runtime/frame#staking) from [FRAME](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#frame)), authorities are determined through a token-weighted nomination/voting system.

> The terms "authorities" and "[validators](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#validator)" may sometimes seem to refer the same thing. "Validators" is a broader term that can include other aspects of chain maintenance such as parachain validation. In general authorities are a (non-strict) subset of validators and many validators will be authorities.

### Aura (aka "Authority Round")

Deterministic [consensus](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#consensus) protocol where [block](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#block) production is limited to a rotating list of [authorities](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#authority) that take turns creating blocks; the majority of online authorities are assumed to be honest. Learn more by reading [the official wiki article](https://openethereum.github.io/wiki/Aura) for the Aura consensus algorithm.

#### Aura + GRANDPA

A [hybrid consensus](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#hybrid-consensus) scheme where [Aura](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#aura) is used for block production and short-term [probabilistic finality](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#probabilistic-finality), with [deterministic finality](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#deterministic-finality) provided through [GRANDPA](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#grandpa).

### Blind Assignment of Blockchain Extension (BABE)

[Block authoring](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#author) protocol similar to [Aura](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#aura), however [authorities](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#authority) win [slots](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#slot) based on a verifiable random function (VRF) as opposed to Aura's round-robin selection method. The winning authority can select a chain and submit a new block for it. Learn more about BABE by referring to its [official Web3 Foundation research document](https://research.web3.foundation/en/latest/polkadot/block-production/Babe.html).

### Block

A single element of a blockchain that [cryptographically](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#cryptographic-primitives) binds a set of [extrinsic](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#extrinsic) data (the "body") to a "[header](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#header)". Blocks are arranged into a tree through parent pointers (implemented as a hash of the parent) and the tree is pruned into a list via a [fork-choice rule](https://substrate.dev/docs/en/knowledgebase/advanced/consensus#fork-choice-rules), and optional [finality gadget](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#finality).

### Blockchain

A blockchain is a distributed network of computers that uses [cryptography](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#cryptographic-primitives) to allow a group of participants to trustlessly come to [consensus](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#consensus) on the [state](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#state) of a system as it evolves over time. The computers that compose the blockchain network are called [nodes](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#node).

### Byzantine Fault Tolerance (BFT)

The ability of a distributed computer system to remain operational in the face of a proportion of defective [nodes](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#node) or [actors](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#authority). "Byzantine" refers to the ultimate level of defectiveness, with such nodes assumed to be actively malicious and coordinating rather than merely offline or buggy. Typically, BFT systems remain functional with up to around one-third of Byzantine nodes.

#### Byzantine Failure

The loss of a system service due to a Byzantine Fault (i.e. components in the system fail and there is imperfect information about whether a component has failed) in systems that require consensus.

#### Practical Byzantine Fault Tolerance (pBFT)

An early approach to Byzantine fault tolerance. pBFT systems tolerate Byzantine behavior from up to one-third of participants. The communication overhead for such systems is `O(n²)`, where `n` is the number of nodes (participants) in the system.

### Cryptographic Primitives

A term that refers to concepts like signature schemes and hashing algorithms. Cryptographic primitives are essential to many aspects of the Substrate ecosystem:

* [Blockchains](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#blockchain): [blocks](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#block) must be hashed under some algorithm and reference their parent block's hash.
* [State](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#state): Substrate storage is encoded as a [trie](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#trie-patricia-merkle-tree), a data structure that uses hashing to facilitate efficient verification.
* [Consensus](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#consensus): [authorities](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#authority) often use digital signature schemes of some kind.
* [Transaction](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#transaction) authentication: in [runtimes](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#runtime) where transactions and [accounts](https://substrate.dev/docs/en/knowledgebase/learn-substrate/account-abstractions) are used, accounts are identified and authenticated through the use of cryptography.

### Council

The term "Council" is used on a number of Substrate-based networks, such as [Kusama](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#kusama) and [Polkadot](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#polkadot) to refer to an instance of [the Collective pallet](https://substrate.dev/docs/en/knowledgebase/runtime/frame#collective) that is used as a part of the network's [FRAME](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#frame)-based [runtime](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#runtime). The Council primarily serves as a body to optimize and check/balance the more inclusive referendum system.

### Database Backend

The means by which the [state](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#state) of a [blockchain](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#blockchain) network is persisted between invocations of the [blockchain node](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#node) application. There is [documentation](https://substrate.dev/docs/en/knowledgebase/advanced/storage) that explains the implementation of the database backend that is used by Substrate-based chains.

### Dev Phrase

A [mnemonic phrase](https://en.wikipedia.org/wiki/Mnemonic#For_numerical_sequences_and_mathematical_operations) that is intentionally made public. All of the [well-known development accounts](https://substrate.dev/docs/en/knowledgebase/integrate/subkey#well-known-keys) (Alice, Bob, Charlie, Dave, Ferdie, and Eve) are generated from the same dev phrase. The dev phrase is: `bottom drive obey lake curtain smoke basket hold race lonely fit walk`.

Many tools in the Substrate ecosystem, such as [`subkey`](https://substrate.dev/docs/en/knowledgebase/integrate/subkey), allow users to implicitly specify the dev phrase by only specifying a derivation path such as `//Alice`.

### Digest

An extensible field of the [block header](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#header) that encodes information needed by several actors in a blockchain network including, [light clients](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#light-client) for chain synchronization, consensus engines for block verification, and the runtime itself in the case of pre-runtime digests.

### Dispatch

A dispatch is the execution of a function with a pre-defined set of arguments. In the context of [runtime](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#runtime) development with [FRAME](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#frame), this refers specifically to the "runtime dispatch" system, a means of taking some pure data (the type is known as `Call` by convention) and interpreting it in order to call a published function in a runtime module ("[pallet](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#pallet)") with some arguments. Such published functions take one additional parameter, known as [`origin`](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#origin), that allows the function to securely determine the provenance of its execution.

### Equivocating

A type of [Byzantine](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#byzantine-fault-tolerance-bft) (erroneous/malicious) behavior that involves backing multiple mutually-exclusive options within the [consensus](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#consensus) mechanism.

### Ethash

A function used by some [proof-of-work](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#proof-of-work) [consensus](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#consensus) systems, notably that which is used by the Ethereum blockchain. It was developed by [a team led by Tim Hughes](https://github.com/ethereum/ethash/graphs/contributors).

### Events

A means of recording, for the benefit of the off-chain world, that some particular [state](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#state) transition happened. Within the context of [FRAME](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#frame), events are one of a number of composable data types that each [pallet](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#pallet) may individually define. Events in FRAME are implemented as a set of transient storage items that are inspected immediately after a block has executed and reset during block-initialization.

### Executor

A means of executing a function call in a given [runtime](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#runtime) with a set of dependencies. There are two [executor](https://substrate.dev/docs/en/knowledgebase/advanced/executor) implementations present in Substrate, *Wasm* and *Native*.

#### Native Executor

This executor uses a natively compiled runtime embedded in the [node](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#node) to execute calls. This is a performance optimization that up-to-date nodes can take advantage of.

#### Wasm Executor

This executor uses a [Wasm](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#webassembly-wasm) binary and a Wasm interpreter to execute calls. The binary is guaranteed to be up-to-date regardless of the version of the blockchain [node](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#node) since it is persisted in the [state](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#state) of the Substrate-based chain.

### Extrinsic

A piece of data that is bundled into a [block](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#block) in order to express something from the "external" (i.e. off-chain) world. There are, broadly speaking, two types of extrinsics: transactions, which may be [signed](https://substrate.dev/docs/en/knowledgebase/learn-substrate/extrinsics#signed-transactions) or [unsigned](https://substrate.dev/docs/en/knowledgebase/learn-substrate/extrinsics#unsigned-transactions), and [inherents](https://substrate.dev/docs/en/knowledgebase/learn-substrate/extrinsics#inherents), which are inserted by [block authors](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#author).

### Existential Deposit

Within the [Balances pallet](https://substrate.dev/docs/en/knowledgebase/runtime/frame#balances), this is the minimum balance an account may have. Accounts cannot be created with a balance less than this amount, and if an account's balance ever drops below this amount, the Balances pallet will use [a FRAME System API](https://substrate.dev/rustdocs/v2.0.0/frame_system/struct.Module.html#method.dec_ref) to drop its references to that account. If all the references to an account are dropped, it [may be reaped](https://substrate.dev/rustdocs/v2.0.0/frame_system/struct.Module.html#method.allow_death).

### Finality

A part of [consensus](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#consensus) that deals with making a progression irreversible. If a [block](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#block) is "finalized", then any [state](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#state) changes it encapsulates are irreversible without a hard fork and it is safe to effect any off-chain repercussions that depend on them. The consensus algorithm *must* guarantee that finalized blocks never need reverting.

[GRANDPA](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#grandpa) is the [deterministic finality](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#deterministic-finality) gadget that is used by the [Polkadot Network](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#polkadot-network).

#### Deterministic Finality

In these systems, all blocks are guaranteed to be the canonical block for that chain upon block inclusion. Deterministic finality is desirable in situations where the full chain is not available, such as in the case of [light clients](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#light-client). [GRANDPA](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#grandpa) is a deterministic finality gadget.

#### Instant Finality

A non-probabilistic consensus protocol that gives a guarantee of finality immediately upon block production. These tend to be [pBFT](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#practical-byzantine-fault-tolerance-pbft)-based and thus very expensive in terms of communication requirements.

#### Probabilistic Finality

In these systems, finality is expressed in terms of a probability, denoted by `p`, that a proposed block, denoted by `B`, will remain in the canonical chain; as more blocks are produced on top of `B`, `p` approaches 1.

#### Proof-of-Finality

A piece of data that can be used to prove that a particular block is finalized.

### Fork

Forks occur when two [blocks](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#block) have the same parent. Forks must be [resolved](https://substrate.dev/docs/en/knowledgebase/advanced/consensus#fork-choice-rules) so that only one canonical chain exists.

### Flaming Fir

Flaming Fir is a [Parity](https://www.parity.io/)-maintained Substrate-based [blockchain](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#blockchain) that exists for developing and testing the Substrate blockchain development framework.

### FRAME

[FRAME](https://substrate.dev/docs/en/knowledgebase/runtime/frame) is Substrate's system for [**runtime**](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#runtime) development. The name is an acronym for the "Framework for Runtime Aggregation of Modularized Entities". FRAME allows developers to create blockchain runtimes by composing modules, called "[pallets](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#pallet)". Runtime developers interact with FRAME by way of a [macro](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#macro) language that makes it easy for developers to define custom pallets (e.g. [`decl_event!`](https://substrate.dev/docs/en/knowledgebase/runtime/macros#decl_event), [`decl_error!`](https://substrate.dev/docs/en/knowledgebase/runtime/macros#decl_error), [`decl_storage!`](https://substrate.dev/docs/en/knowledgebase/runtime/macros#decl_storage), [`decl_module!`](https://substrate.dev/docs/en/knowledgebase/runtime/macros#decl_module) and compose pallets (e.g. [`construct_runtime!`](https://substrate.dev/docs/en/knowledgebase/runtime/macros#construct_runtime) into a working runtime that can easily be used to power a Substrate-based blockchain. The convention used in [the Substrate codebase](https://github.com/paritytech/substrate/tree/master/frame) is to preface FRAME's core modules with `frame_` and the optional pallets with `pallet_*`. For instance, the macros mentioned above are all defined in the [`frame_support`](https://substrate.dev/docs/en/knowledgebase/runtime/frame#support-library) module and all FRAME-based runtimes *must* include the [`frame_system`](https://substrate.dev/docs/en/knowledgebase/runtime/frame#system-library) module. Once the `frame_support::construct_runtime` macro has been used to create a runtime that includes the `frame_system` module, optional pallets such as the [Balances](https://substrate.dev/docs/en/knowledgebase/runtime/frame#balances) pallet may be used to extend the runtimes core capabilities.

### Full Client

A [node](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#node) that is able to synchronize a block chain in a maximally secure manner through execution (and thus verification) of all logic. Full clients stand in contrast to [light clients](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#light-client).

### Genesis Configuration

A mechanism for specifying the initial (genesis) [state](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#state) of a [blockchain](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#blockchain). Genesis configuration of Substrate-based chains is accomplished by way of a [chain specification](https://substrate.dev/docs/en/knowledgebase/integrate/chain-spec) file, which makes it easy to use a single Substrate codebase to underpin multiple independently configured chains.

### GRANDPA

A [deterministic finality](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#deterministic-finality) gadget for [blockchains](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#blockchain) that is implemented in the [Rust](https://www.rust-lang.org/) programming language. The [formal specification](https://github.com/w3f/consensus/blob/master/pdf/grandpa-old.pdf) is maintained by the [Web3 Foundation](https://web3.foundation/)

### Header

A structure that is used to aggregate pieces of (primarily [cryptographic](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#cryptographic-primitives)) information that summarize a [block](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#block). This information is used by [light-clients](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#light-client) to get a minimally-secure but very efficient synchronization of the chain.

### Keystore

A subsystem in Substrate for managing keys for the purpose of producing new blocks.

### Kusama

[Kusama](https://kusama.network/) is a Substrate-based [blockchain](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#blockchain) that implements a design similar to the [Polkadot Network](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#polkadot-network). Kusama is a "[canary](https://en.wiktionary.org/wiki/canary_in_a_coal_mine)" network and is referred to as [Polkadot's "wild cousin"](https://polkadot.network/kusama-polkadot-comparing-the-cousins/). The differences between a canary network and a true test network are related to the expectations of permanence and stability; although Kusama is expected to be more stable than a true test network, like [Westend](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#westend), it should not be expected to be as stable as an enterprise production network like [Polkadot](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#polkadot). Unlike Westend, which is maintained by [Parity Technologies](https://www.parity.io/), Kusama (like Polkadot) is [controlled by its network participants](https://substrate.dev/docs/en/knowledgebase/runtime/frame#democracy). The level of stability offered by canary networks like Kusama is intended to encourage meaningful experimentation.

### libp2p

A peer-to-peer networking stack that allows use of many transport mechanisms, including WebSockets (usable in a web browser). Substrate uses the [Rust implementation](https://github.com/libp2p/rust-libp2p) of the libp2p networking stack.

### Light Client

A light client is a type of blockchain [node](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#node) that does not store the [chain state](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#state) or produce ([author](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#author)) blocks. It encapsulates basic capabilities for verifying [cryptographic primitives](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#cryptographic-primitives) and exposes an [RPC (remote procedure call)](https://en.wikipedia.org/wiki/Remote_procedure_call) server to allow blockchain users to interact with the blockchain network.

### Macro

Macros are features of some programming languages, [including Rust](https://doc.rust-lang.org/1.7.0/book/macros.html), that allow developers to "write code that writes code". [FRAME](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#frame) provides a number of [macros](https://substrate.dev/docs/en/knowledgebase/runtime/macros) that make it easy to compose a [runtime](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#runtime).

### Metadata

Metadata is information about a system, such as a [blockchain](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#blockchain), that makes it easier to interact with that system. Blockchain [runtimes](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#runtime) that are built with [FRAME](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#frame) expose [lots of helpful metadata](https://substrate.dev/docs/en/knowledgebase/runtime/metadata).

### Node

A node correlates to a running instance of a blockchain client; it is part of the [peer-to-peer](https://en.wikipedia.org/wiki/Peer-to-peer) network that allows blockchain participants to interact with one another. Substrate nodes can fill a number of roles in a blockchain network. For instance, [validators](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#validator) are the block-producing nodes that power the blockchain, while [light-clients](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#light-client) facilitate scalable interactions in resource-constrained environments like [UIs](https://github.com/paritytech/substrate-connect) or embedded devices.

### Nominated Proof-of-Stake (NPoS)

A means of determining a set of [validators](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#validator) (and thus [authorities](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#authority)) from a number of accounts willing to commit their stake to the proper (non-[Byzantine](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#byzantine-failure)) functioning of one or more [authoring](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#author)/validator nodes. The Polkadot protocol describes validator selection as a constraint optimization problem to eventually give a maximally staked set of validators each with a number of supporting nominators lending their stake. Slashing and rewards are done in a pro-rata manner.

### Origin

A [FRAME](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#frame) primitive that identifies the source of a [dispatched](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#dispatch) function call into the [runtime](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#runtime). The FRAME System module defines [three built-in origins](https://substrate.dev/docs/en/knowledgebase/runtime/origin#raw-origins); [pallet](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#pallet) developers can easily define custom origins, such as those defined by the [Collective pallet](https://substrate.dev/rustdocs/v2.0.0/pallet_collective/enum.RawOrigin.html).

### Parachain

A parachain is a [blockchain](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#blockchain) that derives shared infrastructure and security from a "[relay chain](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#relay-chain)". You can [learn more about parachains on the Polkadot Wiki](https://wiki.polkadot.network/docs/en/learn-parachains).

### Pallet

A module that can be used to extend the capabilities of a [FRAME](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#frame)-based [runtime](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#runtime). Pallets bundle domain-specific logic along with related runtime primitives like [events](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#event), and [storage items](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#storage-items).

### Polkadot Network

The [Polkadot Network](https://polkadot.network/) is a [blockchain](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#blockchain) that serves as the central hub of a heterogeneous blockchain network. It serves the role of "[relay chain](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#relay-chain)" and supports the other chains (the "[parachains](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#parachain)") by providing shared infrastructure and security. The Polkadot Network is progressing through a [multi-phase launch process](https://polkadot.network/explaining-the-polkadot-launch-process/) and does not currently support parachains.

### Proof-of-Work

A [consensus](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#consensus) mechanism that deters attacks by requiring work on the part of network participants. For instance, some proof-of-work systems require participants to use the [Ethash](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#ethash) function to calculate a hash as a proof of completed work.

### Relay Chain

The central hub in a heterogenous ("chain-of-chains") network. Relay chains are [blockchains](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#blockchain) that provide shared infrastructure and security to the other blockchains in the network (the "[parachains](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#parachain)"). In addition to providing [consensus](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#consensus) capabilities, relay chains also allow parachains to communicate and exchange digital assets without needing to trust one another.

### Remote Procedure Call (RPC)

A mechanism for interacting with a computer program that allows developers to easily query the computer program or even invoke its logic with parameters they supply. Substrate nodes expose an RPC server on HTTP and WebSocket endpoints.

#### JSON-RPC

A standard way to call functions on a remote system by using a JSON protocol. For Substrate, this is implemented through the [Parity JSON-RPC](https://github.com/paritytech/jsonrpc) crate.

### Rhododendron

An [instant finality](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#instant-finality), [Byzantine fault tolerant (BFT)](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#byzantine-fault-tolerance-bft) [consensus](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#consensus) algorithm. One of a number of adaptions of [pBFT](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#practical-byzantine-fault-tolerance-pbft) for blockchains. Refer to its [implementation on GitHub](https://github.com/paritytech/rhododendron).

### Rococo

Rococo is the [Polkadot](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#polkadot) Network's [parachain](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#parachain) test network. It is a Substrate-based [blockchain](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#blockchain) that is an evolving testbed for the capabilities of heterogeneous blockchain networks.

### Runtime

The block execution logic of a blockchain, i.e. the [state transition function](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#stf-state-transition-function). In Substrate, this is stored as a [WebAssembly](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#webassembly-wasm) binary in the [chain state](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#state).

### Slot

A fixed, equal interval of time used by consensus engines such as [Aura](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#aura-aka-authority-round) and [BABE](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#blind-assignment-of-blockchain-extension-babe). In each slot, a subset of [authorities](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#authority) is permitted (or obliged, depending on the engine) to [author](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#author) a [block](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#block).

### Stake-Weighted Voting

Democratic voting system that uses one-vote-per-token, rather than one-vote-per-head.

### State

In a [blockchain](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#blockchain), the state refers to the cryptographically secure data that persists between blocks and can be used to create new blocks as part of the state transition function. In Substrate-based blockchains, state is stored in a [trie](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#trie), a data structure that supports the efficient creation of incremental digests. This trie is exposed to the [runtime](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#runtime) as [a simple key/value map](https://substrate.dev/docs/en/knowledgebase/advanced/storage) where both keys and values can be arbitrary byte arrays.

### State Transition Function (STF)

The logic of a [blockchain](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#blockchain) that determines how the state changes when a [block](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#block) is processed. In Substrate, this is effectively equivalent to the [runtime](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#runtime).

### Storage Items

[FRAME](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#frame) primitives that provide type-safe data persistence capabilities to the [runtime](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#runtime). Learn more about storage items in the Knowledge Base article for [runtime storage](https://substrate.dev/docs/en/knowledgebase/runtime/storage).

### Substrate

A flexible framework for building modular, efficient, and upgradeable [blockchains](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#blockchain). Substrate is written in the [Rust](https://www.rust-lang.org/) programming language and is maintained by [Parity Technologies](https://www.parity.io/).

### Transaction

A type of [extrinsic](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#extrinsic) that can be safely gossiped between [nodes](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#node) on the network thanks to efficient [verification](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#cryptographic-primitives) through [signatures](https://substrate.dev/docs/en/knowledgebase/learn-substrate/extrinsics#signed-transactions) or [signed extensions](https://substrate.dev/docs/en/knowledgebase/learn-substrate/extrinsics#signed-extension).

### Transaction Era

A definable period, expressed as a range of [block](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#block) numbers, where a transaction may be included in a block. Transaction eras are used to protect against transaction replay attacks in the event that an account is reaped and its (replay-protecting) nonce is reset to zero.

### Transaction Pool

A collection of transactions that are not yet included in [blocks](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#block) but have been determined to be valid.

#### Tagged Transaction Pool

A generic Substrate-based transaction pool implementation that allows the [runtime](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#runtime) to specify whether a given transaction is valid, how it should be prioritized, and how it relates to other transactions in the pool in terms of dependency and mutual-exclusivity. It is designed to be easily extensible and general enough to express both the [UTXO](https://github.com/danforbes/danforbes/blob/master/writings/utxo.md) and account-based transaction models.

### Trie (Patricia Merkle Tree)

An data structure that is used to represent sets of items where:

* a cryptographic digest of the dataset is needed; and/or
* it is cheap to recompute the digest with incremental changes to the dataset even when it is very large; and/or
* a concise proof that the dataset contains some item/pair (or lacks it) is needed.

### Validator

A semi-trusted (or untrusted but well-incentivized) actor that helps maintain a [blockchain](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#blockchain) network. In Substrate, validators broadly correspond to the [authorities](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#authority) running the [consensus](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#consensus) system. In [Polkadot](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#polkadot-network), validators also manage other duties such as guaranteeing data availability and validating [parachain](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#parachain) candidate [blocks](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#block).

### WebAssembly (Wasm)

An execution architecture that allows for the efficient, platform-neutral expression of deterministic, machine-executable logic. [Wasm](https://webassembly.org/) is easily compiled from the [Rust](https://rust-lang.org/) programming language and is used by Substrate-based chains to provide portable [runtimes](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#runtime) that can be included as part of the chain's [state](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#state).

### Westend

Westend is a [Parity](https://www.parity.io/)-maintained, Substrate-based [blockchain](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#blockchain) that serves as the test network for [the Polkadot Network](https://substrate.dev/docs/en/knowledgebase/getting-started/glossary#polkadot).

{% content-ref url="/pages/-MUDz0TgNBBX\_10OaArS" %}
[Crypto Assets Categories](/docs/technology/foundational-concepts/crypto-assets-categories.md)
{% endcontent-ref %}

{% content-ref url="/pages/-MUEL5mTQodkIOSLKA0S" %}
[Broken mention](broken://pages/-MUEL5mTQodkIOSLKA0S)
{% endcontent-ref %}

{% content-ref url="/pages/-MU43RN3iEty2KRpFnb4" %}
[Consensus Protocols](/docs/technology/consensus.md)
{% endcontent-ref %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://cryptoarena.gitbook.io/docs/technology/foundational-concepts.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
