ndavd
bop
Rust

Locally encrypted multichain crypto portfolio tracker

Last updated Dec 7, 2025
10
Stars
0
Forks
0
Issues
0
Stars/day
Attention Score
16
Language breakdown
Rust 100.0%
โ–ธ Files click to expand
README

๐Ÿ“’๐Ÿ“ˆ Book of Profits

Crates.io Version

book-of-profits is a multichain portfolio tracker in REPL form.

It is private - All data is locally encrypted.

It features minimal and privacy preserving data fetching.\ External requests made by book-of-profits can be separated into two categories:

  • RPC calls: Used to query the blockchain
  • Dexscreener API calls: Used to get the current price of tokens
If you're not content with the performance or privacy of the default RPC, you can change it to one of your liking.
[!NOTE]
It is highly recommended to use custom RPCs, since the public ones often have
severe rate limits.

See features.\ See supported blockchains.\ See faq.

Installation

Download the pre-built binaries

Pre-built binaries for Windows, Linux, MacOS can be found in the releases page.

Install from crates.io

Make sure you have cargo installed.

cargo install book-of-profits

Install from source

git clone https://github.com/ndavd/bop
cd bop
cargo install --path .

Uninstall

cargo uninstall book-of-profits

Features

โœ…: Feature is supported on all chains\ โš ๏ธ: Feature is partially supported\ โŒ: Feature is planned but not supported yet

| Support | Feature | | ------------------------- | ------------------------------------------------------------------------------------ | | โœ… | Password encryption | | โœ… | Change chain RPC | | โœ… | Enable or disable chain | | โœ… | Add account to track and optionally set an alias | | โœ… | Manually add new token just by specifying chain and address | | โœ… | Show global balance | | โœ… | Export raw configuration in plaintext | | โœ… | Display spinner when loading | | โœ… | Fallback RPCs | | โš ๏ธ Not supported in EVM | Scan for token holdings in account and automatically add them | | โŒ | Show balance by chain | | โŒ | Show balance by account | | โŒ | Automatically prune low liquidity tokens | | โŒ | Cache balances in order to display them in other views without refetching everything | | โŒ | Show total balance of a single token | | โŒ | Web client | | โŒ | Centralized exchanges support | | โŒ | Cosmos | | โŒ | Use Coingecko for prices and use Dexscreener as a fallback |

Supported Blockchains

Solana

  • Solana

Ton

  • Ton

EVM

  • Ethereum
  • Base
  • BSC
  • Arbitrum
  • Avalanche
  • Polygon
  • zkSync
  • Cronos
  • Fantom
  • Optimism
  • Linea
  • Mantle
  • Metis
  • Core
  • Scroll
  • IoTeX
  • Celo
  • PulseChain
  • Polygon zkEVM
  • Telos

FAQ

Q: Where does it store the data?

All data is stored in the configuration file .bop-data, which is stored in user's config directory:

  • For Linux, that's $XDGCONFIGHOME or $HOME/.config
- Example /home/alice/.config/.bop-data
  • For MacOS, that's $HOME/Library/Application Support
- Example /Users/Alice/Library/Application Support/.bop-data
  • For Windows, that's {FOLDERID_RoamingAppData}
- Example C:\Users\Alice\AppData\Roaming\.bop-data
[!NOTE]
Keep in mind that if you didn't set a password its contents are not encrypted.

Q: Why a REPL?

I wanted this to be primarly a terminal application and a REPL allows the decrypted data to be loaded into memory once, enabling users to execute multiple commands while only needing to input their password once, and also makes the process of updating the data and re-encrypting it trivial.

Also because I'm a fan of chisel.

Q: I'm not a terminal user. Is this getting a client?

Building a web client is a planned feature. It should not be hard to compile the core components into WASM and make a client side application out of them.

Contributing

Contributions are very welcome! Those being pull requests, issues or feature requests.

๐Ÿ”— More in this category

ยฉ 2026 GitRepoTrend ยท ndavd/bop ยท Updated daily from GitHub