Coin Autopsy Journal

Bundle Detection: Membangun Entity Resolution Agent untuk Analisis On-Chain yang Lebih Andal

Kalau target akhirnya memang ingin membangun sistem yang benar-benar production-grade, saya justru tidak akan membuat bundle detector sebagai komponen utama.

Bundle detection tetap berguna, terutama untuk membaca aktivitas pada menit-menit awal sebuah token diluncurkan. Namun, menurut saya itu hanya salah satu feature, bukan inti dari keseluruhan sistem.

Yang jauh lebih menarik adalah membangun sebuah Entity Resolution Agent.

Tujuannya bukan sekadar menjawab:

"Apakah token ini bundled?"

melainkan menjawab pertanyaan yang jauh lebih penting:

"Apakah wallet-wallet ini sebenarnya dikendalikan oleh entity yang sama?"

Perbedaannya cukup besar.

Pola bundling bisa berubah seiring berkembangnya teknik launch token. Orang bisa mengacak waktu transaksi, memecah pembelian ke banyak wallet, atau menggunakan beberapa hop funding agar terlihat berbeda.

Sebaliknya, hubungan antarwallet, pola pendanaan, histori perilaku, hingga kemunculan berulang di berbagai token jauh lebih sulit dipalsukan.

Itulah alasan kenapa menurut saya Entity Resolution adalah fondasi yang jauh lebih kuat dibanding sekadar bundle detection.


Dari Bundle Detection ke Entity Resolution

Kalau disederhanakan, arsitekturnya kurang lebih seperti ini.

RPC
                   │
      ┌────────────┴────────────┐
      │                         │
 Solana Pipeline          EVM Pipeline
      │                         │
      └────────────┬────────────┘
                   │
         Wallet Graph Builder
                   │
         Entity Resolution Engine
                   │
        Historical Behavior DB
                   │
      Cluster Risk Scoring Engine
                   │
          Decision / Alert Agent

Yang menarik, sebagian besar pipeline ini bisa dipakai baik di Solana maupun EVM. Yang berubah hanya cara mengambil datanya.


Layer 1 — Launch Reconstruction

Langkah pertama adalah membangun ulang menit-menit awal sebuah token diluncurkan.

Agent mencoba merekam berbagai informasi seperti:

Contoh struktur datanya:

launch = {
    "slot": slot,
    "buyers": first_buyers,
    "first_lp": lp_creator,
    "first_transfers": transfers,
    "bundle_ids": jito_bundle_ids,
    "deployer": deployer
}

Semakin lengkap data pada tahap ini, semakin mudah proses analisis berikutnya.

Data Source

Solana

EVM


Layer 2 — Funding Graph

Kalau harus memilih satu layer yang paling penting, menurut saya inilah jawabannya.

Agent tidak lagi melihat siapa yang membeli token.

Agent mulai bertanya:

"Uang mereka berasal dari mana?"

Contoh sederhana:

def funding_graph(wallet):

    parents = trace_funding(
        wallet,
        depth=4
    )

    return parents

Misalnya hasilnya menjadi seperti ini.

CEX
 ↓
Wallet A
 ↓
Wallet B
 ↓
Wallet C
 ↓
Buyer Wallet

Kalau ternyata ada 20 wallet berbeda yang semuanya bermuara ke Wallet A, maka kemungkinan besar mereka bukan wallet independen.

Hubungan seperti ini biasanya jauh lebih kuat dibanding sekadar membeli pada waktu yang sama.


Layer 3 — Entity Resolution

Setelah graph pendanaan terbentuk, agent mulai mengelompokkan wallet.

Misalnya:

cluster = {
    "wallets": [...],
    "shared_funder": True,
    "same_deployer": False,
    "co_transfer": True,
    "shared_lp": True,
    "shared_claim": False
}

Lalu dihitung tingkat kemiripannya.

entity_score = (
    funding_similarity
    + transfer_similarity
    + deployer_similarity
    + lp_interaction
)

Jika:

entity_score > threshold

wallet tersebut dianggap bagian dari satu entity.

Pendekatan seperti ini jauh lebih fleksibel dibanding rule sederhana seperti "transaksi pada block yang sama".


Layer 4 — Historical Memory

Menurut saya ini salah satu bagian yang paling underrated.

Sebagian besar dashboard hanya melihat kondisi saat ini.

Padahal wallet memiliki sejarah.

Misalnya:

wallet_history = {

    wallet:

    {
        "launches": 42,
        "rugged": 18,
        "runner": 7,
        "avg_hold": 4.3,
        "avg_exit_delay": 11,
        "same_cluster": 31
    }

}

Sekarang agent tahu bahwa wallet tersebut:

Artinya keputusan tidak lagi dibuat berdasarkan satu snapshot saja.


Layer 5 — Behavior Layer

Setelah mengetahui hubungan wallet, agent mulai memahami perilakunya.

Contohnya:

behavior = {

    "buy_window": 2.1,
    "sell_window": 1.4,
    "hold_time": 28,
    "reentry_count": 3,
    "profit_taken": True
}

Kemudian dihitung tingkat koordinasinya.

coordination = correlation(
    cluster.sell_times
)

Kalau seluruh wallet selalu menjual hampir bersamaan, kemungkinan memang ada koordinasi.

Belum tentu selalu berarti aktivitas yang buruk, tetapi jelas merupakan sinyal penting.


Layer 6 — Cross-Token Entity Memory

Kalau ditanya layer favorit saya, jawabannya ini.

Misalnya Wallet A selalu muncul bersama Wallet B, Wallet C, dan Wallet D.

Bukan cuma pada satu token.

Tetapi di:

Agent menyimpan hubungan tersebut.

co_matrix[
    wallet_a
][wallet_b] += 1

Semakin sering pasangan wallet muncul bersama pada berbagai launch, semakin tinggi confidence bahwa mereka memang berada dalam satu jaringan.

Pendekatan lintas token seperti ini jauh lebih sulit dimanipulasi dibanding sekadar mengubah waktu pembelian.


Layer 7 — Remaining Supply

Kesalahan yang sering dilakukan adalah hanya melihat jumlah holder.

Padahal yang lebih penting adalah menghitung:

Berapa supply yang sebenarnya masih dikendalikan oleh satu entity?

Contohnya:

remaining_supply = sum(
    wallet.balance
    for wallet
    in entity
)

Outputnya bisa menjadi:

Entity A : 17.4%
Entity B : 11.2%
Entity C : 4.1%

Di dashboard mungkin terlihat ada ribuan holder.

Tetapi setelah wallet dikelompokkan, ternyata sebagian besar supply masih berada di tangan beberapa entity saja.


Layer 8 — Risk Engine

Daripada menghasilkan jawaban "Yes" atau "No", saya lebih suka menggunakan weighted score.

risk = (

0.30 * funding_cluster +

0.22 * historical_relation +

0.18 * remaining_supply +

0.15 * coordinated_exit +

0.10 * launch_bundle +

0.05 * holder_pattern

)

Output akhirnya menjadi:

Risk Score : 82 / 100

Model seperti ini jauh lebih mudah dikembangkan.

Bobot setiap feature bisa terus diperbaiki menggunakan hasil backtest.


Data Stack

Solana

Purpose Stack
RPC Helius Enhanced RPC, Triton, Custom Validator
Transaction Parsing Helius Enhanced API
Wallet History Solana Tracker API
Token Metadata Birdeye, DexScreener
Liquidity GeckoTerminal
Bundle Verification Jito Block Engine, Jito Explorer
Storage PostgreSQL + ClickHouse
Queue Redis Streams atau NATS
Graph Analysis Neo4j atau NetworkX

EVM

Pendekatannya sedikit berbeda karena tidak memiliki konsep Jito Bundle.

Sebagian besar analisis dilakukan melalui transaction trace dan event log.

Purpose Stack
RPC Erigon Archive, Reth, Alchemy, QuickNode
Internal Trace trace_transaction, debug_traceTransaction
Logs eth_getLogs
Labels Arkham, Nansen (jika tersedia), atau label internal
Token & Liquidity GeckoTerminal, DeFiLlama
Storage PostgreSQL + ClickHouse
Graph Analysis Neo4j atau NetworkX

Logic yang Paling Underrated

Kalau harus memilih satu snippet yang paling saya sukai, mungkin ini.

for token in launches:

    for wallet in token.first_buyers:

        history[wallet].launches += 1

        history[wallet].tokens.append(token)

for pair in combinations(first_buyers, 2):

    co_appearance[pair] += 1

Sekilas terlihat sederhana.

Tetapi setelah berjalan beberapa bulan, agent mulai mengingat siapa saja yang selalu muncul bersama.

Pada titik ini, agent tidak lagi mengenali transaksi.

Agent mulai mengenali identitas sebuah kelompok wallet.

Menurut saya, inilah bagian yang paling sulit dimanipulasi.


Arah Pengembangan Berikutnya

Tahap berikutnya adalah mengubah seluruh sistem menjadi graph-based AI agent.

Node dapat berupa:

Sedangkan edge dapat merepresentasikan:

Di atas graph tersebut, agent bisa menjalankan berbagai algoritma modern seperti:

Pendekatan berbasis graph seperti ini semakin banyak digunakan dalam sistem analisis on-chain tingkat lanjut karena mampu menangkap pola yang tidak terlihat jika hanya melihat satu transaksi atau satu token secara terpisah.


Penutup

Pada akhirnya, saya melihat bundle detection hanyalah satu bagian kecil dari keseluruhan puzzle.

Kalau tujuan kita hanya ingin mengetahui apakah sebuah launch menggunakan bundle, maka bundle detector mungkin sudah cukup.

Namun kalau tujuannya adalah memahami siapa yang berada di balik aktivitas tersebut, bagaimana mereka bergerak dari satu token ke token lain, bagaimana hubungan antarwallet terbentuk, dan bagaimana pola koordinasinya berkembang dari waktu ke waktu, maka Entity Resolution Agent menawarkan pendekatan yang jauh lebih kuat.

Semakin lama sistem berjalan, semakin banyak histori yang terkumpul. Pada titik tertentu, agent tidak lagi sekadar membaca transaksi. Ia mulai membangun memori tentang perilaku sebuah jaringan wallet. Dan menurut saya, kemampuan mengenali jaringan seperti inilah yang menjadi fondasi utama untuk analisis on-chain generasi berikutnya.