Tartalékigazolás

Annak bizonyítéka, hogy a pénzeszközeid biztonságban vannak – bármikor, amikor szeretnéd.

Pillanatkép dátuma

BTC icon

BTC

Tartalékráta*

100.3%

ETH icon

ETH

Tartalékráta*

101.3%

SOL icon

SOL

Tartalékráta*

101.1%

USDC icon

USDC

Tartalékráta*

105%+

USDT icon

USDT

Tartalékráta*

105%+

XRP icon

XRP

Tartalékráta*

100.6%

ADA icon

ADA

Tartalékráta*

102.2%

Elszámoltathatóság, rendszeres felülvizsgálatok

A Krakennél nemcsak a legmodernebb digitális eszközökkel való kereskedés lehetőségét kínáljuk, hanem azon is dolgozunk, hogy kihasználjuk az azokat működtető nyílt forráskódú blokkláncok átláthatóságát.

Rendszeres tartalékbizonyítási felülvizsgálatainkkal az ügyfelek könnyen, csupán a fiókjukban tett néhány kattintással megbizonyosodhatnak róla, hogy érintett egyenlegeiket valódi eszközök támasztják alá.

A tartalékbizonyítás megbízható könyvelők által rendszeresen végzett fejlett kriptográfiai számviteli eljárás, amellyel ellenőrizheted, hogy a Kraken megfelel a szigorú elszámoltathatósági normáknak és a hagyományos pénzintézeteknél nagyobb átláthatóságot biztosít.

Gyakran ismételt kérdések

Mit jelent a tartalékigazolás?

A tartalékigazolás (PoR) felülvizsgálatát egy független, harmadik fél könyvvizsgáló végzi. Ennek célja annak megerősítése, hogy a letétkezelő valóban rendelkezik azokkal az eszközökkel, amelyeket az ügyfelei nevében állít. Ez a könyvelő anonimizált pillanatfelvételt készít az összes tartott egyenlegről és összesíti őket egy Merkle-fába, azaz az összes ügyfélegyenleget tartalmazó, adatvédelmi szempontból megfelelő adatstruktúrába.

Merkle Root Hash

A könyvvizsgáló ebből vezeti le a Merkle-gyökeret, azaz azt a kriptográfiai ujjlenyomatot, amely egyedileg azonosítja ezen egyenlegek kombinációját a pillanatfelvétel létrehozásakor.

A könyvelő ezután összegyűjti a Kraken által készített digitális aláírásokat, amelyek nyilvánosan ellenőrizhető egyenlegekkel igazolják a blokkláncon nyilvántartott címek tulajdonjogát. Végül a könyvelő összehasonlítja és ellenőrzi, hogy ezek az egyenlegek meghaladják-e vagy megegyeznek-e a Merkle-fában szereplő ügyfélegyenlegekkel, tehát az ügyféleszközök a Kraken ellenőrzése alatt állnak-e.

Minden ügyfél önállóan ellenőrizheti, hogy az egyenlegét belefoglalták-e a tartalékigazolásba; ehhez kiválasztott adatokat kell összehasonlítania a Merkle-gyökérrel. A többi adaton végzett bármilyen módosítás, legyen az bármilyen kicsi, meglátszik a gyökéren, nyilvánvalóvá téve a manipulálást.

A tartalékigazolási jelentésünk itt található.

Mire terjed ki a tartalékigazolás?

Spot egyenlegek

A felülvizsgálat tartalmazza az összes, a hatókörbe tartozó eszközben fennálló egyenlegedet, amelyeket a pillanatkép készítésekor tartottunk nyilván. A legutóbbi felülvizsgálat időpontjában az alábbi eszközök tartoznak a hatókörbe: Bitcoin (BTC), Ether (ETH), Solana (SOL), USD Coin (USDC), Tether (USDT) és Ripple (XRP).

Stakelt egyenlegek

Ha a pillanatkép időpontjában on-chain stakinghez voltak allokált egyenlegeid, akkor a stakelt egyenleged értéke az azonnali egyenlegeddel együtt, egyetlen egyenlegként kerül összesítésre.

Tőkeáttételes kereskedés

Ha akkor tőkeáttételes pozícióid voltak, akkor a teljes egyenleged a pozitív pozícióértékekkel módosítva jelenik meg.

1. példa

Ha 1 BTC/USD pozíciót vásároltál 30 000 USD áron tőkeáttétellel, és a pozíció nyitva van, akkor a tartalékigazolási egyenleged +1 BTC pozitív korrekciót fog mutatni a BTC egyenlegeden. Az USD egyenlegeden nem lesz negatív korrekció. A Kraken letétkezelésében tartott BTC eszközegyenleged tartalmazni fogja az akkori BTC egyenlegedet, kiegészítve a tőkeáttételes pozíciód +1 BTC pozitív korrekciójával. Az USD eszközegyenleged változatlan marad.

2. példa

Ha 1 BTC/ETH pozíciót adtál el 15 ETH áron tőkeáttétellel, és a pozíció nyitva van, akkor a tartalékigazolási egyenleged +15 ETH pozitív korrekciót fog mutatni az ETH egyenlegeden. A BTC egyenlegednél nem lesz negatív korrekció. A Kraken letétkezelésében tartott ETH eszközegyenleged tartalmazni fogja az akkori ETH egyenlegedet, kiegészítve a tőkeáttételes pozícióid +15 ETH pozitív korrekciójával. A BTC eszközegyenleged változatlan marad a Kraken letétkezelésében.

Megjegyzés: A fent leírt határidős (futures) módszertan a 2023. májusi tartalékigazolási felülvizsgálatoktól érvényes.

Határidős ügyletek egyenlege

Ha a felülvizsgálat időpontjában volt egyenleged a határidős tárcádban, akkor a határidős fedezeti egyenlegeidhez külön tartalékigazolási rekord fog tartozni. Az egyenlegeid az egyfedezetes határidős ügyletek nem realizált nyereségével és veszteségével (P&L) módosításra kerülnek. Ez ugyanazokat a hatókörbe tartozó eszközöket fogja tartalmazni, mint az azonnali és a tőkeáttételes egyenlegek, és ugyanannak a Merkle-fának a része lesz (saját Merkle-levélazonosítóval). 

1. példa

Ha 1 BTC-d volt a határidős tárcádban, és nyitsz egy egyfedezetes BTC perp pozíciót, amelynek nem realizált nyeresége és vesztesége -0,1 BTC, akkor a Kraken letétkezelésében tartott BTC-egyenleged 0,9 BTC lesz (az 1 BTC-d -0,1 BTC-vel módosítva a nem realizált P&L miatt).

2. példa

Ha 1 BTC-d volt a futures pénztárcádban, és nyitsz egy többfedezetes BTC perp pozíciót, amelynek nem realizált nyeresége és vesztesége -100,0 USD, akkor a Kraken letétkezelésében tartott BTC-egyenleged 1 BTC lesz (az 1 BTC-d nem módosul a nem realizált P&L miatt, mivel azt USD-ben tartjuk nyilván, és az USD nem tartozik a felülvizsgálat hatókörébe).

Megjegyzés: A fent leírt határidős (futures) módszertan a 2023. májusi tartalékigazolási felülvizsgálatoktól érvényes. 

Hogyan ellenőrizhetem, hogy a fiókom szerepelt-e a tartalékigazolási ellenőrzésben?

Egyszerű ellenőrzés

Kövesd az alábbi lépéseket, hogy kriptográfiailag ellenőrizd a Kraken-fiókod egyenlegének bevonását a legutóbbi tartalékigazolási felülvizsgálatba.

Megjegyzés: Ez az ellenőrzés kizárólag a fiókodnak a felülvizsgálat időpontjában fennálló, a hatókörbe tartozó eszközökben vezetett egyenlegeit tükrözi. Nem tükrözi a későbbi kereskedéseket vagy tranzakciókat, és nem tükrözi a hatókörön kívüli eszközökben tartott egyenlegeket sem.

1. Jelentkezz be a Kraken-fiókodba, majd navigálj a tartalékigazolás oldalra a Kraken Pro felületen (pro.kraken.com) (Fiók ikon > Tartalékigazolás). 

Kraken Proof of Reserves review list

2. Válaszd ki a Tartalékigazolás fület. Itt megtalálod a legutóbb ellenőrzött tartalékrátáinkat, valamint a fiókodra vonatkozó információkat. A fiókod megjeleníti azokat a legutóbbi tartalékigazolási jelentéseket, amelyekben az egyenleged ellenőrzésre került, beleértve a jelentés dátumát, a szolgáltatót és az értékelés hatókörét. 

Kraken Proof of Reserves review list

3. Válaszd ki a dátumot, majd kattints a Ellenőrizd magad gombra. Itt megerősítést találsz a felülvizsgálat időpontjában tartott egyenlegekről, valamint egy útmutatót az adataid ellenőrzéséhez.

Kraken audit details

Ellenőrzés külső könyvelővel

  • Használd a Merkle Leaf azonosítódat – másold ki az első 16 karaktert, majd add meg őket a független, harmadik fél könyvvizsgálójának eszközeiben, hogy lekérd az egyenlegeidet és ellenőrizd az azonosítódat a Merkle-fa útvonalán. A független könyvvizsgáló eszköze külön ablakban fog megnyílni. 

Megjegyzés: Ez a lehetőség a 2023-as felülvizsgálatoktól érhető el. Korábbi felülvizsgálatok esetén, kérjük, keresd fel partnerünk weboldalát az ellenőrző eszközök megtalálásához.

Kraken audit details

Ellenőrzés a Krakennel

  • Ellenőrizd a Record ID-det – kövesd a lépéseket a rekordazonosítód újbóli létrehozásához, amely egyedileg azonosítja a fiókadataidat és a felülvizsgálat azonosítóját (minden jelentési dátumhoz egyedi)
  • Ellenőrizd a Merkle Leaf azonosítódat – kövesd a lépéseket a Merkle levélazonosítód újbóli létrehozásához, amely egyedileg azonosítja a fiókodat a felülvizsgálati pillanatkép időpontjában tartott egyenlegekkel együtt 
  • Erősítsd meg a Merkle-levélazonosítódat a Merkle-fán – erősítsd meg, hogy az azonosítód a Merkle-fához tartozik, és érvényesítsd az útvonalat a Merkle-fa gyökeréhez, amelyet a független, harmadik fél könyvvizsgáló hitelesít, és amelyet minden ügyféllel megosztunk

Megjegyzés: Ez a lehetőség a 2023-as felülvizsgálatoktól érhető el. Korábbi felülvizsgálatok esetén, kérjük, keresd fel partnerünk weboldalát az ellenőrző eszközök megtalálásához.

Kraken audit details
Kraken audit details
Kraken audit details

Speciális ellenőrzés

A technikailag jártas ügyfelek dönthetnek úgy, hogy önállóan újraalkotják a saját Merkle-fa levélcsomópontjuk hash értékét, és programozott módon keresik ki az egyenlegeiket a Merkle-fán, a Kraken vagy a harmadik fél könyvvizsgáló által biztosított vizuális eszközök helyett. 

Az alábbi ellenőrzési lépéseket hajthatod végre kódban:

  1. Ellenőrizheted a fiókodhoz tartozó Merkle-levélazonosító létrehozását az alább ismertetett lépések alapján.  

  2. Ezután ellenőrizheted a levélazonosítóhoz tartozó Merkle-fa útvonalat, és újraalkothatod az útvonalat a saját pozíciódtól a gyökércsomópontig. Teljes átláthatóságot biztosítunk, és a testvér levélazonosítókat is megadjuk. 

Az alábbiakban pszeudokódban bemutatjuk a szükséges lépéseket a rekordazonosító és a Merkle-levél újraalkotásához a Fiókkód, a Kraken IIBAN, a Felülvizsgálat-azonosító és az egyenlegek alapján. Vedd figyelembe, hogy az eredmények érzékenyek az egyenlegek konkrét karakterlánc-formátumára, valamint a felülvizsgált eszközök sorrendjére, ahogyan az a Tartalékigazolás oldalon megjelenik.

  • Rekordazonosító = SHA256(concatenate(Account Code, Kraken IIBAN, Review ID))
  • Egyenlegek = ""
  • Az egyes eszközökhöz:
    • Balances = concatenate(Asset, ":", AssetBalances[asset])
  • Merkle Hash = concatenate(Record ID, “,”, Balances)
  • Merkle-levél = substring(SHA256(Merkle Hash), 0, 16)

Miután azonosítottad a Merkle-levélazonosítódat, SHA256 ellenőrzést használhatsz HEX értékekkel a Merkle-fa útvonal újraalkotásához.

Konkrét példák a lenti kódrészletekben is bemutatásra kerülnek. Az elkészült Merkle-levél a felülvizsgálat részleteinél is látható, ami segít megerősíteni, hogy helyesen rekonstruáltad.

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

Hiányosságok és jövőbeli fejlesztések

Az átláthatóság előmozdítása érdekében szeretnénk megosztani a tartalékigazolási folyamat során azonosított hiányosságok egy részét.

  • A tartalékigazolás az on-chain pénzeszközök feletti ellenőrzést igazolja a felülvizsgálat adott időpontjában, de nem tudja bizonyítani a privát kulcsok kizárólagos birtoklását, amelyeket elméletileg egy támadó lemásolhatott.
  • Az eljárás nem képes azonosítani rejtett terheket, és nem tudja bizonyítani azt sem, hogy az eszközöket nem kölcsönözték a felülvizsgálat sikeres teljesítése érdekében. Hasonlóképpen, előfordulhat, hogy a kulcsok elvesztek, vagy az eszközöket ellopták a legutóbbi felülvizsgálat óta.
  • A könyvvizsgálónak hozzáértőnek és függetlennek kell lennie annak érdekében, hogy minimalizálja a vizsgált fél részéről fennálló visszaélés vagy az érintett felek közötti összejátszás kockázatát.
  • E hiányosságok egy részét úgy igyekszünk mérsékelni, hogy egy elismert, független harmadik fél céget bízunk meg a tartalékigazolás elvégzésével, és ezeket a felülvizsgálatokat rendszeres időközönként hajtjuk végre. Emellett közvetlenül az ügyfélplatformunkon is átláthatóságot biztosítunk ezekkel az adatokkal kapcsolatban. 
Fiók létrehozása

A fenti, csillaggal (*) jelölt tartalékráta-adatok jelentősen változhatnak a Kraken tartalékigazolási jelentéséhez képest a termékváltozások és a letétkezelési infrastruktúránk időről időre történő fejlesztései miatt – ez hatással lehet az ezekben a tárcákban tartott egyes eszközök besorolására. A jelenlegi gyakorlatokkal összhangban a Tartalékigazolás módszertanának pontos magyarázatát minden jelentéshez mellékeljük.