Python ile Merkeziyetsiz Piyasalarda Borç Alıp Borç Verme I
https://blog.chain.link/blockchain-fintech-defi-tutorial-lending-borrowing-python/ sayfasından yazarının izniyle uyarlanmıştır.
Arkadaşlar burada yazılanları anlamak ve uygulamak için biraz için python biraz da solidity bilmeniz gerekiyor.
De-Fi dünyasında borç alıp verme işlemleri aklınız alamayacağı kadar çeşitlilik gösterir. Büyük bir ihtimalle; yüksek teminat vererek borç alındığını biliyorsunuz.
Peki size, teminatsız borç alabileceğinizi söylesem.İnanılmaz değil mi? Bunlara flash loans diyoruz?
Aşağıda göreceğiniz gibi, bu kodları uygulamak için deha olmanıza gerek yok fakat solidity’i öğrenirseniz bu işte çok hızlı ilerleyebilirsiniz.
Başlıyoruz.
web3.py ve brownie yi bilgisayarınıza yükleyin.
Tüm uygulama dosyalarını kendi dizinimize çekelim.
git clone https://github.com/PatrickAlphaC/aave_brownie_py
Şimdi dizine geçelim.
cd aave_brownie_py
aave_brownie_py klasörünüz yukarıdaki gibi olmalıdır.
terminal üzerinde aave_brownie_py dizini üzerinde aşağıdaki kodu yazın.
pip install -r requirements.txt
Bunun sayesinde eth-brownie
ve python-dotenv paketleri kurulacaktır.
Brownie yüklendi mi? Kontrol edelim?
brownie --version
Şimdi iki şeye ihtiyacımız var. Bir metamask cüzdanı açın. Bir infura hesabı açın.
Infura üzerindenWEB3_INFURA_PROJECT_ID'yi
Metamask üzerinden Metamask PRIVATE_KEY'yi alın.
export WEB3_INFURA_PROJECT_ID=PROJECT_ID
export PRIVATE_KEY="PRIVATE_KEY"
şeklinde çalıştığınız dizine .env dosyası olarak kaydedin. Bu dosyayı sonra klasör içinde göremeyeceksiniz. Ubuntu, “.” ile başlayan dosyaları gizli olarak görüyor. Terminalden “vi .env” yazıp istediğiniz zaman içine bakabilirsiniz.
Terminal üzerinde
source .env
yazıp, bu şifreleri kod bloğumuza ekliyoruz.
Sakın bu dosyaları Github’a yüklemeyin.
Kovan testnet üzerinden kendimize biraz ETH yollayalım. Burada sıkıntı olursa https://gitter.im/kovan-testnet/faucet üzerinden Metamask’a ETH yollayın.
Hepsinde sorun çıkarsa şuradan güncel faucetleri bulun .
Ben kendime 2 eth yollamıştım.(Metamask üzerinde kovan ağına tıklayın. Tüm işlemleri orada yapacağız.)
Aave platformunda ETH kullanılmadığı için , ETH ile uyumlu “1” WETH alacağız.
get_weth.py kodu bu işe yarıyor.
brownie run scripts/get_weth.py --network kovan
Bu işlemin sonucunda 1 WETH sahibi oldum.
Metamask cüzdanınızda jeton ekleye basıp “Token adresi” sekmesine 0xd0a1e359811322d97991e03f863a0c30c2cf029c
yazın, bu şekilde WETH ‘de metamask’da görülecek.
get_weth.py kodunu inceleyelim !
def get_weth(account=None):
account = (
account if account else accounts.add(config["wallets"]["from_key"])
)
weth = interface.WethInterface(
config["networks"][network.show_active()]["weth_token"]
)
tx = weth.deposit({"from": account, "value": 1000000000000000000}) print("Received 1 WETH")
return tx
İlk olarak hesabımıza (hesabımızı ekliyoruz) ulaşıyoruz
account = (
account if account else accounts.add(config["wallets"]["from_key"])
)
Sonrasında WETH değişkenine; WETH kontrat adresini ve abi sini ekliyoruz. Burada tüm işlemler kontratlar arasında oluyor.
weth = interface.WethInterface(
config["networks"][network.show_active()]["weth_token"]
)
Kontrat interface/abi ve kontrat adresleri yoluyla bu iletişim kuruluyor.
interface bilgileri; interfaces klasörü altında
abi bilgileri; build/interfaces klasöründe bulunuyor.
Kontrat adresi ise brownie-config.yaml dosyası içindedir.
Son olarak; weth kontratı üzerindeki deposits fonksiyonu çağırıp 1 WETH talep ediyoruz.
tx = weth.deposit({"from": account, "value": 1000000000000000000})
Bu yolla 1 WETH imizi aldık.
işlemin sonunda size verilen hash değerini kovan test network üzerinde taratırsanız işleminizi göreceksiniz.
0x22b2154c1c02c408d7aa1195295a2c4b3d378fc7eafba5db10971cf5f4ddb12a
Bu yazıyı kaç kişi okur bilmiyorum, ikinci bölümü gelecek hafta yazacağım.
Dr. Engin YILMAZ
23.06.2021
Ankara