Solidus Bridge testnet ağında çalışıyor. Burada görünen her şey test verisidir, parasal değeri yoktur.

Doğrulayıcıların bir durum mesajını nasıl imzaladığı ve bir ağ geçidinin onu başka bir zincire nasıl ilettiği

Solidus Bridge kendi taşıma katmanında çalışır. Doğrulayıcılar her mesajı imzalar ve bir ağ geçidi iletir. Yolda dışarıdan bir mesajlaşma ağı yoktur. Kimlik belgesi durumu köprüsü nedir sayfası genel bakışı verir. Hedef, imzalanan şeyin içindedir sayfası imzalanan baytları kapsar.

Beş durakta yol

  1. Kuyruk. Bir aktarım, aktarımın geri alınması, bir iptal ya da belgeyi verenin yetki durumundaki bir değişiklik, etkilediği her hedef için aynı Solidus bloğunda bir mesajı kuyruğa alır. Blok sonunda zincir, sırası gelen her hedef için ayrıca bir kalp atışı kuyruğa alır. Her mesaj, hedefi için bir sonraki sıra numarasını alır; sayım 1 numarasından başlar. Henüz hiçbir şey imzalanmaz ya da iletilmez.
  2. İmzala. Blok saklandıktan sonra her doğrulayıcı, kuyruktaki her mesaj için kendi tasdik anahtarıyla, konsensüs anahtarlarından ayrı olarak, bir özet imzalar. Bir doğrulayıcı yalnızca kendi imzasını sunar; bunu solidus_getBridgeAttestation RPC yöntemiyle yapar.
  3. Topla. Ağ geçidi ayrı bir süreçtir. Her doğrulayıcıdan imzasını ister, her imzadan imzalayanı geri kazanır ve doğrulayıcının bildirdiği adı yok sayar. Yalnızca yapılandırılmış bir doğrulayıcıya geri çözülen imzaları tutar, bunlardan eşik kadarını ister ve imzalayan adresine göre sıralar. Hiçbir tasdik anahtarı tutmaz, bu yüzden imza üretemez.
  4. Gönder. Ağ geçidi hedef ayna sözleşmesinde submit(message, signatures) çağırır; her seferinde tek bir sıra numarasıyla, hiçbir zaman öne atlamadan. Ayna tek bir işlemde sırayı denetler, her imzalayanı geri kazanır, bilinen doğrulayıcılardan eşik kadarını ister ve durumu saklar.
  5. Bildir. Ağ geçidi her aynayı uygulanma olayları için izler ve blok o zincirin kuralına göre kesinleştikten sonra bunları Bridge API'ye sunar.

2026-10-08 tarihinde canlı API dört doğrulayıcı ve 3 eşik bildirdi; Sepolia, Fuji ve Arc aynalarının her biri threshold() çağrısından 3 döndürdü.

Her zaman damgası ne anlama gelir

GET /v1/messages/{id} bir durum ve beş zaman damgası bildirir. Altıncı bir durum olan waiting_for_sequence, aynı hedef için daha önceki bir mesajın henüz uygulanmadığı anlamına gelir.

Zaman damgası Neyi kaydeder Kaynak
queued Mesajı kuyruğa alan Solidus bloğu Zincir zamanı
committed Yüksekliği ya da daha yükseğini kapsayan kesinleşme kanıtına sahip blok Zincir zamanı
signed API'nin geçerli imzaların eşiğini ilk gördüğü an Gözlem zamanı
delivered Ağ geçidinin, kesinleştikten sonra uygulanma olayını ilk gördüğü an Gözlem zamanı
applied delivered ile aynı an Gözlem zamanı

submit tek bir işlemde doğrular ve uygular, bu yüzden delivered, yapısı gereği applied değerine eşittir. 2026-10-08 tarihinde son 50 mesajdan 50 tanesinde (hepsi kalp atışı) committed, queued değerine milisaniyesine kadar eşitti.

signed yalnızca API'nin yoklama sıklığı kadar ince çözünürlüktedir, bu yüzden ondan bir imzalama gecikmesi hesaplamayın. delivered ve applied, hedef bloktan zincirin kesinleşme beklemesi kadar geride kalır. 2026-10-08 tarihinde (UTC) blok zamanı ile applied karşılaştırması: Sepolia 1274, 16:04:24 ve 16:20:48; Sepolia 1276, 16:25:12 ve 16:40:02; Fuji 1016, 16:43:43 ve 16:44:31. Ağ geçidi bir Sepolia bloğunu finalized etiketini taşıdığında, bir Fuji bloğunu ise bir onaydan sonra sayar.

Neden herkes iletebilir

Aynanın submit işlevi hiçbir çağıranı sınırlamaz. EVM sözleşmesinde sahip denetimi yoktur ve Solana devnet programı her ücret ödeyenini kabul eder. Yetki imzalardadır: en az eşik kadar ayrı, bilinen doğrulayıcının, artan imzalayan sırasıyla, bu aynanın hedefine ve bir sonraki sıra numarasına bağlı bir özet üzerinde attığı imzalar.

Bir yabancının herkese açık iki şeye ihtiyacı var. İmzalar GET /v1/attestations/{domain}/{seq} yolundan gelir. Mesaj baytları, https://rpc.solidus.network adresindeki Solidus RPC yöntemi solidus_getBridgeMessages ile gelir. Bunların keccak256 hash'i messageId değeridir; cast keccak bunu 2026-10-08 tarihinde Sepolia 1274 için doğruladı. İmza yolu Bridge API başvurusunda listelenir.

İki taraf aynı mesajı gönderirse ikinci çağrı geri alınır, çünkü sıra numarası ilerlemiştir. Ağ geçidi durursa bir mesaj gecikir ve hiçbir şey sahtelenmez, çünkü ağ geçidi imza atabilecek bir anahtar tutmaz.

Bir duraksama nasıl görünür

Duran bir ağ geçidi güvene değil zamana mal olur. Ağ geçidi kapalıyken:

  • Her ayna uyguladığı son durumu tutar; bu yüzden o zamandan beri değişmiş bir durum hâlâ eski haliyle okunabilir.
  • Mesajlar her hedef için sıkı sırayla uygulanır. Bekleyen tek bir mesaj, orada kendisinden sonraki her mesajı, kalp atışları dahil, geride tutar. Diğer hedefler yoluna devam eder.
  • Kalp atışları durur. Kütüphaneyle kurulmuş bir kapı, son uygulanan kalp atışı entegrasyon yapanın maxAge değerinden eski olduğunda stale döndürür; bu, veriyi görmeden bir koşulu denetleyin sayfasında anlatılır.

GET /v1/status bunu dışarıdan gösterir. Her zincir için heartbeatAgeSecs, API'nin en son kalp atışının uygulandığını gördüğünden bu yana geçen saniyedir (hiç görmediyse null), sequenceGap kuyruğa alınmış ama henüz uygulanmış görülmemiş mesajları sayar ve nextDomainSeq, kuyruğa alınacak bir sonraki mesajın taşıyacağı sayıdır.

Bir boşluk her zaman bir duraksama değildir. 2026-10-08 tarihinde yaklaşık 16:55 UTC'de (tek bir okuma) Sepolia sequenceGap için 2 ve heartbeatAgeSecs için 163 gösterdi; Fuji ve Arc 0 boşluk gösterdi. Aynanın kendi sayacı API'nin bir sonraki sayısına eşitti, yani kuyruktaki her mesaj zaten uygulanmıştı. API bir iletimi yalnızca blok kesinleştikten sonra sayar.

curl -sL https://bridge.solidus.network/v1/status \
  | jq -c '.chains[] | select(.key=="sepolia") | {nextDomainSeq, sequenceGap}'
# {"nextDomainSeq":1280,"sequenceGap":2}

cast call 0x0a5a0d19206f436d67B7b87BF4c889d5b769517A 'nextDomainSeq()(uint64)' \
  --rpc-url https://ethereum-sepolia-rpc.publicnode.com
# 1280

API'nin sayısı kuyruğa alacağı bir sonraki sayıdır, aynanın sayısı ise kabul edeceği bir sonrakidir. Eşit olduklarında hiçbir şey beklemez. Aynanınki daha düşük olduğunda mesajlar bekler ve sonraki mesajlarda waiting_for_sequence görünür. Zincir başına canlı sağlık durumu durum sayfasında, güven modeli güvenlik sayfasında.

Tek komutla görün

Listede zincir süzgeci yok. Birkaç tane isteyin, bir Sepolia satırı seçin, sonra kimliğiyle isteyin.

curl -sL 'https://bridge.solidus.network/v1/messages?limit=20' \
  | jq -c '.messages[] | select(.chainKey=="sepolia") | {domainSeq, state, messageId}'

curl -sL https://bridge.solidus.network/v1/messages/0x3f7c997ce335ff6906e9c01a202374e3340402624b472170147b1e847f3e0bbd

İkinci yanıttan 2026-10-08 tarihinde kısaltılmıştır; işlem hash'i kısaltıldı:

{
  "chainKey": "sepolia",
  "domainSeq": 1276,
  "kind": "heartbeat",
  "state": "applied",
  "timestamps": {
    "queued": "2026-10-08T16:23:11.415Z",
    "committed": "2026-10-08T16:23:11.415Z",
    "signed": "2026-10-08T16:23:12.291Z",
    "delivered": "2026-10-08T16:40:02.986Z",
    "applied": "2026-10-08T16:40:02.986Z"
  },
  "deliveryTx": "0x804d9e72...0962"
}

Şimdi iletim bloğunun kendi zamanını okuyun:

RPC=https://ethereum-sepolia-rpc.publicnode.com
TX=$(curl -sL https://bridge.solidus.network/v1/messages/0x3f7c997ce335ff6906e9c01a202374e3340402624b472170147b1e847f3e0bbd | jq -r .deliveryTx)
cast block $(cast tx $TX blockNumber --rpc-url $RPC) -f timestamp --rpc-url $RPC
# 1791476712

Bu 2026-10-08T16:25:12Z eder, applied değerinden yaklaşık on beş dakika önce. Kısa cevaplar SSS sayfasında.

Okumaya devam edin