Belgeler
RPC API başvurusu
Bir düğümün cüzdanlara sunduğu HTTP arayüzü: dört uç nokta, durum ve hatalar için JSON, bloklar ve ödemeler için sıkıştırılmış ikili kodlama.
Test ağı: coinlerin değeri yoktur
Herkese açık test düğümünün temel URL'si https://node.tint.top adresidir. Arayüz asla bir anahtar veya tutar görmez: cüzdan hazır ödemeleri gönderir ve şifresini kendisi çözdüğü bütün blokları okur.
Uç noktalar
| Yöntem ve yol | Yanıtı |
|---|---|
GET /v1/status | Zincirin nerede olduğu, JSON olarak. |
GET /v1/blocks/{height} | Kesinleşmiş bir blok, tel kodlamasında. |
GET /v1/blocks?from=N | N yüksekliğinden itibaren ödemeli bloklar, bir blok toplu paketi olarak. |
POST /v1/transactions | Tel kodlamasında bir ödeme alır; tanımlayıcısını JSON olarak yanıtlar. |
GET /v1/status
curl -s https://node.tint.top/v1/status{
"chain_id": 6073471695170043905,
"height": 128431,
"tip": "9f3c…e21a",
"genesis": "04b7…c9d0",
"queued": 0,
"pools": [
{ "asset": 1, "native": 20000000000000, "other": 10000000000000, "fee_bps": 30 }
]
}| Alan | Anlamı |
|---|---|
chain_id | Ağın tanımlayıcısı; her imzaya ve blok özetine bağlıdır. |
height | Son kesinleşmiş bloğun yüksekliği. |
tip | Son kesinleşmiş bloğun özeti, onaltılık olarak. |
genesis | İlk bloğun özeti, onaltılık olarak. İki test ağı aynı chain_id'yi paylaşabilir; bu alan onları ayırt eder. |
queued | Blok bekleyen ödemeler. |
pools[].asset | Havuzun yerel coine karşı takas ettiği coin (1, TUSD'dir). |
pools[].native, pools[].other | Havuzun elinde tuttuğu miktar, birim olarak (1 coin = 100,000,000 birim), son kesinleşmiş bloğa göre. |
pools[].fee_bps | Havuzun komisyonu on binde bir olarak; 30, %0,3'tür. |
GET /v1/blocks/{height}
Kesinleşmiş bir bloğu application/octet-stream olarak döndürür. Kesinleşmiş bir blok asla değişmez; bu yüzden yanıt Cache-Control: public, max-age=31536000, immutable taşır. Sayısal olmayan bir yükseklik invalid_height, bilinmeyen bir yükseklik not_found yanıtı verir.
GET /v1/blocks?from=N
N yüksekliğinden itibaren ödeme içeren blokları, yanıtın kapsadığı son yükseklikle (through) birlikte tek bir blok toplu paketi (application/octet-stream) olarak döndürür. Yetişmeye çalışan bir cüzdan, through değerinden sonraki yükseklikten yeniden sorar. Yanıt zincirle birlikte büyür, bu yüzden Cache-Control: no-store ile gönderilir. from tam sayı olmalıdır.
POST /v1/transactions
İstek gövdesi olarak tel kodlamasında hazır bir ödeme gönderin. Onu cüzdan oluşturur; biçim tint-core içindeki wire.rs modülünde tanımlıdır: sabit genişlikli alanlar, her değer için tek geçerli kodlama, sondaki bayt yok.
curl -s -X POST https://node.tint.top/v1/transactions \
-H 'content-type: application/octet-stream' \
--data-binary @payment.bin{ "txid": "5be1…07af" }Bir işlem, varlık (u32), bir son kullanma yüksekliği (u64) ve bir tür (ödeme için 0, takas için 1) ile başlar; ardından bir paket gelir: bayraklar, bir değer dengesi, bir çapa, eylem sayısı ve ispatlarıyla eylemler. Bir takas, satın alınan coini, ödenen tutarı ve ikinci bir paketi ekler.
Hatalar
Hatalar JSON'dur: {"error":{"code":"...","message":"..."}}.
| HTTP | code | Anlamı |
|---|---|---|
| 400 | malformed | Gövde bir ödeme değil. |
| 400 | invalid_height | Yükseklik veya from tam sayı değil. |
| 404 | not_found | Bu yükseklikte kesinleşmiş blok yok veya böyle bir kaynak yok. |
| 409 | double_spend | Bu ödemenin bir notası zaten harcanmış. |
| 409 | conflict | Bekleyen başka bir ödeme aynı notalardan birini harcıyor. |
| 409 | price_moved | Havuz artık bu takasın istediğini vermiyor. |
| 413 | too_large | Ödeme, zincirin izin verdiğinden büyük. |
| 422 | rejected | Ödeme zincirin bir kuralını çiğniyor; ileti hangisi olduğunu söyler. |
| 429 | rate_limited | Bu istemci adresi istek bütçesini kullandı. Retry-After başlığından sonra yeniden deneyin. |
| 500 | internal | Düğüm denetleyemedi veya kodlayamadı. |
| 503 | busy, queue_full | Düğüm başka ödemeleri doğruluyor veya kuyruğu dolu. Yeniden deneyin; Retry-After: 1. |
İstek sınırları
Varsayılan olarak her istemci adresi sürekli saniyede 50 istek yapabilir, ani artış 100'dür ve tüm istemcilerde aynı anda en fazla 4 ödeme doğrulanır. İşletmeciler ikisini de değiştirebilir. Bir ters vekil sunucunun arkasında düğüm, istemcileri vekil sunucunun X-Forwarded-For içine yazdığı son adrese göre sayar; önceki girdilere inanmaz.
Örnek: zinciri izlemek
import json, time, urllib.request
BASE = "https://node.tint.top"
while True:
with urllib.request.urlopen(f"{BASE}/v1/status", timeout=10) as r:
status = json.load(r)
print(status["height"], status["queued"])
time.sleep(5)Bir düğüm işletmecisinin bu arayüzden yine de öğrenebileceği şey, bir ödemenin geldiği ağ adresidir. Tutarlar, göndericiler ve alıcılar ispatın ve şifreli notaların içindedir.