Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
07ad5f7
fix: Add try/catch on hb_store_arweave
speeddragon Apr 21, 2026
4c73101
feat: Add L1 TX filtering with owner and tag support
charmful0x Mar 6, 2026
d353649
feat: Add L1 TX offset loading and configuration
charmful0x Mar 7, 2026
24fc2b8
feat: Add block N depth indexing
charmful0x Mar 10, 2026
7aa0a7d
test: Add tests and refactor copycat internals
JamesPiechota Mar 10, 2026
59dc563
impr: Add indexer logging and response improvements
JamesPiechota Mar 12, 2026
13e0344
fix: Operational fixes for copycat indexer
JamesPiechota Mar 13, 2026
3e84514
feat: Add per-block item index with depth tracking
nikooo777 Apr 3, 2026
4d7f747
feat: Add parallel block processing with shared memory budget
nikooo777 Apr 9, 2026
24fa066
feat: Add parent lookup endpoint at ~arweave@2.9/parent=<id>
nikooo777 Apr 9, 2026
2d85d5d
fix: Stop latest_height from silently returning 0 on network errors
nikooo777 Apr 14, 2026
798c747
fix: Catch non UTF8 tags error
speeddragon Apr 28, 2026
c4b8524
impr: Missing try catch on non UTF8 tags
speeddragon Apr 29, 2026
187a13e
impr: signed not needed
speeddragon May 1, 2026
4e2f56f
impr: Add overlay_count metrics from store LMDB to see if server is w…
speeddragon May 1, 2026
87718af
impr: Check if write fails and throw fast in index write cases
speeddragon May 1, 2026
4608cfd
impr: Add a max retry limit to hb_copycat_budget
speeddragon May 1, 2026
8c6e18b
impr: Remove dead code
speeddragon May 1, 2026
47c73bb
impr: Remove memory_safe_cap (redundant), to only use copycat_memory_…
speeddragon May 1, 2026
f5ef929
impr: Do not return not_found where there is an error in dev_arweave:…
speeddragon May 3, 2026
7e682f8
impr: Re-add warning before exit on hb_event
speeddragon May 3, 2026
5775bdd
impr: Minor fixes
speeddragon May 4, 2026
188b6af
impr: stop monitor in hb_store_lmdb
speeddragon May 4, 2026
dbd1b1b
impr: Fix hb_store new structure for previous changes
speeddragon May 4, 2026
7115b96
impr: document (subfork) offset index upgrade, allowing `relative` refs
samcamwilliams Apr 13, 2026
c282264
wip: impl improved offset indexing format; tidy Arweave data access r…
samcamwilliams Apr 13, 2026
a39fef7
wip: progress towards `GET /raw` on pending IDs
samcamwilliams Apr 13, 2026
6b9eb85
slop: Claude's draft of copycat on pending
samcamwilliams Apr 13, 2026
6d01ed6
fix: port restore chunk reads without explicit len fix from impr/
charmful0x Apr 20, 2026
e809987
fix: stale start-offset usage
charmful0x Apr 20, 2026
4bd2a07
fix: non-numeric pending offsets & tx_to_message hard match
charmful0x Apr 16, 2026
cc9f0ea
chore: add pinned dev_arweave:pending/3 list
charmful0x Apr 16, 2026
f64e0af
fix: attempt 1 for get_chunk_range_relative/4 chunk relative decoding
charmful0x Apr 17, 2026
a053c21
fix: index mempool bundle children from raw pending bytes
charmful0x Apr 17, 2026
ffdc714
fix: normalize arweave reads across pending & confirmed bundle offsets
charmful0x Apr 17, 2026
09ade23
fix: bundle l2 items discovery
charmful0x Apr 17, 2026
6b4cf4e
feat: stable pending-chunks traversal
charmful0x Apr 19, 2026
5e6d9cb
feat: mempool copycat rich logs
charmful0x Apr 19, 2026
a295321
feat: filter TXs by sender
charmful0x Apr 20, 2026
6e101cf
chore: add tests
charmful0x Apr 20, 2026
ebe4b60
feat: add mempool sender filtered determinsitv test
charmful0x Apr 20, 2026
383645e
fix: pending header recursion - rebase
charmful0x Apr 29, 2026
10871e8
fix: mempool test
charmful0x Apr 29, 2026
91524a9
fix: tests in dev_copycat_arweave after edge rebase
speeddragon May 5, 2026
8ba5d38
fix: encode anchor based on arweave spec
Lucifer0x17 May 5, 2026
24f3fd9
fix: no variable can return null or not_found rather than empty map
Lucifer0x17 May 5, 2026
33708d2
chore: clean the code
Lucifer0x17 May 6, 2026
4cf2442
fix: breaking tests and some cleanup
Lucifer0x17 May 6, 2026
3596590
feat(wip): store tx-headers in local-store to access via graphql
Lucifer0x17 May 6, 2026
2d5394b
chore: fix a test
Lucifer0x17 May 6, 2026
aad5a54
feat: added support for fee in graphql
Lucifer0x17 May 8, 2026
bf25b67
fix: avoid rest of the filter also failing if first filter failed
Lucifer0x17 May 8, 2026
d07daec
impr: Moving some functions to hb_store_arweave from dev_copycat_arwe…
speeddragon May 8, 2026
f7452bc
impr: Fix bug on index scope
speeddragon May 8, 2026
90946ee
impr: Use hb_opts instead of hb_maps
speeddragon May 7, 2026
f214962
impr: Make test work after rebase
speeddragon May 8, 2026
c1f727a
feat: optimize the header indexing size on disk
Lucifer0x17 May 12, 2026
168cc12
fix: gql queries matching with lower and uppercase tag names
Lucifer0x17 May 12, 2026
26c8656
chore: align rebase resolutions with edge conventions
nikooo777 May 18, 2026
f0779aa
fix: prevent crash on copycat tag filtering
nikooo777 May 19, 2026
964ecb2
fix: bound copycat range test indexing depth
nikooo777 May 20, 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">>).

14 changes: 2 additions & 12 deletions src/core/monitor/hb_event.erl
Original file line number Diff line number Diff line change
Expand Up @@ -363,18 +363,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
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