Skip to content

Arsitektur Tingkat Tinggi Scytale Layer-1

Dokumen ini merangkum arsitektur internal protokol blockchain Layer-1 Scytale berdasarkan spesifikasi Tasks 32–38. Scytale dirancang dengan fokus pada throughput tinggi, state commitment deterministik, dan sinkronisasi berkecepatan tinggi melalui tiga inovasi arsitektural utama:

  1. Compact UTXO Commitment (120-Byte Block Header)
  2. Fast Sync Wire Protocol (Golang Streaming)
  3. Autonomous DNS Seeder & Peer Health Crawler

1. Compact UTXO Commitment & 120B Block Header

Berbeda dari blockchain warisan yang memisahkan status koin dari header blok, Scytale menyematkan utxo_root secara langsung di dalam header blok berukuran tetap tepat 120 bytes.

Struktur Biner Header Blok (Fixed 120 Bytes)

Offset (Byte)   Ukuran (Byte)   Nama Field      Tipe Data    Deskripsi
---------------------------------------------------------------------------------------
0x00 - 0x03     4 Bytes         version         uint32_le    Versi konsensus protokol (v1 = 0x00000001)
0x04 - 0x23     32 Bytes        prev_hash       [32]byte     BLAKE3 hash dari 120B header blok sebelumnya
0x24 - 0x43     32 Bytes        merkle_root     [32]byte     Akar Merkle Tree transaksi dalam blok
0x44 - 0x63     32 Bytes        utxo_root       [32]byte     Akar pohon status UTXO pasca eksekusi blok
0x64 - 0x6B     8 Bytes         timestamp       uint64_le    Waktu Unix epoch dalam detik (UTC)
0x6C - 0x6F     4 Bytes         nbits (target)  uint32_le    Format ringkas target kesulitan Proof-of-Work
0x70 - 0x77     8 Bytes         nonce           uint64_le    Nilai acak penambang untuk memenuhi target PoW
---------------------------------------------------------------------------------------
TOTAL UKURAN : 120 BYTES SECARA KAKU (FIXED-LENGTH BINARY ALIGNMENT)

Mekanisme utxo_root

Setiap kali transaksi baru diproses dalam suatu blok:

  1. Output yang dibelanjakan dihapus dari struktur data status lokal.
  2. Output baru (unspent) ditambahkan ke pohon Merkle-Patricia berbasis BLAKE3.
  3. Node menghitung akar hash 32-byte dari pohon tersebut dan menuliskannya ke field utxo_root.
                    +--------------------------------+
                    |  120-BYTE SCYTALE BLOCK HEADER |
                    +--------------------------------+
                    |  version:     0x00000001       |
                    |  prev_hash:   0x3b1c...99a0    |
                    |  merkle_root: 0x8a12...ff01    |
                    |  utxo_root:   0x4e8d...77b2  <-------+
                    |  timestamp:   1788390000       |      |
                    |  nbits:       0x1e0ffff0       |      | (Cryptographic
                    |  nonce:       0x000004218a99   |      |  Root Binding)
                    +--------------------------------+      |
                                                            |
                       +------------------------------------+
                       |
                       v
         [ BLAKE3 RADIX-16 UTXO COMMITMENT TREE ]
                       /                        \
           [Branch Hash A]                    [Branch Hash B]
             /         \                        /         \
         [Leaf 0]    [Leaf 1]               [Leaf 2]    [Leaf 3]
            |           |                      |           |
        UTXO: scy1q...  UTXO: scy1q...         UTXO: ...   UTXO: ...

Keunggulan Desain:

  • Stateless Client Verification: Klien ringan (SPV) atau dompet seluler cukup meminta Merkle Inclusion Proof dari suatu UTXO relatif terhadap utxo_root di header blok untuk membuktikan kepemilikan dana secara instan tanpa mengunduh riwayat transaksi berukuran gigabyte.
  • Instant Chain Reorganization Detection: Jika dua penambang menghasilkan state UTXO yang berbeda sedikit pun, hash utxo_root akan langsung bertabrakan dan blok yang tidak valid segera ditolak sebelum parsing transaksi mendalam dilakukan.

2. Fast Sync Wire Protocol (Golang)

Lapisan komunikasi jaringan (network wire layer) Scytale ditulis dalam Go murni, memanfaatkan model konkurensi goroutine dan I/O non-blocking untuk memfasilitasi transmisi data massal dengan latensi minimal.

Format Paket Biner Wire

Setiap paket P2P yang melintasi port 9001 dikemas dengan format header 20-byte:

+--------------------+---------------------+--------------------+--------------------+
| Magic Bytes (4B)   | Command Name (12B)  | Payload Length(4B) | BLAKE3 Checksum(4B)|
| 0x53 0x43 0x59 0x01| "getutxos\0\0\0..." | uint32 Little-End  | 4-byte slice BLAKE3|
+--------------------+---------------------+--------------------+--------------------+
|                               PAYLOAD DATA (Ukuran N Bytes)                        |
+------------------------------------------------------------------------------------+

Alur Fast-Sync (Snap-Sync Berbasis utxo_root)

Ketika validator baru bergabung ke jaringan, protokol tidak memaksa node untuk memutar ulang (replay) jutaan transaksi sejak blok genesis:

Node Baru (Joining Node)                         Node Tetangga (Serving Peer)
        |                                                     |
        |---- 1. HELLO / VERSION (Port 9001) ---------------->|
        |<--- 2. VERACK + CURRENT_TIP (Height 18420) ---------|
        |                                                     |
        |---- 3. GETHEADERS (From: Genesis, To: Tip) -------->|
        |<--- 4. HEADERS (120B * 18420 headers = ~2.2 MB) ----|
        |                                                     |
  [Verifikasi Rantai PoW & Validasi Header Selesai (100ms)]   |
        |                                                     |
        |---- 5. GETUTXO_CHUNK (Target Root: 0x4e8d...77b2) ->|
        |<--- 6. UTXO_STREAM (Compressed zstd leaf chunks) ---|
        |                                                     |
  [Rekonstruksi Pohon UTXO & Verifikasi kecocokan akar]       |
  [Status: SYNCED! Langsung siap memvalidasi blok baru]       |
  1. Download Headers: Node mengunduh seluruh 120-byte header dari genesis hingga tip. Berkat ukuran header yang sangat ringkas (120B), 100.000 blok hanya memakan bandwidth sekitar 12 MB.
  2. Snapshot UTXO Streaming: Node meminta potongan snapshot UTXO yang terikat pada utxo_root blok teratas via command GETUTXO_CHUNK.
  3. Validasi Paralel: Snapshot diverifikasi terhadap utxo_root secara paralel menggunakan semua core CPU yang tersedia. Setelah akar pohon cocok, node langsung berada pada status sinkron (Synced) hanya dalam beberapa detik.

3. Autonomous DNS Seeder

Untuk menghindari titik kegagalan tunggal (Single Point of Failure / SPoF) dan ketergantungan pada daftar IP statis yang ditanam di dalam kode sumber (hardcoded bootstrap peers), Scytale menerapkan Autonomous DNS Seeder.

                           +-------------------------------+
                           |      DNS Seeder Daemon        |
                           |   (seed.devnet.scytale.org)   |
                           +-------------------------------+
                                      |         ^
          1. Periodik TCP Healthcheck |         | 2. Crawl & Discover
             Port 9001 (Interval 60s) |         |    Peer Addresses
                                      v         |
                          +--------------------------------+
                          |   Scytale Peer Mesh Network    |
                          |                                |
                          |  [Node A: 9001] [Node B: 9001] |
                          |  [Node C: 9001] [Node D: DEAD] |
                          +--------------------------------+
                                          ^
                                          | 3. Resolusi DNS A/AAAA
                                          |    (Hanya mengembalikan
                                          |     node sehat: A, B, C)
                                          |
                              +-----------------------+
                              | Node Baru (Bootstrapping)
                              +-----------------------+

Cara Kerja Autonomous DNS Seeder:

  1. Continuous Crawler: Daemon seeder secara terus-menerus merayapi (crawl) jaringan P2P melalui pesan GETADDR dan ADDR.
  2. Strict Health Checking: Seeder membuka koneksi handshake TCP ke port 9001 dari setiap peer yang ditemukan. Node hanya dinyatakan sehat jika:
    • Menjawab handshake versi dalam waktu $< 2$ detik.
    • Tinggi blok node berada dalam rentang toleransi $\pm 5$ blok dari tip mayoritas konsensus.
    • Tidak memiliki riwayat perilaku protokol berbahaya (malformed packet).
  3. Autonomous Pruning: Peer yang tidak merespons selama 3 kali percobaan berturut-turut langsung dikeluarkan dari zona DNS.
  4. DNS Multi-A Query: Ketika node baru mengeksekusi dig seed.devnet.scytale.org A, server DNS otoritatif mengembalikan daftar round-robin berisi hingga 25 alamat IP validator yang terbukti 100% aktif dan terverifikasi.

Ringkasan Perbandingan Protokol

FiturScytale Layer-1Blockchain Tradisional (Bitcoin/EVM)
Algoritma HashBLAKE3 (SIMD Tree Hashing)SHA-256 (Serial) / Keccak-256
Skema Tanda TanganEd25519 (Tahan side-channel)ECDSA secp256k1 (Rentan timing attack)
Ukuran Block HeaderTepat 120 BytesBervariasi / 80 Bytes (tanpa UTXO root)
State Commitmentutxo_root tertanam di headerTerpisah (World state tree) atau tidak ada di header
Model FeeZero-Float Integer (micron)Gwei / Satoshi dengan floating rounding math
Mekanisme SyncFast Sync via snapshot utxo_rootReplay seluruh histori transaksi puluhan GB
Penemuan PeerAutonomous DNS Crawler dinamisManual hardcoded IP lists / DHT lambat

Scytale Layer-1 Protocol | v0.3.0-devnet | BLAKE3 PoW Engine