如何從DeFi協議獲取交易資料

買賣虛擬貨幣
簡  介大家總是在談論區塊鏈的透明度,所有的資料都是可追蹤的,每個人都可以看到所有的內容,但是訪問這些資訊容易嗎?如何以簡單的方式獲得資料進行分析?在本文中,我們將以DeFi Aavesome協議為例,介紹三種實現方法,我們將使用三種不同的方法來獲取平臺上的歷史交易資料:Graph:使用GraphQL構建分散應用程式的協議。alethio:一個api rest以友好的方式從區塊鏈獲取資料。Web3 Foundation team:使用web3js庫直接在區塊鏈上讀取事件。
如何獲取這些資料為了訪問區塊鏈上的某些資料,最簡單的方法是查詢事件。當呼叫智慧合約中的某個函式時,如果執行了某個操作,則可以發出一個事件,該事件可以在此時由正在偵聽該特定事件的客戶端偵聽,或者在將來訪問其記錄在區塊鏈上的歷史記錄。在這種情況下,我們想檢視在Aave協議中進行的存款的歷史記錄,因此如果有與此相關的事件,我們可以在其程式碼內部檢視。

在其文件中,我們看到是否存在與此相關的事件,並且其中包含以下資料:

那麼讓我們看一下在主網上部署的智慧合約,然後在該部分中檢視程式碼:

其中包含此事件,如果我們想詳細檢視它生成的那一刻,我們會看到它在完成deposit函式後就完成了,因此我們尋找:

獲取資料

一旦我們弄清楚我們要找的是什麼,我們將以三種不同的方式獲得這些資料。

Graph

Aave的團隊建立了一個subgraph,可以在這個用例中對其進行測試,並且他們的網站上有相關的技術文件以及使用方法的示例

作為一個例子,我們想提取存款id,以及存款中的金額,然後進行分析,為此我們使用查詢

{
  deposits(first:1000, skip:0){
   id,
   amount
  }
}

返回相同的資料

我們必須重複這個查詢n次,將skip引數從1000推進到1000,以顯示下一個資料塊。

Alethio

現在我們將使用Alethio api獲取它,為此我們將使用端點:

https://api.aleth.io/v1/log-entries?filter[loggedBy]=
0x398eC7346DcD622eDc5ae82352F02bE94C62d119&filter[hasLogTopics.0]=
0xc12c57b1c73a2c3a2ea4613e9476abb3d8d146857aab7329e24243fb59710c82

我們在這裡查詢Aave合約地址的日誌,並使用Deposit函式的雜湊值過濾日誌。

該端點返回的物件指示事件,事件的引數以及指向“next”頁面的連結,以引入新的資料塊。

我們透過增加現有“Deposit”事件的數量來迭代所有這些“next”連結。

web3Js

作為第三個選項,我們將直接從區塊鏈讀取事件,為此我們將使用web3js庫,並使用以下指令碼獲取Aave合約中所有“ deposit”型別的事件:

const contract = new web3.eth.Contract(LendingPoolABI, LendingPoolAddress)
return contract.getPastEvents(‘Deposit’, {
   fromBlock: initBlock,
   toBlock: endBLock
}, function (error, events) { return events })

結果比較

我們使用以上三種方法進行資料獲取方式,我們將同時執行它們,檢視我們是否會擁有相同數量的存款,並且來自三個不同來源的資訊是否正確的,為此我們執行這三個方法並編寫事件總數:

console.log(‘Number of events with Alethio:’, (await getDepositsAlethio()).length)
console.log(‘Number of events with web3js:’, (await getEventsWeb3js()).length)
console.log(‘Number of events with The graph:’, (await getDepositsGQL()).length)

結果輸出顯示:

Number of events with Alethio: 31810
Number of events with web3js: 31809
Number of events with The graph: 31682

我們得到的資料存有差異,在Alethio和web3js的情況下,這只是一個事件,但與graph相比的差異更大。

進行了幾次測試,我已經驗證了從事件的生成到在graph中將其索引之前存在一定的延遲,所以如果查詢這個事件,在graph中將找不到其他任何東西,但是幾分鐘後,記錄的事件數量不一致。

透過這三種方式,您可以查閱資料,使用構建模型建立自己的資料集,並驗證這些協議顯示的資訊是否正確。


免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;