smartcontractkit / chainlink-mix

Working with smart contracts with eth-brownie, python, and Chainlink.
https://chain.link/
MIT License
504 stars 198 forks source link

Withdraw from aave with brownie #50

Open tulLazy opened 2 years ago

tulLazy commented 2 years ago

So i wanted to try to withdraw the assets that i landed on aave. Ichecked the aave v2 documentetation and it told me to use the withdraw function, i used it as it told me to and everytime this error pops up: VirtualMachineError: revert: 6

Can someone help me? P.S. The rest of the code works fine it's the withdrawing that is giving me problems

from brownie import network, config, interface from scripts.helpful_scripts import get_account from scripts.get_weth import get_weth from web3 import Web3

amount = Web3.toWei(0.1, "ether")

def main(): account = get_account() erc20_token_address = config["networks"][network.show_active()]["weth_token"] if network.show_active() in ["mainnet-fork"]: get_weth()

ABI

# Address
lending_pool = get_lending_pool()
# Approve sending our ERC20 tokens
approve_erc20(amount, lending_pool.address, erc20_token_address, account)
print("Depositing in aave....")
tx_deposit = lending_pool.deposit(
    erc20_token_address, amount, account.address, 0, {"from": account}
)
tx_deposit.wait(1)
print("Deposited!")
# ... how much can we borrow?
borrowable_eth, total_debt = get_borrowable_data(lending_pool, account)
print("Let's borrow!")
# DAI in terms of ETH
dai_to_eht_price = get_asset_price(
    config["networks"][network.show_active()]["dai_eth_price_feed"]
)
amount_dai_to_borrow = (1 / dai_to_eht_price) * (borrowable_eth * 0.95)
# borrowable eth to -> borrowable dai * 95%
print(f"We are going to borrow {amount_dai_to_borrow} DAI")
# Now we will borrow
dai_address = config["networks"][network.show_active()]["dai_token"]
borrow_tx = lending_pool.borrow(
    dai_address,
    Web3.toWei(amount_dai_to_borrow, "ether"),
    1,
    0,
    account.address,
    {"from": account},
)
borrow_tx.wait(1)
print("You borrowed some DAI!")
get_borrowable_data(lending_pool, account)
print("Repaying DAI borrowed...")
repay_all(Web3.toWei(amount_dai_to_borrow, "ether"), lending_pool, account)
get_borrowable_data(lending_pool, account)
print("Withdrawing lended assets...")
withdraw(erc20_token_address, amount, account, lending_pool)
get_borrowable_data(lending_pool, account)
print("You just deposited, borrowed and repayed with aave, brownie, and chianlink ")

def withdraw(erc20_token_address, amount, account, lending_pool): approve_erc20(amount, lending_pool.address, erc20_token_address, account) withdraw_tx = lending_pool.withdraw( erc20_token_address, amount, account.address, {"from": account} ) withdraw_tx.wait(1) print("Withdrawed!") return withdraw_tx

QingyangKong commented 2 years ago

Hi @tulLazy , it seems the problem is nothing with Chainlink. Would you like to create an issue in Aave repository where developers may be more familiar with the withdraw function in Aave.