BRIAN Pool
  • About
  • Pool Info
  • Delegate
  • Cardano
  • Blog
  • Governance
    • Overview
    • Votes
  • Account
    • Portfolio
    • Members
    • Profile
  • FAQ

Privacy Policy

For tickerbrian.com. Last updated: 22 August 2026. ← Back to BRIAN Pool

1. The short version

This site runs no analytics, no advertising, no tracking pixels and no third-party tracking cookies. It has no user accounts with names or e-mail addresses. The only personal-adjacent data it ever processes is the public stake address of a wallet you actively connect, plus what hosting inevitably sees (your IP address in standard server operation).

2. What is processed, and when

Just browsing: nothing beyond standard hosting logs. The site is served by the configured hosting provider (Vercel and/or Cloudflare Pages), which processes IP addresses to deliver pages, as every web host does.

Wallet Portfolio: when you connect a wallet, your public stake address is sent to this site's own server, which looks up the address's public balances via the Koios API and, for token prices, via the DexHunter API. The address is used for the lookup and is not stored by this site. If the wallet holds NFTs whose artwork lives on IPFS, the preview pictures are fetched by this site's own server and passed on to you: your browser talks only to this site, and the IPFS gateway never sees your IP address or which NFTs you hold.

Members sign-in: your public stake address, a one-time login challenge and a session record (a random session id with an expiry) are stored in this site's database for the duration of the session (up to 30 days, so you stay signed in on this device without confirming a new wallet signature each visit). While a session is active, the site re-checks your delegation to the pool about once a day against public on-chain data; if the access condition is no longer met, the session ends. The session id is kept in a strictly functional cookie (brian_session — HttpOnly, Secure, SameSite=Strict). Signing out deletes the session server-side. A separate, persistent record links to your stake address alone (when you first sign in) and stores nothing beyond that address, an optional display name and an optional location you may set yourself on the Profile page — both entirely voluntary. A display name starting with “$” names an ADA Handle: that one is checked against public on-chain data when you save it, so it can only be a handle your own wallet holds. This record is what keeps your account when a session ends, so you can sign back in with the same wallet and find it as you left it. You can clear both fields at any time with “Delete profile” on the Profile page; your access stays, and comments or chat messages you have already written stay too, under the name they were written with.

Blog comments: a comment you post under a blog post in the members area is stored with the display name from your profile, its text, the post it belongs to and the time it was written, and is readable by every other signed-in member. Your stake address is stored with it so the operator can moderate, and is never shown to anyone. Each comment is also e-mailed to the operator so they can follow and answer from their mailbox — name, text and the post title only, never your address. Only the operator can delete a comment. Write nothing there you would not want other members to read.

Members chat: a message you post is stored with the display name from your profile, its text and the time it was written, and is readable by every other signed-in member. Your stake address is stored with it so the operator can moderate, and is never shown to anyone. Each message is also e-mailed to the operator so they can follow the room from their mailbox — name and text only, never your address, and there is no address of yours to send. The operator's reply comes back into the room as its text alone: no mail address, no subject line, no headers. Only the operator can delete a message, and a deleted message is gone for good. Write nothing there you would not want other members to read.

FAQ assistant: the question text you type is forwarded to Google Gemini to generate an answer, without any account or wallet information attached. Do not include personal data in questions.

Swap interface (Portfolio page): the swap widget is an embedded frame operated by DexHunter. Within that frame, DexHunter's own privacy policy applies — this site does not receive what you do inside it.

3. What is deliberately never collected

No private keys, no seed phrases, no transaction signatures for the Portfolio feature, no e-mail addresses, no behavioural profiles. The Members sign-in uses a data signature (CIP-8) solely to prove control of a stake address — it cannot move funds. The only name ever stored is one you choose to type in yourself, never verified against anything and never used for access. It stays private to you everywhere on this site with one exception you choose to enter: post in the members chat and that name is shown next to your message, to other signed-in members and to the operator. Your stake address is never shown there.

The sister site clinic-tools.net: the operator also runs clinic-tools.net, where the same delegation to BRIAN unlocks a read-only blog about medical technology. It is a separate site with its own sign-in, its own database and its own delegation check — neither site can create a session for the other, and following the link from the Members area signs you into nothing. Two things do cross, and only these: when you sign in on either site, that site asks the other whether it holds a newer display name and location for your stake address, and adopts it if so. Your public stake address is sent to make that lookup; nothing else about you is shared, and no message, post or wallet balance ever crosses. The exchange is protected by a secret shared between the two sites; if it is switched off, both sites simply keep their own values.

4. Third-party services

Data leaves this site only to the services named above and only for the purpose described: Koios (on-chain lookups), CoinGecko (ADA fiat rates — called directly by your browser), Google Gemini (FAQ answers), DexHunter (token prices via this site's server; the swap frame directly in your browser), the public IPFS gateway ipfs.io (NFT preview pictures — requested by this site's server, not by your browser), Resend (carries members-chat messages to the operator's mailbox and their replies back), and the hosting provider. Each operates under its own privacy policy.

5. Your choices and rights

Everything beyond plain browsing is opt-in by action: nothing wallet-related happens until you connect or sign in, and signing out ends and deletes the session. Depending on where you live, data-protection law may give you rights of access, correction and deletion; for anything this site actually stores (a session row), signing out already deletes it. For questions, contact the operator via the X (Twitter) link in the footer.

6. Changes

This policy may be updated at any time; the current version is always the one published on this page.

Appendix: how the Wallet Portfolio works, step by step

The real code behind the Wallet Portfolio, in the order it runs. This project's repository is private, so instead of a source link, the actual code behind every step is reproduced and explained here - read it yourself rather than take our word for it. Each excerpt is copied unmodified from this site's own source files.

1. Connecting only ever asks for read access, never a signature

Clicking a wallet button calls three wallet-API methods, in this exact order: enable() - the wallet extension's own permission prompt, the one asking to let this site read the wallet, nothing more - then getNetworkId() (rejects anything but Cardano mainnet) and getRewardAddresses() (returns the stake address, already plain data, nothing that needs signing to read). No other wallet method is called at this step.

const api = await window.cardano[walletKey].enable();

const networkId = await api.getNetworkId();
if (networkId !== 1) {
  setStatus("This wallet is on a test network. Switch it to Cardano mainnet and try again.", true);
  return;
}

const rewardAddresses = await api.getRewardAddresses();
2. The stake address is derived entirely in your browser

The wallet already hands back the reward address as plain hex bytes - this function turns those bytes into the familiar stake1… form, entirely on your device, following Cardano's own CIP-19 address format. No private key, seed phrase or signature is involved at any point.

// CIP-19: a mainnet reward/stake address is always 29 bytes (1 header
// byte + 28-byte credential hash), header byte 0xE1 (type 14 = stake
// credential, network tag 1 = mainnet). Anything else (wrong length,
// testnet address, a non-reward address type) is rejected rather than
// guessed at, since this pool and this widget are mainnet-only.
function rewardAddressHexToBech32(hex) {
  const bytes = hexToBytes(hex);
  if (bytes.length !== 29) throw new Error("Unexpected reward address length");
  if (bytes[0] !== 0xe1) throw new Error("Not a mainnet stake address");
  return bech32Encode("stake", bytes);
}
3. Only that public address is ever sent anywhere

That address - public information, the same one any Cardano block explorer would show for this wallet - is the only thing sent off your device, in a request to this site's own server. Nothing else about the wallet is included.

fetch(PORTFOLIO_PROXY_URL, {
  method: "POST",
  signal,
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ stake_address: stakeAddress }),
})
4. The server only ever asks Koios, a public Cardano data provider

The server-side endpoint that receives that address queries exactly these three read-only Koios API endpoints and returns the combined result - the same public on-chain data any block explorer shows for any stake address.

const KOIOS_ACCOUNT_INFO_URL = "https://api.koios.rest/api/v1/account_info";
const KOIOS_ACCOUNT_ASSETS_URL = "https://api.koios.rest/api/v1/account_assets";
const KOIOS_ASSET_INFO_URL = "https://api.koios.rest/api/v1/asset_info";
5. Token prices are estimates from DexHunter - or honestly absent

For the tokens the wallet holds, this site's server asks the DexHunter DEX aggregator for a current ADA price per token. Many native tokens have no liquid market and therefore no price - those rows say "Price data not available" instead of showing a guessed number, and they are left out of the portfolio total (which says so). Every value is a market estimate, not a quote you could necessarily sell at.

6. What the code never does

Across the files behind the Portfolio page, none of the following ever appears: signTx, signData, submitTx, or getBalance() (the CBOR-encoded balance method the wallet API also offers, deliberately unused here). Every value shown on that page - stake address, token names, error messages - is written with .textContent, never innerHTML, so nothing returned by a wallet or the network can render as active markup.

See also the Terms of Use.

BRIAN Pool

© BRIAN Stake Pool. Not financial advice — see disclaimer below.

Disclaimer: the information on this site is for informational purposes only and does not constitute financial, investment or other professional advice. Staking and cryptocurrency markets carry risk, including loss of value; do your own research and consult a professional advisor where appropriate.

build v91