Rezerv Kanıtı
Şeffaflık Taahhüdümüz
Kraken'de, yalnızca son teknoloji dijital varlıkların işlemini yapmanıza izin vermiyoruz, üzerinde çalıştıkları açık kaynaklı blok zincirlerinin şeffaflığından maksimum düzeyde yararlanmak için çalışıyoruz.
Düzenli Rezerv Kanıtı denetimlerimiz, müşterilerin, hesaplarında yalnızca birkaç kolay tıklamayla, tuttukları bakiyelerin gerçek varlıklar tarafından desteklendiğini doğrulamasını kolaylaştırır.
Güvenilir denetçiler tarafından altı ayda bir yürütülen gelişmiş bir kriptografik muhasebe prosedürü olan Rezerv Kanıtı, Kraken'in hesap verebilirlik konusunda katı standartları karşıladığını ve eski finans firmalarının sunduğu şeffaflığı aştığını doğrulamanıza olanak tanır.
Rezerv Kanıtı nedir?
Rezerv Kanıtı (PoR), bir gözetimcinin müşterileri adına üzerinde hak iddia ettiği varlıkları elinde bulundurmasını sağlamaya çalışan üçüncü bir tarafça yürütülen bağımsız bir denetimdir. Bu denetçi, tutulan tüm bakiyelerin anonimleştirilmiş bir anlık görüntüsünü alır ve bunları bir Merkle ağacı içinde toplar — tüm müşteri bakiyelerini kapsayan, gizlilik dostu bir veri yapısı.
Denetçi oradan bir Merkle kökü elde eder: anlık görüntünün oluşturulduğu sırada bu bakiyelerin kombinasyonunu benzersiz bir şekilde tanımlayan kriptografik parmak izi.
Denetçi daha sonra Kraken tarafından üretilen ve halka açık olarak doğrulanabilir bakiyelere sahip zincir üzerindeki adresler üzerinde sahipliğini kanıtlayan dijital imzaları toplar. Son olarak denetçi, bu bakiyelerin Merkle ağacında gösterilen müşteri bakiyelerini aştığını veya eşleştiğini ve dolayısıyla müşteri varlıklarının tam rezerv temelinde tutulduğunu karşılaştırır ve doğrular.
Her müşteri, belirli veri parçalarını Merkle köküyle karşılaştırarak bakiyesinin Rezerv Kanıtı denetimine dahil edildiğini bağımsız olarak doğrulayabilir. Verilerin geri kalanında yapılan herhangi bir değişiklik, ne kadar küçük olursa olsun, kök hashi etkileyecektir; kurcalamayı ortaya çıkaracaktır.
Hesabınızın denetlendiğini doğrulama
Kraken hesap bakiyenizin en son Rezerv Kanıtı'na dahil edildiğini kriptografik olarak doğrulamak için aşağıdaki adımları izleyin.
Not: Bu doğrulama, denetim sırasında yalnızca desteklenen varlıklardaki hesap bakiyelerinizi yansıtır. Sonraki alım satımları veya işlemleri veya denetim kapsamında olmayan varlıklarda tutulan bakiyeleri yansıtmaz.
1. Kraken hesabınıza giriş yapın ve hesap ayarlarınıza gidin (Ayarlar > Hesap).
2. Denetimler sekmesini seçin. Hesabınız, hesap bakiyenizin doğrulandığı son denetimleri, ilgili Denetim Numarasını, denetimin tarihini, denetimi yürüten firmanın adını ve yürütülen denetimin türünü görüntüler. Denetim Numarası, belirli bir denetimle ilişkili tanımlayıcı dizedir; Kraken, düzenli Rezerv Kanıtı denetimleri yürütmeyi beklediğinden, her birinin benzersiz şekilde tanımlanabilir olması önemlidir.
3. Doğrulamak istediğiniz denetim tarihini seçin. Burada, denetim türü onayınızı, Kayıt Numaranızı (hesabınıza ve bu denetime özel), kapsanan varlıklar ve denetim sırasındaki varlık bakiyenizi bulacaksınız.
Kayıt Numarası, üçüncü taraf denetçi aracılığıyla hesap bakiyenizin dahil edildiğini bağımsız olarak doğrulamanızı sağlar.
Denetçi ile kaydınızı doğrulanma
Basit:
Hesap kaydınızı doğrulamanın en hızlı yolu, Kayıt Numaranız ile üçüncü taraf denetçiler portalını kullanmaktır:
1. Hesabınıza ve belirtilen denetime karşılık gelen Kayıt Numaranızı kopyalayın (bunu bulmak için önceki bölümü ziyaret edin).
2. Rezerv Kanıtı denetiminden sorumlu üçüncü taraf denetçinin web sitesini ziyaret edin.
3. Kayıt Numaranızı üçüncü taraf denetçiler portalına girin. Denetçi web sitesi, denetim sırasında zincirde hesabınızda tutulan kripto paraların kaydını bulmak için bu numarayı kullanır.
4. Bakiyelerinizi doğrulayın.
Gelişmiş:
Teknoloji konusunda bilgili müşteriler, belirli Merkle Tree leaf node hash'i bağımsız olarak yeniden yapılandırmak ve yalnızca Kayıt Numarası yerine bu hash'i kullanarak üçüncü taraf denetçi aracında bakiyelerini aramak isteyebilir.
Bu, müşterilerin Kayıt Numaralarının (ve denetim sırasında hesaplarıyla ilişkili bakiyelerin) Merkle Ağacı yapısına dahil edildiğini doğrulamalarına olanak tanır ve bu da denetçi tarafından Kök Hash'in yayınlanmasıyla sonuçlanır:
1. Kraken.com'daki denetim ayrıntıları ayrıca, hesabınıza özel başka bir kod olan "Hesap Kodu"nu ve denetimlerde herhangi bir tanımlayıcı kodun yeniden kullanılmasını önleyen bu özel denetimi içerir.
2. Ayrıca, hesabınızın ve belirli denetimin ayrıntılarını kullanarak doğrudan kullanabileceğiniz veya yeniden oluşturabileceğiniz (aşağıdaki gibi) bir Merkle Hash'i de göreceksiniz. Denetçi aracında arama yapmak için kullanacağınız Merkle Leaf, bu Merkle Hash'in SHA256'sının ilk 16 karakteridir.
3. Kayıt Numarası ve Merkle Leaf'i Gizli Kod ile Hesap Kodunuzdan yeniden oluşturmak için gerekli adımlar, Kraken IIBAN, Denetim Numarası ve Bakiyeler aşağıda özetlenmiştir. Sonuçların, Denetimler sayfasında gösterildiği gibi, bakiyelerin belirli dize biçimlendirmesine duyarlı olduğunu unutmayın.
- Record ID = SHA256(concatenate(Account Code, Kraken IIBAN, Audit ID))
- Balances = concatenate(“BTC:”, balBTC)
- Balances = concatenate(Balances, “,BTC.M:”, balBTCM)
- Balances = concatenate(Balances, “,ETH:”, balETH)
- Balances = concatenate(Balances, “,ETH2.S:”, balETH2S)
- Merkle Hash = concatenate(Record ID, “,”, Balances)
- Merkle Leaf = substring(SHA256(Merkle Hash), 0, 16)
Belirli örnekler ayrıca aşağıdaki kod snippet'lerinde gösterilmektedir. Ortaya çıkan Merkle Leaf, bunu doğru bir şekilde yeniden oluşturduğunuzu onaylamanıza yardımcı olmak için denetim ayrıntılarında da görünür.
Python
import hashlib
account_code = "8dc20f34da8cea8dd0f46b001694f5123ecd30d786c5eb92ad1a013703a4f8d1"
iiban = "AB12C34DEFG5KSQI"
audit_id = "PR30JUN22"
record_id = hashlib.sha256((account_code + iiban + audit_id).encode('utf-8')).hexdigest()
balances = "ADA:15129.4,ADA.S:0.0,BTC:0.2600852178,BTC.M:1.25,DOT:50.0,DOT.S:20.5,DOT.P:0.0,ETH:5.27518778,ETH2.S:10.123,USDC:50000.0,USDT:0.0,XRP:0.000002"
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]))
Rust
use sha2::{Digest, Sha256};
const ACCOUNT_CODE: &str = "8dc20f34da8cea8dd0f46b001694f5123ecd30d786c5eb92ad1a013703a4f8d1";
const IIBAN: &str = "AB12C34DEFG5KSQI";
const AUDIT_ID: &str = "PR30JUN22";
const BALANCES: &str = "ADA:15129.4,ADA.S:0.0,BTC:0.2600852178,BTC.M:1.25,DOT:50.0,DOT.S:20.5,DOT.P:0.0,ETH:5.27518778,ETH2.S:10.123,USDC:50000.0,USDT:0.0,XRP:0.000002";
fn main() {
let mut record_hasher: Sha256 = Default::default();
record_hasher.update(ACCOUNT_CODE);
record_hasher.update(IIBAN);
record_hasher.update(AUDIT_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]);
}
Go
package main
import (
"crypto/sha256"
"fmt"
)
func main() {
accountCode := "8dc20f34da8cea8dd0f46b001694f5123ecd30d786c5eb92ad1a013703a4f8d1"
iiban := "AB12C34DEFG5KSQI"
auditId := "PR30JUN22"
secret := accountCode + iiban + auditId
data := []byte(secret)
hash := sha256.Sum256(data)
recordId := string(hash[:])
fmt.Printf("Record ID: %x\n", recordId)
balances := "ADA:15129.4,ADA.S:0.0,BTC:0.2600852178,BTC.M:1.25,DOT:50.0,DOT.S:20.5,DOT.P:0.0,ETH:5.27518778,ETH2.S:10.123,USDC:50000.0,USDT:0.0,XRP:0.000002"
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])
}
Bash
#!/bin/bash
ACCOUNT_CODE="8dc20f34da8cea8dd0f46b001694f5123ecd30d786c5eb92ad1a013703a4f8d1"
IIBAN="AB12C34DEFG5KSQI"
AUDIT_ID="PR30JUN22"
RECORD_ID=$(echo -n "${ACCOUNT_CODE}${IIBAN}${AUDIT_ID}" | sha256sum | head -c 64)
BALANCES="ADA:15129.4,ADA.S:0.0,BTC:0.2600852178,BTC.M:1.25,DOT:50.0,DOT.S:20.5,DOT.P:0.0,ETH:5.27518778,ETH2.S:10.123,USDC:50000.0,USDT:0.0,XRP:0.000002"
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)"
Eksiklikler ve Gelecekte Yapılacak İyileştirmeler
Şeffaflığı desteklemek adına, Rezerv Kanıtı sürecinde belirlediğimiz bazı eksiklikleri paylaşmak istiyoruz.
- Rezerv Kanıtı, denetim sırasında zincir üzerindeki fonlar üzerinde kontrolün kanıtlanmasını içerir, ancak teorik olarak bir saldırgan tarafından kopyalanmış olabilecek özel anahtarların kişiye mahsus sahipliğini kanıtlayamaz.
- Prosedür, herhangi bir gizli yükümlülük tespit edemez veya denetimden geçmek amacıyla fon alınmadığını kanıtlayamaz. Benzer şekilde, en son denetimden bu yana anahtarlar kaybolmuş veya fonlar çalınmış olabilir.
- Denetçi, denetlenen açısından mükerrerlik veya taraflar arasında gizli anlaşma riskini en aza indirgemek için yetkin ve bağımsız olmalıdır.
Rezerv Kanıtımız için saygın, bağımsız üçüncü taraf firmalarla ilişki kurarak ve bu denetimleri düzenli ve sık aralıklarla gerçekleştirerek bu eksikliklerin bazılarını gidermeye çalışıyoruz.
*Not: Rezerv denetiminin kanıtını tanımlayan resmi olarak kabul edilmiş prosedür kuralları yoktur. Bizimki için, Amerikan Yeminli Mali Müşavirler Enstitüsü tarafından belirlenen standartlar kapsamında bir tasdik sözleşmesi gerçekleştirmesi ve Mutabık kalınan Prosedürler hakkında Bağımsız Muhasebeciler Raporu yayınlaması için bağımsız bir muhasebe firması ile anlaştık. Bu raporlar, o firma tarafından gerçekleştirilen belirli prosedürleri ve bunların bulgularını içerir.