Merkeziyetsiz Tanımlayıcılar
Merkeziyetsiz Tanımlayıcı (DID), temsil ettiği kişi veya kuruluş tarafından — herhangi bir merkezi otorite tarafından değil — sahiplenilen ve kontrol edilen, küresel olarak benzersiz bir tanımlayıcıdır. Solidus DID’leri W3C DID Core spesifikasyonunu izler ve Solidus blok zincirine kaydedilir.
DID Biçimi
Her Solidus DID’i şu biçimdedir:
did:solidus:<network>:<address>Örneğin:
did:solidus:testnet:7Hk3mRtQZvNxP2bK9wYfJ4eD6cA5sLgRDört parça şunlardır:
did— URI şeması (W3C standardı tarafından gereklidir)solidus— kayıt defteri olarak Solidus ağını tanımlayan DID metodu<network>—testnetveyamainnet<address>— açık anahtardan türetilen, base58 kodlu bir adres
2026-07-21’de düzeltildi. Bu sayfa daha önce ağ bölümü olmayan, üç bölümlü bir biçim gösteriyordu:
did:solidus:<address>. Bu biçim, ne SDK tarafından hiçbir zaman üretilmiş ne de zincir tarafından kabul edilmiştir — herdid:solidusDID’i bir ağ bölümü taşır. Eski örneğe göre yazılan kod, DID’leri yanlış ayrıştırıyordu ve Universal Resolver sürücüsü üç bölümlü biçimiinvalidDidile reddeder.
Anahtar Türetimi
Bir Solidus DID’indeki adres, bir Ed25519 açık anahtarından şu süreçle türetilir:
Ed25519 public key (32 bytes)
↓
BLAKE3 hash (32 bytes)
↓
Take first 20 bytes
↓
Base58 encode
↓
did:solidus:<network>:<result>Bu determiniktir — aynı açık anahtar her zaman aynı DID’i üretir. BLAKE3 hash’i, adresleri kompakt tutarken çakışma direnci sağlar.
DID Belgesi
Her DID’in zincir üzerinde saklanan, ilişkili bir DID Belgesi vardır. Belge, DID ile ilişkili açık anahtarları, kimlik doğrulama yöntemlerini ve yetenekleri tanımlar.
Eksiksiz bir DID Belgesi aşağıdadır:
{
"@context": [
"https://www.w3.org/ns/did/v1",
"https://w3id.org/security/suites/ed25519-2020/v1"
],
"id": "did:solidus:testnet:7Hk3mRtQZvNxP2bK9wYfJ4eD6cA5sLgR",
"verificationMethod": [
{
"id": "did:solidus:testnet:7Hk3mRtQZvNxP2bK9wYfJ4eD6cA5sLgR#key-1",
"type": "Ed25519VerificationKey2020",
"controller": "did:solidus:testnet:7Hk3mRtQZvNxP2bK9wYfJ4eD6cA5sLgR",
"publicKeyMultibase": "z6MkhaXgBZDvotDkL5257faiztiGiC2QtKLGpbnnEGta2doK"
}
],
"authentication": [
"did:solidus:testnet:7Hk3mRtQZvNxP2bK9wYfJ4eD6cA5sLgR#key-1"
],
"assertionMethod": [
"did:solidus:testnet:7Hk3mRtQZvNxP2bK9wYfJ4eD6cA5sLgR#key-1"
]
}Belge Alanları
@context — kelime dağarcığını tanımlayan JSON-LD bağlamı. Solidus, W3C DID v1 bağlamını ve Ed25519 2020 kriptografi paketini kullanır.
id — DID’in kendisi.
verificationMethod — bu DID ile ilişkili açık anahtarların bir dizisi. Her yöntemin şunları vardır:
id— bu belirli anahtarı tanımlayan bir parça (fragment) URI’sitype— anahtar türü (Solidus içinEd25519VerificationKey2020)controller— bu anahtarı kontrol eden DID (genellikle aynı DID)publicKeyMultibase— multibase biçiminde kodlanmış açık anahtar
authentication — bu DID olarak kimlik doğrulamak için kullanılabilecek doğrulama yöntemlerine referanslar. Giriş akışlarında ve meydan okuma-yanıt protokollerinde kullanılır.
assertionMethod — kimlik bilgilerini imzalamak için kullanılabilecek doğrulama yöntemlerine referanslar. Bu DID, Doğrulanabilir Kimlik Bilgileri düzenlediğinde kullanılır.
DID İşlemleri
Oluşturma
Bir DID oluşturmak, onu bir DidCreate işlemi aracılığıyla Solidus blok zincirine kaydeder. Bu, tek seferlik, geri alınamaz bir işlemdir.
import * as ed25519 from '@noble/ed25519'
import { createSdk } from '@solidus-network/sdk'
// Generate keys
const privateKey = ed25519.utils.randomPrivateKey()
const publicKey = await ed25519.getPublicKeyAsync(privateKey)
const privateKeyHex = Buffer.from(privateKey).toString('hex')
const publicKeyHex = Buffer.from(publicKey).toString('hex')
// Create SDK instance
const sdk = createSdk({
mode: 'testnet',
chain: {
rpcUrl: 'https://rpc.solidus.network',
signerPrivateKey: privateKeyHex,
network: 'testnet',
},
})
// Create the DID
const did = await sdk.did.create(publicKeyHex)
console.log(did.id)
// did:solidus:testnet:7Hk3mRtQZvNxP2bK9wYfJ4eD6cA5sLgR
console.log(did.transactionHash)
// 0x3a8f...c7d2İşlem ağa gönderilir, bir bloğa dahil edilir ve 3 zincirlik onaydan sonra (yaklaşık 7,5 saniye) kesinleşir.
Çözümleme
Bir DID’i çözümlemek, DID Belgesini zincirden alır. Bu, bir işlem gerektirmeyen, salt okunur bir RPC sorgusudur.
const document = await sdk.did.resolve('did:solidus:testnet:7Hk3mRtQZvNxP2bK9wYfJ4eD6cA5sLgR')
console.log(document.id)
// did:solidus:testnet:7Hk3mRtQZvNxP2bK9wYfJ4eD6cA5sLgR
console.log(document.verificationMethod[0].type)
// Ed25519VerificationKey2020DID’leri doğrudan JSON-RPC uç noktası aracılığıyla da çözümleyebilirsiniz:
curl -X POST https://rpc.solidus.network \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "solidus_didResolve",
"params": ["did:solidus:testnet:7Hk3mRtQZvNxP2bK9wYfJ4eD6cA5sLgR"],
"id": 1
}'Devre Dışı Bırakma
Bir DID’i devre dışı bırakmak, onu artık aktif değil olarak işaretler. Bu geri alınamaz bir işlemdir — devre dışı bırakıldıktan sonra DID, kimlik bilgilerini imzalamak veya kimlik doğrulamak için kullanılamaz. Bu DID tarafından düzenlenmiş mevcut kimlik bilgileri doğrulanabilir kalır, ancak düzenleyicinin devre dışı bırakıldığını gösterir.
const result = await sdk.did.deactivate(did.id)
console.log(result.deactivated)
// true
console.log(result.transactionHash)
// 0x9b2c...e4f1Devre dışı bırakmadan sonra, DID’i çözümlemek boş bir verificationMethod dizisi ve bir deactivated: true bayrağı içeren bir belge döndürür.
DID Yaşam Döngüsü
Bir DID şu durumlardan geçer:
Created → Active → Deactivated- Created (Oluşturuldu) —
DidCreateişlemi gönderildi ancak henüz kesinleşmedi - Active (Aktif) — DID zincir üzerindedir ve kimlik doğrulama ile kimlik bilgisi düzenleme için kullanılabilir
- Deactivated (Devre Dışı) —
DidDeactivateişlemi kesinleşti; DID artık hiçbir şey imzalayamaz
Mevcut protokol sürümünde bir DID Belgesi için bir “güncelleme” işlemi yoktur. Anahtarları döndürmeniz gerekiyorsa, yeni bir DID oluşturur ve kimlik bilgilerinizi taşırsınız.
Güvenlik Hususları
Özel anahtar yönetimi. Özel anahtar, sahipliğin tek kanıtıdır. Kaybedilirse, DID kurtarılamaz. Çalınırsa, bir saldırgan DID sahibinin kimliğine bürünebilir. Özel anahtarları güvenli enklavlarda, donanım cüzdanlarında veya şifrelenmiş depolamada saklayın.
Anahtar döndürme. Mevcut protokol sürümü, bir DID Belgesine anahtar ekleme veya çıkarmayı desteklemez. Anahtar döndürme, yeni bir DID oluşturmayı ve kimlik bilgilerinin yeniden düzenlenmesini gerektirir. Bu, ilk protokol sürümü için bilinçli bir basitlik ödünleşimidir.
DID ilişkilendirmesi. Bir DID, kalıcı, herkese açık bir tanımlayıcıdır. Aynı DID’i birçok hizmette kullanmak, bu hizmetlerin etkinliğinizi ilişkilendirmesine olanak tanır. Gizlilik açısından hassas kullanım durumları için, farklı bağlamlarda farklı DID’ler kullanmayı düşünün.
Sonraki Adımlar
- Doğrulanabilir Kimlik Bilgileri — DID’inizi kullanarak kimlik bilgisi düzenleyin ve doğrulayın
- Başlarken — kod örnekleriyle uygulamalı hızlı başlangıç
- Mimari — DID’lerin Sparse Merkle Tree’de nasıl saklandığı