Důkaz o rezervách

Důkaz, že vaše finanční prostředky jsou v bezpečí – kdykoli budete chtít.

Datum snímku

BTC icon

BTC

Poměr rezerv*

100.3 %

ETH icon

ETH

Poměr rezerv*

101.3 %

SOL icon

SOL

Poměr rezerv*

101.1 %

USDC icon

USDC

Poměr rezerv*

Více než 105 %

USDT icon

USDT

Poměr rezerv*

Více než 105 %

XRP icon

XRP

Poměr rezerv*

100.6 %

ADA icon

ADA

Poměr rezerv*

102.2 %

Odpovědnost, pravidelné kontroly

Ve společnosti Kraken vám nenabízíme pouze možnost obchodovat s nejmodernějšími digitálními aktivy, ale také se snažíme využít transparentnost open-source blockchainů, na kterých fungují.

Naše pravidelné kontroly Prokazování rezerv umožňují klientům snadno ověřit, že zůstatky v jejich držení jsou kryty skutečnými aktivy, a to vše prostřednictvím pouhých několika kliknutí v jejich účtu.

Díky pokročilému kryptografickému účetnímu postupu, který pravidelně provádějí důvěryhodní účetní, si můžete ověřit, že společnost Kraken splňuje přísné standardy odpovědnosti a překračuje míru transparentnosti, kterou nabízejí starší finanční společnosti.

Nejčastější dotazy

Co je Prokazování rezerv?

Přezkoumání důkazu o rezervách (PoR) je postup prováděný nezávislým externím účetním. Jeho účelem je potvrdit, že správce jménem svých klientů skutečně drží aktiva, která tvrdí. Tento účetní pořizuje anonymizovaný snímek všech držených zůstatků a agreguje je do Merkleova stromu – datové struktury šetrné k soukromí, která zahrnuje všechny zůstatky klientů.

Merkle Root Hash

Odtud účetní získá Merkleův kořen: kryptografický otisk jednoznačně identifikující kombinaci těchto zůstatků v době vytvoření snímku.

Účetní pak shromažďuje digitální podpisy vytvořené společností Kraken, které prokazují vlastnictví nad adresami v řetězci s veřejně ověřitelnými zůstatky. Nakonec účetní porovná a ověří, jestli tyto zůstatky převyšují zůstatky klientů uvedené v Merkleově stromu nebo jim odpovídají, a jestli jsou tedy aktiva klientů pod kontrolou společnosti Kraken.

Každý klient si může nezávisle ověřit, jestli byl jeho zůstatek zahrnut do postupu důkazu o rezervách, a to porovnáním vybraných údajů s Merkleovým kořenem. Jakékoli změny provedené ve zbytku dat, i ty nejmenší, ovlivní kořen – manipulace je tedy zřejmá.

Naši zprávu s důkazem o rezervách naleznete zde.

Co zahrnuje důkaz o rezervách?

Spotové zůstatky

Přezkoumání bude zahrnovat všechny vaše zůstatky v rámci aktiv, které byly v době pořízení snímku drženy. V posledním přezkumu patřila do rozsahu následující aktiva: Bitcoin (BTC), Ether (ETH), Solana (SOL), USD Coin (USDC), Tether (USDT) a Ripple (XRP).

Zůstatky stakingu

Pokud jste v době pořízení snímku měli zůstatky přidělené k on-chain stakingu, hodnota vašeho stakovaného zůstatku bude agregována s vaším spotovým zůstatkem do jednoho zůstatku.

Maržové obchodování

Pokud jste v době pořizování snímku měli otevřené maržové pozice, pak by se váš celkový zůstatek upravil o kladné hodnoty pozic.

Příklad 1

Pokud jste koupili 1 BTC/USD za 30 000 USD s marží a vaše pozice je otevřená, váš zůstatek v rámci důkazu o rezervách bude odrážet kladnou úpravu +1 BTC ve vašem zůstatku BTC. Ve vašem zůstatku USD nedojde k žádné záporné úpravě. Váš zůstatek aktiv BTC držený v úschově na platformě Kraken bude zahrnovat zůstatek BTC v daném okamžiku, upravený o kladnou úpravu +1 BTC pro vaši maržovou pozici. Zůstatek vašich aktiv v USD zůstane stejný.

Příklad 2

Pokud jste prodali 1 BTC/ETH za 15 ETH s marží a vaše pozice je otevřená, váš zůstatek v rámci důkazu o rezervách bude odrážet kladnou úpravu +15 ETH ve vašem zůstatku ETH. Ve vašem zůstatku BTC nedojde k žádné záporné úpravě. Váš zůstatek aktiv ETH držený v úschově na platformě Kraken bude zahrnovat zůstatek ETH v daném okamžiku, upravený o kladnou úpravu +15 ETH pro vaši maržovou pozici. Váš zůstatek aktiv BTC držený v úschově platformy Kraken zůstane nezměněn.

Poznámka: Výše popsaná metodika futures je účinná od přezkumu důkazu o rezervách z května 2023.

Zůstatky futures

Pokud jste v době přezkumu měli zůstatky ve své futures peněžence, bude pro vaše zůstatky s kolaterálem futures existovat samostatný záznam s důkazem o rezervách. Vaše zůstatky jsou upraveny o nerealizované zisky a ztráty z obchodů s futures s jedním kolaterálem. To bude zahrnovat stejná aktiva jako u spotových a maržových obchodů a bude součástí stejného Merkleova stromu (s vlastním ID listu Merkleova stromu). 

Příklad 1

Pokud jste ve své futures peněžence měli 1 BTC a otevřeli jste pozici v perpetuálních futures BTC s jedním kolaterálem, která má nerealizovaný zisk a ztrátu −0,1 BTC, pak váš zůstatek BTC držený v úschově platformy Kraken bude 0,9 BTC (váš 1 BTC, upravený o −0,1 BTC za nerealizovaný zisk a ztrátu).

Příklad 2

Pokud jste ve své futures peněžence měli 1 BTC a otevřeli jste pozici v perpetuálních futures BTC s více kolaterály, která má nerealizovaný zisk a ztrátu −100,0 USD, pak váš zůstatek BTC držený v úschově platformy Kraken bude 1 BTC (váš 1 BTC není upraven nerealizovaným ziskem a ztrátou, protože ten je sledován v USD a USD není aktivem v rozsahu tohoto přezkumu).

Poznámka: Výše popsaná metodika futures je účinná od přezkumu důkazu o rezervách z května 2023. 

Jak ověřím, že byl můj účet zahrnut do přezkumu důkazu o rezervách?

Jednoduché ověření

Postupujte podle níže uvedených kroků a kryptograficky ověřte, že zůstatek vašeho účtu Kraken byl zahrnut do nejnovějšího přezkumu důkazu o rezervách.

Poznámka: Toto ověření bude odrážet pouze zůstatky vašeho účtu v rámci aktiv zahrnutých do rozsahu v době přezkumu. Nebude odrážet žádné následné obchody či transakce, ani zůstatky v aktivech, které nespadají do rozsahu.

1. Přihlaste se ke svému účtu Kraken a přejděte na stránku Důkaz o rezervách v rozhraní Kraken Pro (pro.kraken.com) (ikona účtu > Důkaz o rezervách). 

Kraken Proof of Reserves review list

2. Vyberte kartu Důkaz o rezervách. Zahrnuje to naše nejnovější ověřené rezervní poměry i informace týkající se konkrétně vašeho účtu. Na vašem účtu se zobrazí nejnovější zprávy důkazu o rezervách, ve kterých byl ověřen zůstatek vašeho účtu, včetně data zprávy, poskytovatele a rozsahu hodnocení. 

Kraken Proof of Reserves review list

3. Vyberte datum a klikněte na Ověřte se. Zde najdete potvrzení zůstatků k datu přezkumu a také návod, jak ověřit své údaje.

Kraken audit details

Ověření u účetního třetí strany

  • Použijte své ID listu Merkleova stromu – zkopírujte prvních 16 znaků a zadejte je do nástrojů externího účetního, abyste získali své zůstatky a zkontrolovali své ID v cestě Merkleova stromu. Nástroj externího účetního se otevře v samostatném okně. 

Poznámka: Tato funkce je k dispozici pro přezkumy od roku 2023. Pro předchozí přezkumy se podívejte na webovou stránku našeho partnera, kde najdete ověřovací nástroje.

Kraken audit details

Ověřit se společností Kraken

  • Ověřte své ID záznamu – postupujte podle pokynů k obnovení ID záznamu, které slouží k jedinečné identifikaci údajů o vašem účtu, a ID přezkumu (jedinečné pro každé datum zprávy)
  • Ověřte své ID listu Merkleova stromu – postupujte podle pokynů k obnovení svého ID listu Merkleova stromu, které slouží k jedinečné vašeho účtu spolu se zůstatky v době pořízení snímku v rámci přezkumu 
  • Potvrďte své ID listu v Merkleově stromu – potvrďte, že vaše ID patří do Merkleova stromu, a ověřte cestu ke kořenu Merkleova stromu, který je ověřen naším externím účetním a sdílen všemi klienty

Poznámka: Tato funkce je k dispozici pro přezkumy od roku 2023. Pro předchozí přezkumy se podívejte na webovou stránku našeho partnera, kde najdete ověřovací nástroje.

Kraken audit details
Kraken audit details
Kraken audit details

Pokročilé ověření

Technicky zdatní klienti mají možnost samostatně rekonstruovat svůj konkrétní hash listového uzlu Merkleova stromu a vyhledat své zůstatky v Merkleově stromu programově, namísto vizuálních nástrojů poskytovaných Krakenem nebo externími účetními. 

V kódu můžete provést následující ověřovací kroky:

  1. Pomocí níže uvedených kroků můžete ověřit generování ID listu Merkleova stromu pro svůj účet.  

  2. Poté můžete ověřit cestu Merkleova stromu pro ID listu a rekonstruovat cestu od vaší pozice ke kořenovému uzlu. Poskytujeme plnou transparentnost a zahrnujeme také ID sourozeneckých listů. 

Níže jsou uvedeny nezbytné kroky v pseudokódu potřebné k rekonstrukci ID záznamu a listu Merkleova stromu z vašeho kódu účtu, čísla IIBAN platformy Kraken, ID přezkumu a zůstatků. Upozorňujeme, že výsledky jsou ovlivněny konkrétním formátováním řetězců zůstatků a pořadím přezkoumávaných aktiv, jak jsou zobrazeny na stránce Důkaz o rezervách.

  • Record ID = SHA256(concatenate(Account Code, Kraken IIBAN, Review ID))
  • Balances = ""
  • ForEach Asset:
    • Balances = concatenate(Asset, ":", AssetBalances[asset])
  • Merkle Hash = concatenate(Record ID, “,”, Balances)
  • Merkle Leaf = substring(SHA256(Merkle Hash), 0, 16)

Po identifikaci listu Merkleova stromu můžete pomocí ověření SHA256 s hodnotami HEX rekonstruovat cestu Merkleova stromu.

Konkrétní příklady jsou také uvedeny v níže uvedených úryvcích kódu. Výsledný list Merkleova stromu je také viditelný v podrobnostech přezkumu, aby bylo možné potvrdit, že jste jej správně rekonstruovali.

python

Python

import hashlib

# Merkle Leaf ID calculation
account_code = "8dc20f34da8cea8dd0f46b001694f5123ecd30d786c5eb92ad1a013703a4f8d1"
iiban = "AB12C34DEFG5KSQI"
review_id = "PR30SEP24"
record_id = hashlib.sha256((account_code + iiban + review_id).encode('utf-8')).hexdigest()

balances = "BTC:0.00093799,ETH:0.0422125592,SOL:0.0,USDC:0.0,USDT:6.72754,XRP:0.0"

print("Record ID: {}".format(record_id))
print("Merkle Hash: {}".format((record_id + "," + balances)))
hash_result = hashlib.sha256((record_id + "," + balances).encode('utf-8')).hexdigest()
print("SHA Result: {}".format(hash_result))
print("Merkle Leaf: {}".format(hash_result[0:16]))

#Merkle Tree Path function 
def mix(x, y):
    a = bytes.fromhex(x)
    b = bytes.fromhex(y)

    d = hashlib.sha256()
    d.update(a)
    d.update(b)
    return d.hexdigest()
rust

Rust

use sha2::{Digest, Sha256};

//Merkle Leaf ID calculation
const ACCOUNT_CODE: &str = "8dc20f34da8cea8dd0f46b001694f5123ecd30d786c5eb92ad1a013703a4f8d1";
const IIBAN: &str = "AB12C34DEFG5KSQI";
const REVIEW_ID: &str = "PR30SEP24";
const BALANCES: &str = "BTC:0.00093799,ETH:0.0422125592,SOL:0.0,USDC:0.0,USDT:6.72754,XRP:0.0";

fn main() {
    let mut record_hasher: Sha256 = Default::default();

    record_hasher.update(ACCOUNT_CODE);
    record_hasher.update(IIBAN);
    record_hasher.update(REVIEW_ID);

    let record_id = format!("{:x}", record_hasher.finalize());
    let merkle_hash = format!("{},{}", record_id, BALANCES);

    let mut merkle_hasher: Sha256 = Default::default();
    merkle_hasher.update(&merkle_hash);
    let merkle_result = format!("{:x}", merkle_hasher.finalize());

    println!("Record ID: {}", record_id);
    println!("Merkle Hash: {}", merkle_hash);
    println!("SHA Result: {}", merkle_result);
    println!("Merkle Leaf: {}", &merkle_result[..16]);
}

//Merkle Tree Path function
fn mix(x: &str, y: &str) -> Result<String, hex::FromHexError> {
    let mut leaves_hasher: Sha256 = Default::default();
    let a = hex::decode(x)?;
    let b = hex::decode(y)?;
    leaves_hasher.update(&a);
    leaves_hasher.update(&b);
    Ok(hex::encode(leaves_hasher.finalize()))
}

fn main() {
    println!("{}", mix("f42372aeb1be7296", "dfcced6ec3235f5e").unwrap());
    assert_eq!(
        mix("f42372aeb1be7296", "dfcced6ec3235f5e").unwrap(),
        "ad86a5ee2f21347403ce07e365530604690454fa76787e76be9d2f6efdceeabf"
    );
}
go

Go

package main

import (
	"crypto/sha256"
	"fmt"
)

//Merkle Leaf ID Calculation
func main() {

	accountCode := "8dc20f34da8cea8dd0f46b001694f5123ecd30d786c5eb92ad1a013703a4f8d1"
	iiban := "AB12C34DEFG5KSQI"
	reviewId := "PR30SEP24"

	secret := accountCode + iiban + reviewId

	data := []byte(secret)
	hash := sha256.Sum256(data)
	recordId := string(hash[:])
	fmt.Printf("Record ID: %x\n", recordId)

	balances := "BTC:0.00093799,ETH:0.0422125592,SOL:0.0,USDC:0.0,USDT:6.72754,XRP:0.0"

	merkleHash := fmt.Sprintf("%x%s%s", recordId, ",", balances)
	fmt.Printf("Merkle Hash: %s\n", merkleHash)

	hashResult := sha256.Sum256([]byte(merkleHash))
	hashResultStr := string(hashResult[:])
	fmt.Printf("SHA Result: %x\n", hashResultStr)
	fmt.Printf("Merkle Leaf: %x\n", hashResultStr[0:8])

}

//Merkle Tree path hashing
func mix(x, y string) (string, error) {
        // Convert the hex strings to bytes
        a, err := hex.DecodeString(x)
        if err != nil {
                return "", err
        }

        b, err := hex.DecodeString(y)
        if err != nil {
                return "", err
        }

        h := sha256.New()

        h.Write(a)
        h.Write(b)

        // Get the final hash value as a byte slice
        hashed := h.Sum(nil)

        // Convert the hash to a hex string and return it
        return hex.EncodeToString(hashed), nil
}

func main() {
        result, _ := mix("f42372aeb1be7296", "dfcced6ec3235f5e")
        fmt.Println(result)
}
bash

Bash

#!/bin/bash

#Merkle Leaf ID calculation
ACCOUNT_CODE="8dc20f34da8cea8dd0f46b001694f5123ecd30d786c5eb92ad1a013703a4f8d1"
IIBAN="AB12C34DEFG5KSQI"
REVIEW_ID="PR30SEP24"
RECORD_ID=$(echo -n "${ACCOUNT_CODE}${IIBAN}${REVIEW_ID}" | sha256sum | head -c 64)
BALANCES="BTC:0.00093799,ETH:0.0422125592,SOL:0.0,USDC:0.0,USDT:6.72754,XRP:0.0"
MERKLE_HASH="${RECORD_ID},${BALANCES}"
HASH_RESULT=$(echo -n ${MERKLE_HASH} | sha256sum | head -c 64)

echo "Record ID: ${RECORD_ID}"
echo "Merkle Hash: ${MERKLE_HASH}"
echo "SHA Result: ${HASH_RESULT}"
echo "Merkle Leaf: $(echo -n ${HASH_RESULT} | head -c 16)"

#Merkle Tree Path function
hex_string1="f42372aeb1be7296"
hex_string2="dfcced6ec3235f5e"

# convert hex strings to binary, concatenate them and then hash
hash_result=$(echo -n "$(echo -n $hex_string1 | xxd -r -p)$(echo -n $hex_string2 | xxd -r -p)" | sha256sum | awk '{ print $1 }')

echo $hash_result

Nedostatky a budoucí zlepšení

V zájmu prosazování transparentnosti bychom rádi sdíleli některé nedostatky v procesu důkazu o rezervách, které jsme identifikovali.

  • Důkaz o rezervách zahrnuje prokázání kontroly nad prostředky na blockchainu v okamžiku přezkumu, ale nemůže prokázat výlučné vlastnictví soukromých klíčů, které mohly být teoreticky duplikovány útočníkem.
  • Tento postup nedokáže identifikovat skryté zástavy ani prokázat, že prostředky nebyly zapůjčeny za účelem úspěšného absolvování přezkumu. Stejně tak mohlo od posledního přezkumu dojít ke ztrátě klíčů nebo odcizení prostředků.
  • Účetní musí být kompetentní a nezávislý, aby se minimalizovalo riziko duplicity ze strany prověřované osoby nebo koluze mezi stranami.
  • Snažíme se některé z těchto nedostatků zmírnit tím, že při procesu důkazu o rezervách spolupracujeme s respektovanou nezávislou třetí stranou a provádíme tyto kontroly v pravidelných intervalech. Tyto údaje také přímo zveřejňujeme na naší klientské platformě. 
Vytvořit účet

Údaje o rezervním poměru označené hvězdičkou (*) výše se mohou při porovnání zpráv důkazu o rezervách společnosti Kraken podstatně lišit v důsledku změn produktů a vylepšení naší infrastruktury pro správu aktiv v průběhu času. To může mít vliv na klasifikaci některých aktiv držených v těchto peněženkách. V souladu se současnou praxí je ve všech zprávách uvedeno vysvětlení přesné metodiky dokazování rezerv.