以太坊價格 以太坊價格
Ctrl+D 以太坊價格
ads
首頁 > ADA > Info

RES:三步實現自己的第一筆閃電貸合約

Author:

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

閃電貸是DeFi中一個獨特的產品,在傳統金融活動中沒有與之對應的事物。會編寫和使用閃電貸也是一項很重要的技能。

概念

閃電貸是一種無抵押、借貸金額無上限的貸款。它要求借貸人快借快還,快到還款和借款在同一個交易內。

閃電貸要求每筆借款在歸還時,除了歸還本金,還要支付一定利息。該利息由系統動態計算。

實現?

很多人對理解閃電貸有一定的難度。因為這需要了解智能合約執行原理和以太坊狀態變化的機制。我們通過自己編寫一個閃電貸合約,來理解其背后的運行原理。

以使用Aave提供的閃電貸為例,編寫一個你自己的合約非常簡單,你只需要實現一個叫?executeOperation的方法。

1.executeOperation

executeOperation方法參數中_reserve?是所借代幣的合約地址,如果是ETH則是一個特殊的地址,_amount是借款的金額,_fee是本次借款要償還的利息。_params暫時可忽略。

以太坊Layer2上總鎖倉量為96.06億美元:金色財經報道,L2BEAT數據顯示,截至目前,以太坊Layer2上總鎖倉量為96.06億美元,近7日跌3.15%。其中鎖倉量最高的為擴容方案Arbitrum One,約53.06億美元,占比55.23%,其次是Optimism,鎖倉量25.50億美元,占比26.54%。[2023/8/27 12:59:10]

functionexecuteOperation(

??address_reserve,

???uint256_amount,

???uint256_fee,

??bytescalldata_params

??)

??external

{

??require(_amount<=getBalanceInternal(address(this),_reserve),"借款失敗");

自y00ts遷移公告以來DeGods交易量飆升530%:金色財經報道,根據The Block的數據儀表板,NFT項目DeGods上周的交易量從前一周的近260萬美元增長了五倍,達到1610萬美元。根據NFT市場OpenSea的數據,DeGods NFT的底價目前為7.1 ETH(超過 13,000 美元)。

據悉,這一激增可能是由于DeGods近日發布的兩項重大公告所致。第一個是決定將DeGods的姊妹項目y00ts引入以太坊,創始人Frank表示,遷移將聯合DeGods和y00ts社區,DeGods于 4月份從Solana過渡到了以太坊。 第二個是即將推出的“DeGods Season III”,其中將包括女性化身以及使用生成創作的額外20,000件新藝術品。[2023/8/15 21:23:22]

??//

??//用借來的?ETH去賺取更多的ETH

Aztec:受Euler Finance事件影響的用戶已可贖回存在Aztec Connect的資金:4月28日消息,Aztec發推稱,受Euler Finance被盜事件影響的用戶現在可以贖回存在Aztec Connect的資金。

此前消息,Euler Finance曾在3月13日失竊1.97億美元,但隨后攻擊者歸還了盜取的全部資金。[2023/4/28 14:33:33]

??//

??//還款

??uinttotalDebt=_amount.add(_fee);

??transferFundsBackToPoolInternal(_reserve,totalDebt);

}

當代碼執行到executeOperation時,你已經拿到了借來的錢,你主要是寫如何利用這些錢賺取更多錢的邏輯。例如你發現同一個交易對A/ETH在DEX1和DEX2的價格差較大,那么你的賺錢邏輯為:

消息人士:資管巨頭貝萊德的資金和賬戶在FTX持有“非常小的頭寸”:11月11日消息,據消息人士透露,資管巨頭貝萊德的資金和賬戶在FTX持有“非常小的頭寸”。但到目前為止,貝萊德沒有公開評論對FTX的投資規模到底有多大,也沒有評論FTX事件是否會改變其對加密相關公司的投資方式。(Marketwatch)[2022/11/11 12:47:04]

已借得100ETH;

在價格低的DEX1中買入A;

在價格高的DEX2中賣出A;

賣得110ETH。

2.開始借款

executeOperation是借款成功后要執行的邏輯。而開始借款的邏輯需要用戶自己觸發,或者直接寫在合約的構造函數里。例如:

functionflashloan()publiconlyOwner{

??bytesmemorydata="";

??uintamount=100ether;

??addressasset=address(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE);//借ETH

??ILendingPoollendingPool=ILendingPool(addressesProvider.getLendingPool());

??lendingPool.flashLoan(address(this),asset,amount,data);

}

flashLoan()是真正的借款函數,例子中是借入100ETH。閃電貸由此方法觸發,也由此方法結束。要完全理解它,我們需要看看flashLoan()的內部邏輯。我們摘取最重要的部分。

3.?flashLoan()內部邏輯

flashLoan()中首先進行各項數據驗證,然后便借款給你,緊接著調用你的?executeOperation?的賺錢邏輯,最后驗證你是否歸還了本金加利息。主要邏輯如下所示:

????????//各種數據驗證,池中是否還有足夠的錢可以貸出?計算手續費等等

??????//將借款轉給你

????core.transferToUser(_reserve,userPayable,_amount);

????//執行你的合約的賺錢邏輯

????receiver.executeOperation(_reserve,_amount,amountFee,_params);

????//檢查目前池中余額

????uint256availableLiquidityAfter=_reserve==EthAddressLib.ethAddress()

???????address(core).balance

??????:IERC20(_reserve).balanceOf(address(core));

????????//通過池中余額變化來確認你是否已經歸還了借款利息

????require(

??????availableLiquidityAfter==availableLiquidityBefore.add(amountFee),

??????"Theactualbalanceoftheprotocolisinconsistent"

????);

如果?require()驗證失敗,它將revert整個交易,讓借款無效,從而保證借出方總是安全的。

結語

以上解釋了實現第一筆閃電貸最基本的方法和原理。編譯源碼,以及部署到線上,大家可以參考Aave相關官方文檔,這里就不一一介紹了。

編寫閃電貸合約總體并不復雜。使用閃電貸風險也比較小。如果賺錢邏輯失敗,變成了虧錢邏輯,不能完成還款,那么也不用擔心借來的巨款無力償還。整個交易將會執行失敗,就如同借款從來沒有發生過一樣。

Tags:RESEEEADDETHnusharesEEEE價格ADDC價格ETHY幣

ADA
KEX:OKEx上線Bitcoin Cash ABC (BCHA) 的公告

尊敬的OKEx用戶: BitcoinCash網絡已經于2020年11月15日(HKT)完成硬分叉,目前分叉為BitcoinCashNode和BitcoinCashABC(后文稱BCHABC).

1900/1/1 0:00:00
HTT:關于EOS主網升級公告

尊敬的LOEx用戶:EOS即將進行主網升級,LOEx國際站將于2020年11月20日23:00暫停EOS充提幣業務,升級完成后具體開放時間另行以公告形式通知.

1900/1/1 0:00:00
ETH:晚間必讀5篇 | 到底有多少人參與DeFi?

1.灰度信托LTC溢價3687%?后市如何操作?不僅GBTC目前在市場上處于溢價,BCHG、ETHE、ETCG、LTCN二級市場相對一級市場皆產生了溢價,LTCN的溢價更是高達3687.88%.

1900/1/1 0:00:00
PRO:名揚談幣:比特幣牛市持續上漲,兩萬關口近在咫尺

行情瞬息萬變,作為交易者應該做到通則變,變則通,交易沒有固定這說法,方式方法可以固定,但思維一定要活躍,同樣的形態未必走同樣的走勢,是因為在大的環境下出現細小的變化比特幣昨日行情持續拉升上行.

1900/1/1 0:00:00
比特幣:比特幣以太坊行情分析「量化炒幣機器人專欄第9-2期」

鄭哥一向專注且誠懇的態度用心寫每一篇分析文章,進行每日針對“幣圈BTC/ETH”的行情全面分析,總體趨勢把握,精準且有參考價值!文章內所有數據力求精準,如有錯誤.

1900/1/1 0:00:00
Gate.io:Gate.io 已經完成當日為用戶轉化分發1.3萬枚FIL代幣公告

Gate.io今日已經根據用戶FIL6持倉情況完成FIL分發,總計約1.3萬枚,用戶可在賬戶賬單明細中查看詳情.

1900/1/1 0:00:00
ads