---
updatedAt: 2026-09-01T00:33:30.000Z
agentTools:
  projectIndex: https://docs.liquid.net/llms.txt
---

# Elements vs Liquid

**Elements** is an open-source blockchain platform developed and maintained by Blockstream. Elements was launched shortly after the publication of the first [sidechain whitepaper](https://blockstream.com/sidechains.pdf) in 2014. It is a codebase fork of Bitcoin Core and extends Bitcoin with new functionality while remaining [closely aligned](https://blog.liquid.net/bitcoin-core-and-elements/) with upstream Bitcoin Core development.

**Liquid** is one production instance of Elements. More specifically, Liquid is a production Bitcoin sidechain running Elements Core with Liquid's specific chain parameters, consensus configuration and active federation parameters.

<div class="liquid-note" markdown="1">

In other words, Elements is the blockchain platform. Liquid is a production network built with it.

</div>

## Elements Core

Elements Core is the node implementation used to run Elements-based blockchains.

Like Bitcoin Core, it offers:

* a peer-to-peer node.
* block and transaction validation.
* a UTXO-based ledger.
* a wallet and JSON-RPC interface.
* command-line and graphical clients.

The main binaries (executables) retain the Elements name:

| Executable     | Purpose                      |
| -------------- | ---------------------------- |
| `elementsd`    | Full-node daemon             |
| `elements-cli` | Command-line JSON-RPC client |
| `elements-qt`  | Graphical node and wallet    |

<div class="liquid-note" markdown="1">

The [Elements Project](https://elementsproject.org/) site provides the primary technical reference for configuring and operating Elements Core. You can follow code tutorials using these executables to demonstrate asset issuance, [Confidential Transactions](https://docs.liquid.net/docs/confidential-transactions), chain configuration and other features.

</div>

## Run the Liquid Network with Elements Core

Liquid is one network configuration supported by Elements Core.

For example, running:

```bash
elementsd -chain=liquidv1
```

starts an Elements node configured to synchronize with the Liquid Network.

Liquid defines the production network around that software, including (but not limited to):

* the `liquidv1` chain and network parameters.
* Bitcoin mainnet as the parent chain for the two-way peg.
* LBTC as the Bitcoin-pegged asset used on Liquid.
* the active federation and block-signing configuration.
* Liquid-specific consensus and policy parameters.
* the production peer-to-peer network and chain history.

These properties describe **Liquid**, not Elements.

## One platform, many blockchains

**Elements Core** can run custom standalone blockchains and sidechains with independently configured network and consensus parameters, as well as built-in and preconfigured testing environments, such as Elements regtest and Liquid testnet.

| Environment                    | `-chain=`         | Purpose                                  |
| ------------------------------ | ----------------- | ---------------------------------------- |
| **Liquid mainnet**             | `liquidv1`        | Production Liquid Network                |
| **Liquid testnet**             | `liquidtestnet`   | Shared Liquid testing environment        |
| **Elements regtest**           | `elementsregtest` | Local development and controlled testing |
| **Custom Elements blockchain** | `<custom-name>`   | Your standalone blockchain or sidechain  |

### Examples of configurable parameters

A custom Elements blockchain can define its own consensus and network configuration rather than inheriting Liquid's production settings. For example:

| Parameter                | What it controls                                                                                                                           |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ |
| `signblockscript`        | The script that must be satisfied for a block to be valid, allowing a network to define its own block-signing policy and signer threshold. |
| `fedpegscript`           | The federation script controlling the bitcoin held by a two-way peg.                                                                       |
| `peginconfirmationdepth` | The number of parent-chain confirmations required before a peg-in can be claimed.                                                          |
| `policyasset`            | The asset used as the network's policy asset, including for transaction fees.                                                              |
| `initialfreecoins`       | Whether the chain begins with an initial supply of its policy asset rather than requiring assets to enter through a peg.                   |
| `con_blocksubsidy`       | The block subsidy issued when new blocks are created.                                                                                      |

A custom chain could be started with settings such as:

```bash
elementsd -chain=mychain \
  -signblockscript=<block-signing-script> \
  -peginconfirmationdepth=20
```

### Elements and Bitcoin

Elements is intentionally aligned with its upstream codebase.

This allows Elements to inherit Bitcoin Core's bug fixes, security improvements, optimizations, and other extensively reviewed code. As a result, Elements has historically maintained roughly 80% codebase overlap with Bitcoin Core, although the exact percentage varies by release.

This close relationship is very obvious to node operators and developers. Elements Core retains many Bitcoin Core conventions, command-line options, data structures, and JSON-RPC methods.

E.g., both implementations use the `-chain=` option to select the blockchain configuration to run.

```mermaid
flowchart LR

    BM["Bitcoin mainnet<br/><code>main</code>"]
    BT["Bitcoin testnet<br/><code>testnet4</code>"]
    BS["Bitcoin Signet<br/><code>signet</code>"]
    BR["Bitcoin Regtest<br/><code>regtest</code>"]

    BFORK["-chain="]
    BFORK@{ shape: text }

    BM --- BFORK
    BT --- BFORK
    BS --- BFORK
    BR --- BFORK

    subgraph BITCOIN["Bitcoin"]
        BC["Bitcoin Core"]
    end

    BFORK --- BITCOIN

    subgraph ELEMENTS["Elements"]
        EC["Elements Core"]
    end

    BITCOIN <--> ELEMENTS

    EFORK["-chain="]
    EFORK@{ shape: text }

    ELEMENTS --- EFORK

    EFORK --- LM["Liquid mainnet<br/><code>liquidv1</code>"]
    EFORK --- LT["Liquid testnet<br/><code>liquidtestnet</code>"]
    EFORK --- ER["Elements regtest<br/><code>elementsregtest</code>"]
    EFORK --- CC["Custom Elements blockchain<br/><code>&lt;custom-name&gt;</code>"]

    style BITCOIN fill:#FFF4E6,stroke:#F7931A,stroke-width:2px,color:#3A2A17
    style BC fill:#FFFFFF,stroke:#F7931A,stroke-width:1px,color:#3A2A17

    style BFORK fill:#F7931A,stroke:#F7931A,color:#FFFFFF

    style BM fill:#FFF4E6,stroke:#F7931A,stroke-width:1.5px,color:#3A2A17
    style BT fill:#FFF4E6,stroke:#F7931A,stroke-width:1.5px,color:#3A2A17
    style BS fill:#FFF4E6,stroke:#F7931A,stroke-width:1.5px,color:#3A2A17
    style BR fill:#FFF4E6,stroke:#F7931A,stroke-width:1.5px,color:#3A2A17

    style ELEMENTS fill:#F1F3FC,stroke:#6C8ADD,stroke-width:2px,color:#2F3C6D
    style EC fill:#FFFFFF,stroke:#42539D,stroke-width:1px,color:#2F3C6D

    style EFORK fill:#6C8ADD,stroke:#6C8ADD,color:#FFFFFF

    style LM fill:#F4FAFA,stroke:#14909C,stroke-width:1.5px,color:#0D1437
    style LT fill:#F4FAFA,stroke:#14909C,stroke-width:1.5px,color:#0D1437
    style ER fill:#F1F3FC,stroke:#6C8ADD,stroke-width:1.5px,color:#2F3C6D
    style CC fill:#EEF6FD,stroke:#4B8FC8,stroke-width:1.5px,color:#173B5E
```

Many familiar Bitcoin Core RPCs are also available in Elements Core. Four commonly used are:

| RPC                  | Purpose                                                                                                                                   |
| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| `getblockchaininfo`  | Returns the node's current blockchain state, including chain, block height, synchronization status, and consensus-related information.    |
| `getrawtransaction`  | Retrieves a transaction by `txid`, optionally returning a decoded JSON representation of its inputs, outputs, and other transaction data. |
| `sendrawtransaction` | Submits a signed raw transaction to the node for validation and relay to the network.                                                     |
| `listunspent`        | Returns UTXOs available to a wallet, including Liquid-specific asset and value information where available.                               |

For the complete list of JSON-RPC methods available in Elements Core, see the [Elements RPC](https://elementsproject.org/en/doc/23.3.3/rpc/) reference on the Elements Project site. The reference is organized by RPC category and the corresponding Elements release.

<div class="liquid-note" markdown="1">

Note: Maintaining Bitcoin Core parity is an ongoing engineering process rather than a one-time fork. Upstream Bitcoin Core releases are periodically merged into Elements, with conflicts resolved and Elements-specific behavior retested before release. Learn more about Elements development and Liquid upgrades on the [ELIPs repository](https://github.com/ElementsProject/ELIPs).

</div>

## Related Documentation

* [Bitcoin vs Liquid](https://docs.liquid.net/docs/bitcoin-vs-liquid)
* [Running Your Elements Node](https://docs.liquid.net/docs/advanced-elements-node)
* [Elements GitHub Repository](https://github.com/ElementsProject/elements)
* [Elements Project Documentation](https://elementsproject.org/)
* [Elements Academy Video Tutorial](https://www.youtube.com/playlist?list=PLbgdHszjwqsZ7gtielvu3H7iSMViE7xKl)