Verify'ın düzenlediği bir kimlik belgesini başka bir zincire aktarma ve Solidus'un yolda neleri denetlediği
Bir aktarım, tek bir kimlik belgesinin durumunu tek bir hedef zincirdeki tek bir hesaba kopyalar; böylece oradaki bir sözleşme onu okuyabilir. Bu sayfa bir aktarımı sahibin tarafından izler ve her denetimi adlandırır. Kimlik belgesi durumu köprüsü nedir sayfası bir durumun neden yol alması gerektiğini anlatır, veriyi görmeden bir koşulu denetleyin sayfası bir sözleşmenin onu nasıl okuduğunu gösterir. Buradaki her şey test ağlarında çalışır.
Başlamadan önce
- Verify'ın düzenlediği bir kimlik belgesi. Verify yalnızca kendi düzenlediğini aktarır. Solidus iptal edilmiş bir belgeyi reddeder.
- Hedefte kontrol ettiğiniz bir hesap. Sahip anahtarı cüzdan hesabınızdır. Sepolia, Fuji, Arc ve Solana devnet bugün kimlik belgesi kabul eder.
- Onayı imzalayan bir cüzdan. EVM cüzdanları türlenmiş veri (typed data) imzalar. Solana cüzdanları ham bayt imzalar.
- Solidus Identity. DID anahtarınızı tutar ve kimlik belgesinin sizin olduğunu kanıtlar.
Adımlar
- Bir kimlik belgesi seçin. Aktarım sayfası Verify'dan tek kullanımlık bir meydan okuma (challenge) alır ve sizi Solidus Identity'ye yönlendirir. Identity, anahtarınızla onun üzerinde bir kanıt imzalar ve adresteki
#işaretinden sonra geri döndürür; bir tarayıcı bunu hiçbir zaman sunucuya göndermez. Sayfa kanıtı beş dakika geçerli sayar. - Bir hedef seçin. Sayfa kimlik belgesi taşıyan zincirleri listeler. Ayna sözleşmesi olmayan bir zincir seçilemez.
- Onayı cüzdanınızda onaylayın.
- Gönderin. Sayfa Verify'a gönderir; Verify de düzenleyen olarak Solidus'a iletir. Tarayıcınız hiçbir Solidus işlemi göndermez.
Verify sırasıyla şunları denetler: kanıt meydan okumayla eşleşiyor, sunan kişi kimlik belgesinin öznesi, belgeyi bu Verify düzenledi (aksi hâlde issuer_not_served), hedef kayıtlı ve onay geçerli. Solidus önemli denetimleri yineler ve aynı sahip ve alan için tekrarlanan bir aktarımı reddeder.
İstek, salt okunur Bridge API'de değil, Verify üzerindeki POST /v1/bridge/exports yoludur. Gövde tam olarak şu alanları alır:
presentationvechallenge: Identity'nin verdiği kanıt ve imzaladığı meydan okuma.credentialIdvedomain: kimlik belgesi ve hedef (EVM'de zincir kimliği).holder:0xartı 64 onaltılık karakter: EVM'de adresiniz sıfırlarla doldurulmuş hâlde, Solana'da genel anahtarınız.validUntil: hedefin aktarımı geçerli saymayı bıraktığı an, Unix saniyesi olarak. Sıfır, süresiz demektir.consentSignatureveconsentExpiry: imzanız ve ne zaman sona erdiği.
Ne imzalıyorsunuz ve neden
Onay şunu söyler: bu kimlik belgesi, bu hesaba, bu zincirde, şu ana kadar. EVM'de cüzdanınız, alanı SolidusBridge, sürümü 1 olan ve hedefin zincir kimliğine ve ayna sözleşmesine bağlı bir EIP-712 türlenmiş verisi imzalar. Solana'da aynı değerleri ayna programına bağlayan baytları imzalar. Başka hiçbir şey imzalanmaz.
{
"domain": {
"name": "SolidusBridge",
"version": "1",
"chainId": 11155111,
"verifyingContract": "0x0a5a0d19206f436d67B7b87BF4c889d5b769517A"
},
"primaryType": "ExportConsent",
"message": {
"credentialId": "urn:solidus:credential:EXAMPLE",
"domain": 11155111,
"holder": "0x0000000000000000000000001111111111111111111111111111111111111111",
"consentExpiry": "1900000000"
}
}
Bu, @solidus-network/bridge 0.2.0 paketinden exportConsentTypedData çıktısıdır; yer tutucu değerlerle, çevrimdışı ve types listesi olmadan çalıştırıldı. Sayfa imzalanan veriyi size gösterdiği değerlerden kurar.
Sayfa son kullanma zamanını 15 dakika ileriye koyar. Verify ve Solidus, süresi dolmuş bir onayı ve sahip anahtarından gelmeyen bir imzayı reddeder. Bağlayıcı olan Solidus'un denetimidir. Hedef ve ayna imzalanan verinin içindedir; bu yüzden bir zincir için verilmiş onay başka bir zincirde başarısız olur. Hedef sözleşmeler onu hiç görmez. Hedef, imzalanan şeyin içindedir sayfası aynı fikri doğrulayıcı imzaları için anlatır.
Bir aktarımı izleyin
Verify, txHash ve exportId ile 202 döndürür. 202, Solidus'un işlemi kabul ettiği anlamına gelir; hedefin onu uyguladığı anlamına gelmez. Aktarım kimliği, kimlik belgesi kimliğinin, alanın ve sahibin keccak256 hash'idir ve npm paketindeki exportId() onu hesaplar.
GET /v1/credentials/{exportId} (API başvurusu) sahibi, iki hash'i, status, validUntil ve lastMessageId alanlarını, başkalarının yanında, döndürür. Köprünün henüz okumadığı bir kimlik, export_not_found koduyla 404 döndürür. Durum, köprünün Solidus'tan okuduğu en yeni mesajı izler; bu yüzden hedefin uygulayıp uygulamadığını görmek için lastMessageId değerine bakın. Kimlik belgeleri sayfası oturum açmış bir sahibin aktarımlarını listeler. Durum sayfası zincir başına iletim sağlığını gösterir.
Durum dört değerden biridir:
- active. Bir kapı geçebilir.
- revoked. Belgeyi veren iptal etti. İptal edilmiş durum, aktarımın etkin olduğu her hedef için aynı Solidus bloğunda kuyruğa alınır. İmzalama, iletim ve uygulama ardından gelir.
- expired. Mesaj biçiminde var. Bir kapı da
validUntilgeçince expired bildirir. Solidus kodu yalnızca active, revoked ve unbound yazar. - unbound. Aktarım geri alındı.
Hedef ne öğrenir
Bir durum mesajı bir aktarım kimliği, verenin hash'i, belge türünün hash'i, sahip anahtarı, bir durum, bir son kullanma zamanı ve verenin yetkili olup olmadığını gösteren bir bayrak taşır; hepsi 18 baytlık bir başlığın altında. Hiçbir DID, hiçbir kimlik belgesi kimliği, hiçbir beyan ve hiçbir doküman taşımaz.
Hash'ler tahmin edilebilir. Veren hash'i verenin DID'inin keccak256 değeridir, tür hash'i ise türün adının keccak256 değeridir. Az sayıda veren ve tür var, bu yüzden herkes olası olanları hash'leyip karşılaştırabilir. Hedef, bu adresin bu verenden bu türde bir belgeye sahip olduğunu öğrenir ve zincirin geçmişi bunu saklar. Onayın var olma nedeni budur: bağın herkese açık olup olmayacağına siz karar verirsiniz.
Geri alın
Bir aktarımın geri alınması, belgeyi vereni aktarımı bağlı değil (unbound) olarak işaretlemeye çağırır. İstek, Verify üzerindeki POST /v1/bridge/unexports yoludur ve presentation, challenge, credentialId, domain ve holder alanlarını taşır. Yeni bir onay gerektirmez ama Identity'den yeni bir kanıt gerektirir; bu yüzden yalnızca belgenin öznesi isteyebilir. Solidus bunu yalnızca etkin bir aktarım için kabul eder ve unbound bir durumu kuyruğa alır. Bir kapı bundan sonra etkin değil bildirir. Ayna kaydını değiştirir ve zincirin günlüğü önceki olayı tutar. Aynı hesaba yeni bir onayla yeniden aktarabilirsiniz. SSS iptali, güvenlik mekanizmaları kapsar.
Tek komutla görün
Bridge API'den var olmayan bir aktarımı isteyin:
curl -sL -A 'Mozilla/5.0' -w '\nHTTP %{http_code} %{content_type}\n' \
https://bridge.solidus.network/v1/credentials/0x0000000000000000000000000000000000000000000000000000000000000000
{"type":"about:blank","title":"export not found","status":404,"code":"export_not_found","detail":"no export 0x0000000000000000000000000000000000000000000000000000000000000000"}
HTTP 404 application/problem+json; charset=utf-8
Sonra aktarabileceğiniz zincirleri listeleyin; functions alanı credentials içerenler:
curl -sL https://bridge.solidus.network/v1/routes \
| jq -c '.chains[] | select(.functions | index("credentials")) | {key, domain, vm}'
# {"key":"sepolia","domain":11155111,"vm":"evm"}
# {"key":"fuji","domain":43113,"vm":"evm"}
# {"key":"arc","domain":5042002,"vm":"evm"}
# {"key":"solana","domain":1399811151,"vm":"svm"}
İki çıktı da 2026-10-08 tarihlidir. Dördü de test ağıdır.
Okumaya devam edin
- Hedef, imzalanan şeyin içindedir; bu yüzden bir imza başka bir zincirde yeniden kullanılamaz
- Doğrulayıcıların bir durum mesajını nasıl imzaladığı ve bir ağ geçidinin onu başka bir zincire nasıl ilettiği
- Ayna sözleşmesini Solidity, TypeScript ve komut satırından okuyun
- Bir veren bir kimlik belgesini iptal ettiği an ile başka bir zincirdeki bir sözleşmenin onu reddettiği an arasında ne olur