Skip to Content
ConceptsDecentralized Identifiers

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:7Hk3mRtQZvNxP2bK9wYfJ4eD6cA5sLgR

Dö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>testnet veya mainnet
  • <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 — her did:solidus DID’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çimi invalidDid ile 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’si
  • type — anahtar türü (Solidus için Ed25519VerificationKey2020)
  • 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) // Ed25519VerificationKey2020

DID’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...e4f1

Devre 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)DidCreate iş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ışı)DidDeactivate iş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

Last updated on