阿凡達(泰山眾籌)開發案例版丨阿凡達(泰山眾籌)系統開發(規則及原始碼)
在進行兩個代幣交易時,是首先需要在鏈下計算出交易的路徑,例如使用ETH->DAI:
可以直接透過ETH/DAI的交易池完成
也可以透過ETH->USDC->DAI路徑,即經過ETH/USDC,USDC/DAI兩個交易池完成交易
Uniswap的前端會幫使用者實時計算出最優路徑(即交易的收益最高),作為引數傳給合約呼叫。前端中這部分計算的具體實現在這裡,具體過程為先用需要交易的輸入代幣,輸出代幣,以及一系列可用的中間代幣(程式碼中叫Base token)生成所有的路徑(當然為了降低複雜度,路徑中最多包含3個代幣),然後遍歷每個路徑輸出的輸出代幣數量,最後選取最佳路徑。
交易的入口函式是exactInput函式,程式碼如下:
struct ExactInputParams{
bytes path;//路徑
address recipient;//收款地址
uint256 deadline;//交易有效期
uint256 amountIn;//輸入的token數(輸入的token地址就是path中的第一個地址)
uint256 amountOutMinimum;//預期交易最少獲得的token數(獲得的token地址就是path中最後一個地址)
}
function exactInput(ExactInputParams memory params)
external
payable
override
checkDeadline(params.deadline)
returns(uint256 amountOut)
{
//透過迴圈,遍歷傳入的路徑,進行交易
while(true){
bool hasPools=params.path.hasPools();
//完成當前路徑的交易
params.amountIn=exactInputSingle(
params.amountIn,
//如果是中間交易,又合約代為收取和支付中間代幣
hasPools?address(this):params.recipient,
//給回撥函式用的引數
SwapData({
path:params.path.getFirstPool(),
payer:msg.sender
})
);
//如果路徑全部遍歷完成,則退出迴圈,交易完成
if(hasPools){
//步進path中的值
params.path=params.path.skipToken();
}else{
amountOut=params.amountIn;
break;
}
}
//檢查交易是否滿足預期
require(amountOut>=params.amountOutMinimum,'Too little received');
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69956839/viewspace-2936865/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 阿凡達泰山眾籌開發系統丨阿凡達泰山眾籌系統開發(詳情版)丨阿凡達泰山眾籌原始碼開發原始碼
- 阿凡達泰山眾籌開發(功能)丨阿凡達泰山眾籌系統開發(成熟方案及案例)
- 泰山眾籌(阿凡達)系統開發成熟及方案丨泰山眾籌阿凡達開發原始碼功能原始碼
- 泰山眾籌(阿凡達)開發邏輯丨泰山眾籌(阿凡達)系統開發成熟案例及原始碼分析原始碼
- 阿凡達泰山眾籌開發原理丨阿凡達泰山眾籌系統開發(方案及詳細)
- 泰山眾籌阿凡達(avatar)開發詳細丨泰山眾籌阿凡達(avatar)系統開發(開發及原始碼)原始碼
- 泰山眾籌(阿凡達4.0)系統開發流程及分析丨泰山眾籌(阿凡達4.0)開發原始碼功能原始碼
- 泰山眾籌阿凡達avatar開發功能丨泰山眾籌阿凡達avatar系統開發流程及原始碼分析原始碼
- Avatar阿凡達泰山眾籌開發案例版丨Avatar阿凡達泰山眾籌系統開發(開發邏輯及方案)
- 阿凡達泰山眾籌商城開發(系統)丨阿凡達泰山眾籌系統開發(開發穩定版)
- Avatar阿凡達泰山眾籌商城開發上線版丨Avatar阿凡達泰山眾籌商城系統開發(開發原始碼)原始碼
- 泰山眾籌4.0阿凡達開發原理丨泰山眾籌4.0阿凡達系統開發詳細技術及原始碼分析原始碼
- 阿凡達泰山眾籌開發正式版丨阿凡達泰山眾籌系統開發流程及原始碼(web3.0技術開發)原始碼Web
- 什麼是阿凡達泰山眾籌系統開發丨阿凡達泰山眾籌系統開發(dapp開發技術)APP
- 阿凡達泰山眾籌系統開發Avata模式模式
- sun4.0泰山眾籌系統開發(模式案例)|阿凡達泰山眾籌sun開發方案模式
- Avatar阿凡達泰山眾籌開發|眾籌系統DAPP開發技術APP
- 泰山眾籌阿凡達系統開發模式邏輯模式
- 關於泰山眾籌4.0/阿凡達眾籌系統/技術開發
- Avatar阿凡達泰山眾籌系統開發(模式)|Avatar阿凡達需求方案部署模式
- 深入分析:Avatar阿凡達泰山眾籌系統開發
- 阿凡達Avata泰山眾籌系統開發技術搭建
- 阿凡達Sun4眾籌開發系統搭建|泰山眾籌模式系統原始碼部署模式原始碼
- 阿凡達(Avatar)泰山眾籌商城系統開發技術詳細及案例
- Avatar阿凡達(泰山眾籌)系統開發技術詳情及方案原始碼原始碼
- 深入分析阿凡達Avatar泰山眾籌系統開發詳細方案及案例原始碼原始碼
- 深入瞭解阿凡達泰山眾籌商城系統開發詳情版及原始碼功能原始碼
- AVATAR阿凡達合約系統?區塊鏈阿凡達泰山眾籌專案邏輯系統開發功能及原始碼區塊鏈原始碼
- 阿凡達(泰山眾籌)智慧合約DAPP系統開發詳情 | DAPP智慧合約眾籌系統原始碼邏輯規則APP原始碼
- 泰山眾籌系統丨及泰山眾籌系統開發原始碼部署(技術開發流程)泰山眾籌原始碼
- 深入分析阿凡達(泰山眾籌4.0)系統開發技術詳情及邏輯原始碼原始碼
- 關於sun4.0泰山眾籌阿凡達模式系統開發技術方案模式
- 泰山眾籌商城開發、泰山眾籌DAPP系統開發、泰山眾籌原始碼部署開發APP原始碼
- 泰山眾籌系統Dapp開發/泰山眾籌原始碼/泰山眾籌矩陣開發方案APP原始碼矩陣
- 阿凡達sun眾籌挖礦系統開發原始碼技術原始碼
- Avater阿凡達泰山眾籌5.0dapp系統開發智慧合約底層邏輯APP
- 泰山眾籌商城系統開發(實現方案)丨泰山眾籌商城開發原始碼及功能原始碼
- 區塊鏈泰山眾籌商城開發原始碼版丨區塊鏈泰山眾籌系統開發(方案及功能)區塊鏈原始碼