Bot or human?
Bots trade around the clock in even, dense rows. People leave a sleep-shaped gap. The heatmap shows which you're looking at in a glance.
24/7 = probably automated
FOLIO Nº 1 · SOLANA MAINNET
LedgerLine reads a wallet's public transaction signatures and enters them into a ledger: a heatmap of activity by day and hour, a journal of every entry, the failed ones in red ink, and the quiet gaps between.
Paste any Solana address. LedgerLine pages through its signatures (up to 5 × 1,000) and posts them to the ledger below.
Nothing posted yet.
Choose a sample account or paste an address to start a page.
Your browser calls getSignaturesForAddress on a public Solana RPC. Each call returns up to 1,000 signatures, newest first, with slot, block time, error status and any memo.
To go further back it asks again with before set to the oldest signature so far, waiting between calls, until it hits your depth or the node's history ends.
Each block time is converted to your local time (or UTC) and posted to a day × hour grid — or, for busy accounts, an hour × five-minute grid.
Totals are ruled off: entries, failures, active hours, busiest hour, longest quiet gap and the account's daily rhythm. Export it all as CSV if you want to keep the page.
Bots trade around the clock in even, dense rows. People leave a sleep-shaped gap. The heatmap shows which you're looking at in a glance.
24/7 = probably automated
Your activity pattern can hint at your timezone and routine. Look at your own wallet the way a stranger could.
quiet hours = night?
Failed transactions still cost fees. See how many of an account's entries failed and when they cluster.
red ink = err ≠ null
Long quiet gaps followed by a burst of entries are worth noticing — for a treasury, a team wallet, or your own old address.
gap → burst
Entries that carry a memo are listed with their text, which often explains what a payment was for.
memo column
Export signatures with times and status as CSV for your own bookkeeping or to look up details later.
file it away
Every Solana transaction is identified by its first signature — a 64-byte Ed25519 signature written in base58, usually 87–88 characters. It is unique, permanent and public, which makes it the perfect ledger reference: paste it into any explorer and you get the full transaction.
getSignaturesForAddress returns transactions in which the address appears among the account keys — not just ones the wallet signed. Incoming transfers, airdrops someone else paid for, and programs that merely read the account all show up. A wallet that never signs anything can still have a busy ledger, so read heavy activity with that in mind.
Alongside the signature you get the slot it landed in, a blockTime (Unix seconds, from validators' vote timestamps, so it can be a little off), the err field (null when the transaction succeeded), the confirmationStatus, and a memo if the transaction used the Memo program. LedgerLine posts all of these without fetching full transactions, which keeps it to a handful of requests.
On Solana a transaction that fails after being processed is still included in a block and still pays its fees — the instructions simply don't take effect. That's why failures appear in the ledger in red ink. Trading bots often show many: they submit aggressively and let the chain reject trades whose price moved.
Validators don't keep the whole ledger. Full history lives in archival storage that RPC providers may or may not expose. The free public node LedgerLine uses keeps a rolling window of recent history — anywhere from several hours to a couple of days, and it shifts over time. When the node's history runs out, LedgerLine says so and shows the earliest entry it could reach. For deeper history you'd need an archival RPC.
Even rows across all 24 hours suggest automation. A daily dark band suggests a person asleep — and therefore a rough timezone. Bursts in one five-minute bucket often mean a batch job or a bot reacting to a launch. Treat all of it as a hint, never as proof of who owns an address.
No — it reads signatures only, not full transactions, so it knows when something happened and whether it failed, not what moved. Click any signature to open it on an explorer for details.
Depth is counted in entries, not days. At 5,000 entries a wallet doing thousands of transactions an hour only reaches back a short time. LedgerLine switches to an hour × five-minute grid for that case.
The public RPC node keeps a limited rolling window of history, often less than two days. When it has nothing older, LedgerLine marks the page "end of available history" and shows the earliest date reached.
Yes, any account address works. Very busy programs will fill 5,000 entries in seconds of chain time, so the grid will be narrow.
Block times come from validator timestamps and are usually within a second or two. LedgerLine converts them with your browser's timezone; switch to UTC for a neutral clock.
The longest stretch between two consecutive entries within the period loaded. It can't see gaps before the first entry LedgerLine reached.
No. There is no backend. Addresses go directly from your browser to the public RPC, and the CSV is generated in your browser.
getSignaturesForAddress and getRecentPerformanceSamples on the public RPC at solana-rpc.publicnode.com, called from your browser.