💻Alpaca Finans ile Entegrasyon
Alpaca Finans ile Entegrasyon
Alpaca Finans, DeFi uygulamalarının ve son kullanıcıların temel protokolüyle entegre olmasına olanak tanır. Basit bir örnek verecek olursak, bir geliştirici, kullanıcıların fonlarını Alpaca Finance'in mevduat kasalarına yatıran ve gaz verimliliği için kullanıcılara getirilerini birleştiren bir otomatik birleştirme protokolü oluşturabilir. Bu belgenin amacı, ekosistemin genel güvenliğini sağlamak için geliştiricilere protokolümüzle entegrasyon konusunda yardımcı olmaktır.
Öncelikle protokolümüzü daha iyi anlamak isterseniz, sözleşme belgelerimizi buradan inceleyebilirsiniz.
Alpaca API ile entegrasyon, kimlik doğrulama gerektirir, bu nedenle bu hizmeti kullanmak isterseniz lütfen request@alpacafinance.org adresinden bize ulaşın.
Akıllı Sözleşme Entegrasyonu
Bu bölüm, doğrudan bir akıllı sözleşmeden Alpaca Finans ile nasıl entegre edileceğini açıklar.
Ödünç Verme
Alpaca Finans, kullanıcıların kripto varlıklarını mevduat kasalarımıza yatırarak faiz geliri elde etmelerini sağlar. Bu varlıklar daha sonra çiftçilere pozisyonlarını artırmaları için sunulur. EVM uyumlu ve BNB Chain'de dağıtılan herhangi bir akıllı sözleşme, Alpaca Finance'in kredi verme protokolüyle entegre olabilir.
Temel tokeni Alpaca Finance'in kasalarına yatırmak için, önce mevcut kasaların listesi ve bunlara karşılık gelen temel tokenler edinilmelidir.
Tüm kasa sözleşmesi adreslerinin ayrıntılı listesi için lütfen buraya bakın.
Bir kasaya para yatırmadan önce, mevduat sahibi olarak hareket eden akıllı sözleşmenin yatırılacak temel tokenin harcama ödeneğini onaylaması gerekir. Bu, Alpaca'nın Akıllı Sözleşmesine göndericiden token alma yeteneği sağlayacaktır.
Yukarıdaki JavaScript kod parçacığı, olası maksimum tutarla belirteç harcama ödeneğinin nasıl onaylanacağına ilişkin basitleştirilmiş bir iş akışıdır. MaxUint256'nın kullanılmasının güvenlik riskleri oluşturabileceğini lütfen unutmayın, kullanıcı tarafından girilen tam belirteç miktarının kullanılması önerilir.
Para yatırma işlemi, Deposit
yöntemi çağrılarak ve amountToken
parametresinde para yatırma tutarı belirtilerek yapılır. amountToken
veri türü uint256
'dır ve bu parametre para yatırma jetonunun ondalık sayılarına göre biçimlendirilmelidir (örneğin, BNB 18 ondalık sayı kullanır, 1 BNB = 10000000000000000000
veya 1 * 1e18
) dir. Para yatırma tokeninin BNB olduğu durumda, kasa BNB'nin wBNB'ye sarılmasını yönetecektir, ancak işlem, yerel token olarak gönderilen yeterli BNB'yi içermelidir.
Para yatırma başarılı olursa, kasa faiz getiren tokenleri (ibTokens) olarak basacak ve bu basılan tokenleri arayan kişiye geri iade edecektir. Lütfen, faiz içeren tokenlerin tasarımı nedeniyle iade edilen ve faiz içeren token miktarının, sağlanan temel token miktarına eşit olmayacağını unutmayın. deposit
yöntemini arayan kişi, kasalardaki mevduatlar için kullanıcıların paylarını doğru bir şekilde takip etmelidir, detaylı açıklama için Faiz Getiren Token Hesaplama bölümüne bakınız.
Borç vermenin faizi ibToken'lere tahakkuk edecektir. Borç vermeden elde edilen kazançları gerçekleştirmek için, temel jeton + toplanan faiz geri alınarak ibTokens geri çekilmelidir. İbToken'in değişim fiyatının para çekme sırasında daha yüksek olacağını fark edeceksiniz, bu da faizin zaten tahakkuk ettiğini gösterir. Bu nedenle, geri çekildikten sonra ek temel tokenler alacaksınız.
Temel tokenleri kasadan kullanmak için, çekilecek ibTokens miktarının vault
sözleşmesindeki withdraw
yöntemine sağlanması gerekir.
Temel belirteçler daha sonra arayana geri döndürülür. İade edilen token BNB ise, Kasa sözleşmesi WBNB'yi tekrar BNB'ye açacaktır.
Faiz Getiren Token Hesaplama
Faiz Getiren Simge (ibToken), mevduat sahibinin kasa payını temsil eden simgedir. ibTokens, zaman içinde borç vermeden alınan faizi tahakkuk ettirecektir. Alpaca Finance'in kasalarını kullanmak isteyen herhangi bir DeFi protokolü, gerçek kullanıcıların kasadaki paylarını yansıtmak için ibTokens hesaplamasını doğru bir şekilde anlamalı ve uygulamalıdır.
Bu nedenle, bir ibToken ile gerçek temel token arasındaki oran, kasa ilk açıldığında yalnızca 1:1 olacaktır, bundan sonra ibToken'ın değeri borç verme faizi tahakkuk ettikçe artmaya devam edecektir (bir ibToken'ın temel tokene göre değeri yalnızca tek yönlü yukarı hareket etmesidir, değer düşemez). Örneğin, varsayalım ki: 1 ibBNB = 1.0292 BNB, yani 1.0292 BNB depozito karşılığında 1 ibBNB alacak. Öte yandan, 1 ibBNB'yi kullanma karşılığında 1.0292 BNB alacak. ibBNB'nin itfa edilmesinden elde edilen ek BNB, tahakkuk eden faizdendir.
Alpaca Finance'in borç verme kasalarıyla bütünleşen bir DeFi protokolünün, kullanıcıların kasa mevduatındaki paylarını doğru bir şekilde hesaplaması gerekebileceğinden, ibTokens değerlerinin bu temel mekanizmasını anlamak çok önemlidir. Bunun yapılmaması, güvenlik riskleri ve mali kayıplara neden olabilir. Bu protokollerin ibTokens'leri her zaman temel token ile 1:1 orana sahip olarak ele aldığıdır. bEarn.fi ve ValueDeFi saldırıları için durum buydu (bEarn.fi ve ValueDefi 'deki saldırıların analizini okuyun).
Ayrıca, Alpaca flash kredilerle çalışmasa da, harici bir Alpaca dışı kasada, flash kredi saldırısı gibi bir saldırıdan ibToken fiyat manipülasyonu riski olabilir. Hazırlıksız olunduğunda, bir ibToken'ın fiyatı, bir saldırganın işlemi kapsamında büyük ölçüde değiştirilebilir. Bu nedenle akıllı sözleşme hesaplamasından ibToken fiyatına güvenmek tek başına yeterli değildir. Yukarıda bahsedilen bu tür bir saldırıyı önlemek için projenin ibTokens ile temel tokeninin mevcut oranını besleyen bir fiyat beslemesine sahip olmasını öneriyoruz.
Bu nedenle, size ibTokens fiyatlarını hesaplamanın en güvenli ve doğru yolunu göstereceğiz.
Akıllı sözleşme tarafından doğrudan hesaplama
Akıllı sözleşmeden ibToken token fiyatını hesaplamak en basit yoldur, ancak sağlamlık için güvendiğiniz tek yöntem bu olmamalıdır.
Yukarıdaki kod parçacığı, ilgili kasadan totalTtoken
ve totalSupply
değerlerinin alınmasından bir ibToken fiyat hesaplamasını gösterir.
Alpaca API'sinden ibToken fiyatını alma
Alpaca Finance, herhangi bir ibToken fiyatını almak için /ibTokens
uç noktasına bir GET
REST isteği göndererek mevcut ibToken fiyatlarını almak için bir API sağlamıştır. Alpaca API ile entegrasyon, kimlik doğrulama gerektirir, bu nedenle bu hizmeti kullanmak isterseniz lütfen request@alpacafinance.org adresinden bize ulaşın.
API'den alınan örnek sonuç aşağıdaki gibidir:
Alpaca'nın API'sinden alınan fiyat, bir fiyat beslemesi kullanılarak akıllı sözleşmeye sağlanmalıdır. Fiyatların bir akıllı sözleşme çağrısına giriş yoluyla sağlanması, müşteriden gelen bir enjeksiyon saldırısına karşı savunmasız olacaktır. Bunu yapmamanızı şiddetle tavsiye ettik. Basit bir fiyat beslemesi örneği burada görülebilir. Güvenilir bir fiyat örneği kullanarak, ibToken fiyat verilerinin bütünlüğünü ve güvenilirliğini sağlayabilirsiniz.
Hem akıllı sözleşme hesaplamasından hem de Alpaca API'sinden ibToken fiyatını almanızı şiddetle tavsiye ederiz. Olası bir veri anomalisini önlemek için bu iki fiyat verisi kaynağı karşılaştırılmalıdır. İki kaynak arasındaki karşılaştırma önemli ölçüde farklılık gösteriyorsa, fiyat verileri reddedilmelidir.
Özetle, ibToken fiyatlarını hesaplamak için en güvenli süreç şudur:
Kendi sözleşmelerinizde ibToken fiyatlarını hesaplayın.
ibToken fiyatları için zincir dışı bir örnek kullanın veya bu fiyatları Alpaca'nın API'sinden alın.
1 ve 2'yi karşılaştırın. Fark % n'den fazlaysa işlemi geri alın.
Alpaca'nın API'si şu anda yalnızca protokoller ve kurumlar için beyaz listededir. Erişim talebinde bulunmak için lütfen bize request@alpacafinance.org adresinden e-posta gönderin.
Staking
Alpaca Finance, kullanıcılara staking fırsatları sunuyor. ALPACA tokenleri şeklinde ek getiriler almak için stake havuzlarımızda stake etmek için faiz getiren tokenler ve seçilmiş LP tokenleri mevcuttur. Para yatırdıysanız ve ibTokens aldıysanız, mevcut maksimum ödülleri kazanmak için tokenleri bu havuzlara yatırmanızı öneririz.
Tokenleri Alpaca Finance'in stake havuzlarına stake etmek için, önce havuzların listesi ve bunlara karşılık gelen stake tokenleri edinilmelidir. Tüm havuz sözleşmesi adreslerinin ayrıntılı listesi için lütfen buraya bakın. Havuzların sözleşmesi, kod tabanımızda genellikle Fairlaunch
olarak adlandırılır.
Stake yapma işlemi para yatırma deposit
yöntemi çağrılarak yapılır. Parametreler aşağıdaki gibidir:
_for
yatıranın adresidir._pid
, stake havuzunun kimliğidir._amount
, ondalık sayılarıyla ifade edilenuint256
'da yatırılacak token miktarıdır (örneğin, ibBNB 18 ondalık sayı kullanır, 1 ibBNB =10000000000000000000
veya1 * 1e18
)
Stake payının bilgileri akıllı sözleşme durumu içinde saklanacaktır. Stake işleminden herhangi bir token çıkarılmayacaktır. Bir kullanıcının paylaşımı, Fairlaunch
sözleşmesinden userInfo
yöntemi çağrılarak alınabilir.
Stakingden elde edilen ödüller otomatik olarak kredilendirilmez ve manuel olarak hasat edilmelidir. Ancak, stake edilen havuzlarda para yatırma veya çekme işlemi yapmak, talep eden kişiye bekleyen ödülleri otomatik olarak hasat edecektir. Bir stake havuzundan ödül toplamak için, arayan kişinin Fairlaunch
sözleşmesinden harvest
yöntemini çağırması ve havuz kimliğini sağlaması gerekir.
Stake tokenlerini havuzdan çekmek için, kullanıcının payının miktarı Fairlaunch
sözleşmesindeki withdraw
yöntemine tedarik edilmelidir.
Stake tokenleri talep eden kişiye iade edilecek ve bekleyen ödüller de otomatik olarak toplanacaktır.
Testnet Ortamı
Mainnet'te hazırlama ve üretim dağıtımlarından önce, Alpaca Finance sözleşmeleri ilk olarak BNB Chain Testnet ağında dağıtılır. Bu Testnet sözleşmeleri öncelikle yalnızca Alpaca Finance'in geliştirilmesi için dahili testler için kullanılmak üzere tasarlanmıştır.
Ancak, sözleşmelerimizle entegrasyonlarını test etmek isteyen üçüncü taraflara açığız. Testnet sözleşmeleri tarafından kullanılan tokenler bizim tarafımızdan dahili olarak oluşturulur. Bu tokenlerden bazılarına test amacıyla sahip olmak isterseniz, lütfen requests@alpacafinance.org adresine ulaşın. Testnet'teki adreslerin listesi için lütfen buraya bakın.
Last updated