Blok zinciri teknolojisinde gizlilik, giderek daha fazla kullanıcı ve geliştiricinin odak noktası haline geliyor. Midnight ağında çalışan korumalı token uygulamaları, işlemlerinizi ve bakiyelerinizi tamamen gizli tutarken, aynı zamanda defterin bütünlüğünü koruyan sıfır bilgi kanıtlarıyla (ZK-proofs) çalışır. Peki, bu uygulamanın arka planındaki mantık nasıl işliyor? İşte adım adım bir rehber.
Midnight ağında dağıtılan her korumalı token, yalnızca cüzdan sahibinin yerel olarak şifresini çözmesine izin verirken, ağ üzerindeki herkesin görebileceği tek veriler, toplam arz ve yakılan miktar gibi genel istatistiklerdir. Bu sayede, finansal gizliliğinizi korurken, token ekosisteminin şeffaflığına da katkıda bulunabilirsiniz.
Gizli Token Uygulamasının Temel Bileşenleri
Korumalı token uygulaması geliştirirken üç ana bileşen ön plana çıkar:
- Compact Sözleşme: Midnight ağında çalışan, gizli token işlemlerini yöneten akıllı sözleşme.
- Sıfır Bilgi Kanıtları (ZK-proofs): İşlemlerin doğruluğunu kanıtlayan, ancak hassas verileri ortaya çıkarmayan matematiksel kanıtlar.
- React Tabanlı Kullanıcı Arayüzü: Kullanıcıların gizli tokenlerini tarayıcı üzerinden yönetmelerini sağlayan web arayüzü.
Bu bileşenlerin senkronizasyonu, Midnight ekosisteminin temelini oluşturur. Uygulamanın her adımında, hem gizlilik hem de performans dengesi gözetilir.
Ön Gereksinimlerinizi Kontrol Edin
Projeye başlamadan önce aşağıdaki araç ve bileşenlere sahip olduğunuzdan emin olun:
- Node.js (sürüm 20 veya üzeri)
- Midnight Cüzdanı (1AM veya Lace)
- Preprod Faucet üzerinden test tokenları (NIGHT tokenları)
- Gerekli npm paketleri: Compact çalışma zamanı, DApp bağlayıcı API, ZK-proof sağlayıcı ve React bağımlılıkları.
Bu bileşenler, projenizin temelini oluşturacak ve gizli token işlemlerinin sorunsuz bir şekilde yürütülmesini sağlayacaktır.
Compact Sözleşmeyi Derleme ve Dağıtma
Midnight ağında çalışan korumalı token uygulamalarının kalbi, Compact adı verilen özel bir akıllı sözleşme türünde yatar. Bu sözleşme, gizli tokenlerin oluşturulması, transfer edilmesi ve yakılması gibi temel işlemleri yönetir.
Genel Defter Durumunu Tanımlama
Sözleşmenin en önemli görevlerinden biri, genel defterdeki toplam arz ve yakılan miktar gibi saydam verileri yönetmektir. Bu veriler, herkes tarafından görülebilir ancak hassas değildir:
export ledger totalSupply: Uint<64>;
export ledger totalBurned: Uint<128>;Bu değişkenler, token ekosisteminin sağlığını izlemek için kullanılır. Ancak, bireysel token sahiplerinin bakiyeleri ve işlemleri her zaman gizli kalır.
Gizli Veriler için Tanıkların Rolü
Her gizli token, benzersiz bir tanık (witness) gerektirir. Bu tanıklar, tokenin benzersizliğini ve güvenliğini sağlamak için kullanılır. Örneğin, yeni bir token oluştururken, yerel bir rastgelelik kaynağına ihtiyaç duyulur:
witness localNonce(): Bytes<32>;Bu 32 baytlık rastgele değer, her token oluşturulduğunda yenilenir ve sıfır bilgi kanıtlarının oluşturulmasında kritik bir rol oynar.
Gizli Token Oluşturma İşlemi
createShieldedToken adlı devre, yeni bir gizli token oluşturur ve belirtilen alıcıya gönderir. Bu işlem sırasında, hem tokenin gizliliği korunur hem de ağ üzerindeki doğrulama süreci sağlanır:
export circuit createShieldedToken(
amount: Uint<64>,
recipient: Either<ZswapCoinPublicKey, ContractAddress>
): ShieldedCoinInfo {
const domain = pad(32, "shielded:token");
const nonce = localNonce();
const coin = mintShieldedToken(
disclose(domain),
disclose(amount),
disclose(nonce),
disclose(recipient)
);
totalSupply = (totalSupply + disclose(amount)) as Uint<64>;
return coin;
}Bu devredeki disclose() fonksiyonu, alıcının ağ tarafından doğru şekilde yönlendirilmesi için gereklidir. Ancak, alıcı dışındaki hiçbir hassas bilgi deftere kaydedilmez.
Gizli Tokenleri Atomik Olarak Yönetme
mintAndSend adlı devre, gizli tokenlerin oluşturulmasını ve doğrudan alıcıya gönderilmesini tek bir işlemde gerçekleştirir. Bu süreç, Merkle kalifikasyonuna ihtiyaç duymadan gerçekleşir:
export circuit mintAndSend(
amount: Uint<64>,
recipient: Either<ZswapCoinPublicKey, ContractAddress>
): ShieldedSendResult {
const domain = pad(32, "shielded:token");
const nonce = localNonce();
// Önce tokeni sözleşmeye bas
const coin = mintShieldedToken(
disclose(domain),
disclose(amount),
disclose(nonce),
right<ZswapCoinPublicKey, ContractAddress>(kernel.self())
);
// Hemen alıcıya gönder
const result = sendImmediateShielded(
disclose(coin),
disclose(recipient),
disclose(amount) as Uint<128>
);
totalSupply = (totalSupply + disclose(amount)) as Uint<64>;
return result;
}Bu devre, tokenin oluşturulduğu aynı işlemde harcanmasını sağlar. Böylece, mt_index: 0 gibi özel bir indeks kullanılarak Merkle yoluna gerek kalmaz.
Gizli Token Transferlerinde Merkle Ağacı Kısıtlamaları
Yeni oluşturulan gizli tokenler, bağımsız bir işlemde doğrudan harcanamaz. Bu nedenle, transferShielded adlı devre, transfer işlemi için Merkle ağacı kanıtına ihtiyaç duyar:
export circuit transferShielded(
coin: QualifiedShieldedCoinInfo,
recipient: Either<ZswapCoinPublicKey, ContractAddress>,
amount: Uint<128>
): ShieldedSendResult {
const result = sendShielded(
disclose(coin),
disclose(recipient),
disclose(amount)
);
return result;
}Bu devrede, coin.mt_index kullanılarak tokenin geçerli Merkle yoluna sahip olduğu kanıtlanır. Cüzdanınızın yerel Zswap durumu, ağdaki mevcut kökle uyumlu olmadığında, işlem başarısız olacaktır.
Geliştirici Odaklı Sıfırdan Uygulama
Bu adımlar, Midnight ağında gizli token uygulamaları geliştirmenin temelini oluşturur. Uygulamanızın performansını ve güvenilirliğini artırmak için, aşağıdaki en iyi uygulamaları göz önünde bulundurun:
- Sıfır bilgi kanıtlarının optimize edilmesi: İşlemlerin doğruluğunu kanıtlarken, hesaplama maliyetlerini minimize etmek.
- Kullanıcı arayüzünün basit tutulması: Karmaşık işlemleri kullanıcılar için anlaşılır hale getirmek.
- Ağ senkronizasyonunun sürekli kontrolü: Cüzdan ve defter arasındaki tutarlılığı sağlamak.
Midnight ağının sunduğu gizlilik odaklı altyapı, finansal uygulamaların geleceğinde önemli bir rol oynayacak. Bu rehberde öğrendiklerinizle, kendi gizli token uygulamanızı oluşturabilir ve blok zinciri ekosistemine yenilikçi bir katkıda bulunabilirsiniz.
Yapay zeka özeti
Midnight blok zincirinde gizli token uygulaması oluşturmanın püf noktalarını keşfedin. Compact sözleşme, ZK-proofs ve React arayüzüyle adım adım rehber.