Proof of Reserves

Proof that your funds are safe—anytime you want.

Tarikh petikan

BTC icon

BTC

Nisbah simpanan*

100.3%

ETH icon

ETH

Nisbah simpanan*

101.3%

SOL icon

SOL

Nisbah simpanan*

101.1%

USDC icon

USDC

Nisbah simpanan*

105%+

USDT icon

USDT

Nisbah simpanan*

105%+

XRP icon

XRP

Nisbah simpanan*

100.6%

ADA icon

ADA

Nisbah simpanan*

102.2%

Kebertanggungjawapan, semakan berkala

Di Kraken, kami bukan sahaja memberi anda keupayaan untuk mendagangkan aset digital canggih, malah berusaha memanfaatkan ketelusan rantaian blok sumber terbuka tempat aset sedemikian beroperasi.

Semakan Bukti Simpanan biasa kami memudahkan klien untuk mengesahkan baki dalam skop yang mereka pegang disokong oleh aset sebenar, semuanya dengan hanya beberapa klik mudah dalam akaun mereka.

Prosedur perakaunan kriptografi canggih yang dijalankan secara kerap oleh akauntan yang dipercayai, Bukti Simpanan membolehkan anda mengesahkan bahawa Kraken memenuhi piawaian yang ketat untuk akauntabiliti dan melebihi ketelusan yang ditawarkan oleh firma kewangan legasi.

Soalan Lazim

Semakan Bukti Simpanan (PoR) ialah prosedur yang dijalankan oleh akauntan pihak ke-3 bebas. Prosedur ini bertujuan mengesahkan bahawa seseorang penjaga menyimpan aset seperti yang didakwa bagi pihak pelanggan. Akauntan ini mengambil petikan tanpa nama bagi semua baki yang dipegang dan mengagregat gambar ke dalam pokok Merkle — struktur data mesra privasi yang merangkumi semua baki pelanggan.

Merkle Root Hash

Dari situ, akauntan memperoleh akar Merkle: cap jari kriptografi yang mengenal pasti gabungan baki ini secara unik pada masa petikan dibuat.

Akauntan kemudian mengumpul tandatangan digital yang dihasilkan oleh Kraken, yang membuktikan pemilikan terhadap alamat dalam rantai dengan baki yang boleh disahkan umum. Akhir sekali, akauntan membandingkan dan mengesahkan bahawa baki ini melebihi atau sepadan dengan baki klien yang diwakili dalam pokok Merkle, dan oleh itu aset klien berada dalam kawalan Kraken.

Mana-mana pelanggan boleh mengesahkan secara bebas sama ada baki mereka termasuk dalam prosedur Bukti Simpanan dengan membandingkan cebisan data terpilih dengan akar Merkle. Apa-apa perubahan yang dibuat kepada data yang lain, walaupun kecil, akan menjejaskan akar — yang menjadikan gangguan jelas.

Laporan Bukti Simpanan kami boleh didapati di sini.

Baki spot

Semakan ini mengandungi semua baki anda dalam aset yang berada dalam skop, seperti yang dipegang semasa petikan dibuat. Aset berikut berada dalam skop setakat semakan terkini: Bitcoin (BTC), Ether (ETH), Solana (SOL), USD Coin (USDC), Tether (USDT) dan Ripple (XRP).

Baki penguncian

Jika baki anda diperuntukkan untuk penguncian di rantaian pada masa petikan, nilai baki yang dikunci akan digabungkan dengan baki spot anda di bawah satu baki tunggal.

Perdagangan margin

Jika anda mempunyai kedudukan margin pada masa itu, jumlah baki anda akan disesuaikan dengan nilai kedudukan positif.

Contoh 1

Jika anda membeli 1 BTC/USD @ 30,000 USD menggunakan margin dan kedudukan anda adalah terbuka, baki Bukti Simpanan anda akan menunjukkan pelarasan positif +1 BTC pada baki BTC anda. Tidak akan terdapat pelarasan negatif pada baki USD anda. Baki aset BTC yang dipegang di bawah jagaan Kraken akan termasuk baki BTC pada masa itu, dilaraskan dengan pelarasan positif +1 BTC untuk kedudukan margin anda. Baki aset USD anda akan kekal sama.

Contoh 2

Jika anda menjual 1 BTC/ETH @ 15 ETH menggunakan margin dan kedudukan anda adalah terbuka, baki Bukti Simpanan anda akan menunjukkan pelarasan positif +15 ETH pada baki ETH anda. Tidak akan terdapat pelarasan negatif pada baki BTC anda. Baki aset ETH anda yang dipegang di bawah jagaan Kraken akan menyertakan baki ETH anda pada waktu itu, dilaraskan oleh pelarasan +15 ETH positif untuk kedudukan margin anda. Baki aset BTC yang dipegang di bawah jagaan Kraken akan kekal sama.

Nota: Metodologi niaga hadapan yang diterangkan di atas berkuat kuasa mulai semakan Bukti Simpanan Mei 2023.

Baki niaga hadapan

Jika anda mempunyai baki dalam dompet Niaga Hadapan pada masa semakan, rekod Bukti Simpanan berasingan akan wujud untuk baki cagaran niaga hadapan anda. Baki anda akan disesuaikan dengan Untung dan Rugi belum terealisasi bagi perdagangan niaga hadapan Cagaran Tunggal. Ini termasuk aset dalam skop yang sama seperti spot dan margin, dan menjadi sebahagian daripada Pokok Merkle yang sama (dengan ID Daun Merkle tersendiri). 

Contoh 1

Jika anda mempunyai 1 BTC dalam dompet niaga hadapan anda dan anda membuka kedudukan dalam Cagaran Tunggal Derivatif BTC, yang mempunyai Untung & Rugi belum terealisasi -0.1 BTC, baki BTC yang dipegang di bawah jagaan Kraken akan menjadi 0.9 BTC (1 BTC anda, disesuaikan dengan -0.1 BTC bagi P&L belum terealisasi).

Contoh 2

Jika anda memiliki 1 BTC dalam dompet niaga hadapan anda dan anda membuka kedudukan dalam Berbilang Cagaran Derivatif BTC, yang mempunyai Untung & Rugi belum terealisasi -100.0 USD, baki BTC yang dipegang di bawah jagaan Kraken akan kekal 1 BTC (1 BTC anda tidak disesuaikan dengan P&L belum terealisasi kerana nilai tersebut dijejaki dalam USD, dan USD bukan aset dalam skop semakan ini).

Nota: Metodologi niaga hadapan yang diterangkan di atas berkuat kuasa mulai semakan Bukti Simpanan Mei 2023. 

Pengesahan mudah

Ikuti langkah berikut untuk mengesahkan secara kriptografi penyertaan baki akaun Kraken anda dalam semakan Bukti Simpanan terkini.

Nota: Pengesahan ini hanya akan menunjukkan baki akaun anda dalam aset yang berada dalam skop pada masa semakan. Pengesahan ini tidak akan menunjukkan apa-apa perdagangan atau transaksi berikutnya, dan tidak akan merangkumi baki dalam aset yang berada di luar skop.

1. Log masuk ke akaun Kraken anda dan navigasi ke halaman Bukti Simpanan dalam antara muka Kraken Pro (pro.kraken.com) (Ikon akaun > Bukti Simpanan). 

Kraken Proof of Reserves review list

2. Pilih tab Bukti Simpanan. Ini akan menyertakan nisbah simpanan yang disahkan terkini, serta maklumat khusus untuk akaun anda. Akaun anda akan memaparkan laporan Bukti Simpanan terkini yang baki akaun anda disahkan, termasuk tarikh, penyedia serta skop penilaian laporan. 

Kraken Proof of Reserves review list

3. Pilih tarikh dan klik Sahkan diri anda. Di sini, anda akan menemukan pengesahan bagi baki yang dipegang pada masa semakan, serta panduan tentang cara mengesahkan butiran anda.

Kraken audit details

Semak dengan akauntan pihak ke-3

  • Gunakan ID Daun Merkle anda - salin 16 aksara pertama dan masukkan ke dalam alat akauntan pihak ke-3 untuk mendapatkan baki anda dan semak ID anda dalam laluan Pokok Merkle. Alat akauntan pihak ke-3 akan dibuka dalam tetingkap yang berasingan. 

Nota: Ciri ini telah disediakan mulai semakan 2023. Bagi semakan terdahulu, sila rujuk laman web rakan kongsi kami untuk mendapatkan alat pengesahan.

Kraken audit details

Sahkan dengan Kraken

  • Sahkan ID Rekod anda - ikut langkah untuk mencipta semula ID rekod anda, yang mengenal pasti butiran akaun anda serta ID Semakan secara unik (unik bagi setiap tarikh laporan)
  • Sahkan ID Daun Merkle anda - ikut langkah untuk mencipta semula ID Daun Merkle anda, yang mengenal pasti akaun anda secara unik bersama dengan baki yang dipegang pada masa petikan semakan 
  • Sahkan ID Daun Merkle anda dalam Pokok Merkle - sahkan bahawa ID anda tergolong dalam pokok Merkle dan sahkan laluan ke akar Pokok Merkle, yang disahkan oleh akauntan pihak ke-3 kami dan dikongsi kepada semua pelanggan

Nota: Ciri ini telah disediakan mulai semakan 2023. Bagi semakan terdahulu, sila rujuk laman web rakan kongsi kami untuk mendapatkan alat pengesahan.

Kraken audit details
Kraken audit details
Kraken audit details

Pengesahan lanjutan

Pelanggan celik teknologi boleh membina semula cincangan nod daun Pokok Merkle tersendiri dan menyemak baki masing-masing dalam Pokok Merkle secara programatik, tanpa menggunakan alat visual yang disediakan oleh Kraken atau akauntan pihak ke-3. 

Anda boleh melakukan langkah pengesahan berikut menggunakan kod:

  1. Anda boleh mengesahkan penjanaan ID Daun Pokok Merkle untuk akaun anda mengikut langkah yang digariskan di bawah.  

  2. Anda kemudian boleh mengesahkan Laluan Pokok Merkle anda untuk ID daun, dan bina semula laluan daripada kedudukan anda ke nod akar. Kami menyediakan ketelusan penuh dan turut menyertakan ID daun sibling untuk rujukan. 

Langkah-langkah yang diperlukan, dalam pseudokod, untuk membina semula ID Rekod dan Daun Merkle daripada Kod Akaun, IIBAN Kraken, ID Semakan dan Baki anda digariskan di bawah. Harap maklum bahawa hasil adalah sensitif kepada pemformatan rentetan baki tertentu serta urutan aset yang disemak, sebagaimana yang dipaparkan di halaman Bukti Simpanan.

  • ID Rekod = SHA256(concatenate(Account Code, Kraken IIBAN, Review ID))
  • Baki = ""
  • Bagi Setiap Aset:
    • Baki = concatenate(Asset, ":", AssetBalances[asset])
  • Cincangan Merkle = concatenate(Record ID, “,”, Balances)
  • Daun Merkle = substring(SHA256(Merkle Hash), 0, 16)

Selepas Daun Merkle anda dikenal pasti, anda boleh menggunakan pengesahan SHA256 dengan nilai HEX untuk membina semula Laluan Pokok Merkle.

Contoh khusus juga ditunjukkan dalam cebisan kod di bawah. Daun Merkle yang terhasil juga boleh dilihat dalam butiran semakan untuk membantu anda mengesahkan bahawa pembinaan semula telah dilakukan dengan betul.

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

Dalam usaha memperjuangkan ketelusan, kami ingin berkongsi beberapa kekurangan dalam proses Bukti Simpanan yang telah dikenal pasti.

  • Bukti Simpanan membabitkan pembuktian kawalan terhadap dana di dalam rantai pada masa semakan, namun tidak membuktikan pemilikan eksklusif terhadap kunci peribadi yang mungkin telah secara teorinya diduplikasi oleh penyerang.
  • Prosedur ini tidak dapat mengenal pasti apa-apa beban tersembunyi atau membuktikan bahawa dana tidak dipinjam untuk tujuan mencapai kelulusan dalam semakan. Begitu juga, kunci mungkin telah hilang atau dana mungkin telah dicuri sejak semakan terkini.
  • Akauntan mestilah kompeten dan bebas untuk meminimumkan risiko penipuan oleh pihak yang diperiksa atau kolusi antara pihak-pihak terlibat.
  • Kami berusaha mengurangkan beberapa kekurangan ini dengan bekerjasama bersama firma pihak ketiga bebas yang terkemuka untuk Bukti Simpanan kami serta melaksanakan semakan ini mengikut kadar yang tetap. Kami juga menyediakan ketelusan terhadap data ini terus dalam platform pelanggan kami. 

Angka nisbah rizab yang ditanda dengan asterisk (*) di atas mungkin berubah secara material apabila membandingkan laporan Bukti Rizab Kraken disebabkan oleh perubahan produk dan penambahbaikan pada infrastruktur penjagaan kami dari semasa ke semasa, yang mungkin menjejaskan pengelasan aset tertentu yang dipegang dalam dompet ini. Konsisten dengan amalan semasa, penjelasan tentang metodologi Bukti Rizab yang tepat disertakan dalam semua Laporan.