Skip to content

Bu səhifə avtomatik tərcümə olunub. Səhv görsəniz, info@tamga.network ünvanına yazın.

GUIDE-0009BələdçiQüvvədədirversiya 1.0.016 oktyabr 2026

Uyğunluq testləri ​

Bu bələdçi Tamga-ya qoşulan proqram təminatını (yoxlayan tərəf, rəqəmsal cüzdan, rəqəmsal sənəd vermə xidməti və ya başqa dildə yazılmış kitabxana) hazırlayanlar üçündür.

Nə vaxt oxunmalıdır:

  • Öz kodunuzun Tamga qaydalarına görə düzgün cavab verdiyini göstərmək istədikdə.
  • Qoşulma müraciətindən əvvəl: siyahı və reyestr mərhələlərində yüngül uyğunluq yoxlaması tətbiq olunur; açıq uyğunluq vektorlarından keçmək qoşulmanın texniki şərtidir (Tamga ARF — Trust Framework §2.4).

Necə işləyir? ​

Uyğunluq (conformance)Bir tətbiqetmənin qaydalara uyğun olduğunu göstərən sübut — dərc edilmiş test vektorlarından və yoxlamalardan keçməklə təsdiqlənir. testi iki hissədən ibarətdir:

HissəNədirHarada
Test vektorlarıDondurulmuş giriş + gözlənilən çıxış (JSON)conformance/vectors/
İcraçıVektorları oxuyub @tamga-network/* ilə işə salan və nəticəni gözləntiylə müqayisə edən test dəsticonformance/runner/

Vektorlar eyni zamanda iki tətbiqin eyni cavabı verdiyinin sübutudur: bugünkü imzalı siyahı ilə gələcəkdə açılacaq ortaq reyestr (ledger (ledger)Bir neçə müstəqil operator tərəfindən birgə saxlanan etibar qeydləri jurnalı (icazəli blokçeyn). Tamga bunu yalnız ən azı iki müstəqil operator iştirak etdikdə əlavə edir; bu vaxta qədər imzalanmış etibar siyahıları bu işi görür.) eyni sorğulara eyni cavabı verməlidir; vektorlar həmin sorğuların dondurulmuş formasıdır (ADR-0009 K7).

1. Vektorlar ​

conformance/vectors/
├── VERSION              version of the vector set (any change = version bump)
├── trust/basic.json     signed list set (LOTL, national list, anchor log, roots) + query → expected answer
└── sd-jwt/diploma-basic.json   an issued diploma, its presentation, the root certificate + verification expectations

trust/basic.json etibar sorğularını sınayır. Hər hal bir sorğudan və gözlənilən üçdəyərli cavabdan ibarətdir:

json
{
  "name": "issuer ACTIVE, iat geçerlilik içinde",
  "q": { "op": "isCredentialAcceptable", "issuer_id": "0x8d10…3b64", "iat": 1790812800 },
  "expect": "YES"
}

Sınanan sorğular: isCredentialAcceptable, isCredentialSchemaAcceptable, isRecognizedBy, schemaContentHash, isWalletProviderKey. Siyahı dəstinin yüklənmə hesabatı da (healthy, siyahı versiyası) gözləntiylə müqayisə edilir.

sd-jwt/diploma-basic.json təqdimatın yoxlanmasını sınayır: hansı sahələrin açıldığı, hansıların gizli qaldığı, issuer_id və keçilən addımlar (SPEC-API-0001 A1–A7). Mənfi hallar da var və onların hər biri rədd edilməlidir:

Mənfi halGözlənilən
KB-JWT yoxdurRədd — sənəd sahibinə bağlılıq sübutu məcburidir
Yanlış nonceRədd — təkrar oynatma
iat pəncərəsindən kənar (+301 s)Rədd — zaman pəncərəsi
Təqdim olunmamış disclosure əlavə edilibRədd — uyğun gəlməyən digest
Müddəti bitmiş rəqəmsal sənəd (exp < now)Rədd — A7, müddət

Hər vektor sabit now sahəsi daşıyır; zamandan asılı addımlar hər maşında eyni nəticəni verir.

2. İcraçını işə salmaq ​

sh
git clone https://github.com/tamga-network/tamga-network && cd tamga-network
npm install
npm run conformance        # generates the vectors and runs all the tests

Yalnız işə salmaq üçün npm test kifayətdir (icraçı avtomatik daxildir). Vektorlar npm run conformance:gen ilə yenidən yaradılır; deterministik sahələr sabit now ilə yaradıldığı üçün çıxış yalnız imzalarda dəyişir.

3. Öz kitabxananızı sınamaq ​

TypeScript kodu kanonikdir; digər dillərdəki tətbiqlər (Java, Python, Go…) eyni vektorlarla yoxlanılır (ARCH-0005 P9).

  1. vectors/ qovluğunu olduğu kimi götürün; VERSION dəyərini qeyd edin.
  2. trust/basic.json: input sahəsindəki siyahıları öz kodunuzla yükləyin, kökləri input.root_fingerprints ilə sabitləyin, now anında hər cases[].q sorğusunu icra edin, nəticəni expect ilə müqayisə edin.
  3. sd-jwt/diploma-basic.json: presentation dəyərini aud, nonce və root_cert_pem ilə yoxlayın; nəticə expect ilə eyni olmalıdır. negative[] hallarının hər biri rədd edilməlidir.
  4. Hər hansı halda UNKNOWN gözlənildiyi halda siz NO qaytarırsınızsa, uyğun deyilsiniz: "yoxlanıla bilmədi" ilə "etibarsız" eyni şey deyil (SPEC-API-0001 AP2).

4. Qoşulma zamanı tələb olunan sübut ​

Uyğunluğu öz proqram təminatınızla göstərirsiniz; nəticə hesabatı qeydiyyat müraciətinə əlavə olunur və qeydiyyat qurumu lazım gəldikdə testləri yenidən icra edir (Tamga ARF — Trust Framework §4.3).

RolNə test edilirNecə göstərilir
Sənədi verən qurumNöv təsvirinə uyğun rəqəmsal sənəd, imza və sertifikat zənciri, ləğv siyahısının dərci, rəqəmsal cüzdan sübutlarının yoxlanmasıVektorlarla sınaq rəqəmsal sənədi + nəticə hesabatı
Yoxlayan tərəfİmzalı sorğu, yoxlama addımları, köhnəlmiş siyahıda "yoxlanıla bilmədi", əhatə dairəsindən kənar sahə tələb etməməkVektorlar + öhdəlik testləri + nəticə hesabatı
Cüzdan provayderiRəqəmsal cüzdan qaydaları (açarın qorunması, təsdiq ekranı, tarixçə, silmə), cüzdan və açar sübutu, təqdimat protokoluVektorlar + öhdəlik testləri + cihaz üzərində nümayiş

Öhdəlik testləri ən azı bunları əhatə edir: köhnəlmiş siyahı "yoxlanıla bilmədi" nəticəsini verir; naməlum format versiyasında əməliyyat dayanır; imza xətasında əməliyyat dayanır. Hesabatda proqram təminatınızın versiyasını və keçdiyiniz vektor dəstinin versiyasını (VERSION) göstərin.

Vektorlar qaydaları ayrı-ayrılıqda sınayır; bütün axını (rəqəmsal sənədin alınması, təqdimat, ləğv və dayandırılma) real telefonla test şəbəkəsində yoxlayın (GUIDE-0013).

Qaydalar ​

KodNə deyir
Vektorlarda fərdi məlumatlar yoxdurAdlar uydurmadır; şəxsi açar yoxdur (yalnız sertifikat və sənəd sahibinin açıq açarı)
VersiyaVektor dəyişikliyi = VERSION artımı
ADR-0009 K7Siyahı və reyestr tətbiqləri eyni vektorlardan keçmədən keçid tamamlanmış sayılmır
SPEC-API-0001 AP2INDETERMINATE REJECTED ilə eyni kateqoriyaya salınmır