// octra.pl › fhe

Co to jest FHE?

Fully Homomorphic Encryption — obliczenia na zaszyfrowanych danych bez ich odszyfrowywania. Wybierz poziom który pasuje do Ciebie.

01
problem

Twoje dane są widoczne dla każdego kto je przetwarza.

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.

// bez FHE vs z FHE
// 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
02
jak to działa

Trzy analogie które to wyjaśniają.

Nie musisz rozumieć matematyki. Wystarczy jedna z tych analogii.

🧤

Szklana rękawica

wyobraź sobie Masz pudełko z kartami. Przez grubą, nieprzezroczystą rękawicę możesz karty sortować, liczyć i układać — ale nigdy ich nie widzisz.
to właśnie FHE Serwer może operować na Twoich danych nie wiedząc co to za dane. Wynik do Ciebie wraca zaszyfrowany.
🔍

Audytor bez akt

wyobraź sobie Audytor sprawdza czy Twoja firma ma zysk bez zobaczenia żadnej liczby. Dostaje tylko odpowiedź: tak lub nie.
to właśnie FHE Możesz poprosić serwis o odpowiedź na pytanie dotyczące Twoich danych — bez pokazywania danych.
🏦

Zamknięty sejf bankowy

wyobraź sobie Bank liczy odsetki od Twojego depozytu przez ścianę sejfu — bez otwierania go. Tylko wynik trafia do Ciebie.
to właśnie FHE Twoje saldo pozostaje zaszyfrowane nawet podczas obliczeń. Nikt — włącznie z bankiem — go nie widzi.
03
zastosowania

Co to zmienia w prawdziwym życiu?

Cztery sytuacje z Twojego życia. Zobaczysz co jest możliwe gdy dane pozostają prywatne nawet podczas przetwarzania.

🏥

Diagnoza AI bez ujawniania historii choroby

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.

dziśAI widzi Twoje wyniki
z FHEAI nigdy nie widzi danych
🗳️

Głosowanie bez ujawniania głosu

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.

dziśorganizator widzi głosy
z FHEmatematyczny dowód, zero wglądu
💰

Kredyt bez pokazywania zarobkó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.

dziśbank widzi wszystkie przelewy
z FHEtylko wynik: "zdolność: TAK"
🤝

Negocjacje bez ujawniania pozycji

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.

dziśtrzeba ujawnić ceny pośrednikowi
z FHEwynik bez ujawniania danych
04
octra

Octra to blockchain zbudowany od zera na FHE.

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.

// tak wygląda prywatna transakcja
// 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
01
fundamentalna różnica

FHE vs ZKP vs MPC — to nie jest to samo.

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.

02
schematy FHE

BGV · CKKS · TFHE · HFHE — czym się różnią?

Każdy schemat FHE optymalizuje coś innego. Wybór ma fundamentalne znaczenie dla wydajności i zastosowań.

BGV

Brakerski-Gentry-Vaikuntanathan · 2011

Optymalny dla liczb całkowitych i arytmetyki modularnej. Używany w Microsoft SEAL i OpenFHE. Podstawa większości implementacji produkcyjnych.

typ danychliczby całkowite (Z_p)
SIMDtak (batching)
głębokośćograniczona (leveled)
użyciebazy danych, ML inference

CKKS

Cheon-Kim-Kim-Song · 2017

Przybliżona arytmetyka liczb zmiennoprzecinkowych. Idealny do ML i analizy danych gdzie niewielki błąd zaokrąglenia jest akceptowalny.

typ danychliczby rzeczywiste (przybliżone)
błądakceptowalny (jak float)
głębokośćograniczona
użycieneural networks, statystyki

TFHE

Chillotti-Gama-Georgieva-Izabachène · 2016

Bramki logiczne na szyfrowanych bitach. Ultra-szybkie bootstrapping. Używany przez zama.ai (Concrete/fhEVM). Sekwencyjny — każda bramka osobno.

typ danychbity (bramki logiczne)
bootstrapping~0.1s per bit
równoległośćograniczona
użyciezama.ai, fhEVM, Concrete

HFHE Hypergraph FHE

Octra Labs · 2024 — własny schemat

Zamiast sekwencyjnych krat algebraicznych — hipergraf. Pozwala na masową równoległość obliczeń. Osiąga 17k TPS na testnecie. Nie jest peer-reviewed.

typ danychct_int, ct_bool
równoległośćhipergraf (masowa)
ct_mulbrak (ciphertext×ciphertext)
statusmainnet alpha · weryfikacja w toku
03
tokenomika

OCT · wOCT · OU — jak to działa?

// tokenomika OCT
// 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.

04
uczciwa ocena

Ryzyka — powinieneś je znać.

Nie jesteśmy stroną marketingową. Oto co jest niepewne i wymaga weryfikacji.

🔴 HFHE bez peer review

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.

⚠️ Mainnet alpha

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.

⚠️ Brak ct_mul

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.

🟢 Co jest potwierdzone

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).

01
stack technologiczny

Architektura Octra — 4 warstwy.

// octra stack
┌─────────────────────────────┐
  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.

operacjasygnaturadostępna
ct_addct_int + ct_int → ct_int
ct_subct_int - ct_int → ct_int
ct_gtect_int >= ct_int → ct_bool
ct_andct_bool & ct_bool → ct_bool
ct_orct_bool | ct_bool → ct_bool
ct_not!ct_bool → ct_bool
ct_mulct_int * ct_int → ct_int✗ brak
02
język AML

AML — Actra Markup Language.

Własny język kontraktów Octra. Kompiluje do WASM. Składnia zbliżona do Rust/OCaml z natywnymi typami zaszyfrowanymi.

Zasady krytyczne:

  • słowo kluczowe contract (nie program)
  • bool przechowywany jako int (0/1)
  • brak modyfikatora private fn
  • value = natywna kwota OCT w transakcji
  • deploy fee: ou=200000 (0.2 OCT)
  • opłata: recommendedFee × 1.5 (margines)
vault.aml
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))
  }
}
sealed_vote.aml// przykład: zaszyfrowane głosowanie
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)
  }
}
03
quickstart

Od zera do działającego kontraktu.

1

Utwórz portfel

Wejdź na wallet.octra.org lub użyj CLI. Adres ma format oct... (base58 z sha256 pubkey). Zapisz seed phrase offline.

2

Pobierz testnet OCT z faucetu

Faucet dostępny na Discord #faucet. Potrzebujesz minimum 0.2 OCT (200 000 OU) na deploy kontraktu + margines na opłatę.

3

Napisz kontrakt AML

Użyj przykładu z sekcji 02. Zapisz jako contract.aml. Pamiętaj: contract (nie program), bool jako int, ou=200000 w deploymencie.

4

Deploy przez klienta octra

Użyj oficjalnego klienta CLI lub API RPC. Endpoint: POST /deploy_contract z ou=200000 i podpisem transakcji.

5

Wywołaj kontrakt i zweryfikuj

Użyj POST /call_contract z adresem kontraktu i nazwą funkcji. Sprawdź transakcję na octrascan.io. Pola zaszyfrowane będą widoczne jako hex.