Find or improve a linearization for a cluster.

Synopsis

Declared in <cluster_linearize.h>

template<typename SetType>
std::tuple<std::vector<DepGraphIndex>, bool, uint64_t>
Linearize(
    DepGraph<SetType> const& depgraph,
    uint64_t max_cost,
    uint64_t rng_seed,
    auto const& fallback_order,
    std::span<DepGraphIndex const> old_linearization = {},
    bool is_topological = true) noexcept;

Return Value

A tuple of: ‐ The resulting linearization. It is guaranteed to be at least as good (in the feerate diagram sense) as old_linearization. ‐ A boolean indicating whether the result is guaranteed to be optimal with minimal chunks. ‐ How many optimization steps were actually performed.

Parameters

Name

Description

depgraph [in]

Dependency graph of the cluster to be linearized.

max_cost [in]

Upper bound on the amount of work that will be done.

rng_seed [in]

A random number seed to control search order. This prevents peers from predicting exactly which clusters would be hard for us to linearize.

fallback_order [in]

A comparator to order transactions, used to sort equal‐feerate chunks and transactions. See SpanningForestState::GetLinearization for details.

old_linearization [in]

An existing linearization for the cluster, or empty.

is_topological [in]

(Only relevant if old_linearization is not empty) Whether old_linearization is topologically valid.

Created with MrDocs