Zincire demirlenmiş yönlendirme çözümlemesi
Relay bir did:solidus'a teslimat yapması gerektiğinde, o DID'nin nerede yaşadığı konusunda sizin
sözünüze güvenmez. DID'yi Solidus zincirine karşı çözümler ve DIDComm hizmet girdisini zincir üstü
belgeden okur.
Kapsam, önce belirtilmiştir, çünkü ifade fazla okumaya davet ediyor: bu, muhataplarınızın
DID'lerini çözümlemekle ilgilidir. Aracının kendi kimliği bir did:keydir ve zincire demirlenmemiştir,
bkz. bir aracı için did:key ve did:solidus.
Neden zincir üstünde çözümlemeli
Bir yönlendirme anahtarı ve uç noktası, bir aracıya nereye göndereceğini söyler. O işaretçi soran kişiden geliyorsa, aracının meşru bir güncellemeyi bir yönlendirmeden ayırmanın yolu yoktur. DID'yi demirlenmiş bir kaynaktan çözümlemek, cevabın isteyenden değil DID'nin denetleyicisinin yayımladığı yerden gelmesi demektir.
Mekanizma: solidus_didResolve'a bir RPC çağrısı, ardından DIDCommMessaging hizmet girdisinin, yani
uri, accept ve routingKeys alanlarının çıkarılması.
Üç sonuç ve üçüncüsünün neden dürüst kısım olduğu
Bir çözümleme üç şekilde sonuçlanabilir ve relay hangisinin gerçekleştiğini düzleştirmek yerine bildirir:
source |
Ne anlama geliyor |
|---|---|
on-chain |
Az önce zincirden canlı çözümlendi. |
cache |
Zincir çağrısı başarısız oldu ya da zaman aşımına uğradı, dolayısıyla son önbelleğe alınmış değer sunuldu, özgün blok yüksekliğini ve çözümleme zaman damgasını taşıyarak, taze görünen birini değil. |
failed |
Zincir çağrısı başarısız oldu ve önbellek yoktu. Gerçek bir çözümleme başarısızlığı. |
cache satırı üzerinde durmaya değer olandır. Önbelleğe alınmış bir cevap yine de bir cevaptır ve
onu sunmak genellikle doğrudur, ama onu güncel zamanla yeniden damgalamak, bir işletmeciye
yönlendirmenin az önce teyit edildiğini söylerdi; oysa edilmedi. Relay bunun yerine özgün bloğu ve zaman
damgasını korur. Bayat diye etiketlenmiş bayat veri yararlıdır; taze diye etiketlenmiş bayat veri, temiz
bir arayüzle söylenmiş bir yalandır.
failed boş bir sonuç değil gerçek bir durumdur. İşletmeciye görünür ve sessizce bozulmak yerine
bir resolution.failed web kancası tetikler. Bkz.
web kancaları ve teslimat günlükleri.
Bilinmeye değer iki tasarım tercihi
Bozuk bir hizmet girdisi "hizmet bulunamadı" olarak ele alınır, asla yarı güvenilmez. Zincir üstü
belgede doğrulanmayan bir DIDCommMessaging girdisi varsa, relay tanıdığı parçaları kurtarmaya
çalışmaz. Kısmen anlaşılmış bir yönlendirme talimatı, tam olarak istenmeyen bir yere teslimat yapan
türden bir şeydir.
Blok yüksekliği süstür ve asla engelleyici değildir. Relay, işletmeci görünümü için güncel bloğu okur, ama o okuma başarısız olursa çözümleme null bir blokla yine de başarılı olur. Kozmetik bir sayının bir teslimatı başarısız kılmasına izin verilmez.
Zincir çağrısında sınırlı bir zaman aşımı ve sınırlı bir önbellek ömrü vardır; ikisi de yavaş bir
zincirin asılı kalan bir isteğe değil cache'e bozulması için vardır.
Bu ne değildir
- Aracının kendi kimliği değildir. Tekrarlanıyor, çünkü en olası yanlış okuma budur: relay kendini
bir
did:keyile tanıtır. - Ana ağ hakkında bir iddia değildir. Karşısında çözümleme yapılan zincir Solidus **açık test
- Mesaj içeriklerinin bir bütünlük kanıtı değildir. Nereye yönlendirileceğini demirler; zarfın içinde ne olduğu hakkında hiçbir şeyi değil.
- **Bir mahremiyet özelliği değildir. Çözümleme, relay'in yönlendirirken neyi gözlemlediği hakkında hiçbir şey söylemez: o, bir aracının görebildikleri ve göremedikleri sayfasıdır.
Görmek
Çözümlemeler, kimlik doğrulaması gereken işletmeci düzleminde /v1/resolutions adresinde açılır:
curl -s -o /dev/null -w '%{http_code}\n' https://relay.solidus.network/v1/mediations
# 401
Bir anahtar için relay.solidus.network adresinde oturum açın. Konsol örnek veri gösterir ve bunu
söyler; oradaki rakamları gerçek ölçüt olarak okumayın.
Relay, Coordinate Mediation 2.0 ve Pickup 3.0 uygular; bağımsız bir DIDComm uygunluk paketi çalıştırılmamıştır, dolayısıyla iddia "uygular"dır, "uygundur" değil.