Bitcoin full node and query server

May 9, 2025

View in context in the libbitcoin Slack #general mirror.

evoskuil05:40
The above code is invoked at the very beginning of the interpreter::run() method, which runs the script:
TEMPLATE
code CLASS::
run() NOEXCEPT
{
    // Enforce initial limits, determine early success or failure.
    if (const auto ec = state::initialize())
        return (ec == error::prevalid_script) ? error::script_success : ec;

    for (auto it = state::begin(); it != state::end(); ++it)
    {
        const auto& op = *it;

        if (op.is_oversized())
            return error::invalid_push_data_size;

        if (!state::ops_increment(op))
            return error::invalid_operation_count;

        if (state::if_(op))
        {
            if (const auto ec = run_op(it))
                return ec;

            if (state::is_stack_overflow())
                return error::invalid_stack_size;
        }
    }

    return state::is_balanced() ? error::script_success :
        error::invalid_stack_scope;
}