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 in 2014. It is a codebase fork of Bitcoin Core and extends Bitcoin with new functionality while remaining closely aligned 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.

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

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:

ExecutablePurpose
elementsdFull-node daemon
elements-cliCommand-line JSON-RPC client
elements-qtGraphical node and wallet

The Elements Project 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, chain configuration and other features.

Run the Liquid Network with Elements Core

Liquid is one network configuration supported by Elements Core.

For example, running:

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 mainnetliquidv1Production Liquid Network
Liquid testnetliquidtestnetShared Liquid testing environment
Elements regtestelementsregtestLocal 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:

ParameterWhat it controls
signblockscriptThe script that must be satisfied for a block to be valid, allowing a network to define its own block-signing policy and signer threshold.
fedpegscriptThe federation script controlling the bitcoin held by a two-way peg.
peginconfirmationdepthThe number of parent-chain confirmations required before a peg-in can be claimed.
policyassetThe asset used as the network's policy asset, including for transaction fees.
initialfreecoinsWhether the chain begins with an initial supply of its policy asset rather than requiring assets to enter through a peg.
con_blocksubsidyThe block subsidy issued when new blocks are created.

A custom chain could be started with settings such as:

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.

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:

RPCPurpose
getblockchaininfoReturns the node's current blockchain state, including chain, block height, synchronization status, and consensus-related information.
getrawtransactionRetrieves a transaction by txid, optionally returning a decoded JSON representation of its inputs, outputs, and other transaction data.
sendrawtransactionSubmits a signed raw transaction to the node for validation and relay to the network.
listunspentReturns 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 reference on the Elements Project site. The reference is organized by RPC category and the corresponding Elements release.

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.

Related Documentation


The Liquid Network is a production Bitcoin sidechain built with Elements, supporting confidential transactions, asset issuance and programmable smart contracts.

© 2026 Liquid Network
All rights reserved.

Feedback and Requests

We'd be happy to hear your suggestions on how to improve this site.

Simplicity Forum

Discuss SimplicityHL, tooling and applications on Liquid at community.simplicity-lang.org.

Liquid Dev Community

Community Telegram group where most of the Liquid developers hang out. Go to t.me/liquid_devel to join.