Skip to content

Latest commit

 

History

53 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Autonomi-Nodes.Earnings-Breakdown

A desktop tool for Windows, Linux & MacOS to analyse and visualize your Autonomi nodes earnings from Arbiscan CSV exports.

Supports filtering by period and token price updates.

Features

  • Daily earnings breakdown
  • Daily/Monthly earnings visualizations
  • Customisable parametres:
    • Token

      • nothing stops you from switching to other tokens

    • Nodes amount

      • check how you're doing against other node runners

    • Period selection

      • Filter by month, quarter, half‑year, or full year

    • Exclude certain payers

      • Right‑click any column header in the daily breakdown to exclude or include specific payers

    • Configurable Smoothing Windows

      • Zero‑fills missing days to avoid misleading spikes or gaps

      • Default rolling windows: 14 days (3‑day average), 30 days (5‑day average), 60 days (7‑day average)

      • You can override those window lengths in config.json

    • Median vs. Simple Average

      • Switch between mean and median smoothing. Median helps resist large outliers (e.g. few‑day payment delays)

  • Live token price is retrieved from DEXs
  • Node efficiency metrics:
    • "mANT/Node/Day": Millitoken‑per‑Node‑per‑Day
    • "Nodes for 1x ANT/day": how many nodes you need to earn 1x ANT per day
    • "USD/1k": total USD earned per 1'000 nodes over the period

Statistics

Description Badge
Total downloads Total downloads
Latest release downloads Latest release
Windows (x86_64) Windows zip downloads
Linux (x86_64) Linux x86_64 downloads
Linux (arm64) Linux arm64 downloads
macOS (arm64) macOS dmg downloads
macOS (Intel/x86_64) macOS Intel dmg downloads

Installation

Prebuilt versions

Latest Release

  • Windows

  • Linux (x86_64/arm64)

    • The release binary was built on Ubuntu 24.04.2
    • If built from docker/Dockerfile script, should work on older distros:
      • Debian 11 “Bullseye” and newer
      • Ubuntu 22.04 “Jammy” and newer
      • Most other desktop distros (Fedora, Mint, Pop!_OS, etc.) whose glibc is ≥ 2.31
  • MacOS

    Drop the bundle into your Applications folder.

    You might need to start the tool from terminal for the first launch.

    The standard CMD + Click → Verify does not always work.

    It doesn't require sudo to run but still needs terminal command because I'm not a licensed Apple developer:

    To start from the terminal:

    /Applications/Autonomi\ Earnings.app/Contents/MacOS/Autonomi\ Earnings
    • Apple Silicon - arm64

      The release binary was built on MacOS 14.7.6

    • Intel - x86_64

      The release binary was built on MacOS 12.7.6

Tutorial to build the binary

Download Project

Click Code → Download ZIP → Extract

Build on Windows

  1. Installation
  • download Embedded Python which runs from .exe without installation

🔗 python.org → "Download Windows embeddable package (64-bit)"

  • Extract into the project's folder as:
├── python-3.13.5-embed-amd64/
│   ├── python.exe
│   ├── python313.dll
│   └── ...
├── src/
├── sripts
│   ├── build_win.ps1
└── requirements.txt
  1. Run the build script
.\sripts\build_win.ps1

or if you have Make:

make build-win
  1. Clean up

After building, you can safely delete the Autonomi-Nodes.Earnings-Breakdown folder at this point. To run the tool Autonomi Earnings.exe is all you need now.

Build on MacOS

Caution! This script was tested only on old MacOS 12 Monterey with Intel CPU.

  1. Run the build script
./scripts/build_macos.sh

or if you have Make:

make build-mac
  1. Clean up

Just delete the Autonomi-Nodes.Earnings-Breakdown folder. The script has cleaned after itself.

  1. Run the tool

Using bundled app on MacOS

🐧 Build on Linux

Docker is required

Option 1: Using Docker directly

  • Either build binary:

    rm -rf build_output && \
      mkdir -p build_output && \
      docker build --target=builder -t auton-earnings-builder:builder -f docker/Dockerfile . && \
      docker run --rm --entrypoint=cp -v "$PWD/build_output":/host_out auton-earnings-builder:builder /out/Autonomi-Earnings /host_out/ && \
      echo "✅ build_output: binary ready"
  • Or launch tool straight from container.

    Haven't tested myself but ChatGPT says it should work (even with Wayland):

    docker build -t auton-earnings-builder:builder -f docker/Dockerfile . && \
      docker run --rm \
      --network host \
      -e DISPLAY="$DISPLAY" \
      -v /tmp/.X11-unix:/tmp/.X11-unix \
      auton-earnings-builder:builder

Option 2: Using Make

Install Make (it's a ~200 KB tool):

sudo apt install make

Build a binary into /build_output:

make build-linux

Launch tool straight from container:

make run-linux

Delete /build_output:

make clean

Usage

Run the tool

Start the tool first

Import blockchain data from Arbiscan

To download data files in .csv format from Arbiscan

  1. Go to https://arbiscan.io/exportData?type=addresstokentxns&a=<your_wallet> or https://arbiscan.io/exportData
  2. Choose Token Transfers (ERC-20) export type option

export type

  1. Leave download option Date (don't switch to "Block Number")

export options

  1. Switch on Tick to include private name tags
    • "Tick to include txn private notes" doesn't matter if you tick it or not
    • Sometimes tags are not included in the CSV. Tool will ignore these files so please check yourself.
    • You may work with several input CSV files
  2. Place your CSV files into the inputs/ folder (you may copy-paste its path from the app)
    • The tool creates inputs/ folder at the first launch
    • If you are a MacOS user inputs/ folder is located at /Applications/Autonomi Earnings.app/Contents/MacOS inside the .app bundle (Right-Click on Autonomi Earnings.app > Show Package Contents)

Tool's UI

Main tab

  1. Set your nodes amount
  2. Set period + hit Calculate to get results Rows in the pivot table are colour-coded according to the amount earned in comparison to other days
  3. Nodes for 1xANT/day show three values for 14/30/60 days moving averages. See this section for more i on how it's calculated
  4. This link helps to quickly Copy-Paste into Arbiscan export page
  5. This link always points to folder where CSV files are kept
  6. Hit this fetch token price from DEX (recalculates as well)
  7. Right-Click to Exclude payers from calculations. I recommend excluding the first Emitter as its value is significantly larger. Airdrop address is already excluded if you use my default config.json

Daily Graph tab

  1. Choose between Mean and Median graphs. These buttons are synchronised with those on the Main tab
  2. You can disable the display of moving average lines

Monthly Graph tab

Select the display currency: token or USD

Keyboard Shortcuts

Key Function
Q Quit
Space Calculate
F1 Switch to Daily Data
F2 Switch to Daily Graph
F3 Switch to Monthly Graph
F5 Fetch token price & Calculate
Ctrl+Tab Switch tabs
Ctrl+Shift+Tab Switch tabs backwards

Implementation details

  • to get the token price, it queries Dexscreener for pull with the most usd~ liquidity
    • when a new price is retrieved from Dexscreener it recalculates everything automatically
    • if Dexscreener is not available it checks Coingecko
      • if for whatever reason you want to check other token and it's not on Arbitrum One you have to switch blockchain address in _fetch_price_coingecko fn as instructed there
  • exclude certain payers by Right-Click the column headers (temporary)
  • to exclude permanently read about blacklisting feature

Current bug

  • "Daily Graph" tab updates instantly when you select a new period. But the period label in title doesn't update until you re-calculate everything

Moving Averages & "Nodes for 1x ANT/day" Calculations

Introduced to help understand your nodes effectiveness. The indicator implies for three fixed time windows (14 days, 30 days, 60 days) how many nodes you’d need to earn exactly 1 ANT per day.

  1. Zero‑filling missing days

    • Missing payment: Nodes normally earn almost every day, but occasional gaps (1–2 days) occur (high Arbitrum gas price). Sometimes zero‑payment windows can even last 3–5 days due to nodes update bugs or delayed batch payouts
    • If a day has no recorded payout, it becomes a real “0 ANT” in the data instead of being skipped
    • Why? Leaving gaps would make the math trick you: skipping days would look like you earned more on the days you did get paid Zero‑filling forces each missing day to count as a true zero‑earning day
    • Important. Keep in mind that Nodes for 1x ANT/day is always calculated for the last known day with data consequently meaning if you don't have input data for the previous 14/30/60 days the results would be rubbish
  2. Smoothing

    • For each of the three spans (14 days, 30 days, 60 days), the tool looks at your daily earnings (including those zero days) and smooths out random spikes or dips
    • It does this by taking a “rolling average” or a “rolling median” over that entire span. You choose between Avg or Median
    • I introduced a short‑term smoothing step over three intervals:
      • 3 day window for 14 days period
      • 5 day window for 30 days period
      • 7 day window for 60 days period
    • I've hidden a second variant in _update_daily_graph() fn for smoothing when no matter user's choice for rolling (avg/median), .mean() applies for smoothing. This eliminates small spikes even more. I just don't like the graph to bounce as a kindergarten child's mood when I'm trying to analise a trendline
    • Pivot table always shows your actual raw daily or period totals without smoothing
    • You can reconfigure smoothing windows sizes (see next paragraph how)
  3. What zero‑filling and smoothing really do

    • Average (simple mean) treats each day equally. A single big gap can pull the average way down because you’re dividing by all days—including zeros.
    • Median picks the middle value of those smoothed daily totals. One or two zero days can drag the median lower, but if most days are non‑zero, the median stays closer to your normal rate
    • Together, they prevent you from thinking your earnings are better than they are, or worse in the face of random glitches
    • In practice:
      • If you have just one or two missing days in a month, median will ignore those few zeros and show your steady earning rate.
      • If you have long droughts (3–5 days of no earnings), even a median will slide down because many zeros appear in the middle of your data and its accuracy decreases. In this case consider focusing on a larger period instead

Millitoken‑per‑Node‑per‑Day Metrics

  • Calculates how many thousandths of a token (mANT) you earn per node, per day, over any period

    • Literally “m” stands for 1/1000 (or 1×10⁻³) of a token. It's the same as saying "ANTs per 1'000 nodes basis".

USD/1k

  • USD equivalent per 1'000 nodes for the selected period

    • Just keep in mind this is not divided by the number of days as "mANT/Node/Day" does

Adjust default settings

Edit config.json MacOS user may find it next to the /inputs folder inside the bundle

  • defaults section is self-explanatory

  • tag_overrides section If you used to have private tags in Arbiscan they would be imported into tool's UI automatically. But you can override your tags to new names for them to better fit tools's GUI in case they are too long. Works as key: value when key = your tag from Arbiscan and value = your new tag for tool

  • address_overrides section does the same as tag_overrides but if you had no tags before you could add wallet addresses if you wish to distinguish a particilar income source. I preliminary added Emission contracts for this purpose.

  • blacklist section permanently excludes address from calculations. As an example I added Airdrop address as it is not relevant to nodes earnings. If you have outgoing transactions you must blacklist those to where you make them - your other wallets/CEXs/DEXs etc. Don't forget to add a comma to the previous line when adding a new address.

  • smoothing_windows section controls the smoothing behaviour. To completely disable smoothing, set the smoothing window size to 1 for each period. This makes the app treat each period as having no internal averaging—it will calculate results exactly as they were on each day without blending them into extra smoothing intervals.

License

License: CC BY-NC-SA 4.0

This project is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

You are free to:

  • Share — copy and redistribute the material in any medium or format
  • Adapt — remix, transform, and build upon the material

For non-commercial use only.

If you remix or adapt the material, you must license your new creations under the same license.

To view a copy of this license, visit:
https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode

For attribution, please credit the original author:
0belius

About

A tool to aggregate and summarize Autonomi nodes earnings. As inputs it is processing CSV from Arbiscan

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages