🤖PancakeSwap V3 Üzerinde Trading Ajanları Geliştirme
BNB Smart Chain üzerindeki PancakeSwap V3 likidite havuzları ve Farm'larla etkileşim kuran otonom ajanlar geliştiren geliştiriciler için bir rehber — BNB Agent Studio veya herhangi bir çerçeve kullanarak.
Sen bir strateji tanımlarsın; ajanın onu zincir üzerinde, denetimsiz olarak yürütür. Bu sayfa PancakeSwap tarafını kapsar: çağrılacak sözleşmeler, güvenli çağrı sırası ve eksiksiz bir çalışma örneği (otomatik V3 aralık yeniden dengeleyici). Ajanın kendisini nasıl tanımlayacağın, oluşturacağın ve dağıtacağın için BNB Agent Studio belgelerine bakabilirsin.
Bunun çalışması için PancakeSwap entegrasyon gerektirmez. V3 havuzları ve Farm'lar, ajanının doğrudan çağırdığı izinsiz akıllı sözleşmelerdir — aynı şekilde PancakeSwap ön yüzü de bunları çağırır. Aşağıdakilerin tümü zincir üzerinde kamuya açık bir alandır.
1. Bir ajanın PancakeSwap'a karşı neler yapabileceği
Yoğunlaştırılmış likidite (V3), LP'lere V2'ye kıyasla çok daha iyi sermaye verimliliği sağlar; ancak bunun bedeli aktif yönetimdir: Bir pozisyon yalnızca fiyat tick aralığının içindeyken ücret kazanır ve ödüller/getiriler sürekli değişir. Bu operasyonel yükü tam olarak bir ajan ortadan kaldırır. Yaygın stratejiler:
Aralık yeniden dengeleyici — Bir LP pozisyonunu izle; fiyat aralığın kenarına doğru sürüklendiğinde çek ve yeni fiyatın etrafında yeniden oluştur; böylece pozisyon ücret kazanmaya devam eder. (§6'da çalışma örneği.)
Farm APR yönlendiricisi — Havuzlar arasında CAKE + ücret getirisini takip et ve likiditeni en yüksek toplam getiriye taşı.
Swap/fiyat teklifi botları — V2 + V3 genelinde en iyi yürütme için işlemleri Smart Router üzerinden yönlendir.
Bunların tümü aşağıdaki aynı birkaç sözleşme çağrısının bileşimidir.
2. Sözleşme yüzeyi (BNB Smart Chain, chainId 56)
NonfungiblePositionManager (NFPM)
0x46A15B0b27311cedF172AB29E4f4766fbE7F4364
LP pozisyonları oluştur/yönet — mint, increaseLiquidity, decreaseLiquidity, collect, burn
SmartRouter
0x13f4EA83D0bd40E75C8222255bc855a974568Dd4
V2+V3 yönlendirmesiyle en iyi şekilde Swap yürüt
MasterChefV3
0x556B9306565093C855AEA9AE92A594704c2Cd59e
CAKE Farm'lamak için pozisyon NFT'sini stake et — harvest, withdraw
V3 Quoter
0xB048Bbc1Ee6b733FFfCFb9e9CeF7375518e25997
Göndermeden önce Swap fiyatı al
PancakeV3Factory
0x0BFbCF9fa4f9C56B0F40a671Ad40E0805A091865
(token0, token1, fee) çiftinden havuz adresi çöz
Permit2
0x31c2F6fcFf4F8759b3Bd5Bf0e1084A055615c768
Smart Router swap'ları için gassız/toplu token onayları (bkz. §5.1)
⚠️ Gerçek değer göndermeden önce adresleri her zaman kanonik PancakeSwap dağıtım listesine göre yeniden doğrula. Yukarıdaki tabloyu bir başlangıç noktası olarak değerlendir.
V3 havuzu (token0, token1, fee) ile tanımlanır. Ücret kademeleri ve tick aralıkları:
Ücret
fee değeri
Tick aralığı
Tipik kullanım
%0,01
100
1
Stablecoin–stablecoin
%0,05
500
10
İlişkili (örn. ETH/BTC)
%0,25
2500
50
Çoğu çift
%1,00
10000
200
Egzotik / değişken
V3 pozisyonu, NonfungiblePositionManager içinde tutulan bir ERC-721 NFT'sidir. tickLower, tickUpper, liquidity ve birikmiş ücretleri depolar. Buna tokenId ile başvurulur.
3. Araçlar
Bu sözleşmelerle ham ABI'ler ve herhangi bir web3 kütüphanesiyle konuşabilirsin, ancak @pancakeswap/v3-sdk ve @pancakeswap/smart-router paketleri zor matematiği (tick ↔ fiyat, Kayma-düzeltilmiş minimumlar, calldata kodlaması) senin adına yapar. Aşağıdaki örnekler viem ile birlikte bunları kullanır.
Ajanın, bir programa veya tetikleyiciye göre işlem yürüten yalnızca bu cüzdandır. Cüzdan Agent Studio tarafından finanse edilir ve yönetilir — BNB belgelerine bakabilirsin.
4. Durum okuma (her eylemden önce bunu yap)
Ajan, zinciri okuyarak harekete geçip geçmeyeceğine karar verir. Çoğu stratejiyi yönlendiren üç okuma:
Havuz fiyatı ve mevcut tick — zincir üstü slot0 + liquidity'den bir Pool varlığı oluştur:
Sahip olduğun bir pozisyon — NonfungiblePositionManager'dan tokenId ile oku:
Pozisyon aralık içinde mi? Bu tek boolean değeri, bir yeniden dengeleyici için tetikleyicidir. Aralık dışına çıkmadan önce hareket etmek için bunu "sınırdan N tick içinde" olarak sıkılaştırabilirsin.
5. Güvenli işlem dizileri
Tam olarak doğru yapılması gereken kısım budur. Gözetimsiz bir ajanın kötü işlemi yakalayacak insan yoktur; bu nedenle her durum değiştiren çağrının aşağıdaki dört güvenlik önlemiyle korunması gerekir.
5.1 Onaylar
Bir sözleşme tokenlarını taşıyabilmesi için izne ihtiyaç duyar. Doğru mekanizma hangi sözleşmeyi çağırdığına bağlıdır — üçü de izinsizdir:
ERC-20
approve— Herhangi bir token ile hem Smart Router hem de NonfungiblePositionManager için çalışır. Token/harcayan başına bir işlem. En basiti, ancak sürekli sınırsız onay süregelen bir risktir.selfPermit(EIP-2612) — NonfungiblePositionManager likidite işlemleri için. Token EIP-2612'yi destekliyorsa SDK, ayrı bir onay işlemi olmaksızınmint/increaseLiquidityile çok çağrıda imzalı, miktara kapsamlı bir izni paketleyebilir. EIP-2612 içermeyen tokenlar içinapprove'a geri döner.Permit2 — Smart Router swap'ları için. Token başına Permit2'yi bir kez onayla, ardından swap başına kısa ömürlü, imzalı, miktara kapsamlı izinler ver.
Otonom bir ajan için: Her izni tam miktara ve kısa bir son kullanma süresine kapsa. Önemli bakiye tutan bir ajan cüzdanından hiçbir zaman sınırsız onay verme.
5.2 Kayma — asla amountMin = 0 gönderme
amountMin = 0 göndermeHer ekleme/çıkarma/swap, kabul edilebilir minimum çıktıyı belirtmelidir. SDK'nın bunu elle hesaplamak yerine bir toleranstan türetmesine izin ver:
Swap'lar için Smart Router, slippageTolerance'ı uygular ve senin için amountOutMinimum'u hesaplar (§6, adım 0). Sıfır minimum, sandviç botlarına açık bir davettir — gözetimsiz bir cüzdanda bu tekrarlayan, sessiz kayıplara yol açabilir.
5.3 Son tarihler — her zaman bir tane belirle
Her çağrı bir deadline (unix saniyeleri) alır. İşlem o zamana kadar beklemede kalırsa eski bir fiyatta yürütmek yerine geri döner. Bir ajan için bunu kısa tut:
5.4 Multicall — çok adımlı eylemleri atomik yap
NonfungiblePositionManager ve Smart Router, multicall'ı destekler: tek bir işlemde paketlenmiş ve hepsi başarılı olan ya da hepsi geri dönen birkaç çağrı. Bu sadece gas tasarrufu değil — bir güvenlik özelliğidir. decreaseLiquidity yapıp ardından collect yapan bir yeniden dengeleme yarı yürütülmemeli. SDK senin için paketler:
Atomik bir "yeniden dengeleme" işlevi yoktur. Bir aralığı taşımak birleşik bir dizidir (çıkar → topla → yeni mint). Çıkarma ve yeni mint ayrı işlemlerde gerçekleşir; arada fiyat değişebilir. Çıkarma onaylandıktan sonra mint için durumu yeniden oku ve minimumları yeniden hesapla — çıkarma öncesi sayıları tekrar kullanma.
Güvenlik önlemi kontrol listesi (her ajan eylemine uygula)
[ ] Token izni miktara (Permit2) kapsamlı, sınırsız değil
[ ]
amount*Min/amountOutMinimumaçık bir Kayma toleransından türetilmiş, asla0değil[ ] Her çağrıda kısa
deadline[ ] Çok adımlı eylemler
multicallile paketlenmiş[ ] Bir dizinin ayrı işlemleri arasında durum yeniden okunmuş
[ ] Taşınan değer üzerinde işlem başına sınır ve hareket etmeden önce havuz fiyatının beklenen sınırlar içinde olduğuna dair akıl sağlığı kontrolü (manipüle edilmiş/likidite zayıf havuza karşı ucuz koruma)
6. Çalışma örneği — otomatik V3 aralık yeniden dengeleyici
Referans ajan. Bir pozisyonu izler; fiyat aralık sınırına yaklaştığında likiditey çeker ve mevcut fiyatın etrafında taze bir aralık yeniden oluşturur. Beş adım.
Tetikleyici: pool.tickCurrent, tickLower/tickUpper'ın tampon mesafesi içinde (§4'ten).
Adım 0 — (isteğe bağlı) token oranını yeniden dengele
Çıkardıktan sonra eski aralığın ürettiği oranda token0 ve token1 tutarsın. Yeni, yeniden ortalanmış bir aralık genellikle farklı bir oran gerektirir; bu yüzden Smart Router aracılığıyla fazlalığı takas et:
Adım 1–3 — likiditey kaldır, topla, yak (tek işlem)
removeCallParameters tüm paketi oluşturur: likiditey sıfıra decreaseLiquidity eder, hem çekilen anaparayı hem de birikmiş ücretleri collect eder ve şimdi boş olan NFT'yi burn eder — tek atomik bir multicall olarak.
Pozisyon MasterChefV3'te stake edilmişse, NFPM'den kaldırmazsın. Önce unstake etmek için
MasterChefV3.withdraw(tokenId, to)çağır (bu aynı zamanda bekleyen CAKE'i hasat eder) ve NFT'yi cüzdanına iade eder — ardından yukarıdaki kaldırmayı uygula. Bkz. §7.
Adım 4 — yeni aralığı mint et
Mevcut fiyatın etrafında tick'leri yeniden hesapla (havuzu yeniden oku — bkz. §5.4), bunları ücret kademesinin aralığına yaklaştır, artık tuttuğun tokenlardan bir Position oluştur ve mint et.
Ajan artık taze, aralık içi bir NFT tutuyor. Farm'layorsa yeniden stake et (§7). Bir sonraki tick'te §4 okumasına geri dön.
7. Farm etkileşimleri (MasterChefV3)
MasterChefV3'te bir V3 pozisyon NFT'si stake etmek, Swap ücretlerinin üstünde CAKE kazandırır.
Yalnızca aktif Farm'a sahip havuzlardan gelen pozisyonlar CAKE kazanır. PancakeSwap Yönetişimi, hangi havuzların Farm'lanabilir olduğunu kaydeder (her biri bir
pidalır). Kaydedilmemiş bir havuzdaki pozisyonu stake etmekInvalidPidhatasıyla geri döner. Ajan aktivitesinin PancakeSwap tarafındaki bir listeye bağlı olduğu tek yer burasıdır — ve bu havuz düzeyinde, ajan düzeyinde değildir: herhangi bir cüzdan herhangi bir aktif Farm'a stake edebilir. (NonfungiblePositionManager aracılığıyla bir pozisyon yönetmek — mint/collect/rebalance — Farm gerektirmez ve her havuz için çalışır.)
Yalnızca aktif Farm'a sahip havuzlardan gelen pozisyonlar CAKE kazanır. PancakeSwap Yönetişimi, hangi havuzların Farm'lanabilir olduğunu kaydeder (her biri bir
pidalır). Kaydedilmemiş bir havuzdaki pozisyonu stake etmekInvalidPidhatasıyla geri döner. Ajan aktivitesinin PancakeSwap tarafındaki bir listeye bağlı olduğu tek yer burasıdır — ve bu havuz düzeyinde, ajan düzeyinde değildir: herhangi bir cüzdan herhangi bir aktif Farm'a stake edebilir. Bir Farm stratejisi oluşturmadan önce havuzun canlı bir Farm'a sahip olup olmadığını kontrol et. (NonfungiblePositionManager aracılığıyla bir pozisyon yönetmek — mint/collect/rebalance — Farm gerektirmez ve her havuz için çalışır.)
Stake et — Pozisyon NFT'sini MasterChefV3'e aktar (
safeTransferFrom(owner, masterChefV3, tokenId)). Farm artık NFT'yi korur.Hasat et —
harvest(tokenId, to)unstake etmeden bekleyen CAKE'i talep eder. Birkaç pozisyon genelinde tek bir işlemde talep etmek içinbatchHarvestkullan.Çek / çık —
withdraw(tokenId, to)unstake eder, bekleyen CAKE'i hasat eder ve NFT'yi cüzdanına iade eder.decreaseLiquidity/burnyapabilmeden önce çekmen gerekir (§6'daki NFPM çağrıları yalnızca cüzdanının tuttuğu bir NFT üzerinde çalışır).
Dolayısıyla stake edilmiş bir pozisyon için yeniden dengeleyici şu şekilde çalışır: withdraw → çıkar/topla/yak → mint → safeTransferFrom ile MasterChefV3'e geri stake et.
8. Güvenlik, sınırlamalar ve yasal uyarılar
Gerçek fonları taşıyan bir ajan dağıtmadan önce bunu oku.
Özerklik geri alınamaz. Dağıtılmış bir ajan işlemleri insan onayı olmadan imzalayıp gönderir. Bir hata, kötü bir tetikleyici veya manipüle edilmiş bir fiyat akışı gerçek sonuçlar doğurur. BSC test ağında test et, ardından ölçeklendirmeden önce ana ağ maruziyetini sınırla (işlem başına ve günlük sınırlar).
Kayma ve son tarihler zorunludur, isteğe bağlı değil (§5). Bunları atlayan bir ajan er ya da geç sandviçlenecektir.
Fiyat manipülasyonu savunması. Harekete geçmeden önce havuz fiyatını bağımsız bir referansla karşılaştır ve farklılık varsa çalıştırmayı atla — manipüle edilmiş veya ince bir havuza karşı işlem yapmaya karşı ucuz bir sigorta.
Gas ve finansman. Ajan cüzdanını gas için BNB ile finanse tutun; yetersiz kalan bir ajan pozisyonu yeniden dengeleme ortasında bırakabilir (çıkarıldı ama yeniden mint edilmedi). Her çalıştırmada durumu yeniden okumak (§4) bir sonraki tick'te kurtarmasını sağlar.
Scaled-UI / RWA tokenları. Bazı BSC tokenları (örn. Binance Hisse Tokenları) zincir üstü UI çarpanları kullanır (ERC-8056). Zincir üstü ham miktarlar görüntülenen miktarlardan farklıdır. Ajanın bunlarla işlem yapması gerekiyorsa tüm sözleşme matematiğini ham birimlerle yap ve çarpanı yalnızca insanlara yönelik görüntülemede uygula.
Ajanından sen sorumlusun. PancakeSwap havuzları izinsiz sözleşmelerdir; karşılarına otonom bir ajan dağıtmak senin kararın ve senin riskindir. Bu rehber teknik bir referanstır, finansal tavsiye değildir; PancakeSwap sonuçlar konusunda herhangi bir garanti vermez.
9. Referans
@pancakeswap/smart-router— yönlendirme + Swap calldata (en iyi repo içi örnekler README'sindedir)@pancakeswap/v3-sdk—Pool,Position,NonfungiblePositionManager,Multicall, tick/fiyat matematiğiBNB Agent Studio — ajanı tanımlama, oluşturma ve dağıtma (BNB belgeleri)
PancakeSwap dağıtım adresleri — kanonik sözleşme listesi (kullanmadan önce doğrula)
ERC-8056 (Scaled UI Amount) — https://github.com/bnb-chain/BEPs/pull/677
Last updated
Was this helpful?