Python ile Merkeziyetsiz Piyasalarda Borç Alıp Borç Verme I

Solidity Programming Language
3 min readJun 22, 2021

--

https://blog.chain.link/blockchain-fintech-defi-tutorial-lending-borrowing-python/

https://blog.chain.link/blockchain-fintech-defi-tutorial-lending-borrowing-python/ sayfasından yazarının izniyle uyarlanmıştır.

https://blog.chain.link/author/patrick/

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.

https://aave.com/flash-loans/

Peki size, teminatsız borç alabileceğinizi söylesem.İnanılmaz değil mi? Bunlara flash loans diyoruz?

https://docs.aave.com/faq/flash-loans

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
Github

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.

terminal görünümü

Brownie yüklendi mi? Kontrol edelim?

brownie --version

terminal

Ş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.)

https://kovan.etherscan.io/tx/0xd4aa8b1e0e1b239e657f33ea0e3a185f5597f78b307dcd7b3d7d300058e394fb

Aave platformunda ETH kullanılmadığı için , ETH ile uyumlu “1” WETH alacağız.

get_weth.py kodu bu işe yarıyor.

get_weth.py
brownie run scripts/get_weth.py --network kovan

Bu işlemin sonucunda 1 WETH sahibi oldum.

0x22b2154c1c02c408d7aa1195295a2c4b3d378fc7eafba5db10971cf5f4ddb12a

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

https://kovan.etherscan.io/tx/0x22b2154c1c02c408d7aa1195295a2c4b3d378fc7eafba5db10971cf5f4ddb12a

Bu yazıyı kaç kişi okur bilmiyorum, ikinci bölümü gelecek hafta yazacağım.

Dr. Engin YILMAZ

23.06.2021

Ankara

--

--

Solidity Programming Language
Solidity Programming Language

Written by Solidity Programming Language

Solidity basics for beginners: Learn the fundamentals of smart contract development and build your first DApp! #Solidity #Foundry #Ethereum #Opcodes #DApps

No responses yet