如何從乙太坊區塊鏈 UniSwap 數據中推斷代幣價格?
我想(如果可能的話)使用 UniSwap 數據從區塊鏈推斷代幣價格。看完下面這篇文章,我明白了是可行的:
https://blocklytics.org/blog/uniswap-api/
“給定交易所給定代幣的價格可以計算為交易所合約的 token_balance 除以其 ether_balance。”
我的第一次嘗試是檢查一些交易數據,例如這個交易: https ://etherscan.io/tx/0x10de93fd474b5c45035ea5d9ef42172ba6026e024cf77275a72c2b291b118a6d
此頁面以更易讀的方式(對我而言)解釋了交易: https ://etherscan.io/address/0x2bf5a5ba29e60682fc56b2fcf9ce07bef4f6196f#events
我知道我們有:
uint256 tokens_sold 25661215840000000000 uint256 eth_bought 3014603688879169830
所以這意味著一個比率:25661215840000000000 / 3014603688879169830 = 8.512302 對於這個代幣交換 NMR / ETH。
這似乎接近這兩個代幣之間的目前比率(今天早上來自 CoinMarketCap 的價格):203.64 / 23.77 = 8.567101
這種方法正確嗎?
此外,當我在 BigQuery 中查看相同的交易數據時,我得到:
輸入= 0x95E3C50B000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000來了
我可以分解成:
0x95e3c50b = 方法 ID
0000000000000000000000000000000000000000000000001641ef3d8f7d3c000 = 25661215840000000000 十進制這似乎很好:我發現與上面相同的 tokens_sold 。
000000000000000000000000000000000000000000000000029a07940a8276bdd = 2999530670434773981 這是什麼?
0000000000000000000000000000000000000000000000000000000005ecbd296 = 1590416022 這是什麼?
我正在努力尋找與上述相同的 eth_bought 金額:3014603688879169830。
有人可以幫忙嗎?
“給定交易所給定代幣的價格可以計算為交易所合約的 token_balance 除以其 ether_balance。”
這個描述的意思是:
- 鏈上價格:與鏈下價格相反,這是您在各個交易所看到的價格,當然每個交易所都可能不同。
- 現貨價格:這是您將獲得 1 wei 的價格,但它並沒有告訴您超過 1 wei將獲得多少回報。
在這裡了解利率和回報之間的區別很重要。
費率告訴您 1 單位可以獲得多少。
當你去任何國家的任何街道上的任何交易所時,這是一種常見的互動方式。
例如,你去倫敦的一家交易所問美元匯率是多少,他們會告訴你 1 英鎊 = 2 美元。
在這個現實世界的例子中,利率和回報這兩個術語是等價的,因為利率是線性的,這意味著 2 英鎊您將獲得 4 美元,3 英鎊您將獲得 6 美元,以此類推。
在 UniSwap 的交易系統上(就像在區塊鏈上的許多其他交易系統中一樣),利率和回報是不等價的。
例如,如果您在 UniSwap 上的 ETH/TKN 現貨價格為 10,則意味著您的 1 wei TKN,您將獲得 10 wei 的 ETH。
但是對於你的 TKN 的 1234 wei,你必然會得到少於 12340 wei 的 ETH。
這是因為您的轉換會出現滑點(損失)。
它可能會讓您認為這個現貨價格是一個騙局(騙局)。
但它對於池的某些測量仍然有用。
但是,您絕對不應該依賴這個比率來計算某個給定金額的預期回報。
為此,您可以使用
Y * x / (X + x)
, 其中:
x
是您輸入的源令牌數量X
是源代幣中池的餘額Y
是目標代幣中池子的餘額請注意,當您的輸入金額接近 1 時,預期回報會更接近匯率(即現貨價格,正如您在本答案頂部的問題中所引用的那樣
Y / X
)。