LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资讯 > 如何从DeFi协议获取交易数据

如何从DeFi协议获取交易数据

2020-06-20 陀螺财经 来源:火星财经

大家总是在谈论区块链的透明度,所有的数据都是可追踪的,每个人都可以看到所有的内容,但是访问这些信息容易吗?如何以简单的方式获得数据进行分析?

在本文中,我们将以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”类型的事件:

constcontract=newweb3.eth.Contract(LendingPoolABI,LendingPoolAddress)returncontract.getPastEvents(‘Deposit’,{fromBlock:initBlock,toBlock:endBLock},function(error,events){returnevents})

结果比较

我们使用以上三种方法进行数据获取方式,我们将同时执行它们,查看我们是否会拥有相同数量的存款,并且来自三个不同来源的信息是否正确的,为此我们执行这三个方法并编写事件总数:

console.log(‘NumberofeventswithAlethio:’,(awaitgetDepositsAlethio()).length)console.log(‘Numberofeventswithweb3js:’,(awaitgetEventsWeb3js()).length)console.log(‘NumberofeventswithThegraph:’,(awaitgetDepositsGQL()).length)

结果输出显示:

NumberofeventswithAlethio:31810Numberofeventswithweb3js:31809NumberofeventswithThegraph:31682

我们得到的数据存有差异,在Alethio和web3js的情况下,这只是一个事件,但与graph相比的差异更大。

进行了几次测试,我已经验证了从事件的生成到在graph中将其索引之前存在一定的延迟,所以如果查询这个事件,在graph中将找不到其他任何东西,但是几分钟后,记录的事件数量不一致。

通过这三种方式,您可以查阅数据,使用构建模型创建自己的数据集,并验证这些协议显示的信息是否正确。

---------------------------------------------------

原文作者:Iván Alberquilla

原文链接:https://medium.com/coinmonks/defi-protocol->译者:链三丰

本文来源:陀螺财经
原文标题:如何从DeFi协议获取交易数据

—-

编译者/作者:陀螺财经

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

知识 DeFi ETH
LOADING...
LOADING...