EN: Avımsın finds the wallets that bought a coin early, filters out bots and panic sellers, ranks the remaining smart-money wallets by performance and sends a Telegram alert when they buy together above your threshold. Python · on-chain analytics.
Smart wallet bulucu ve takipçi. Bir coin'i erken alan cüzdanları bulur, bot cüzdanlarını ve kağıt-elyaf (panik satan) cüzdanları eler, kalan smart wallet listesini performansa göre sıralar ve belirlediğiniz eşikte toplu alım olduğunda Telegram'dan haber verir.
Repo adı
avimsin— GitHub Türkçe karakter desteklemediği için; proje adı Avımsın.
Görüntüler sahte demo verisiyle alınmıştır: testlerdeki sahte EVM zinciri (
tests/fake_evm.py) üzerinde gerçekscan → filter → scoreCLI'ları çalıştırıldı; adresler ve miktarlar uydurmadır, gerçek cüzdan veya RPC verisi değildir. EN: Captured with fake demo data (the test suite's fake EVM chain) — not real wallets.
Streamlit paneli — cüzdan durumu (temiz / bot / kaçak satış) ve smart wallet sıralaması:
CLI — avimsin-filter özeti ve avimsin-score sıralama tablosu:
Bu sürüm transfer tabanlı bir göstergedir: token girişi doğrulanmış satın alma, token çıkışı satış değildir. Dump kuralı ilk geçerli girişten başlayan pencerede pozitif çıkış/giriş miktarını karşılaştırır; fiyat ve zarar koşulu henüz yoktur. Skorun oranı ekonomik winrate, net token akışı finansal P&L değildir. Skor/karar kayıtları hâlâ cüzdan genelindedir; farklı coinlerde ortak cüzdan sonuçları birbirini etkileyebilir. Gerçek swap, maliyet ve coin bazlı sonuç modeli eksiktir.
score yalnız verdict=ok cüzdanları işler; yeniden çalıştırma bu coin'in
alıcılarına ait eski skorları atomik yeniler (çıktısız/uygunsuz olanları kaldırır).
Boş filtre geçmişi temiz sayılmaz. CLI token birimi gösterir; DB'deki net akış
tam tokene yuvarlanır, panel hassasiyeti bu aşamada düzeltilmiş değildir.
watch yalnız seçilen zincirin açıkça etiketli coinlerini izler. Mint/burn,
sıfır/negatif ve öz-transferler sayılmaz. Sinyal hâlâ tek poll penceresindedir;
kalıcı cursor, teslimat kuyruğu ve tekrar bildirimi engeli henüz yoktur.
Örnek senaryo: popüler bir ağda (örn. Robinhood Chain) bir meme coin çok yükselir. Avımsın o coini ilk alan 50 cüzdanı bulur; içinden:
- Botları tespit edip listeden çıkarır,
- Aldıktan sonra zarardayken yarısından fazlasını satanları listeden çıkarır,
- Zamanla ekleyeceğiniz kurallarla listeyi temiz tutar.
Kalan smart wallet'lar; trade sayısı, kazanma oranı, kazanma miktarı ve işlem sıklığı gibi kategorilerde sıralanır. Bu cüzdanlardan en az N tanesi (sizin belirleyeceğiniz eşik, ör. 3 veya 5) bir coin aldığında Telegram bildirimi gelir.
| Faz | İçerik | Durum |
|---|---|---|
| 0 | Repo kurulumu, Python ortamı, mimari iskelet | ✅ |
| 1 | Veri katmanı: erken alıcılar + transfer/swap geçmişi (Robinhood Chain, EVM RPC) | ✅ (erken alıcılar; swap geçmişi Faz 2'de) |
| 2 | Filtre motoru: bot tespiti, kaçak satış kuralları (büyüyebilir kural seti) | ✅ (fiyat-bağımsız kurallar; P&L bazlı zenginleştirme Faz 3'te) |
| 3 | Skorlama & sıralama: kazanma oranı, P&L, işlem sıklığı | ✅ (fiyat-bağımsız; USD P&L Faz 4+ta) |
| 4 | Streamlit paneli: smart wallet listesini tarayıcıda görüntüleme | ✅ (uv run streamlit run dashboard/app.py) |
| 6 | Oracle Free VPS'e 7/24 dağıtım (systemd) + Solana ve diğer EVM ağları | ⏳ (VPS paketi: deploy/ — kurulum deploy/README.md; Solana: --chain solana) |
src/avimsin/
├── chains/ # Ağ adaptörleri (evm_base.py, robinhood.py, ... solana.py)
├── collectors/ # Veri toplama: alıcılar, transferler, swap'lar
├── filters/ # Kurallar: bot tespiti, kaçak satış ... (büyüyebilir)
├── scoring/ # Skorlama: winrate, P&L, frekans
├── alerts/ # Telegram bildirimleri (eşik bazlı)
├── storage/ # SQLite kalıcılık
└── config.py # .env'den ayar okuma
dashboard/ # Streamlit paneli (Faz 4)
data/ # SQLite veritabanı (git'e girmez)
Yeni ağ eklemek = chains/ klasörüne yeni bir adaptör dosyası eklemek.
Kod ağ-bağımsız yazılır; EVM ağları ve Solana aynı arayüzü kullanır.
cd ~/Projects/avimsin
uv sync # Python 3.12 sanal ortamını kurar, bağımlılıkları yükler
uv run avimsin-rpc # RPC uçlarını sıralı ölçer; aynı ağ içinde karşılaştırır
uv run avimsin-scan <token> --from-block <blok> # erken alıcıları topla, SQLite'a yaz
uv run avimsin-filter <token> # alıcıları bot/kaçak satış kurallarından geçir
uv run avimsin-score <token> # temiz cüzdanları winrate/P&L/frekans ile sırala
uv run avimsin-watch # sinyal izleyici (Telegram'a bildirir)
uv run pytest # test ağı (sahte EVM/Solana zincirleri, ağ yok)scan/filter/score/watch komutları --chain robinhood|solana bayrağıyla zincir
seçer (varsayılan robinhood); Solana ucu .env'de RPC_SOLANA_* ile verilir,
verilmezse public devnet ucu kullanılır.
Kayıtlı zincir ile --chain uyuşmazsa scan/filter/score RPC sorgusundan önce
durur. Zinciri bilinmeyen eski kayıtlarda --chain açıkça verilmelidir;
başarılı işlemde kayıt tamamlanır. Watch bilinmeyen zincirli coinleri atlar.
avimsin-rpc, .env içindeki tüm RPC_<AD> uçlarını sıralı yoklar;
paylaşılan public RPC kotası için paralel istek göndermez. RPC_SOLANA*
adları Solana getGenesisHash/getSlot, diğer adlar (eski RPC_ALCHEMY,
RPC_QUICKNODE dahil) EVM eth_chainId/eth_blockNumber ile ölçülür.
Tablolar protokol ve ağ kimliğine (genesis hash / chain ID) göre ayrılır.
En hızlı uç ve 2 blok/slot üzerindeki gerilik yalnız aynı ağ içinde
raporlanır; ölçülen gecikme iki çağrının toplamıdır, tek seferlik bir gözlemdir.
Komut yalnız raporlar: otomatik en-hızlı seçimi veya failover yoktur.
scan/filter/score/watch adaptörleri, ayar adları alfabetik sıralandığında
seçilen zincirin robinhood veya solana önekiyle eşleşen ilk ucu kullanır.
Eşleşme yoksa Robinhood public mainnet, Solana public devnet kullanılır.
Örneğin RPC_SOLANA_A_MAINNET, RPC_SOLANA_Z_BACKUP'tan önce seçilir;
ikinci uç otomatik yedek değildir. RPC_ALCHEMY gibi genel adlar kontrol
komutunda ölçülür ama bu adaptörler tarafından seçilmez. Bir sağlayıcıyı
kullanmak için doğru ağa ait URL'yi RPC_ROBINHOOD_ALCHEMY veya
RPC_SOLANA_HELIUS gibi zincir önekli bir adla tanımlayın; seçimi değiştirmek
için eşleşen ayarları düzenleyin. Üretimde Solana devnet yerine mainnet
ucunu açıkça yapılandırın.
Solana istemcisi normal çağrılar ve tüm retry isteklerinde aynı asgari aralığı uygular. 429 için 8 ek deneme; transport/502/503/504 için toplam 3 hata bütçesi vardır. Hata türü değişince bütçeler sıfırlanmaz. Pacing paylaşılan kotanın hiç dolmayacağını garanti etmez; tükenen bütçe açık hata üretir.
getTransaction legacy/v0/v1 için maxSupportedTransactionVersion=1 ister
(resmî sözleşme).
tests/fixtures/solana_v1.json, mainnet slot 447606860'tan gerçek JSON-parsed
yanıttır: aynı imza max=0 ile -32015, max=1 ile başarı vermiştir. Fixture testi
token hareketini çözümler; bu, bütün Solana geçmişinin eksiksiz tarandığı veya
gerçek ekonomik P&L hesaplandığı iddiası değildir.
main branch'i korunur; doğrudan push kapalıdır. Her değişiklik:
git switch -c feat/yeni-ozellik # 1. feature branch
# ... geliştir, commit'le ...
git push -u origin feat/yeni-ozellik
gh pr create # Pull Request aç
gh pr merge --squash --delete-branchMIT © haybinalim

