传统的金融科技世界充满了使用户能够制作复杂算法交易模型和系统的工具。而去中心化金融 (DeFi) 也同样为用户和开发人员提供了相同的工具,围绕底层金融协议和工具具有更高的透明度和灵活性,从而催生了 DeFi 量化交易和应用开发。DeFi 开发人员和 DeFi quants 甚至可以利用这些工具的衍生品,并将它们组合成新的服务,以建立在传统金融科技世界中没有的创新金融头寸。DeFi 开发人员的基本工具之一是能够以非托管方式借出和借入加密货币资产。阅读本文前请先查看:
《用 Python 开发 DeFi 去中心化借贷应用(上)》
存入抵押品
接下来,我们运行 aave_borrow.py
脚本,它做了 4 件事:
•将抵押品存入 Aave 贷款池•获得了我们的抵押品和另一种资产之间的对话率•使用该抵押品借入不同的资产(贷款)•还清了贷款
我们看一下main
函数的开头:
def main():
account = get_account()
erc20_address = config["networks"][network.show_active()]["weth_token"]
if network.show_active() in ["mainnet-fork"]:
get_weth(account=account)
lending_pool = get_lending_pool()
我们首先从配置文件中获取我们的地址(如果我们在测试网上,它会再次从我们的配置中提取)。如果您在本地链上进行测试,我们只使用它生成的第一个帐户。这在 get_account
函数中定义。然后,我们也从配置文件中获取 WETH 令牌的地址,如果我们在本地链上,我们调用之前调用的相同 get_weth
函数。这是为了确保如果我们使用本地链,我们的钱包中有 WETH。
最后,我们得到了lending_pool
的地址。 lending_pool
是管理借贷功能的链上智能合约,因此得名。您可以在 Aave 文档中查看功能,或者您可以直接在链上查看合约。
我们在这个合约中看到了许多有用的功能:
•借贷•抵押•获取用户帐户数据•偿还
这些是我们将要使用的函数。请记住,链上智能合约与传统软件工程中的对象或类相同,每个都有与之相关的功能。如果您要print(type(lending_pool))
,我们会得到这种类型:
<class 'brownie.network.contract.Contract'>