Ana içeriğe geç

WebSocket Olayları

QoreChain, iki WebSocket arayüzü aracılığıyla gerçek zamanlı olay akışı sağlar: EVM uyumlu WebSocket ve QoreChain Uzlaşı Motoru RPC WebSocket.

not

Her iki WebSocket arayüzü de qorechain-vladi ana ağında (v3.1.85 zincir sürümünde canlı) ve qorechain-diana test ağında kullanılabilir. Aşağıdaki yerel uç noktalar kendi çalıştırdığınız bir düğümü varsayar; uzaktan erişim için sağlayıcınızın ana ağ veya test ağı ana makinesini kullanın.


EVM WebSocket

Uç Nokta: ws://localhost:8546

EVM WebSocket, Ethereum araçlarıyla uyumlu gerçek zamanlı olay akışı için standart eth_subscribe yöntemini destekler.

Abonelik Türleri

AbonelikAçıklama
newHeadsHer yeni blok eklendiğinde bir başlık yayar
logsİsteğe bağlı bir filtreyle eşleşen günlükleri yayar
newPendingTransactionsMempool'a giren işlem karmalarını yayar
syncingSenkronizasyon durumu güncellemelerini yayar

Yeni Bloklara Abone Olma

{
"jsonrpc": "2.0",
"method": "eth_subscribe",
"params": ["newHeads"],
"id": 1
}

Filtreyle Günlüklere Abone Olma

{
"jsonrpc": "2.0",
"method": "eth_subscribe",
"params": [
"logs",
{
"address": "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28",
"topics": ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"]
}
],
"id": 2
}

Abonelikten Çıkma

{
"jsonrpc": "2.0",
"method": "eth_unsubscribe",
"params": ["0x1a2b3c..."],
"id": 3
}

QoreChain RPC WebSocket

Uç Nokta: ws://localhost:26657/websocket

RPC WebSocket, QoreChain Uzlaşı Motoru olay abonelik sistemini kullanır. İstemciler, olayları türe ve özniteliklere göre filtreleyen bir sorgu dizesiyle abone olur.

Tüm Yeni Bloklara Abone Olma

{
"jsonrpc": "2.0",
"method": "subscribe",
"params": {
"query": "tm.event='NewBlock'"
},
"id": 1
}

Tüm İşlemlere Abone Olma

{
"jsonrpc": "2.0",
"method": "subscribe",
"params": {
"query": "tm.event='Tx'"
},
"id": 2
}

Modüle Özgü Olaylara Abone Olma

Yalnızca belirli bir modülden olayları almak için olay türüne göre filtreleyin:

{
"jsonrpc": "2.0",
"method": "subscribe",
"params": {
"query": "tm.event='Tx' AND fraud_alert.severity EXISTS"
},
"id": 3
}

Abonelikten Çıkma

{
"jsonrpc": "2.0",
"method": "unsubscribe",
"params": {
"query": "tm.event='NewBlock'"
},
"id": 4
}

Modül Olayları Referansı

PQC Modülü

Olay TürüAnahtar ÖzniteliklerAçıklama
pqc_hybrid_verifyaddress, algorithm, result (pass/fail), modeHer hibrit imza doğrulamasında yayılır
pqc_hybrid_auto_registeraddress, algorithm, pubkey_hashBir PQC anahtarı otomatik kaydedildiğinde yayılır

AI Modülü

Olay TürüAnahtar ÖzniteliklerAçıklama
fraud_alertseverity (low/medium/high/critical), address, reason, scoreBir işlemde dolandırıcılık tespit edildiğinde yayılır
circuit_breakermodule, action (tripped/reset), threshold, valueBir AI devre kesicisi durum değiştirdiğinde yayılır

Köprü Modülü

Olay TürüAnahtar ÖzniteliklerAçıklama
deposit_completedchain_id, sender, recipient, amount, asset, tx_hashGelen bir köprü yatırımı onaylandığında yayılır
withdrawal_completedchain_id, sender, recipient, amount, asset, tx_hashGiden bir köprü çekimi onaylandığında yayılır

Cross-VM Modülü

Olay TürüAnahtar ÖzniteliklerAçıklama
crossvm_requestmessage_id, source_vm, target_vm, sender, payload_hashBir VM'ler arası çağrı başlatıldığında yayılır
crossvm_responsemessage_id, source_vm, target_vm, success, gas_usedBir VM'ler arası çağrı tamamlandığında yayılır
crossvm_timeoutmessage_id, source_vm, target_vm, queued_at_heightBir VM'ler arası mesaj kuyruk zaman aşımını aştığında yayılır

Multilayer Modülü

Olay TürüAnahtar ÖzniteliklerAçıklama
anchor_submittedlayer_id, layer_type, anchor_hash, height, submitterBir katman durum bağlaması gönderildiğinde yayılır
layer_status_changedlayer_id, previous_status, new_status, reasonBir katman işletim durumunu değiştirdiğinde yayılır

RDK Modülü

Olay TürüAnahtar ÖzniteliklerAçıklama
rollup_createdrollup_id, operator, settlement_type, profileYeni bir rollup kaydedildiğinde yayılır
batch_submittedrollup_id, batch_index, state_root, tx_countBir uzlaşma toplu işlemi gönderildiğinde yayılır
batch_finalizedrollup_id, batch_index, finalized_at_heightBir toplu işlem itiraz penceresini geçtiğinde yayılır
da_blob_storedrollup_id, blob_index, size_bytes, commitmentBir DA blob'u depolandığında yayılır
da_blob_prunedrollup_id, blob_index, pruned_at_heightBir DA blob'u saklama süresinden sonra budandığında yayılır

Burn Modülü

Olay TürüAnahtar ÖzniteliklerAçıklama
fee_distributedtotal_fees, validator_amount, burn_amount, treasury_amount, staker_amountToplanan ücretler dağıtıldığında yayılır
tokens_burnedamount, channel, block_heightTokenlar kalıcı olarak yakıldığında yayılır

xQORE Modülü

Olay TürüAnahtar ÖzniteliklerAçıklama
xqore_lockedaddress, amount, lock_duration, tierQOR, xQORE'a kilitlendiğinde yayılır
xqore_unlockedaddress, amount, penalty_applied, penalty_amountxQORE, QOR'a geri kilidi açıldığında yayılır
pvp_rebaseepoch, total_penalty, rebase_amount, beneficiary_countPvP yeniden tabanlama dağıtımı sırasında yayılır

Inflation Modülü

Olay TürüAnahtar ÖzniteliklerAçıklama
epoch_mintedepoch, minted_amount, inflation_rate, block_heightHer enflasyon epoch'unun sonunda yayılır

RL Uzlaşı Modülü

PRISM parametre ayarlamaları ve devre kesici etkinliği bu modül aracılığıyla yayılır.

Olay TürüAnahtar ÖzniteliklerAçıklama
rl_action_appliedaction_type, param_key, old_value, new_value, rewardPRISM ajanı bir parametre ayarlaması uyguladığında yayılır
circuit_breaker_triggeredreason, param_key, attempted_value, limitPRISM devre kesicisi bir eylemi engellediğinde yayılır

JavaScript İstemci Örneği

EVM WebSocket (ethers.js)

import { ethers } from "ethers";

const provider = new ethers.WebSocketProvider("ws://localhost:8546");

// Subscribe to new blocks
provider.on("block", (blockNumber) => {
console.log("New block:", blockNumber);
});

// Subscribe to contract events
const filter = {
address: "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD28",
topics: [ethers.id("Transfer(address,address,uint256)")],
};
provider.on(filter, (log) => {
console.log("Transfer event:", log);
});

QoreChain RPC WebSocket (Yerel)

const ws = new WebSocket("ws://localhost:26657/websocket");

ws.onopen = () => {
// Subscribe to fraud alerts
ws.send(JSON.stringify({
jsonrpc: "2.0",
method: "subscribe",
params: { query: "tm.event='Tx' AND fraud_alert.severity EXISTS" },
id: 1,
}));

// Subscribe to rollup batch submissions
ws.send(JSON.stringify({
jsonrpc: "2.0",
method: "subscribe",
params: { query: "tm.event='Tx' AND batch_submitted.rollup_id EXISTS" },
id: 2,
}));
};

ws.onmessage = (event) => {
const data = JSON.parse(event.data);
if (data.result && data.result.events) {
console.log("Event received:", data.result.events);
}
};

Notlar

  • Bağlantı sınırları: Varsayılan maksimum WebSocket bağlantısı sayısı sınırsızdır (max-open-connections = 0). Üretim dağıtımları için app.toml dosyasında bir sınır belirleyin.
  • Olay tamponu: RPC WebSocket, abonelik başına en fazla 200 olayı tamponlar. İstemci geride kalırsa, eski olaylar atılır.
  • Yeniden bağlanma: İstemciler, WebSocket bağlantıları düğüm yeniden başlatmaları veya yükseltmeleri sırasında kesilebileceğinden, üstel geri çekilmeli otomatik yeniden bağlanma uygulamalıdır.