Naciśnij ESC, aby zamknąć

Privacy Mining: Jak Zarabiać na Płynności w Railgun i Hinkal

Temat, który dzisiaj weźmiemy na warsztat, wielu osobom wciąż kojarzy się z totalną partyzantką i działaniem na granicy prawa. Powiedzmy sobie jednak wprost: prywatność w Web3 to nie żaden kryminał. To fundamentalne prawo człowieka. Co więcej, dzisiaj na zapewnianiu tej prywatności można zgarnąć genialny, a co najważniejsze, w pełni legalny zysk.

Pogadamy o Privacy Miningu (znanym też jako Anonymity Mining). Rozłożymy na czynniki pierwsze to, jak dostarczać płynność do takich protokołów jak Hinkal, Railgun czy stary, dobry Tornado Cash (tak, tak, projekt żyje i ma się dobrze mimo sankcji, choć jest tam parę haczyków), pomagać innym zacierać ślady i zgarniać za to tłusty procent.

Będzie boleśnie, wejdziemy głęboko w technikalia, momentami polecimy cynizmem, ale dostaniecie sam mięsisty, czysty praktyk.

Gdzie leży ból: Dlaczego za „ciszę” płaci się tak grube siano?

Wyłóżmy to łopatologicznie. Zastanawiałeś się kiedyś, jak potwornie przeźroczysty jest blockchain? Byle student pierwszego roku po zaliczeniu dwóch hackathonów postawi skrypt, który powiąże Twój publiczny portfel z Twoim realnym IP, zakupami i stanem konta. Grube ryby (wieloryby, fundusze) szczerze tego nienawidzą. Nie życzą sobie, żeby ulica czytała ich strategie inwestycyjne jak otwartą książkę.

Żeby zejść z radarów, potrzebują mikserów i prywatnych pul (Shielded Pools). Tyle że te pule są bezużyteczne, jeśli świecą pustkami. Jeśli do miksera wpada 1 000 000$ i wypada 1 000 000$, powiązanie wejścia z wyjściem to zadanie na poziomie podstawówki. Ale kiedy leżą tam setki milionów dolarów innych użytkowników, Twoja transakcja po prostu rozmywa się w tłumie.

Główny insight: Wypożyczasz swoje krypto jako „statystów”. Twoje tokeny siedzą w puli, tworząc masę krytyczną potrzebną do zapewnienia anonimowości innym graczom. W zamian protokoły odpalają Ci dolę w natywnych tokenach albo dzielą się częścią zysków z prowizji.

Architektura: Co siedzi pod maską? (ZK-SNARKs i Relayery)

Jak to wygląda od strony inżynieryjnej? Większość nowoczesnych protokołów prywatnościowych (jak Hinkal czy Railgun) opiera się na kryptografii wiedzy zerowej, a dokładnie na zk-SNARKs.

Kiedy wrzucasz środki do shielded poola, w zamian dostajesz kryptograficzny kwit (Commitment). Twoje czyste tokeny trafiają do wspólnego kociołka. Gdy ktoś inny (albo Ty sam) chce wypłacić kasę, przedstawia ZK-proof (dowód), który potwierdza, że ma prawo wyciągnąć z puli kwotę X, ale bez ujawniania, który konkretnie depozyt startowy należał do niego.

A teraz mało znany detal, o którym dziwnym trafem milczą krypto-influencerzy i naganiacze z Telegrama: problem relayerów (Relayers). Kiedy użytkownik chce wypłacić poufne tokeny na świeży, nieskażony portfel, ten portfel ma... równe zero ETH na pokrycie gasu! Jeśli przeleje gas ze swojego starego adresu, cała anonimowość idzie się jebać. Po co było w ogóle rzeźbić w gównie? Dlatego w cały schemat wchodzą relayery — podmioty trzecie, które opłacają gas w sieci głównej za użytkownika, a w zamian potrącają sobie prowizję bezpośrednio z jego prywatnego czeku wewnątrz puli. Na tym też da się zarobić, stawiając własny węzeł-relayer, ale tutaj próg wejścia pod kątem infrastruktury jest już znacznie wyższy.

Analiza porównawcza czołowych platform na rok 2026

Skleiłem na szybko małą macierz do porównania. Dane są świeże, zbierane prosto ze specyfikacji i sieci testowych.

ProtokółTechnologiaMechanizm Privacy-MiningŚredni APY (realny, bez wyssanych z palca liczb)Specyfika / Ryzyka
Railgunzk-SNARKs (on-chain)Staking RAIL, dostarczanie płynności do Active Shielded Pool12% - 24% w zależności od tokenaW pełni zdecentralizowany, śmiga bezpośrednio w EVM (Ethereum, Arbitrum). Dość prądożerny pod kątem gasu przy samym depozycie.
Hinkalzk-SNARKs + DID (Decentralized ID)Dodawanie płynności przez integracje z DeFi (Curve, Uniswap za pośrednictwem Hinkala)15% - 35% w tokenach zarządzania (governance)Skrojony pod instytucje. Wymaga przejścia „prywatnego KYC” (udowadniasz, że nie jesteś terrorystą, ale protokół nie przechowuje Twoich dokumentów).
Tornado Cash (Classic)zk-SNARKsMining anonimowości (Anonymity Mining) poprzez zgarnianie tokenów APCzysta spekulacja (zależy od ceny tokena TORN)Ogromne ryzyko banów ze strony scentralizowanych giełd (CEX). Tokeny stamtąd są bardzo często oznaczane jako „brudne”.

Praktyka: Jak może na tym zarobić dev lub ogarnięty użytkownik

Koniec teorii, czas na kod i konkrety. Najbardziej niezawodnym i weryfikowalnym sposobem na interakcję z takimi protokołami na poziomie automatyzacji jest bezpośrednia zabawa z ich smart kontraktami.

Poniżej wrzucam gotowy skrypt w Node.js z użyciem biblioteki ethers.js, który symuluje bazowe sprawdzenie balansu w prywatnej puli oraz przygotowanie do depozytu. Wyobraź sobie, że piszemy bota do automatycznego rebalansowania płynności: jeśli APY w prywatnej puli Railgun bije na głowę umowne Aave, przerzucamy środki.

const { ethers } = require("ethers");
// Mój config. Żadnych zmiennych środowiskowych, piszemy hardkorowo pod siebie.
const RPC_URL = "https://arbitrum-mainnet.infura.io/v3/YOUR_KEY"; // Używaj Arbitrum, na Ethereum zbankrutujesz na gasie
const SHIELDED_POOL_ADDRESS = "0x0000000000000000000000000000000000000000"; // Tutaj wklejamy kontrakt puli Railgun/Hinkal
const TOKEN_ADDRESS = "0xaf88d065e77c8cc2239327c5edb3a432268e5831"; // USDC na Arbitrum
// Minimalne ABI, tylko to, co jest mi niezbędne do roboty. Nie lubię śmietnika.
const poolAbi = [
    "function deposit(address token, uint256 amount, bytes32 zkCommitment) external returns (bool)",
    "function getAnonymityRewardRate(address token) external view returns (uint256)"
];
const erc20Abi = [
    "function approve(address spender, uint256 amount) external returns (bool)",
    "function balanceOf(address account) external view returns (uint256)"
];
async function managePrivacyLiquidity() {
    // Inicjalizujemy providera i portfel. 
    // Uwaga: portfel do robienia depozytu MUSI być czysty, jeśli nie chcesz powiązać swojej głównej tożsamości z pulą.
    const provider = new ethers.JsonRpcProvider(RPC_URL);
    const wallet = new ethers.Wallet("TWÓJ_KLUCZ_PRYWATNY_TUTAJ", provider);
    
    const poolContract = new ethers.Contract(SHIELDED_POOL_ADDRESS, poolAbi, wallet);
    const tokenContract = new ethers.Contract(TOKEN_ADDRESS, erc20Abi, wallet);
    console.log("Sprawdzamy aktualną dochodowość prywatnej puli...");
    
    try {
        // Hmm, a kontrakt na pewno zwraca wartość w dobrym formacie? Trzeba będzie zweryfikować whitepaper.
        const rewardRate = await poolContract.getAnonymityRewardRate(TOKEN_ADDRESS);
        console.log(`Aktualna stawka nagrody (w rewardach na blok): ${rewardRate.toString()}`);
        const myBalance = await tokenContract.balanceOf(wallet.address);
        
        // Potrzebujemy przynajmniej 500 baksów, inaczej gas zeżre cały zysk z miningu prywatności
        if (myBalance < ethers.parseUnits("500", 6)) {
            console.log("Balans zbyt mały. Idziemy spać.");
            return;
        }
        console.log("Dajemy approve dla kontraktu puli...");
        const approveTx = await tokenContract.approve(SHIELDED_POOL_ADDRESS, myBalance);
        await approveTx.wait(); // Czekamy na wbicie do bloku. Arbitrum jest szybkie, jakieś 2-3 sekundy.
        
        console.log("Approve przeszedł pomyślnie.");
        
        // STOP! Do wygenerowania zkCommitment potrzebna jest dedykowana biblioteka protokołu (np. @railgun-community/wallet)
        // Pod żadnym pozorem nie wysyłaj losowych bajtów, bo zablokujesz płynność na amen!
        console.log("UWAGA: Wygeneruj zkCommitment na frontendzie przed wywołaniem deposit()!");
        
    } catch (error) {
        console.error("Kurwa, coś się wysypało w łańcuchu transakcji:", error.message);
    }
}
managePrivacyLiquidity();

Teraz zdejmijmy różowe okulary i porozmawiajmy o rzeczach, o których nie przeczytasz w broszurach marketingowych. Jako były SecOps muszę rozłożyć realne ryzyka tego procesu na czynniki pierwsze – bo tutaj nie chodzi tylko o ucięcie zysków, ale o sytuację, w której możesz zjechać z całym swoim kapitałem do zera.

Podwodne kamienie i pułapki: Na czym najczęściej wykrzaczają się "privacy minerzy"?

  • Ryzyko toksycznej płynności (The OFAC Factor). To jest najgorszy systemowy ból. Wyobraź sobie akcję: wrzucasz swoje całkowicie czyste, wykopane albo kupione na zregulowanej giełdzie USDC do prywatnego poola na Railgunie albo Tornado Cash. Twoje tokeny tam leżą i generują yield. W tym samym momencie do tego samego poola wbija haker, który przed chwilą opędzlował jakiś protokół DeFi na 50 baniek zielonych. Twoje tokeny fizycznie mieszają się z jego środkami w jednym smart kontrakcie. Kiedy postanowisz wypłacić kasę, narzędzia do analityki on-chain (Chainalysis, Elliptic) z automatu oznaczają Twój adres jako „powiązany z mikserem / adresem hakera”. 
    Efekt? Twój czysty dotąd portfel ląduje na wszystkich możliwych czarnych listach. Spróbuj potem wpłacić te środki na Binance, OKX czy Krakena – dostajesz natychmiastowego bana na konto i żądanie przedstawienia dokumentów potwierdzających pochodzenie kasy do siódmego pokolenia wstecz. Wyjście z tej sytuacji jest dziś w zasadzie jedno: korzystanie z protokołów nowej generacji (takich jak Hinkal), które wdrażają oparte na ZK rozwiązanie „Proof of Innocence” (Dowód niewinności). Generujesz kryptograficzny dowód na to, że konkretnie Twój depozyt pochodzi z czystego źródła, bez jednoczesnego doxxowania swojego adresu. Jeśli protokół tego nie ogarnia – grasz w rosyjską ruletkę.
  • Impermanent Loss (Nietrwała strata) w egzotycznych poolach. Krótko: jeśli pool wymaga od Ciebie stakowania natywnego tokena prywatności (np. RAIL albo TORN) w parze ze stablecoinami, to przy locie w dół tokena zarządzania Twoje realne dolary będą topnieć w oczach.
  • Podatności smart kontraktów (Smart Contract Risks). Kryptografia zero-knowledge jest potwornie skomplikowana w implementacji. Jeden błąd w obwodach zk-SNARKs (np. bug związany z podrabianiem podpisów czy podatność przy generowaniu parametrów trusted setupu) może pozwolić atakującemu na wydrukowanie zawartości całego poola z powietrza – co zresztą działo się już w historii forków wczesnych prywatnych coinów. Przed tym nie ma obrony – liczy się tylko dywersyfikacja i audyty kontraktów robione przez topowe firmy (Zellic, OpenZeppelin, Spearbit).

Mało znany alpha-tip: Jak wycisnąć maksymalny APY przez agregatory

Większość ludzi myśli, że Anonymity Mining to po prostu strategia typu „wrzuć i zapomnij”. Tymczasem w 2026 roku na pełnych obrotach działa już koncepcja „Privacy DeFi Lego”. Protokoły prywatności zaczęły integrować się bezpośrednio z klasycznymi poolami yieldowymi.

Jak to wygląda w praktyce, na przykładzie takiego Hinkala? Nie wrzucasz tokenów do miksera na sztywny procent. Zamiast tego możesz wewnątrz prywatnego konturu owinąć swoje USDC w prywatne hUSDC, a następnie – korzystając z interfejsu ZK protokołu – przekierować te tokeny prosto do pooli płynności na Curve czy Uniswapie.

[Twój portfel] ──(Depozyt)──> [Hinkal Shielded Pool] ──(ZK-Proxy)──> [Curve Pool]
                                      │                                    │
                                      ▼                                    ▼
                             Yield za prywatność                  Yield za handel (Curve)

W ten sposób zgarniasz podwójny stack zysków:

  • Nagrody od samego protokołu prywatności za to, że zwiększasz jego Anonymity Set (zbiór anonimowości).
  • Standardowy trading fee i rewardy od Curve/Uniswap za dostarczanie płynności.

A najlepsze jest to, że dla zewnętrznego obserwatora na Curve handluje jeden wielki adres Hinkala, a nie Twój prywatny portfel. To pozwala wyciągać nawet do 30-35% rocznie na stablecoinach, co w klasycznym DeFi jest dzisiaj wynikiem z kosmosu.

Skoro wjechaliśmy już na temat automatyzacji i wyciskania maksymalnego yieldingu, zobaczmy, jak skręcić prosty smart kontrakt w Solidity do interakcji z takimi protokołami. Temat jest ci niezbędny, jeśli zamiast przeklikiwać się ręcznie przez łoniarskie front-endy na stronach www, wolisz kosić nagrody przez własny, dedykowany kontrakt (na przykład podpięty pod architekturę multisiga albo wasze DAO).

Architektura smart kontraktu pod Privacy-Yield Farming

Kiedy piszesz kod do integracji z ZK-poolami, największym technologicznym bólem głowy jest poprawne przekazywanie dowodów kryptograficznych. O ile standardowy protokół DeFi wymaga od ciebie zwykłego wywołania funkcji deposit(amount), o tyle prywatny pool wypluje ci błąd, jeśli nie dostarczysz tablicy danych typu uint256[8] jako ZK-proofa oraz całej masy publicznych inputów.

Niżej znajdziesz przykład kontraktu-stratega, który odpowiednio przygotowuje i pakuje płynność.

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

// Minimalny interfejs dla tokena. Bez zbędnego lania wody.
interface IERC20 {
    function transferFrom(address from, address to, uint256 value) external returns (bool);
    function approve(address spender, uint256 value) external returns (bool);
    function balanceOf(address account) external view returns (uint256);
}

// Interfejs ZK-mixera / prywatnego poola (styl a'la Railgun/Hinkal)
interface IPrivacyPool {
    // W produkcji argumentów jest więcej, ale rdzeń pozostaje ten sam: potrzebujemy ZK-proofa
    function depositWithProof(
        address token,
        uint256 amount,
        uint256[8] calldata proof,
        bytes32 root,
        bytes32 nullifierHash
    ) external;
}

contract PrivacyYieldStrategist {
    address public owner;
    address public targetPool;

    modifier onlyOwner() {
        require(msg.sender == owner, "Brak uprawnien");
        _;
    }

    constructor(address _targetPool) {
        owner = msg.sender;
        targetPool = _targetPool;
    }

    // Funkcja depozytu. Przekazujemy tutaj proof wygenerowany wcześniej na backendzie.
    // Generowanie ZK-proofa bezpośrednio on-chain to samobójstwo pod kątem gas fees. Pamiętaj o tym.
    function executeShieldedDeposit(
        address token,
        uint256 amount,
        uint256[8] calldata proof,
        bytes32 root,
        bytes32 nullifierHash
    ) external onlyOwner {
        IERC20 asset = IERC20(token);
        
        // Ściągamy tokeny z portfela właściciela (wymagany wcześniejszy approve dla tego kontraktu)
        require(asset.transferFrom(msg.sender, address(this), amount), "TransferFrom failed");
        
        // Dajemy approve bezpośrednio dla prywatnego poola
        require(asset.approve(targetPool, amount), "Approve dla poola failed");
        
        // Odpalamy kontrakt prywatności i przekazujemy dowód ZK
        // W tym miejscu kontrakt poola zweryfikuje proof, spali inputy i wrzuci nas do drzewa Merkle
        IPrivacyPool(targetPool).depositWithProof(token, amount, proof, root, nullifierHash);
    }

    // Przycisk ewakuacyjny na wypadek, gdyby transakcje utknęły albo zmienił się interfejs poola
    function emergencyWithdraw(address token) external onlyOwner {
        IERC20 asset = IERC20(token);
        uint256 balance = asset.balanceOf(address(this));
        require(asset.transferFrom(address(this), owner, balance), "Ewakuacja srodkow nieudana");
    }
}

Operacyjny checklist pod "bezpieczny" Privacy-Mining

Jeśli na poważnie planujesz wejść w tę niszę, trzymaj sztywny regulamin – spisany krwią i zablokowanymi kontami moich znajomych:

  • Całkowita izolacja środowisk. Nigdy, słyszysz? Nigdy nie wypłacaj środków z prywatnego poola na adresy, które mają jakikolwiek on-chainowy punkt wspólny z twoją prawdziwą tożsamością, hostingiem, GitHubem czy kontami na giełdach CEX.
  • Lag czasowy (The Timelock Factor). Jeśli wrzucasz 10 ETH do poola o 12:00, a wypłacasz 10 ETH na świeży adres o 12:05 – jesteś idiotą. Analityka on-chain powiąże te transakcje po timestampie i dokładnej kwocie z prawdopodobieństwem 99%. Środki muszą poleżeć w poolu przynajmniej kilka dni, a wyciągać trzeba je partiami i w losowych odstępach czasu.
  • Rezygnacja z centralizowanych RPC. Standardowe nody typu Infura czy Alchemy logują adresy IP transakcji. Jeśli puszczasz prywatną transakcję przez nich, twoja prywatność kończy się na ich serwerach. Korzystaj z VPN-a, Tora albo prywatnych węzłów RPC (jak 1inch RPC lub postaw własną nodę).

Anonymity Mining to potężne, mocno technologiczne i cholernie zyskowne narzędzie dla ludzi, którzy kminią, jak działa kryptografia i analiza on-chain. Pozwala zarabiać na najbardziej deficytowym towarze w Web3 – na deficycie prywatności.

Oleg Filatov

As the Chief Technology Officer at EXMON Exchange, I focus on building secure, scalable crypto infrastructure and developing systems that protect user assets and privacy.

With over 15 years in cybersecurity, blockchain, and DevOps, I specialize in smart contract analysis, threat modeling, and secure system architecture.

At EXMON Academy, I share practical insights from real-world...

...

Dodaj opinię

Twój adres e-mail nie zostanie opublikowany. Obowiązkowe pola są oznaczone*