最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

優(yōu)雅簡潔!在FMZ上用200行代碼接入了Uniswap V3(上篇)

2023-01-31 11:57 作者:發(fā)明者量化  | 我要投稿

近些年隨著Defi概念的流行,在去中心化金融(DeFi)領(lǐng)域,Uniswap V3是最受關(guān)注的話題之一。作為領(lǐng)先的去中心化交換協(xié)議,Uniswap V3提供了更高效,更安全,更優(yōu)秀的用戶體驗。現(xiàn)在,只需要200行代碼,交易員和開發(fā)人員就可以在FMZ平臺上輕松訪問Uniswap V3。

FMZ是一個量化交易平臺,支持數(shù)量交易策略的開發(fā)、回測和實盤部署。其易于使用的界面和強大的功能不難理解為為什么FMZ正在成為DeFi交易員和開發(fā)人員的首選。

將Uniswap V3整合到FMZ的過程簡單易懂,只需要200行代碼即可完成。這意味著,即使您是代碼新手,也可以在FMZ上輕松連接Uniswap V3并立即開始交易。

FMZ已經(jīng)封裝了一系列的web3基礎(chǔ)功能,除了Uniswap之外也可以用很少的代碼封裝其它的DEX交易所。接下來就讓我?guī)阋黄鹆慊A(chǔ)開始學習defi應(yīng)用中的概念與技術(shù),鑒于篇幅原因,以下描述盡量采用最簡單易懂的方式,可能不是十分嚴謹,但是便于理解。

FMZ平臺公開的「Uniswap V3 交易類庫」,可以在FMZ的策略廣場搜索到這個開源模板。

代碼如下:



以太坊網(wǎng)絡(luò)

以太坊網(wǎng)絡(luò)可以理解為一個軟件基礎(chǔ)設(shè)施,在這個網(wǎng)絡(luò)上可以部署運行各種智能合約,智能合約有各種各樣的功能、應(yīng)用場景。運行以太坊客戶端的設(shè)備就構(gòu)成了以太坊網(wǎng)絡(luò)中的節(jié)點。

Uniswap V3中的一些概念

不熟悉Uniswap V3協(xié)議的同學,這里需要先簡單了解幾個概念。Uniswap V3也是在以太坊上部署運行的智能合約。

1、路由(Route):路由也是一個智能合約,用于管理token兌換。
2、池(Pool):池也是一個智能合約,用于存儲兩種以太坊代幣,并在這兩種代幣之間進行交換。
3、工廠合約(Factory):工廠合約是用來創(chuàng)建池的智能合約。
4、ABI:(應(yīng)用程序二進制接口)是一種規(guī)范,用于描述智能合約如何與外部世界互相通信。它指定了智能合約的函數(shù)名稱,參數(shù)類型和返回值類型,以及如何編碼和解碼數(shù)據(jù),并確定了智能合約的外部接口??梢岳斫鉃橐{(diào)用某個接口,就必須按照接口約定的標準調(diào)用,而ABI中記錄的就是約定的一系列標準。

一旦智能合約在以太坊上部署,就有一個地址。

剖析Uniswap V3 交易類庫的代碼

Uniswap V3 交易類庫代碼主要分為4個部分,我們來逐一講解。

Part 1:與Uniswap V3交互時用到的常量

通過上面的基礎(chǔ)概念預熱,這里就很容易理解啦。

ABI_Route這個常量儲存的字符串就是路由智能合約的ABI。
ABI_Pool儲存池合約的ABI。
ABI_Factory工廠合約的ABI。

由于這些字符串很長,所以只是節(jié)選。這些內(nèi)容就給程序提供了調(diào)用智能合約方法的標準(例如這個智能合約接口的參數(shù)有什么,幾個參數(shù),都是什么類型,返回數(shù)據(jù)是什么類型等)。

剛才我們也提過,一旦智能合約部署在以太坊,就有一個地址。

ContractV3Factory:記錄了工廠合約的地址。
ContractV3SwapRouterV2:Uniswap V3的router V2地址,注意Uniswap有V1、V2,Uniswap V3 的router也有V1、V2之分,不同的合約地址是不一樣的。

Part2:工具函數(shù)

1、computePoolPrice函數(shù)用來計算池中token的價格。

假如交易對是ETH_USDT,那么token0ETH,token1USDT。decimals0就是token0的精度數(shù)據(jù),decimals1就是token1的精度數(shù)據(jù)。sqrtPriceX96就是價格相關(guān)數(shù)據(jù)(并不是直接的價格數(shù)值),該數(shù)據(jù)可以從池合約的slot0方法獲取。

sqrtPriceX96 : The current price of the pool as a sqrt(token1/token0) Q64.96 value
Q64.96 是一種數(shù)據(jù)處理儲存標準。

decimals0decimals1,?sqrtPriceX96這三個數(shù)據(jù)作為參數(shù)傳入computePoolPrice函數(shù)即可計算出交易對ETH_USDT的價格。該函數(shù)最后return語句中的算法就是把sqrtPriceX96還原成token1/token0的過程。例如此時池里token0(ETH)個數(shù)是1個,token1(USDT)個數(shù)是1100個。那么1100/1=1100,當前交易對ETH_USDT池中的價格就是1100。

2、toAmount函數(shù)用來把鏈上數(shù)值數(shù)據(jù)轉(zhuǎn)換成可讀數(shù)據(jù)。

簡單說,例如一個ETH代幣在鏈上表示數(shù)量時是1e18,即10的18次方,因為ETH的精度數(shù)據(jù)是18。并非所有代幣精度都是18,USDT的精度就和ETH的精度不一樣。toAmount函數(shù)就是將1e18轉(zhuǎn)換成1。

3、toInnerAmount函數(shù)則和toAmount相反,是將可讀數(shù)據(jù)轉(zhuǎn)換成鏈上使用的數(shù)值。

本期文章先介紹到這里,我們下期再見。

優(yōu)雅簡潔!在FMZ上用200行代碼接入了Uniswap V3(上篇)的評論 (共 條)

分享到微博請遵守國家法律
蓬莱市| 静乐县| 额敏县| 连山| 沙雅县| 青铜峡市| 安吉县| 新邵县| 娄底市| 威海市| 漳平市| 汉川市| 密山市| 建德市| 青田县| 青冈县| 托克托县| 祁门县| 奉化市| 井冈山市| 卫辉市| 榆林市| 长岭县| 延长县| 定远县| 栖霞市| 全南县| 九龙县| 博野县| 河西区| 望城县| 铁岭市| 息烽县| 辰溪县| 龙川县| 丰都县| 屏山县| 江安县| 北宁市| 来凤县| 于田县|