Transaction signature, czyli podpis transakcji (ang. transaction signature), to kryptograficzny dowód, że transakcję zatwierdził właściciel klucza prywatnego danego adresu. Portfel oblicza podpis z treści transakcji i klucza prywatnego, a każdy węzeł sieci może go sprawdzić za pomocą klucza publicznego – bez poznania klucza prywatnego. Podpis spełnia trzy funkcje: autoryzację (środki wydaje tylko posiadacz klucza), integralność (zmiana kwoty czy adresu po podpisaniu unieważnia podpis) i niezaprzeczalność (nie da się później twierdzić, że się transakcji nie podpisało).
Jak to działa krok po kroku
- Portfel buduje transakcję: odbiorca, kwota, opłata, numer kolejny i inne pola.
- Z treści transakcji liczony jest skrót (hash).
- Portfel podpisuje skrót kluczem prywatnym. Klucz nigdy nie opuszcza portfela – w portfelu sprzętowym nie opuszcza nawet urządzenia.
- Podpisana transakcja trafia do sieci. Węzły weryfikują podpis kluczem publicznym i odrzucają transakcję, jeśli się nie zgadza.
Schematy podpisów
| Schemat | Gdzie używany | Cechy |
|---|---|---|
| ECDSA (secp256k1) | Bitcoin (starsze typy adresów), Ethereum i sieci EVM | standard od początku krypto, podpis ok. 64–72 bajtów |
| Schnorr (BIP340) | Bitcoin od aktualizacji Taproot (2021) | podpis 64 bajty, możliwość agregacji wielu kluczy w jeden podpis |
| Ed25519 (EdDSA) | m.in. Solana, Cardano | szybki, deterministyczny |
| BLS | walidatorzy Ethereum w warstwie konsensusu | łatwe łączenie tysięcy podpisów w jeden |
Agregacja w Schnorrze sprawia, że transakcja z portfela z wieloma podpisami może wyglądać w sieci jak zwykła transakcja jednego użytkownika – taniej i bardziej prywatnie.
Dwa różne „nonce”
Słowo nonce pojawia się tu w dwóch znaczeniach. W ECDSA to losowa liczba używana przy każdym podpisie. Musi być unikalna i tajna – dwukrotne użycie tej samej wartości przy dwóch podpisach pozwala wyliczyć klucz prywatny. Tak w przeszłości wyciekały klucze z błędnie napisanych portfeli. Dziś standardem jest deterministyczne generowanie tej liczby.
W Ethereum nonce to także licznik transakcji konta. Jest częścią podpisanej treści, dzięki czemu tej samej transakcji nie da się wysłać drugi raz, a transakcje z jednego adresu wykonują się po kolei.
Przykład
Załóżmy, że Twój adres w Ethereum ma licznik 41. Wysyłasz transakcję z nonce 41 ze zbyt niską opłatą i utyka w kolejce. Następna transakcja, z nonce 42, też czeka – sieć nie wykona jej przed 41. Rozwiązanie: podpisujesz nową transakcję z tym samym nonce 41 i wyższą opłatą. Walidatorzy wybiorą droższą, a stara stanie się nieważna.
Weryfikacja w eksploratorze: wklejasz hash transakcji i widzisz pole „From”. Jest ono wyliczane z podpisu, a nie wpisywane przez nadawcę – jeśli podpis nie pasowałby do adresu, transakcja w ogóle nie trafiłaby do bloku. W zakładce szczegółów widać nonce, a przy transakcjach wywołujących kontrakt – dekodowaną funkcję, np. approve, i jej parametry.
Ślepe podpisywanie
Najgroźniejsze w praktyce nie jest złamanie kryptografii, tylko podpisanie czegoś, czego nie rozumiesz. Ślepe podpisywanie (blind signing) to zatwierdzanie transakcji lub wiadomości, której portfel nie potrafi czytelnie pokazać – widzisz tylko ciąg znaków szesnastkowych. Oszuści wykorzystują to, podsuwając do podpisu zgodę approve albo permit na nielimitowaną kwotę tokenów. Taki podpis często nie przenosi niczego od razu, ale pozwala później wyczyścić portfel. Głośny przykład to kradzież z Bybit w lutym 2025 r., gdy podpisujący multisig zatwierdzili transakcję wyglądającą w zmanipulowanym interfejsie na rutynową.
Najczęstsze błędy
- Podpisywanie wiadomości „tylko do logowania” bez sprawdzenia jej treści.
- Włączone ślepe podpisywanie w portfelu sprzętowym na stałe.
- Nielimitowane zgody approve dla kontraktów, z których korzystasz raz.
- Wiara, że skoro nie wysłałeś środków, podpis nic nie zrobił.
- Poleganie wyłącznie na tym, co pokazuje strona internetowa, zamiast na ekranie portfela.
Perspektywa tradera
Trader korzystający z giełd zdecentralizowanych i DeFi podpisuje dziesiątki transakcji w tygodniu i łatwo wpada w rutynę. Dobra praktyka: osobny portfel do nowych protokołów z ograniczonym kapitałem, portfel z czytelnym podglądem transakcji, zgody approve na konkretną kwotę zamiast nieograniczonej i regularne odwoływanie starych zgód. Przed podpisem sprawdzaj na ekranie portfela funkcję, adres kontraktu i kwotę – kilka sekund więcej kosztuje mniej niż stracone środki.
Najczęstsze pytania
Czy z podpisu da się odtworzyć klucz prywatny?
Nie, o ile podpis jest poprawnie wygenerowany. Wyjątkiem są błędy implementacji, np. ponowne użycie tej samej losowej liczby w ECDSA.
Czym różni się podpis transakcji od podpisu wiadomości?
Transakcja trafia do sieci i zmienia stan blockchaina. Podpisana wiadomość zostaje poza siecią, ale może zostać użyta przez kontrakt, np. jako zgoda permit – dlatego też bywa groźna.
Czy podpisaną transakcję można cofnąć?
Po włączeniu do bloku – nie. Przed potwierdzeniem w Ethereum można ją zastąpić transakcją z tym samym nonce i wyższą opłatą.
Dlaczego Bitcoin przeszedł na podpisy Schnorra?
Dają mniejsze i prostsze podpisy, pozwalają agregować klucze i poprawiają prywatność transakcji wielopodpisowych. Starsze adresy nadal używają ECDSA.
Tekst ma charakter edukacyjny i nie stanowi rekomendacji inwestycyjnej.


