Proof of Reserves

Απόδειξη ότι τα κεφάλαιά σας είναι ασφαλή, όποτε θέλετε.

Ημερομηνία στιγμιοτύπου

BTC icon

BTC

Αναλογία αποθεμάτων*

100.3%

ETH icon

ETH

Αναλογία αποθεμάτων*

101.3%

SOL icon

SOL

Αναλογία αποθεμάτων*

101.1%

USDC icon

USDC

Αναλογία αποθεμάτων*

105%+

USDT icon

USDT

Αναλογία αποθεμάτων*

105%+

XRP icon

XRP

Αναλογία αποθεμάτων*

100.6%

ADA icon

ADA

Αναλογία αποθεμάτων*

102.2%

Λογοδοσία, τακτικές ανασκοπήσεις

Στην Kraken, δεν σας προσφέρουμε απλώς τη δυνατότητα να κάνετε συναλλαγές με πρωτοποριακά ψηφιακά περιουσιακά στοιχεία, αλλά προσπαθούμε ενεργά να αξιοποιήσουμε τη διαφάνεια των blockchain ανοιχτού κώδικα στα οποία λειτουργούν.

Οι τακτικές ανασκοπήσεις Proof of Reserves επιτρέπουν στους πελάτες να επαληθεύσουν εύκολα ότι τα υπό εξέταση υπόλοιπά τους υποστηρίζονται από πραγματικά περιουσιακά στοιχεία, κι αυτό με λίγα μόνο κλικ στον λογαριασμό τους.

Μια προηγμένη διαδικασία κρυπτογραφημένης λογιστικής που διεξάγεται τακτικά από αξιόπιστους λογιστές, το Proof of Reserves, σας επιτρέπει να επαληθεύσετε ότι η Kraken πληροί αυστηρά πρότυπα λογοδοσίας και υπερβαίνει τα επίπεδα διαφάνειας που προσφέρουν οι παραδοσιακές χρηματοοικονομικές εταιρείες.

Συχνές ερωτήσεις

Τι είναι το Proof of Reserves;

Μια ανασκόπηση Proof of Reserves (PoR) είναι μια διαδικασία που εκτελείται από ανεξάρτητο λογιστή τρίτου. Αυτό έχει ως στόχο να επιβεβαιώσει ότι ένας θεματοφύλακας κατέχει τα περιουσιακά στοιχεία που διεκδικεί για λογαριασμό των πελατών του. Ο λογιστής λαμβάνει ένα ανωνυμοποιημένο στιγμιότυπο όλων των υπολοίπων που διατηρούνται και τα συγκεντρώνει σε ένα Merkle tree, μια δομή δεδομένων κατάλληλη για την προστασία του απορρήτου που περικλείει όλα τα υπόλοιπα των πελατών.

Merkle Root Hash

Στη συνέχεια, ο λογιστής λαμβάνει Merkle root: ένα κρυπτογραφικό αποτύπωμα που αναγνωρίζει με μοναδικό τρόπο τον συνδυασμό αυτών των υπολοίπων τη στιγμή που δημιουργήθηκε το στιγμιότυπο.

Ο λογιστής συλλέγει επίσης ψηφιακές υπογραφές που παράγει η Kraken, οι οποίες αποδεικνύουν την ιδιοκτησία των on-chain διευθύνσεων με δημόσια επαληθεύσιμα υπόλοιπα. Τέλος, ο λογιστής συγκρίνει και επιβεβαιώνει ότι αυτά τα υπόλοιπα υπερβαίνουν ή ταιριάζουν με τα υπόλοιπα των πελατών που αναπαρίστανται στο Merkle tree, διασφαλίζοντας έτσι ότι τα περιουσιακά στοιχεία των πελατών βρίσκονται υπό τον έλεγχο της Kraken.

Κάθε πελάτης μπορεί ανεξάρτητα να επαληθεύσει εάν το υπόλοιπό του περιλαμβάνεται στη διαδικασία Proof of Reserves συγκρίνοντας επιλεγμένα δεδομένα με τη Merkle root. Οποιαδήποτε αλλαγή στα υπόλοιπα δεδομένα, όσο μικρή κι αν είναι, επηρεάζει τη ρίζα, καθιστώντας εμφανή οποιαδήποτε παραποίηση.

Μπορείτε να βρείτε την αναφορά Proof of Reserves μας εδώ.

Τι καλύπτει το Proof of Reserves;

Υπόλοιπα spot

Η ανασκόπηση θα περιέχει όλα τα υπόλοιπά περιουσιακών στοιχείων σας εντός του πεδίου εφαρμογής, τα οποία τηρούνταν κατά τη στιγμή λήψης του στιγμιότυπου. Τα ακόλουθα περιουσιακά στοιχεία εμπίπτουν στο πεδίο εφαρμογής σύμφωνα με την πιο πρόσφατη ανασκόπηση: Bitcoin (BTC), Ether (ETH), Solana (SOL), USD Coin (USDC), Tether (USDT), και Ripple (XRP).

Υπόλοιπα staking

Εάν είχατε υπόλοιπα που είχαν διατεθεί για on-chain staking κατά τη στιγμή του στιγμιότυπου, η αξία του υπολοίπου staking σας θα αθροιστεί με το υπόλοιπό σας spot σε ένα μόνο υπόλοιπο.

Συναλλαγή μέσω margin

Εάν είχατε θέσεις margin εκείνη τη στιγμή, τότε θα βλέπατε το συνολικό σας υπόλοιπο να προσαρμόζεται με βάση τις θετικές αξίες θέσης.

Παράδειγμα 1

Εάν αγοράσατε 1 BTC/USD στα 30.000 USD με margin και η θέση σας είναι ανοιχτή, το υπόλοιπο Proof of Reserves θα αντικατοπτρίζει μια θετική προσαρμογή +1 BTC στο υπόλοιπο BTC σας. Δεν θα υπάρξει αρνητική προσαρμογή στο υπόλοιπό σας σε USD. Το υπόλοιπο των περιουσιακών στοιχείων BTC που τηρείται υπό Θεματοφύλαξη Kraken θα περιλαμβάνει το υπόλοιπο BTC σας εκείνη τη στιγμή, προσαρμοσμένο κατά τη θετική προσαρμογή + 1 BTC για τη θέση margin σας. Το υπόλοιπο περιουσιακών στοιχείων USD σας θα παραμείνει ίδιο.

Παράδειγμα 2

Εάν πουλήσατε 1 BTC/ETH στα 15 ETH με margin και η θέση σας είναι ανοιχτή, το υπόλοιπο Proof of Reserves θα αντικατοπτρίζει μια θετική προσαρμογή +15 ETH στο υπόλοιπο ETH σας. Δεν θα υπάρξει αρνητική προσαρμογή για το υπόλοιπο BTC σας. Το υπόλοιπο των περιουσιακών στοιχείων ΕΤΗ που τηρείται υπό Θεματοφύλαξη Kraken θα περιλαμβάνει το υπόλοιπο ΕΤΗ σας εκείνη τη στιγμή, προσαρμοσμένο κατά τη θετική προσαρμογή + 15 ΕΤΗ για τη θέση margin σας. Το υπόλοιπο περιουσιακών στοιχείων BTC που τηρείται υπό Θεματοφύλαξη Kraken θα παραμείνει το ίδιο.

Σημείωση: Η μεθοδολογία futures που περιγράφεται παραπάνω ισχύει από τις ανασκοπήσεις των Proof of Reserves του Μαΐου 2023.

Υπόλοιπο futures

Εάν είχατε υπόλοιπα στο πορτοφόλι futures σας κατά τη στιγμή της ανασκόπησης, θα υπάρχει ξεχωριστό αρχείο Proof of Reserves για τα υπόλοιπα εξασφαλίσεων futures. Τα υπόλοιπά σας προσαρμόζονται με βάση τα μη πραγματοποιηθέντα κέρδη και ζημίες για συναλλαγές futures μεμονωμένης εξασφάλισης. Αυτό θα περιλαμβάνει τα ίδια περιουσιακά στοιχεία εντός πεδίου εφαρμογής όπως για το spot και το margin και θα αποτελεί μέρος του ίδιου Merkle Tree (με το δικό του Merkle Leaf ID). 

Παράδειγμα 1

Εάν είχατε 1 BTC στο πορτοφόλι σας για futures και ανοίξετε μια θέση σε BTC Perp μεμονωμένης εξασφάλισης, η οποία έχει μη πραγματοποιηθέντα κέρδη και ζημίες -0,1 BTC, τότε το υπόλοιπο BTC σας που διατηρείται υπό Θεματοφύλαξη Kraken θα είναι 0,9 BTC (το 1 BTC σας, προσαρμοσμένο κατά -0,1 BTC για μη πραγματοποιηθέντα κέρδη και ζημίες).

Παράδειγμα 2

Εάν είχατε 1 BTC στο πορτοφόλι σας για futures και ανοίξετε μια θέση σε BTC Perp πολλαπλής εξασφάλισης, η οποία έχει μη πραγματοποιηθέντα κέρδη και ζημίες -100,0 USD, τότε το υπόλοιπο BTC σας που διατηρείται υπό Θεματοφύλαξη Kraken θα είναι 1 BTC (το 1 BTC δεν προσαρμόζεται από τα μη πραγματοποιηθέντα κέρδη και ζημίες, καθώς αυτά παρακολουθούνται σε USD, και το USD δεν αποτελεί περιουσιακό στοιχείο εντός του πεδίου εφαρμογής αυτής της ανασκόπησης).

Σημείωση: Η μεθοδολογία futures που περιγράφεται παραπάνω ισχύει από τις ανασκοπήσεις των Proof of Reserves του Μαΐου 2023. 

Πώς μπορώ να επαληθεύσω ότι ο λογαριασμός μου συμπεριλήφθηκε στην ανασκόπηση Proof of Reserves;

Απλή επαλήθευση

Ακολουθήστε τα παρακάτω βήματα για να επαληθεύσετε κρυπτογραφικά την συμπερίληψη του υπολοίπου του λογαριασμού σας Kraken στην πιο πρόσφατη ανασκόπηση Proof of Reserves.

Σημείωση: Αυτή η επαλήθευση θα αντικατοπτρίζει μόνο τα υπόλοιπα του λογαριασμού σας στα περιουσιακά στοιχεία εντός του πεδίου εφαρμογής κατά τη στιγμή της ανασκόπησης. Δεν θα αντικατοπτρίζει τυχόν μεταγενέστερες συναλλαγές, ούτε υπόλοιπα που διατηρούνται σε περιουσιακά στοιχεία εκτός του πεδίου εφαρμογής.

1. Συνδεθείτε στον λογαριασμό σας στην Kraken και μεταβείτε στη σελίδα Proof of Reserves στη διεπαφή του Kraken Pro (pro.kraken.com) (Εικονίδιο λογαριασμού > Proof of Reserves). 

Kraken Proof of Reserves review list

2. Επιλέξτε την καρτέλα Proof of Reserves . Αυτό θα περιλαμβάνει τις πιο πρόσφατες επαληθευμένες αναλογίες αποθεμάτων, καθώς και πληροφορίες που αφορούν συγκεκριμένα τον λογαριασμό σας. Ο λογαριασμός σας θα εμφανίζει πρόσφατες αναφορές Proof of Reserves στις οποίες επαληθεύτηκε το υπόλοιπο του λογαριασμού σας, συμπεριλαμβανομένης της ημερομηνίας αναφοράς, του παρόχου και του πεδίου εφαρμογής της αξιολόγησης. 

Kraken Proof of Reserves review list

3. Επιλέξτε την ημερομηνία και κάντε κλικ στην επιλογή Επαλήθευση. Εδώ, θα βρείτε επιβεβαίωση των υπολοίπων που τηρούνταν κατά τη στιγμή της ανασκόπησης, καθώς και έναν οδηγό για τον τρόπο επαλήθευσης των στοιχείων σας.

Kraken audit details

Επαληθεύστε με τον ανεξάρτητο λογιστή

  • Χρησιμοποιήστε το Merkle Leaf ID σας - αντιγράψτε τους πρώτους 16 χαρακτήρες και συμπληρώστε τους στα εργαλεία του λογιστή τρίτου για να ανακτήσετε τα υπόλοιπά σας και να ελέγξετε το ID σας στη διαδρομή Merkle Tree. Το εργαλείο λογιστή τρίτου θα ανοίξει σε διαφορετικό παράθυρο. 

Σημείωση: Αυτό είναι διαθέσιμο από τις ανασκοπήσεις του 2023 και μετά. Για προηγούμενη ανασκόπηση, ανατρέξτε στην ιστοσελίδα του συνεργάτη μας για να βρείτε τα εργαλεία επαλήθευσης.

Kraken audit details

Επαληθεύστε με την Kraken

  • Επαλήθευση του ID εγγραφής σας - ακολουθήστε τα βήματα για να δημιουργήσετε ξανά το ID εγγραφής σας, το οποίο προσδιορίζει μοναδικά τα στοιχεία του λογαριασμού σας και το ID ανασκόπησής σας (μοναδικό για κάθε ημερομηνία αναφοράς)
  • Επαλήθευση του Merkle Leaf ID σας - ακολουθήστε τα βήματα για να δημιουργήσετε ξανά το Merkle Leaf ID, το οποίο προσδιορίζει μοναδικά τον λογαριασμό σας μαζί με τα υπόλοιπα που διατηρούνται κατά τη στιγμή του στιγμιοτύπου ανασκόπησης 
  • Επιβεβαίωση του Merkle Leaf ID σας στο Merkle Tree - επιβεβαιώστε ότι το ID σας ανήκει στο Merkle Tree και επικυρώστε τη διαδρομή προς το Merkle Tree root, η οποία επαληθεύεται από λογιστή τρίτου και κοινοποιείται σε όλους τους πελάτες

Σημείωση: Αυτό είναι διαθέσιμο από τις ανασκοπήσεις του 2023 και μετά. Για προηγούμενη ανασκόπηση, ανατρέξτε στην ιστοσελίδα του συνεργάτη μας για να βρείτε τα εργαλεία επαλήθευσης.

Kraken audit details
Kraken audit details
Kraken audit details

Επαλήθευση για προχωρημένους

Οι πελάτες με τεχνολογικές γνώσεις μπορεί να επιθυμούν να ανακατασκευάσουν ανεξάρτητα το συγκεκριμένο hash κόμβου Merkle Tree leaf και να αναζητήσουν τα υπόλοιπά τους στο Merkle Tree μέσω προγραμματισμού, αντί για τα οπτικά εργαλεία που παρέχονται από το Kraken ή από λογιστές τρίτων. 

Μπορείτε να ακολουθήσετε τα παρακάτω βήματα επαλήθευσης στον κώδικα:

  1. Μπορείτε να επαληθεύσετε τη δημιουργία του Merkle Tree Leaf ID για τον λογαριασμό σας, ακολουθώντας τα παρακάτω βήματα.  

  2. Στη συνέχεια, μπορείτε να επαληθεύσετε τη διαδρομή του Merkle Tree για το leaf ID και να την ανακατασκευάσετε από τη θέση σας στον κόμβο root. Παρέχουμε πλήρη διαφάνεια και συμπεριλαμβάνουμε επίσης τα sibling leaf ID σας. 

Τα απαιτούμενα βήματα, σε ψευδοκώδικα, για την ανακατασκευή του ID εγγραφή σας και του Merkle Leaf από τον κωδικό λογαριασμού σας, το Kraken IIBAN, το ID ανασκόπησης και τα υπόλοιπα περιγράφονται παρακάτω. Λάβετε υπόψη ότι τα αποτελέσματα εξαρτώνται από τη συγκεκριμένη μορφή των υπολοίπων και τη σειρά των περιουσιακών στοιχείων που ελέγχθηκαν, όπως εμφανίζονται στη σελίδα Proof of Reserves.

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

Αφού αναγνωριστεί το Merkle Leaf σας, μπορείτε να χρησιμοποιήσετε μια επαλήθευση SHA256 με τιμές HEX για να ανακατασκευάσετε τη διαδρομή Merkle Tree.

Συγκεκριμένα παραδείγματα παρουσιάζονται επίσης στα παρακάτω αποσπάσματα κώδικα. Το Merkle Leaf που προκύπτει είναι επίσης διαθέσιμο στις λεπτομέρειες της ανασκόπησης για να επιβεβαιώσετε ότι έχει ανακατασκευαστεί σωστά.

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

Ελλείψεις και μελλοντικές βελτιώσεις

Για σκοπούς διαφάνειας, θα θέλαμε να μοιραστούμε ορισμένες από τις ελλείψεις στη διαδικασία Proof of Reserves process που έχουμε εντοπίσει.

  • Ένα αρχείο Proof of Reserves περιλαμβάνει την απόδειξη ελέγχου επί των κεφαλαίων on-chain κατά τη στιγμή της ανασκόπησης, αλλά δεν μπορεί να αποδείξει την αποκλειστική κατοχή ιδιωτικών κλειδιών που θεωρητικά ενδέχεται να έχουν αντιγραφεί από έναν εισβολέα.
  • Η διαδικασία δεν μπορεί να εντοπίσει τυχόν κρυφές επιβαρύνσεις ή να αποδείξει ότι δεν υπήρχε δανεισμός κεφαλαίων για τους σκοπούς της επιτυχούς ανασκόπησης. Ομοίως, ενδέχεται να έχουν χαθεί κλειδιά ή κλαπεί κεφάλαια από την τελευταία ανασκόπηση.
  • Ο λογιστής πρέπει να είναι ικανός και ανεξάρτητος ώστε να ελαχιστοποιείται ο κίνδυνος δολιότητας εκ μέρους του εξεταζόμενου ή συνωμοσίας μεταξύ των μερών.
  • Επιδιώκουμε να μετριάσουμε ορισμένες από αυτές τις ελλείψεις συνεργαζόμενοι με μια αξιόπιστη, ανεξάρτητη εταιρεία τρίτου για το Proof of Reserves και διεξάγοντας τακτικά αυτές τις ανασκοπήσεις. Παρέχουμε επίσης διαφάνεια σχετικά με αυτά τα δεδομένα απευθείας στην πλατφόρμα πελατών μας. 
Δημιουργία λογαριασμού

Η αναλογία αποθεματικών που σημειώνεται με αστερίσκο (*) παραπάνω ενδέχεται να αλλάξει σημαντικά κατά τη σύγκριση των αναφορών Proof of Reserves της Kraken, λόγω αλλαγών στα προϊόντα και βελτιώσεων στην υποδομή θεματοφύλαξης μας με την πάροδο του χρόνου, οι οποίες ενδέχεται να επηρεάσουν την κατηγοριοποίηση ορισμένων περιουσιακών στοιχείων που διατηρούνται σε αυτά τα πορτοφόλια. Σύμφωνα με την τρέχουσα πρακτική, σε όλες τις αναφορές περιλαμβάνεται εξήγηση της μεθοδολογίας Proof of Reserves.