Kontekst
İş infrastrukturunun qurulmasında (2026-09-27) məqsəd bu idi: müştərilər beta-ya və ya zəncirə birbaşa deyil, ortaq şəxsiyyət/etibar interfeysinə qoşulur. Tamga-da bu interfeys artıq mövcuddur: TrustSource (ADR-0009 K3, BT4) — Faza B-də imzalı etibar siyahıları (trust list)Bir ölkənin kök sertifikatlarının, sənədi verən qurumlarının və qeydiyyatlı yoxlayan tərəflərinin imzalanmış siyahısı. Bu gün Tamga-da etibar bu siyahılara əsaslanır; ortaq jurnal (ledger) sonra gələcək. (ListTrustSource), Faza 0-da zəncir (ChainTrustSource). Beta verilənlər bazası deyil, imzalı siyahı fayllarıdır; müştərilər (rəqəmsal cüzdan) verilənlər bazasına ümumiyyətlə qoşulmur, servislərlə standart protokollar (OpenID4VCI (OpenID for Verifiable Credential Issuance)Sənədi verən qurumun rəqəmsal sənədi rəqəmsal cüzdana çatdırmaq üçün istifadə etdiyi protokol./VP) vasitəsilə əlaqə qurur.
Araşdırma zamanı aşkar edilən yeganə kənarlaşma rəqəmsal cüzdan tərəfindədir. @tamga-network/trust node:fs, jose və zod-a əsaslandığı üçün Expo/React Native-də istifadə olunmur; S-13-ün bağlanması zamanı eyni yoxlama wallet-core-a ayrıca yazıldı. Hazırda siyahını interfeysdən kənarda şərh edən yerlər:
| Fayl | Nə edir |
|---|---|
packages/wallet-core/src/trustlist.ts | lotl.jws + tl-<cc>.jws imza yoxlaması, next_update, geri sarma (ayrıca reallaşdırma) |
packages/wallet-core/src/directory.ts | issuers[] xam sahələrini (issuer_url, schema_authorizations, category) oxuyub qurum kataloqu yaradır |
packages/wallet-core/src/oid4vp.ts (fetchRpRecord) | relying_parties[]-dən RP qeydini seçir |
Servislər (apps/verify, apps/issuer (operator anbarı), apps/id) interfeys üzərindən keçir (faylı oxuyub loadTrustSet-ə ötürür).
Risk: iki yoxlama reallaşdırması zamanla bir-birindən ayrılır (məs. TL12 yoxlama nöqtəsi, yeni sahələr); Faza 0-da rəqəmsal cüzdan zəncir mənbəyinə keçə bilmir, çünki siyahı formatına bağlıdır.
Qərar
- K1 — Daşına bilən nüvə.
@tamga-network/trustyoxlama məntiqi (JWS yoxlaması, siyahı qaydaları,TrustStore,TrustSourcesorğuları)node:fs/jose/zodtələb etməyən alt yola ayrılır:@tamga-network/trust/core(imza@noble/curves, sxem yoxlaması əl ilə və ya yüngül vasitə ilə). Node ilə uyğun mövcud giriş nöqtəsi (fs.ts,guardedReload) əsas yolda qalır. - K2 — Müştəri mənbəyi.
wallet-coretrustlist.ts/directory.ts/fetchRpRecordəvəzinətrust/core-dan birHttpListTrustSource(HTTP ilə yükləyən, daxili pin ilə yoxlayan) istifadə edir; qurum kataloqu və RP (Relying Party)Yoxlayan tərəf üçün qısaltma: rəqəmsal sənədləri tələb edən və yoxlayan təşkilat. qeydiTrustSourcesorğularından (issuers(),relyingParty()) gəlir. - K3 — Faza 0, eyni interfeys.
ChainTrustSourceservislərdə birbaşa; rəqəmsal cüzdanda isə birbaşa RPC əvəzinə eyni interfeysin arxasında (siyahı güzgüsü və ya yüngül indeksləyici) — rəqəmsal cüzdanın kodu dəyişmir.
Əsaslandırma / alternativlər
- Mövcud vəziyyəti saxlamaq: ən az iş tələb edir, lakin BT4-ün ruhuna ziddir və Faza 0 keçidində rəqəmsal cüzdanı ayrıca yenidən işləməyi tələb edir.
- Rəqəmsal cüzdana node polyfill-ləri:
jose/zodRN-də qismən işləyir, lakinnode:fsvə paket ölçüsü problem yaradır; kövrək həlldir. - Ayrıca "identity servisi" (server tərəfində etibar proxy-si): rəqəmsal cüzdanın hər etibar sualını Tamga serverinə ünvanlaması izlənilmə imkanı yaradır (hansı qurumu nə vaxt soruşduğu) — məxfilik prinsipinə ziddir; rədd edilir.
Dəyişməzlər
| # | Dəyişməz qayda |
|---|---|
| TS1 | Hər müştəri və servis etibar sualını yalnız TrustSource interfeysi vasitəsilə verir; siyahı/zəncir formatı interfeysdən kənarda şərh edilmir (BT4-ün müştərilərə şamil edilməsi). |
| TS2 | Siyahı yoxlama qaydaları yalnız bir reallaşdırmada saxlanılır (trust/core); başqa paket onların surətini saxlamır. |
| TS3 | Müştəri etibar sualı üçün Tamga-ya istifadəçi ilə əlaqələndirilə bilən sorğu göndərmir; siyahılar toplu şəkildə yüklənir. |
Keçid planı
trust/corealt yolunu ayır; mövcudtrusttestləri +conformance/vektorları hər iki giriş nöqtəsində uğurla keçsin.HttpListTrustSource+ daxili pin;wallet-coretestlərini (trustlist.test.ts7 test) yeni mənbəyə köçür.directory.tsvəfetchRpRecord-uTrustSourcesorğularına keçir; köhnətrustlist.ts-u sil.- Metro iOS paket sınağı (ölçü,
@noble/*uyğunluğu); cihaz testi. - Faza 0:
ChainTrustSourceilə eyni müqavilə testləri.
Status
Accepted — 2026-09-27. DECISIONS: D-TRUST-1.
Tətbiq: yuxarıdakı keçid planı.