Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
6a2e20f
fix: Add try/catch on hb_store_arweave
speeddragon Apr 21, 2026
d0f38e0
feat: Add L1 TX filtering with owner and tag support
charmful0x Mar 6, 2026
216379e
feat: Add L1 TX offset loading and configuration
charmful0x Mar 7, 2026
16be0a9
feat: Add block N depth indexing
charmful0x Mar 10, 2026
aa087d6
test: Add tests and refactor copycat internals
JamesPiechota Mar 10, 2026
1a81e22
impr: Add indexer logging and response improvements
JamesPiechota Mar 12, 2026
2ef5291
fix: Operational fixes for copycat indexer
JamesPiechota Mar 13, 2026
42389f3
feat: Add per-block item index with depth tracking
nikooo777 Apr 3, 2026
38b209a
feat: Add parallel block processing with shared memory budget
nikooo777 Apr 9, 2026
4d443b8
feat: Add parent lookup endpoint at ~arweave@2.9/parent=<id>
nikooo777 Apr 9, 2026
0a6647c
fix: Stop latest_height from silently returning 0 on network errors
nikooo777 Apr 14, 2026
99ea1ce
fix: Catch non UTF8 tags error
speeddragon Apr 28, 2026
41f8ab3
impr: Missing try catch on non UTF8 tags
speeddragon Apr 29, 2026
80ca2ed
impr: signed not needed
speeddragon May 1, 2026
26bf730
impr: Add overlay_count metrics from store LMDB to see if server is w…
speeddragon May 1, 2026
a53f539
impr: Check if write fails and throw fast in index write cases
speeddragon May 1, 2026
589850d
impr: Add a max retry limit to hb_copycat_budget
speeddragon May 1, 2026
9e78bf5
impr: Remove dead code
speeddragon May 1, 2026
35bc2fe
impr: Remove memory_safe_cap (redundant), to only use copycat_memory_…
speeddragon May 1, 2026
1e52b63
impr: Do not return not_found where there is an error in dev_arweave:…
speeddragon May 3, 2026
734ddf9
impr: Re-add warning before exit on hb_event
speeddragon May 3, 2026
af84330
impr: Minor fixes
speeddragon May 4, 2026
558f4ec
impr: stop monitor in hb_store_lmdb
speeddragon May 4, 2026
7dc7428
impr: Fix hb_store new structure for previous changes
speeddragon May 4, 2026
6925ad1
impr: document (subfork) offset index upgrade, allowing `relative` refs
samcamwilliams Apr 13, 2026
094b3d2
wip: impl improved offset indexing format; tidy Arweave data access r…
samcamwilliams Apr 13, 2026
42e9951
wip: progress towards `GET /raw` on pending IDs
samcamwilliams Apr 13, 2026
fab12b9
slop: Claude's draft of copycat on pending
samcamwilliams Apr 13, 2026
15db594
fix: port restore chunk reads without explicit len fix from impr/
charmful0x Apr 20, 2026
ee8d43e
fix: stale start-offset usage
charmful0x Apr 20, 2026
82ebac2
fix: non-numeric pending offsets & tx_to_message hard match
charmful0x Apr 16, 2026
e6fea68
chore: add pinned dev_arweave:pending/3 list
charmful0x Apr 16, 2026
e391c8d
fix: attempt 1 for get_chunk_range_relative/4 chunk relative decoding
charmful0x Apr 17, 2026
c4da09a
fix: index mempool bundle children from raw pending bytes
charmful0x Apr 17, 2026
c724202
fix: normalize arweave reads across pending & confirmed bundle offsets
charmful0x Apr 17, 2026
353af69
fix: bundle l2 items discovery
charmful0x Apr 17, 2026
ee43a60
feat: stable pending-chunks traversal
charmful0x Apr 19, 2026
4c935d7
feat: mempool copycat rich logs
charmful0x Apr 19, 2026
9c8866c
feat: filter TXs by sender
charmful0x Apr 20, 2026
eba6923
chore: add tests
charmful0x Apr 20, 2026
c842d09
feat: add mempool sender filtered determinsitv test
charmful0x Apr 20, 2026
4621172
fix: pending header recursion - rebase
charmful0x Apr 29, 2026
1e2ef19
fix: mempool test
charmful0x Apr 29, 2026
078308d
fix: tests in dev_copycat_arweave after edge rebase
speeddragon May 5, 2026
fc181dd
fix: encode anchor based on arweave spec
Lucifer0x17 May 5, 2026
0fa8104
fix: no variable can return null or not_found rather than empty map
Lucifer0x17 May 5, 2026
38c5bce
chore: clean the code
Lucifer0x17 May 6, 2026
eb029db
fix: breaking tests and some cleanup
Lucifer0x17 May 6, 2026
49da5bc
feat(wip): store tx-headers in local-store to access via graphql
Lucifer0x17 May 6, 2026
57e883c
chore: fix a test
Lucifer0x17 May 6, 2026
567cab8
feat: added support for fee in graphql
Lucifer0x17 May 8, 2026
233cc23
fix: avoid rest of the filter also failing if first filter failed
Lucifer0x17 May 8, 2026
b6f500a
impr: Moving some functions to hb_store_arweave from dev_copycat_arwe…
speeddragon May 8, 2026
9022d4d
impr: Fix bug on index scope
speeddragon May 8, 2026
6e281ef
impr: Use hb_opts instead of hb_maps
speeddragon May 7, 2026
1453628
impr: Make test work after rebase
speeddragon May 8, 2026
f82739b
feat: optimize the header indexing size on disk
Lucifer0x17 May 12, 2026
c6458c0
fix: gql queries matching with lower and uppercase tag names
Lucifer0x17 May 12, 2026
d677b1d
chore: align rebase resolutions with edge conventions
nikooo777 May 18, 2026
93c24f5
fix: prevent crash on copycat tag filtering
nikooo777 May 19, 2026
5c6375f
fix: bound copycat range test indexing depth
nikooo777 May 20, 2026
ebf3906
feat(query): self-contained block-range, tx.block, tag and owner queries
Lucifer0x17 Jun 3, 2026
2d77066
refactor(copycat): consolidate result-map and json-response helpers
Lucifer0x17 Jun 3, 2026
16f42c1
fix: Test without binary store key
speeddragon Jun 3, 2026
1c64afa
fix(query): declare graphql as hb app dep so it ships in releases
Lucifer0x17 Jun 3, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/core/include/hb_store_arweave.hrl
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
-define(SCOPE_PARENT, <<"parent">>).
-define(SCOPE_OFFSET, <<"offset">>).

16 changes: 3 additions & 13 deletions src/core/monitor/hb_event.erl
Original file line number Diff line number Diff line change
Expand Up @@ -405,18 +405,8 @@ check_overload(Last, N) ->
case erlang:process_info(self(), message_queue_len) of
{message_queue_len, Len} when Len > ?OVERLOAD_QUEUE_LENGTH ->
{memory, MemorySize} = erlang:process_info(self(), memory),
case rand:uniform(max(1000, Len - ?OVERLOAD_QUEUE_LENGTH)) of
1 ->
?debug_print(
{warning,
prometheus_event_queue_overloading,
{queue, Len},
{last_event, Last},
{memory_bytes, MemorySize}
}
);
_ -> ignored
end,
% If the size of this process is too large, exit such that
% we can be restarted by the next caller.
case MemorySize of
MemorySize when MemorySize > ?MAX_MEMORY ->
?debug_print(
Expand Down Expand Up @@ -683,4 +673,4 @@ wait_drain_loop(Pid, Deadline) ->
undefined ->
error(event_server_dead)
end.
-endif.
-endif.
13 changes: 11 additions & 2 deletions src/core/monitor/hb_prometheus.erl
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
%%% @doc HyperBEAM wrapper for Prometheus metrics.
-module(hb_prometheus).
-export([ensure_started/0, declare/2, measure_and_report/2, measure_and_report/3]).
-export([observe/2, observe/3, inc/2, inc/3, inc/4, dec/2, dec/3, dec/4]).
-export([observe/2, observe/3, inc/2, inc/3, inc/4, dec/2, dec/3, dec/4, set/4]).
-define(STARTED_CACHE_KEY, {?MODULE, started}).

%% @doc Ensure the Prometheus application has been started. Caches startup
Expand Down Expand Up @@ -118,4 +118,13 @@ dec(Type, Metrics, Labels, Value) ->
end.

do_dec(gauge, Name, Labels, Value) ->
prometheus_gauge:dec(Name, Labels, Value).
prometheus_gauge:dec(Name, Labels, Value).

set(gauge, Name, Labels, Value) ->
case ensure_started() of
ok ->
try prometheus_gauge:set(Name, Labels, Value)
catch error:mfa_already_exists -> ok
end;
_ -> ok
end.
6 changes: 6 additions & 0 deletions src/core/resolver/hb_opts.erl
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
-include("include/hb.hrl").
-include("include/hb_opts.hrl").
-include("include/hb_arweave_nodes.hrl").
-include("include/hb_store_arweave.hrl").
-include("../../_build/hb_preloaded_index.hrl").

-ifndef(PRELOADED_DEVICES_INDEX_MESSAGE_ID).
Expand Down Expand Up @@ -278,6 +279,11 @@ raw_default_message() ->
<<"relay-http-client">> => httpc,
%% The default codec to use for commitment signatures.
<<"commitment-device">> => <<"httpsig@1.0">>,
%% Copycat-specific options.
<<"copycat-memory-budget">> => 6 * 1024 * 1024 * 1024,
<<"copycat-depth-recursion-cap">> => 6, % 2x the deepest we've seen to date
<<"arweave-block-workers">> => 3,
<<"copycat-scope">> => [?SCOPE_OFFSET, ?SCOPE_PARENT],
%% Dev options
<<"mode">> => debug,
<<"profiling">> => true,
Expand Down
2 changes: 0 additions & 2 deletions src/core/store/hb_store.erl
Original file line number Diff line number Diff line change
Expand Up @@ -561,8 +561,6 @@ start_one(Store = #{ <<"store-module">> := Mod }, Req, Opts) ->
end.

call_store_start(Mod, Store, Req, Opts) ->
%% function_exported doesn't load the module. We need to call ensure_loaded
%% here since is the first time we call a function to load the module.
code:ensure_loaded(Mod),
case erlang:function_exported(Mod, start, 3) of
true -> Mod:start(Store, Req, Opts);
Expand Down
Loading