Ağ ve Testnet
Solidus testnet’i canlıdır ve blok üretmektedir. Bu sayfa nasıl bağlanılacağını, mevcut RPC yöntemlerini, blok gezginini ve testnet faucet’ini kapsar.
Testnet Durumu
Testnet aşağıdaki yapılandırmayla çalışıyor:
| Parameter | Value |
|---|---|
| Doğrulayıcılar | 5 |
| Konsensüs | HotStuff BFT |
| Blok süresi | ~2,5 saniye |
| Kesinlik | 3 zincirli (~7,5 saniye) |
| RPC uç noktası | https://rpc.solidus.network |
| Gezgin | explorer.solidus.network |
| Faucet bakiyesi | ~1,9M SLDS mevcut |
| Yerel token | SLDS |
Testnet’e Bağlanma
SDK Kullanarak
Bağlanmanın en basit yolu @solidus-network/sdk üzerindendir:
import { createSdk } from '@solidus-network/sdk'
const sdk = createSdk({
mode: 'testnet',
rpcUrl: 'https://rpc.solidus.network',
signerPrivateKey: privateKeyHex,
})curl Kullanarak
Testnet’i doğrudan JSON-RPC üzerinden sorgulayabilirsiniz:
curl -X POST https://rpc.solidus.network \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "solidus_getLatestBlock",
"params": [],
"id": 1
}'JavaScript Kullanarak
SDK olmadan doğrudan RPC çağrıları için:
async function rpcCall(method: string, params: unknown[] = []) {
const response = await fetch('https://rpc.solidus.network', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
jsonrpc: '2.0',
method,
params,
id: 1,
}),
})
const data = await response.json()
return data.result
}RPC Yöntemleri
Testnet, 20 adet solidus_* JSON-RPC yöntemi sunar. Bir solidus_getAccount yöntemi yoktur — hesap
bakiyesi ve nonce iki ayrı çağrıdır (solidus_getBalance, solidus_getNonce). Tüm hash’ler 0x
öneki olmadan küçük harfli hex’tir; blok zaman damgaları ISO dizgeleri değil, Unix milisaniyeleridir
(timestamp_ms). Yöntem yöntem tam referans için JSON-RPC’ye bakın.
solidus_getLatestBlock
En son onaylanmış bloğu döndürür.
curl -X POST https://rpc.solidus.network \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "solidus_getLatestBlock",
"params": [],
"id": 1
}'Yanıt (gerçek, ölçülmüş):
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"height": 82054,
"round": 6495,
"hash": "7bdd7ba192080a011f4564bae0d065401e2efa6a257f52df0eeb0ae284e01d02",
"parent_hash": "261c0ac7955a5359b653f189a720ddd1358650772e35734003093fb2bc324800",
"state_root": "c2a009a8fc5f869aee238febb2e362694bd3828748158d758e52420f5a15c89d",
"transactions_root": "0000000000000000000000000000000000000000000000000000000000000000",
"timestamp_ms": 1785314852140,
"tx_count": 0,
"proposer": "KoYahYf66hCp2wqTJFCxrzYpQ5r",
"transactions": []
}
}solidus_getBlock
Yüksekliğe göre bir blok döndürür, mevcut değilse null döndürür.
Parametreler: [height: number]
curl -X POST https://rpc.solidus.network \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "solidus_getBlock",
"params": [82054],
"id": 1
}'Yanıt, yukarıdaki solidus_getLatestBlock ile aynı şekli kullanır.
solidus_didResolve
Bir DID’i çözümler ve DID Belgesini döndürür, bulunamazsa null döndürür.
Parametreler: [did: string]
curl -X POST https://rpc.solidus.network \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "solidus_didResolve",
"params": ["did:solidus:testnet:7Hk3mRtQZvNxP2bK9wYfJ4eD6cA5sLgR"],
"id": 1
}'Sonuç, DID belgesinin kendisidir (bir document alanına sarmalanmamış), standart W3C alanlarının
yanı sıra active, created_ms ve updated_ms ile birlikte. Tam belge şekli için
DID’ler’e bakın.
solidus_getValidators
Aktif doğrulayıcı kümesini düz bir dizi olarak döndürür ({validators: [...]} içine
sarmalanmamış).
curl -X POST https://rpc.solidus.network \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "solidus_getValidators",
"params": [],
"id": 1
}'Yanıt (gerçek, ölçülmüş — şu anda 5 doğrulayıcı aktif):
{
"jsonrpc": "2.0",
"id": 1,
"result": [
{ "address": "3GfjBM7v6LZ1N5zp1b12gfpwCN8j", "staked": 1000000000000, "unbonding": 0, "reputation": 1000, "active": true },
{ "address": "28gvczeVVVQjy6MpP4yexmd3xEsm", "staked": 0, "unbonding": 0, "reputation": 0, "active": true },
{ "address": "2ddrNYxwr5V42QJmDgpphzGuWrAK", "staked": 0, "unbonding": 0, "reputation": 0, "active": true },
{ "address": "2VnFvB9X8BW5QxDAD1wJjjd8AJvT", "staked": 0, "unbonding": 0, "reputation": 0, "active": true },
{ "address": "KoYahYf66hCp2wqTJFCxrzYpQ5r", "staked": 0, "unbonding": 0, "reputation": 0, "active": true }
]
}Bir publicKey, isLeader, totalStake veya quorum alanı yoktur. staked, unbonding ve
reputation doğrulayıcı başınadır.
solidus_getTransaction
Bir hash için tam işlem JSON’unu döndürür, bulunamazsa null döndürür (en sondan geriye doğru
blokları tarar — testnet’te kabul edilebilir).
Parametreler: [txHash: string]
curl -X POST https://rpc.solidus.network \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "solidus_getTransaction",
"params": ["<hex tx hash>"],
"id": 1
}'Ham imzalanmış işlemi döndürür (sender_pubkey, nonce, payload, signature) — sarmalanmış bir
{hash, type, from, status, data} zarfı değil. Yürütme durumu için solidus_getReceipt kullanın.
solidus_sendTransaction
Ağa imzalanmış bir işlem (JSON kodlanmış bir dize) gönderir. İşlem hash’ini hex dizesi olarak döndürür.
Parametreler: [txJson: string]
curl -X POST https://rpc.solidus.network \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "solidus_sendTransaction",
"params": ["<JSON-stringified signed transaction>"],
"id": 1
}'Pratikte, ham işlemler oluşturmak yerine SDK’yı kullanın. SDK, nonce yönetimini, imzalamayı ve serileştirmeyi halleder.
Diğer canlı yöntemler
RPC uç noktasında 11 solidus_* yöntemi daha canlıdır ancak bu sayfada ayrıntılandırılmamıştır —
parametreler ve yanıt şekilleri için tam JSON-RPC referansına bakın:
| Method | Purpose |
|---|---|
solidus_blockNumber | En son onaylanmış blok yüksekliği |
solidus_chainInfo | Zincir kimliği, yerel token meta verisi, genesis hash’i, en son yükseklik, düğüm sürümü |
solidus_nodeInfo | Düğüm sürümü, çalışma süresi, yerleşik bellek |
solidus_canonHead | Kanonik defterin başı (sıra + hash) |
solidus_getBlockBySeq | Kanonik sıra numarasına göre blok |
solidus_getValidatorStake | Tek bir doğrulayıcının stake kaydı |
solidus_credentialVerify | Kimliğe göre bir kimlik bilgisini doğrula |
solidus_credentialsBySubject | Bir DID’in konu olduğu kimlik bilgileri |
solidus_credentialsByIssuer | Bir DID’in düzenleyici olduğu kimlik bilgileri |
solidus_bbsVerifyProof | Durumsuz BBS+ seçici ifşa kanıtı doğrulaması |
solidus_bbsVerifyCredentialProof | Zincir üstü bir kimlik bilgisine karşı BBS+ kanıt doğrulaması |
solidus_getBalance, solidus_getNonce ve solidus_getReceipt de canlıdır.
Blok Gezgini
explorer.solidus.network adresindeki blok gezgini, testnet’e göz atmak için bir web arayüzü sağlar. Şunları yapabilirsiniz:
- En son blokları ve işlemlerini görüntüleyin
- Hesapları adrese göre arayın
- İşlemleri hash’e göre arayın
- DID Belgelerini inceleyin
- Doğrulayıcı etkinliğini ve ağ sağlığını izleyin
Testnet Faucet’i
Testnet faucet’i, geliştirme için test SLDS token’ları dağıtır. Yaklaşık 1,9 milyon SLDS mevcuttur.
Testnet token’ları istemek için faucet uç noktasını kullanın:
curl -X POST https://rpc.solidus.network/faucet \
-H "Content-Type: application/json" \
-d '{
"address": "7Hk3mRtQZvNxP2bK9wYfJ4eD6cA5sLgR"
}'Testnet token’larının parasal bir değeri yoktur. Geliştirme sırasında işlem ücretlerini ödemek için kullanılırlar.
Mainnet Durumu
Mainnet henüz başlatılmadı. Testnet, geliştirme ve test için geçerli üretim ağıdır. Mainnet başlatıldığında beklenecek temel farklar:
- Doğrulayıcı kümesi — mainnet daha büyük, izinsiz (permissionless) bir doğrulayıcı kümesine sahip olacak
- Token değeri — mainnet SLDS token’ları stake etme ve ücretler için gerçek ekonomik değere sahip olacak
- Kimlik bilgisi kalıcılığı — testnet’te düzenlenen kimlik bilgileri mainnet’e taşınmayacak
- Kırıcı değişiklikler — protokol, mainnet başlatılmadan önce kırıcı değişikliklere uğrayabilir
Şu anda tüm SDK’lar ve uygulamalar testnet’i hedefliyor. Mainnet başlatıldığında, geçiş yapmak SDK
yapılandırmasında mode’u ('mainnet'’e) ve rpcUrl’i değiştirmeyi gerektirecek.
Ağ Sağlığı İzleme
En son bloğu sorgulayarak ve zaman damgasını geçerli zamanla karşılaştırarak ağ durumunu kontrol
edebilirsiniz. En son blok 10 saniyeden daha eskiyse, ağ sorun yaşıyor olabilir. SDK’nın chain
isim alanı bir blok sorgulama yardımcısı sunmaz, bu yüzden doğrudan solidus_getLatestBlock’u
kullanın (yukarıda tanımlanan rpcCall yardımcısı):
const block = await rpcCall('solidus_getLatestBlock')
const age = (Date.now() - block.timestamp_ms) / 1000
if (age > 10) {
console.warn('Network may be slow. Latest block is', age, 'seconds old.')
} else {
console.log('Network healthy. Block height:', block.height)
}Sonraki Adımlar
- Başlarken — SDK ile inşa etmeye başlayın
- Mimari — konsensüsü, durum modelini ve işlem türlerini anlayın
- DID’ler — testnet üzerinde tanımlayıcılar oluşturun ve çözümleyin
- Kimlik Bilgileri — zincir üzerinde kimlik bilgilerini düzenleyin ve doğrulayın