買以太坊 買以太坊
Ctrl+D 買以太坊
ads
首頁 > ICP > Info

LOAN:如何使用Aave進行閃電貸_VelasPad

Author:

Time:1900/1/1 0:00:00

Aave,以前稱為 ETHLender,現在是 DeFi 領域的前沿應用。Aave 是該領域中第一個提出閃電貸概念的人。在閃電貸之前,你必須用一個超額抵押的資產來借貸另一個資產。例如,如果我想借一個[DAI](https://en.wikipedia.org/wiki/Dai_(cryptocurrency "DAI")),我將不得不存入另一個超過該價值的加密貨幣。換句話說,你必須有錢才能借到錢。閃電貸打破了這種想法。他們為一個新的貸款系統打開了大門,并且做到了這一點,允許用戶在不提供任何東西作為抵押的情況下借款。

在本教程中,你將了解到閃電貸是如何實現的,以及如何自己實現執行一筆閃電貸。

摘自Aave 官網:Aave 是一個去中心化的非托管流動性市場協議,用戶可以作為存款人或借款人參與。儲戶向市場提供流動性,以賺取被動收入,而借款人能夠以過度抵押(永久)或不足抵押(單塊流動性)的方式借款。

這個定義完全正確的,但如果你不熟悉 DeFi 行業的行話,你可能并不理解它的含義。你可以把 Aave 看成是一個去中心化的偽銀行。Aave 沒有一個驗證所有交易的中央銀行,而是利用智能合約,以自動化的方式完成所有這些工作。存款人將他們的代幣放入 Aave,并開始為他們的存款賺取利息。另一方面,借款人會做相反的事情。他們從 Aave 中取出錢,并開始對所借的金額計息。不過他們必須超額抵押才能借到錢。

對于那些不想把錢存入 Aave,而只想借錢的人來說,還有一種方法。這就是我們前面提到的閃電貸。

之前提到的閃電貸是一種在區塊鏈上借入資產的新方式。最初由 Aave 實現,其他趨勢性的 DeFi 協議,如dYdX迅速跟進,增加了這個新功能。所有以太坊交易的一個特性,使閃電貸成為可能。而這個關鍵特性就是[原子性](https://en.wikipedia.org/wiki/Atomicity_(database_systems "原子性")#:~:text=一個原子交易就是,直接拒絕整個系列。)。

一個交易的操作系列是不可分割和不可消減的,它就是原子的。簡單來說就是:要么所有執行,要么什么都沒有發生。沒有中間狀態! 閃電貸利用原子性,允許用戶在不提交抵押品的情況下先進行借款。首先,每當你在閃電貸中借入一項資產時,你必須支付貸款金額的 0.09%的費用。其次,你必須在借貸的同一交易中償還貸款。雖然這種能力很好,但它的用途卻有些局限。閃電貸主要用于資產間套利。

為了簡單起見,我們將使用Remix IDE。Remix 是一個基于瀏覽器的 IDE。也被稱為集成開發環境。Remix 具有編寫、調試、部署和操作以太坊智能合約的能力。瀏覽器中加載 Remix 后,你會看到這個菜單:

路透社:SBF欺詐指控回避了關于美國法律如何看待加密貨幣的爭論:1月9日消息,Sam Bankman-Fried可能會發現很難辯訴應該撤銷針對他的欺詐指控,因為美國法律如何對待加密貨幣存在不確定性,就像涉及數字資產的刑事案件中其他被告一樣完成了。法律專家表示,這是因為曼哈頓聯邦檢察官對現已破產的加密貨幣交易所 FTX 創始人的指控在很大程度上回避了正在進行的關于加密貨幣是否應作為證券或商品進行監管的辯論。但據專家稱,這種不確定性與針對SBF的大部分指控無關。雖然他面臨一項串謀證券欺詐的指控,但該指控稱他誤導了FTX的股票投資者,并未涉及交易所交易資產的性質。[2023/1/9 11:02:36]

這里不會對 IDE 進行深入的研究(你可以閱讀跟我學 Solidity :開發環境),因為本教程的重點是閃電貸。不過,你需要了解一下上圖的四個部分:主面板、側邊面板、圖標面板和終端面板。

在我們開始編寫智能合約之前,我們要下載一個瀏覽器插件,現在最流行的是MetaMask,使我們能夠與以太坊區塊鏈對接。

如何安裝 MetaMask:

你將開始從網站https://metamask.io/上下載擴展程序。

點擊你新安裝的擴展程序,并同意條款和條件。

創建一個安全的密碼!

備份助記詞,它應該物理存在,不應該保存在你的電腦上的任何地方。

如果上述四個步驟都完成了,你就可以開始編寫你的第一個智能合約了!

智能合約允許我們通過執行確定性的程序來讀寫區塊鏈的數據。我們使用一種名為Solidity的編程語言編寫以太坊智能合約。Solidity 文件以.sol 擴展名結尾。

歡迎訂閱全面掌握 Solidity 智能合約開發

你可以在第一次啟動 Remix 時刪除工作區中可能存在的任何文件。然后創建幾個文件:

FlashLoan.sol

**FlashLoanReceiverBase.sol **

ILendingPoolAddressesProvider.sol

IFlashLoanReceiver.sol

ILendingPool.sol

Withdrawable.sol

下面的代碼片斷是**FlashLoan.sol.**的實現。

這個閃電貸將借入 1 [DAI](https://en.wikipedia.org/wiki/Dai_(cryptocurrency "DAI"))。

pragma solidity ^0.6.6;import "./FlashLoanReceiverBase.sol";import "./ILendingPoolAddressesProvider.sol";import "./ILendingPool.sol";contract FlashloanV1 is FlashLoanReceiverBaseV1 {    constructor(address _addressProvider) FlashLoanReceiverBaseV1(_addressProvider) public{} /**   Flash loan 1000000000000000000 wei (1 ether) worth of `_asset` */ function flashloan(address _asset) public onlyOwner {        bytes memory data = "";        uint amount = 1 ether;        ILendingPoolV1 lendingPool = ILendingPoolV1(addressesProvider.getLendingPool());        lendingPool.flashLoan(address(this), _asset, amount, data);    }    /**  This function is called after your contract has received the flash loaned amount     */    function executeOperation(        address _reserve,        uint256 _amount,        uint256 _fee,        bytes calldata _params    )        external        override    {        require(_amount <= getBalanceInternal(address(this), _reserve), "Invalid balance, was the flashLoan successful?");       //        // Your logic goes here.        // !! Ensure that *this contract* has enough of `_reserve` funds to payback the `_fee` !!        //        uint totalDebt = _amount.add(_fee);        transferFundsBackToPoolInternal(_reserve, totalDebt);    }}總而言之,我們首先要導入執行閃電貸所需的依賴。其中一些依賴關系被稱為抽象合約)。一個抽象合約至少有個函數沒有實現。你可以把它想象成一個房子的圖紙。一個建筑商使用這個圖紙來建造房子。然而,在我們的比喻中,圖紙是一個抽象合約,你是建造者,而房子是派生合約。

觀點:目前行業內是一個沉淀期,builders應該更多去focus在如何解決問題:近日,BeWater DevCon 2022 全球開發者大會在硅谷灣區成功舉辦,來自Polychain Capital, Uphonest Capital, DFG Capital, Foresight Ventures的嘉賓進行了圓桌討論,圍繞“VC如何在熊市中投資和支持Builders”。Polychain Capital的Jacob Philips表示,目前行業內是一個沉淀期,builders 應該更多去focus在如何解決問題。Uphonest Capital的KJ表示,VC應該作為共同創業的伙伴,而不僅僅是投資就不管事兒了。DFG Capital的Joanna表示,這個熊市的基本面已經和18年19年的熊市大不一樣,基礎設施得到大量發展,讓大家多多探索

Foresight Ventures的Suning表示,builder可以在熊市多做一些新嘗試,比如在開發語言方面,嘗試Move或Cairo,探索全新生態的可能性。同時作為Foresight Ventures也會更多關注真正顛覆性的創新,以及圍繞DAO或者NFT等的crypto-native的文化發展。[2022/6/24 1:29:46]

在我們的案例中,閃電貸合約使用的是一個名為FlashLoanReceiverBaseV1的抽象合約,它提供了必要的實現細節,如閃電貸的償還。

現在來逐行解讀代碼:

#1 首先,我們必須定義 solidity 編譯器的版本。在這個例子中,它是 0.6.6。

#8 傳遞了 Aave 的一個借貸池提供者的地址。在這個例子中,我們提供的是 DAI 借貸池的地址。

#13 定義了一個叫做 flashLoan 的函數。參數是想要閃電貸的資產地址。在這種情況下,該資產是 DAI。

#14 由于這里不需要任何閃電貸的數據,所以我們傳遞一個空字符串。

#15. 定義我們想要借出的 DAI 的數量(以 10^18 的 Wei 為單位)。

#16. 通過 Aave 提供的 ILendingPoolV1 初始化 LendingPool 接口,這樣我們就可以調用 flashLoan 函數。#17. 最后,調用 flashLoan 函數。該函數需要 4 個主要參數。首先,傳遞將接收貸款的地址。在我們的例子中,它是當前合約。其次,我們傳遞資產的地址。在我們的例子中,它是 Kovan 網絡中 DAI 的地址。第三,傳遞資產的數量,在我們的案例中,它是 1 個 ether 單位(或 10^18 的 wei單位)的數量。第四,傳遞額外的空數據。

#24-31. 接下來第二個函數 executeOperation。這就是我們利用閃電貸的地方。它在 flashLoan 函數成功執行后被內部調用。它需要 4 個主要參數,分別是:

SBF:人們知道如何計算年收益,只是有時不理會:FTX首席執行官SBF今日發推稱:“嘿兄弟,我認為每個人都忘記如何計算年收益。對此,他在最新的推特中補充說明:可以明確地說,人們知道如何計算年收益,但他們只是有時候不理會。”[2020/9/18]

#33. 檢查我們是否收到了適當的貸款金額,否則它將拋出一個錯誤信息。

#34. 在這里,可以根據你自己的使用場景,定制自己的實現邏輯(例如去 DEX 中套利)。

#40. 我們通過使用 SafeMaths 庫提供的 add 函數,將費用和貸款金額加在一起。

#41.最后,把總的債務或貸款金額還給貸款人。

首先,打開你的 MetaMask,將你的網絡設置為 Kovan測試網絡。

使用這個 gist 代碼來定義 flashloan 智能合約的依賴關系。點擊每個鏈接并將代碼粘貼到你之前創建的相應的 Solidity 文件中:a. ILendingPoolb. IFlashLoanReceiverc. ILendingPoolAddressesProviderd. FlashLoanReceiverBasee. Withdrawable

切換到 Solidity Compiler標簽。將編譯器設置為 0.6.6 并點擊 compile FlashLoan.sol。

你應該看到一些警告,但沒有錯誤信息。

現在,我們已經準備好將合約部署到 Kovan 網絡。切換到 Deploy & Run Transctions標簽。把部署環境(ENVIRONMENT),從 JavaScript VM 改為 Injected Web3。這應該會打開 MetaMask 詢問你的權限。

確保合約選擇的是 FlashLoan.sol。在部署按鈕旁邊的文本字段中提供 LendingPool 的地址。在我們的例子中,它將是0x506B0B2CF20FAA8f38a4E2B524EE43e1f4458Cc5。然后點擊 Deploy(部署),它應該會打開 MetaMask。

注意。所有已部署的合約地址列表可在這里找到。在那里,你可以找到 Aave 支持的各種借貸池的地址。雖然每個代幣的地址都不同,但程序是相同的。

點擊 確認(Confirm)。這樣做后,你應該看到 MetaMask 發出的成功通知。之后側邊欄應該有一個 “已部署的合約(Deployed Contracts)”。

在新的 已部署合約標簽下,可以復制已部署合約的地址。我們稍后會回到這一步;與此同時,我們需要給閃電貸合約添加一些 DAI。這是因為閃電貸需要合約中的資金才能成功執行。為此,你可以跳轉到水龍頭鏈接,獲得一些 DAI 代幣(請確保連接到右上角有小 K的 Aave v2市場)。點擊 Faucet,粘貼你的 MetaMask 錢包地址,然后等待確認。

聲音 | 微軟李國平:應用區塊鏈技術應多思考如何賦能、少談顛覆:據經濟觀察網12月6日消息,微軟中國金融行業總監李國平表示,第一,今天應用區塊鏈技術,應該多思考如何賦能,少談顛覆。他認為其實在從傳統業態向數字生活,數字經濟邁進的過程中,有很多行業場景存在痛點和短板,在整個信息化進程中如何補足現有實體經濟中的這些問題,賦能現有業務,提高效率,降低成本,是區塊鏈應用最應該思考的問題;第二,科技向善。今天的區塊鏈技術、人工智能技術等,公眾是存在認知差的。出現了認知差,就存在炒作的空間,就可能有泡沫,還包括新技術濫用數據等問題。因此在應用新的技術時,要在態度上端正,敬畏監管,敬畏客戶,敬畏可持續發展,這樣才能走的更遠,更穩;第三,從網絡效應原理來看,網絡是越大價值越大。從最早的局域網到以太網到現在整個互聯的世界,網絡的效應是需要擴大的。因此今天談公有鏈,鏈與鏈之間有沒有標準?全球有沒有標準?中國有沒有標準?很多企業資產能不能鏈互鏈?思考和解決這些問題,有助于區塊鏈的應用范圍和價值的擴大。[2019/12/7]

獲得確認后,我們將把 DAI 代幣添加到 MetaMask 中。為此,打開你的 MetaMask。點擊底部的 Add Token。在 代幣合約地址(Token Contract Address)欄輸入 0xF795577d9AC8bD7D90Ee22b6C1703490b6512FD。這是 Kovan 的 DAI 的合約地址。點擊 下一步后,它應該顯示你先前從水龍頭(Faucet)得到的 DAI。

接下來,點擊 DAI 代幣。點擊 發送,它應該打開一個類似于下圖的窗口:

輸入我們的閃電貸的合約地址,之前已經復制了該地址。輸入我們要發送的金額。在我們的案例中,發送 10DAI。然后點擊 下一步。點擊 確認!你現在已經成功地給你的閃電貸合約發送了 10DAI。

回到 Remix,在部署的閃電貸合約下,還有一個 flashloan 函數。這個函數需要一個我們想使用的資產的合約地址。在我們的例子中,它是 Kovan 測試網的 DAI 合約,是 0xF795577d9AC8bD7D90Ee22b6C1703490b6512FD。正確填寫該字段后,你現在可以點擊 交易(transact)按鈕,如下圖所示:

點擊按鈕后,MetaMask 會彈出交易確認。確認交易后,你應該收到一條成功信息。在 Remix 的終端,你應該看到一個 URL。點擊后會跳轉到 Etherscan。

在 代幣轉移(Tokens Transferred)下,你應該看到三個不同的轉賬:

紅色的箭頭強調了從 LendingPool 轉移 1 個 DAI 到我們的合約。橙色的箭頭表示將 1 個 DAI 連同費用一起返還給 Landing pool。藍色的箭頭表示產生利息的 DAI。

在美國眾議院聽證會喬治城大學法學教授表示:監管的重點應該在于數字代幣如何被對待:在美國眾議院金融服務委員會《檢查加密貨幣和ICO市場》的聽證會上,喬治城大學法學教授Chris Brummer博士表示,ICO將會成為區塊鏈行業的主要融資方式,但監管的重點應該在于數字代幣如何被對待,以及系統如何被監管。他還表示,許多ICO欺詐非常明顯,需要監管機構介入,更新法律法規,并且提供ICO白皮書指導。[2018/3/14]

我們成功地編寫了閃電貸的智能合約, 它能夠從資金池中借入 DAI,支付閃電貸費用,然后在一次交易中償還所借金額。不需要沒有任何抵押物就借到了錢!

本翻譯由 CellETF 贊助支持。

來源:How to Make a Flash Loan using Aave

參考資料

登鏈翻譯計劃: https://github.com/lbc-team/Pioneer

翻譯小組: https://learnblockchain.cn/people/412

Tiny 熊: https://learnblockchain.cn/people/15

閃電貸: https://aave.com/flash-loans/

閃電貸: https://learnblockchain.cn/tags/%E9%97%AA%E7%94%B5%E8%B4%B7

Aave官網: https://aave.com/

超額抵押: https://www.oxfordreference.com/view/10.1093/oi/authority.20110803100257900

dYdX: https://dydx.exchange/

資產間套利: https://en.wikipedia.org/wiki/Arbitrage

Remix IDE: https://remix.ethereum.org/

以太坊智能合約: https://ethereum.org/en/developers/docs/smart-contracts/

跟我學 Solidity :開發環境: https://learnblockchain.cn/article/1755

MetaMask: https://metamask.io/

Solidity: https://learnblockchain.cn/docs/solidity/

全面掌握Solidity智能合約開發: https://learnblockchain.cn/column/1

抽象合約: https://learnblockchain.cn/docs/solidity/contracts.html#abstract-contract

ILendingPool: https://gist.github.com/akp111/e254b2b5b98aa5a79f3f8dc501dfaedb#file-ilendingpool-sol

IFlashLoanReceiver: https://gist.github.com/akp111/e254b2b5b98aa5a79f3f8dc501dfaedb#file-iflashloanreceiver-sol

ILendingPoolAddressesProvider: https://gist.github.com/akp111/e254b2b5b98aa5a79f3f8dc501dfaedb#file-ilendingpooladdressesprovider-sol

FlashLoanReceiverBase: https://gist.github.com/akp111/e254b2b5b98aa5a79f3f8dc501dfaedb#file-flashloanreceiverbase-sol

Withdrawable: https://gist.github.com/akp111/e254b2b5b98aa5a79f3f8dc501dfaedb#file-withdrawable-sol

這里: https://docs.aave.com/developers/v/1.0/deployed-contracts/deployed-contract-instances

水龍頭: https://testnet.aave.com/faucet/DAI

CellETF: https://celletf.io/?utm_souce=learnblockchain

How to Make a Flash Loan using Aave: https://www.quicknode.com/guides/defi/how-to-make-a-flash-loan-using-aave

譯文出自:登鏈翻譯計劃

譯者:翻譯小組

校對:Tiny 熊

Tags:NBSBSPLOANLASnbs幣前景BSP幣Yearn Loans FinanceVelasPad

ICP
CAP:郭志浩:從NFT侵權第一案看NFT的法律本質_TITANIA幣

近期,杭州互聯網法院公布了國內NFT侵權第一案,然而,對于NFT是什么,法院在同一個案子中卻有不同的兩種判定:“數字商品”(虛擬財產)和“作品上鏈的憑證”.

1900/1/1 0:00:00
BSP:印度央行或將重新審議數字資產沙盒監管法案_NBS

據印度當地媒體“The Economic Times”5月16日報道,游說團體正對印度儲備銀行(印度央行)進行游說,試圖說服該機構允許加密資產相關產品在監管沙盒中運行.

1900/1/1 0:00:00
EFI:民道:DeFi中的協議抽象及資產協議的一體化_UNI

受訪者:楊民道,dForce?創始人 采訪與撰文:李畫 2019年5月,我第一次采訪了dForce?創始人楊民道,那時提出的問題是「DeFi?是區塊鏈重要的落地方向嗎」.

1900/1/1 0:00:00
Arbitrum:為什么永續合約是衍生品中最有前景的領域?_arbitrum幣價格

衍生品交易無論在傳統金融還是中心化加密交易平臺中,都占據著極大的市場份額。對于任何一個金融系統來說,衍生品都是不可或缺的組成部分.

1900/1/1 0:00:00
API:DAO應當是完全自治和去中心化的 但它們真的做到了嗎?_Green Environmental chain

本文為Linear?Finance聯合創始人Kevin?Tai發表在《Cointelegraph》上的觀點文章,以下為全文翻譯.

1900/1/1 0:00:00
BAN:速覽Bancor V3新特性:即時完全無常損失保護和獨立BNT匯總池等_bank幣是不是可信

作為 AMM 的最早提出者,Bancor 在模型設計方面也在不斷優化,2017 年推出的 V1 版本要求所有資金池都以 BNT 為交易對資產,在考慮到無常損失(IL)等因素后.

1900/1/1 0:00:00
ads