Dokümantasyon

Safe Guard

Safe Guard bir Safe çoklu imza cüzdanını korur: bir işlem ancak onaylayıcılarınız telefonlarında onayladıktan sonra çalışır. Her telefon ham işlemi kendisi okur, ne yaptığını gösterir (tutarlar, tam adresler, riskler) ve yalnızca Face ID'si ya da parmak iziyle açılan bir anahtarla imzalar. Safe'inizdeki Touchque guard bu imzaları zincirde kontrol eder ve yeterince imzası olmayan işlemi reddeder. Touchque onay verebilecek hiçbir anahtarı tutmaz.

Varsayılan olarak kapalı. Safe Guard'ı bir sahip panelde Organization → Features altında açar. Guard sözleşmesinin dış denetimi bitene kadar Safe yalnızca test ağlarına (Sepolia) eklenebilir; panel, Touchque guard'ının kurulu olduğu ağları listeler.
Kurulum

Panel → Developers → Safe Guard. Kurulum rehberi şu adımlardan geçer:

  1. Your Safe. Elinizdeki bir Safe (adresini yapıştırın; Safe{Wallet}'ın sep:0x… biçimi de olur) ya da panelden yeni bir tane.
  2. Approvers and rules. Onaylayacak kişiler: Touchque uygulaması bir kripto anahtarı oluşturmuş üyeler. Bir işlemin kaç onaya ihtiyacı olduğu; guard'ın kendisindeki değişiklikler için daha yüksek bir sayı ve bekleme süresi.
  3. Address book (optional). Ödeme yaptığınız adreslere zincirde tutulan adlar. Adres kilidi açıkken ödemeler ve harcama izinleri yalnızca defterdekilere gider; başka her şey guard değişikliği sayılır (daha yüksek sayı ve bekleme süresi).
  4. Install the guard. Safe'in sahipleri kurulum çağrılarını ve setGuard'ı imzalar: panelden tarayıcı cüzdanıyla, bir öneriyi zincir dışında imzalayarak ya da çağrıları Transaction Builder'a yapıştırarak.
  5. Test approval (optional). Bir onaylayıcının telefonuna, orada çözülmüş halini görmek için bir deneme işlemi.

Sonrasında sayfanın dört sekmesi vardır: Safes (zincir durumu, onaylayıcılar, zincirde bekleyen değişiklikler), Address book, Approvals (her istek ve yanıtı) ve Policy (Touchque'nin kendi limitleri).

Sunucunuzdan

Sunucunuz ham Safe işlemini bir onaylayıcının telefonuna gönderir, onayı bekler, onu kendi işlemine ve guard'daki onaylayıcı anahtarına göre kontrol eder ve execTransaction imzalarına ekler. Telefon yalnızca ham alanları alır ve kendisi çözer; bu yüzden değiştirilmiş bir web sayfası ya da sunucu, telefonun gösterdiğini değiştiremez.

Diğer sunucu SDK'larında aynı çağrılar kendi adlandırmalarıyla vardır: her SDK'nın README'sindeki Safe Guard bölümüne bakın. type tanımladığınız bir işlem türüdür (bkz. İşlem türleri).
const { Touchque, verifySafeApproval, withSafeApprovals } = require('@touchque/node');
const tq = new Touchque(); // TQ_API_KEY / TQ_API_SECRET ortamdan

// 1. Onaylayıcının telefonuna sorun (her zaman biyometriyle)
const { requestId } = await tq.safeGuard.request({
  externalUsername: 'treasurer@acme.com',
  type: 'SAFE_PAYMENT',               // tanımladığınız bir işlem türü
  safeTx: {
    chainId: 11155111, safe: SAFE, guard: GUARD,
    tx: { to, value: '0', data, operation: 0, nonce: 42 },
    config: { threshold: 2, govThreshold: 3, govDelay: 172800, exitDelay: 259200 },
    batchTargets: [MULTI_SEND_CALL_ONLY],
    approverIndex: 0,                 // bu kişinin guard'daki sırası
  },
});

// 2. Telefonun yanıtını bekleyin (reddedilirse ya da süresi dolarsa hata fırlatır)
const status = await tq.safeGuard.waitForApproval({ requestId });

// 3. Onayı kendi işleminize ve guard'daki onaylayıcı anahtarına göre kendiniz doğrulayın: verifySafeApproval
// 4. Onayları execTransaction imzalarına ekleyin: withSafeApprovals(ownerSignatures, approvals)