@solidus-network/sdk
Ana SDK paketi. createSdk fabrikası, üç isim alanına sahip bir istemci döndürür: did,
credentials ve auth.
import { createSdk } from '@solidus-network/sdk'
const sdk = createSdk({
mode: 'testnet',
rpcUrl: 'https://rpc.solidus.network',
signerPrivateKey: '0xabc...def',
})Yapılandırma
interface SolidusConfig {
mode: 'stub' | 'testnet' | 'mainnet'
rpcUrl?: string // JSON-RPC endpoint URL (testnet/mainnet modes; default http://127.0.0.1:9944)
signerPrivateKey?: string // Hex-encoded Ed25519 private key — only required by did.create()
}mode: 'stub', ağ çağrısı yapılmadan yerel Postgres destekli bir stub’a karşı çalışır (yerel
geliştirme). mode: 'testnet' ve 'mainnet', JSON-RPC üzerinden bağlanır. signerPrivateKey üst
seviyede isteğe bağlıdır — did.create() dışındaki her imzalama işlemi, anahtarını bunun yerine
açık bir çağrı başına argüman olarak alır (ör. credentials.issue({issuerPrivateKey, ...}),
credentials.revoke(id, issuerKey)).
İşlem imzalama, BLAKE3(publicKey || nonce_le || json(payload)) üzerinden Ed25519 kullanır.
Adres türetme, BLAKE3(publicKey)’i hesaplar, ilk 20 baytı alır ve sonucu base58 ile kodlar.
did.create
SDK’nın yapılandırılmış signerPrivateKey’inin sahip olduğu açık anahtar için zincir üzerinde bir
DID kaydeder. signerPrivateKey, sağlanan açık anahtara sahip değilse hata fırlatır — farklı bir
anahtarın imzaladığı bir DID’i aktarmak (relay) için bunun yerine did.buildCreate() +
did.submitCreate() kullanın (ör. bir ön uç yerel olarak imzalar, bir arka uç aktarır).
sdk.did.create(publicKey: string): Promise<DID>Parametreler
| Name | Type | Description |
|---|---|---|
publicKey | string | Hex kodlanmış Ed25519 açık anahtarı (32 bayt) — yapılandırılmış imzalayanla eşleşmelidir |
Döndürür bir DID tanımlayıcısı — {id, controller, created, updated, network} — tam bir
DIDDocument değil. Tam belgeyi almak için did.resolve() kullanın.
Örnek
const did = await sdk.did.create(publicKeyHex)
console.log(did.id)
// "did:solidus:testnet:7Kf9xB2..."
const document = await sdk.did.resolve(did.id)
console.log(document.verificationMethod[0].type)
// "Ed25519VerificationKey2020"did.resolve
Mevcut bir DID’i belgesine çözümler.
sdk.did.resolve(did: string): Promise<DIDDocument | null>Parametreler
| Name | Type | Description |
|---|---|---|
did | string | Çözümlenecek DID (ör. did:solidus:testnet:7Kf9...) |
Döndürür bulunursa DIDDocument’ı, DID mevcut değilse veya devre dışı bırakılmışsa null.
Örnek
const doc = await sdk.did.resolve('did:solidus:testnet:7Kf9xB2...')
if (doc) {
console.log(doc.authentication)
// ["did:solidus:testnet:7Kf9xB2...#key-1"]
} else {
console.log('DID not found')
}did.deactivate
Bir DID’i kalıcı olarak devre dışı bırakır. Devre dışı bırakmadan sonra, did.resolve null
döndürür ve bu DID’e düzenlenmiş herhangi bir kimlik bilgisi artık doğrulanamaz.
sdk.did.deactivate(did: string, signerKey: string): Promise<void>Parametreler
| Name | Type | Description |
|---|---|---|
did | string | Devre dışı bırakılacak DID |
signerKey | string | DID’in mevcut denetleyicisinin hex kodlanmış Ed25519 özel anahtarı |
Örnek
await sdk.did.deactivate('did:solidus:testnet:7Kf9xB2...', signerPrivateKeyHex)
// DID is now permanently deactivatedcredentials.issue
Zincir üzerinde yeni bir doğrulanabilir kimlik bilgisi düzenler.
sdk.credentials.issue(params: IssueCredentialParams): Promise<VerifiableCredential>Parametreler
| Name | Type | Required | Description |
|---|---|---|---|
subjectDid | string | Evet | Kimlik bilgisi konusunun DID’i |
issuerDid | string | Evet | Düzenleyicinin DID’i |
issuerPrivateKey | string | Evet | Düzenleyicinin hex kodlanmış Ed25519 özel anahtarı |
type | string[] | Evet | Kimlik bilgisi türleri (ör. ['VerifiableCredential', 'KYCCredential']) |
claims | Record<string, unknown> | Evet | credentialSubject’e dahil edilecek iddialar |
expiresInDays | number | Hayır | Son kullanmaya kadar geçecek gün sayısı (son kullanma yoksa atlayın) |
network | string | Hayır | Ağ geçersiz kılma ('testnet' veya 'mainnet') |
Döndürür kriptografik bir kanıt eklenmiş bir VerifiableCredential.
Örnek
const credential = await sdk.credentials.issue({
subjectDid: 'did:solidus:testnet:subject123',
issuerDid: 'did:solidus:testnet:issuer456',
issuerPrivateKey: '0xabc...def',
type: ['VerifiableCredential', 'KYCCredential'],
claims: {
level: 2,
country: 'DE',
documentType: 'passport',
verifiedAt: '2026-05-07T12:00:00Z',
},
expiresInDays: 365,
})
console.log(credential.id)
// "urn:uuid:a1b2c3d4-..."
console.log(credential.proof.type)
// "Ed25519Signature2020"credentials.verify
Zincir üzerinde bir kimlik bilgisini kimliğine göre arar ve imzasını, son kullanma tarihini ve iptal durumunu kontrol eder. Kimlik bilgisi nesnesini değil, kimlik bilgisinin kimliğini alır.
sdk.credentials.verify(vcId: string): Promise<VerificationResult>Parametreler
| Name | Type | Description |
|---|---|---|
vcId | string | Doğrulanacak kimlik bilgisi kimliği (ör. credential.id) |
Döndürür genel geçerlilik ve bireysel kontrol sonuçlarına sahip bir VerificationResult. Zincir,
imzaları gönderim sırasında doğrular ve Solidus kimlik bilgileri zincir üzerinde son kullanma
tarihine sahip olmadığından, bulunan herhangi bir kimlik bilgisi için signature ve expiry true
bildirir; revocation geçerli zincir üzerindeki iptal durumunu yansıtır.
interface VerificationResult {
valid: boolean
credentialId?: string
error?: string
checks: {
signature: boolean
expiry: boolean
revocation: boolean
}
}Örnek
const result = await sdk.credentials.verify(credential.id)
if (result.valid) {
console.log('Credential is valid')
console.log('Credential ID:', result.credentialId)
} else {
console.log('Verification failed:', result.error)
console.log('Not revoked:', result.checks.revocation)
}credentials.revoke
Bir kimlik bilgisini kimliğine göre iptal eder. İptal edildikten sonra, credentials.verify
checks.revocation: false döndürür.
sdk.credentials.revoke(credentialId: string, issuerKey: string): Promise<void>Parametreler
| Name | Type | Description |
|---|---|---|
credentialId | string | Kimlik bilgisi kimliği (ör. urn:solidus:credential:...) |
issuerKey | string | Düzenleyicinin hex kodlanmış Ed25519 özel anahtarı |
Örnek
await sdk.credentials.revoke('urn:solidus:credential:...', issuerPrivateKeyHex)
// Credential is now revoked on-chaincredentials.query
Belirli bir DID’e düzenlenmiş tüm kimlik bilgilerini sorgular.
sdk.credentials.query(subjectDid: string): Promise<VerifiableCredential[]>Parametreler
| Name | Type | Description |
|---|---|---|
subjectDid | string | Kimlik bilgilerinin sorgulanacağı DID |
Döndürür bir VerifiableCredential nesneleri dizisi.
Örnek
const credentials = await sdk.credentials.query(
'did:solidus:testnet:subject123'
)
for (const cred of credentials) {
console.log(cred.type, cred.validFrom)
}
// ["VerifiableCredential", "KYCCredential"] "2026-05-07T12:00:00Z"auth.createChallenge
Bir alan adına kapsamlanmış bir kimlik doğrulama meydan okuması oluşturur ve kimliğini düz bir dize
olarak döndürür (testnet/mainnet modunda SDK, meydan okumayı bu kimlikle anahtarlanmış olarak
sunucu tarafında izler).
sdk.auth.createChallenge(domain: string): Promise<string>Parametreler
| Name | Type | Description |
|---|---|---|
domain | string | Meydan okumanın kapsamlandığı güvenen taraf (relying-party) alan adı |
Döndürür meydan okuma kimliğini bir dize olarak.
Örnek
const challengeId = await sdk.auth.createChallenge('myapp.example.com')
sdk.auth, bağımsız@solidus-network/authpaketinincreateChallenge/verifyPresentationfonksiyonlarından (tam birChallengenesnesi döndüren ve açık bir açık-anahtar çözümleyicisi alan) farklı, daha üst seviyeli bir yüzeydir. DID’e bağlı meydan okuma/nonce ayrıntılarına ihtiyacınız varsa, @solidus-network/auth referansına bakın.
auth.verifyPresentation
Zincirden sahibinin DID belgesini çözümleyerek imzayı kontrol eden, imzalanmış bir doğrulanabilir sunumu (bir JSON dizesi olarak) daha önce düzenlenmiş bir meydan okuma kimliğine karşı doğrular.
sdk.auth.verifyPresentation(
vp: string,
challenge: string,
domain: string,
): Promise<AuthResult>Parametreler
| Name | Type | Description |
|---|---|---|
vp | string | JSON dizgesine dönüştürülmüş, imzalanmış VerifiablePresentation |
challenge | string | auth.createChallenge tarafından döndürülen meydan okuma kimliği |
domain | string | Güvenen taraf alan adı |
Döndürür bir AuthResult:
interface AuthResult {
valid: boolean
did?: string
claims?: Record<string, unknown>
error?: string
}Örnek
const result = await sdk.auth.verifyPresentation(
JSON.stringify(signedPresentation),
challengeId,
'myapp.example.com',
)
if (result.valid) {
console.log('Authenticated as:', result.did)
} else {
console.log('Auth failed:', result.error)
}