Fully Homomorphic Encryption — obliczenia na zaszyfrowanych danych bez ich odszyfrowywania. Wybierz poziom który pasuje do Ciebie.
Pomyśl o tym tak: kiedy wysyłasz paczkę kurierem, listonosz musi otworzyć paczkę żeby wiedzieć gdzie ją zanieść. Tak działa dzisiaj internet.
Twój bank musi zobaczyć Twoje saldo żeby sprawdzić czy możesz zapłacić. Twój lekarz musi przeczytać Twoje wyniki żeby postawić diagnozę. Google musi przeczytać Twój email żeby go przetłumaczyć.
Każdy serwis, który coś z Twoimi danymi robi — najpierw je widzi. To nie jest błąd w systemie. To fundamentalne ograniczenie matematyczne. Do teraz.
FHE pozwala wykonać obliczenia na zaszyfrowanych danych i dostać zaszyfrowany wynik — bez zobaczenia co jest w środku. Jak otwieranie koperty w ciemności.
// Dzisiaj (bez FHE) dane = "moje_wyniki_badań" zaszyfruj(dane) → #### wyślij(####) do serwera serwer.odszyfruj(####) → widzi dane! serwer.przetworz(dane) zaszyfruj(wynik) → %%%% odeślij(%%%%) // Z FHE (Octra) dane = "moje_wyniki_badań" zaszyfruj(dane) → #### wyślij(####) do serwera serwer.przetworz(####) → serwer NIGDY nie widzi! wynik_zaszyfrowany = %%%% odeślij(%%%%) → tylko Ty odszyfrujesz
Nie musisz rozumieć matematyki. Wystarczy jedna z tych analogii.
Cztery sytuacje z Twojego życia. Zobaczysz co jest możliwe gdy dane pozostają prywatne nawet podczas przetwarzania.
Chcesz zapytać AI o możliwą diagnozę. Dziś AI musi widzieć Twoje wyniki badań. Z FHE — analizuje zaszyfrowane dane i zwraca zaszyfrowaną odpowiedź. Tylko Ty ją odczytujesz.
Głosujesz online. Dziś ktoś musi zliczyć głosy — więc musi je zobaczyć. Z FHE zliczanie odbywa się na zaszyfrowanych kartach. Wynik jest poprawny matematycznie, nikt nie widział głosów.
Bank sprawdza czy zarabiasz wystarczająco na kredyt. Dziś musi zobaczyć Twoje przelewy. Z FHE dostaje tylko odpowiedź tak/nie — bez dostępu do kwot.
Dwie firmy chcą sprawdzić czy ich oferty cenowe się pokrywają, bez ujawniania cen. Z FHE: "masz nakładające się zakresy: TAK/NIE" — żadna strona nie widzi liczby drugiej.
Większość blockchainów jest przezroczystych. Każdy może zobaczyć ile masz tokenów, z kim handlujesz i co robisz. Octra zmienia to na poziomie fundamentalnym.
Token OCT to jak karta SIM — potrzebujesz jej żeby korzystać z sieci. Możesz kupić wOCT (wrapped OCT) na Uniswap — to ta sama wartość, tylko na sieci Ethereum.
Nie musisz niczego instalować żeby zrozumieć Octra. Zacznij od strony o sieci → lub sprawdź octrascan.io żeby zobaczyć transakcje w czasie rzeczywistym.
// Normalny blockchain (widoczny) od: 0xAlice do: 0xBob ile: 150 ETH ↑ KAŻDY to widzi na Etherscan // Octra (prywatny) od: [zaszyfrowane] do: [zaszyfrowane] ile: [zaszyfrowane] ↑ sieć wykonuje transakcję nie widząc żadnej wartości
ZKP udowadnia że coś jest prawdą bez ujawniania dlaczego. MPC oblicza wynik wspólnie między wieloma stronami. FHE oblicza na zaszyfrowanych danych na pojedynczym serwerze — bez zaufanej strony.
| technologia | co robi | gdzie dane są odszyfrowane | zaufana strona? | koszt obliczeniowy |
|---|---|---|---|---|
| ZKP | dowodzi prawdziwości bez ujawniania | nigdy — tylko dowód | nie | niski–średni |
| MPC | oblicza wynik między N stronami | u każdej strony osobno (fragmenty) | zależy od protokołu | wysoki (sieć) |
| TE (Trusted Exec.) | oblicza w izolowanym enklawie | wewnątrz enklawu (sprzęt) | tak (Intel SGX) | niski |
| FHE / HFHE | oblicza bezpośrednio na szyfrze | nigdy | nie | bardzo wysoki* |
* HFHE na Octra osiąga 17k TPS dzięki równoległości na hipergrafie — patrz sekcja 03.
Każdy schemat FHE optymalizuje coś innego. Wybór ma fundamentalne znaczenie dla wydajności i zastosowań.
Optymalny dla liczb całkowitych i arytmetyki modularnej. Używany w Microsoft SEAL i OpenFHE. Podstawa większości implementacji produkcyjnych.
Przybliżona arytmetyka liczb zmiennoprzecinkowych. Idealny do ML i analizy danych gdzie niewielki błąd zaokrąglenia jest akceptowalny.
Bramki logiczne na szyfrowanych bitach. Ultra-szybkie bootstrapping. Używany przez zama.ai (Concrete/fhEVM). Sekwencyjny — każda bramka osobno.
Zamiast sekwencyjnych krat algebraicznych — hipergraf. Pozwala na masową równoległość obliczeń. Osiąga 17k TPS na testnecie. Nie jest peer-reviewed.
// jednostki 1 OCT = 1_000_000 OU (Octra Units) 1 wOCT = 1 OCT (wrapped, ERC-20) // supply max_supply = 1_000_000_000 OCT // gdzie wOCT: Uniswap v3 (Ethereum mainnet) OCT: wallet.octra.org (native) // opłaty deploy_contract: 200_000 OU = 0.2 OCT transfer: octra_recommendedFee()
OU (Octra Units) to bazowa jednostka, jak wei w Ethereum. Wszystkie opłaty są wyrażone w OU — to zapobiega problemom z zmiennoprzecinkową arytmetyką.
wOCT to ERC-20 token na Ethereum reprezentujący OCT 1:1. Pozwala handlować na Uniswap bez opuszczania Ethereum. Bridge jest trustless.
Nie jesteśmy stroną marketingową. Oto co jest niepewne i wymaga weryfikacji.
Schemat Hypergraph FHE opracowany przez Octra Labs nie przeszedł jeszcze niezależnej weryfikacji kryptograficznej. Założenia o twardości problemu na hipergrafie nie są opublikowane w recenzowanych czasopismach. To jest największe ryzyko.
Sieć jest aktywna, ale oznaczona jako alpha. Konsensus i szczegóły protokołu nie są w pełni opublikowane. Kod źródłowy C++ libpvac jest zamknięty. Produkcyjne użycie wiąże się z ryzykiem.
Aktualna implementacja HFHE nie obsługuje mnożenia ciphertext×ciphertext. To ogranicza zastosowania — np. głęboka sieć neuronowa wymagająca mnożeń nie jest możliwa w natywnym FHE. Planowane w kolejnych wersjach.
wOCT istnieje i działa na Uniswap. octrascan.io działa i pokazuje transakcje. Portfel jest funkcjonalny. Prywatne transfery działają. 17k TPS osiągnięto na testnecie (nie mainnet).
┌─────────────────────────────┐ │ Circles │ │ oct://circle_id/path │ │ sealed | public compute │ ├─────────────────────────────┤ │ OVM — Octra Virtual Machine │ │ język: AML → WASM │ │ typy: ct_int, ct_bool │ ├─────────────────────────────┤ │ HFHE Engine │ │ C++ / libpvac │ │ bramki: ct_add, ct_gte, ... │ │ ! brak ct_mul │ ├─────────────────────────────┤ │ L1 Consensus │ │ OCaml · async · DAG-based │ │ 17k TPS (testnet) │ └─────────────────────────────┘
Kluczowe ograniczenie: brak ct_mul (mnożenie ciphertext × ciphertext). Dostępne operacje: ct_add, ct_sub, ct_gte, ct_not, ct_and, ct_or. Mnożenie plaintext × ciphertext jest możliwe.
| operacja | sygnatura | dostępna |
|---|---|---|
| ct_add | ct_int + ct_int → ct_int | ✓ |
| ct_sub | ct_int - ct_int → ct_int | ✓ |
| ct_gte | ct_int >= ct_int → ct_bool | ✓ |
| ct_and | ct_bool & ct_bool → ct_bool | ✓ |
| ct_or | ct_bool | ct_bool → ct_bool | ✓ |
| ct_not | !ct_bool → ct_bool | ✓ |
| ct_mul | ct_int * ct_int → ct_int | ✗ brak |
Własny język kontraktów Octra. Kompiluje do WASM. Składnia zbliżona do Rust/OCaml z natywnymi typami zaszyfrowanymi.
Zasady krytyczne:
contract (nie program)int (0/1)private fnvalue = natywna kwota OCT w transakcjiou=200000 (0.2 OCT)recommendedFee × 1.5 (margines)contract Vault { // stan zaszyfrowany — tylko właściciel odczyta state { balance: ct_int, owner: address, locked: int // bool jako 0/1 } fn deposit() { require(caller == owner) self.balance = ct_add( self.balance, encrypt(value) // value = OCT w tx ) } fn withdraw(amount: ct_int) { require(caller == owner) require(ct_gte(self.balance, amount)) self.balance = ct_sub(self.balance, amount) send(caller, decrypt(amount)) } }
contract SealedVote { state { votes_yes: ct_int, votes_no: ct_int, ended: int } fn cast(encrypted_vote: ct_bool) { require(self.ended == 0) // ct_bool: 1=tak, 0=nie self.votes_yes = ct_add( self.votes_yes, ct_and(encrypted_vote, encrypt(1)) ) } fn finalize() { require(caller == admin) self.ended = 1 // wynik: decrypt(votes_yes) > N/2 } fn result() -> ct_bool { require(self.ended == 1) return ct_gte(votes_yes, votes_no) } }
Wejdź na wallet.octra.org lub użyj CLI. Adres ma format oct... (base58 z sha256 pubkey). Zapisz seed phrase offline.
Faucet dostępny na Discord #faucet. Potrzebujesz minimum 0.2 OCT (200 000 OU) na deploy kontraktu + margines na opłatę.
Użyj przykładu z sekcji 02. Zapisz jako contract.aml. Pamiętaj: contract (nie program), bool jako int, ou=200000 w deploymencie.
Użyj oficjalnego klienta CLI lub API RPC. Endpoint: POST /deploy_contract z ou=200000 i podpisem transakcji.
Użyj POST /call_contract z adresem kontraktu i nazwą funkcji. Sprawdź transakcję na octrascan.io. Pola zaszyfrowane będą widoczne jako hex.