今天,dfuse 团队推出了在以太坊上的 dfuse Search 查询引擎。
一直以来,在以太坊上查询交易(转账和变异函数调用)和状态(变量的历史值)都是个缓慢又痛苦的过程,即使是一个简单的搜索也需要几分钟才能完成。想要有快速、可靠的区块链数据查询引擎是一个棘手的技术问题,更不用说想让它的功能强大且性能高,完成这个任务需要克服技术挑战有很多:
- 原生的以太网节点仅在其索引中包含在部署智能合约时定义的日志字段,从而让人们需要在可用性和成本之间进行权衡;
- 查询多个负载均衡的以太坊节点需要开发人员去处理不确定性和保证数据的最终一致性;
- 复杂的编译器技术常常会使人们混淆存储的键值对。
dfuse Search 简易化构建高性能应用程序的过程,在一秒钟内实现对全链历史的筛选查询,准确匹配到符合你筛选条件的交易,并通过单个串流读取输出你需要的数据,还能自动处理断连和重连、也消除了误报的情况——让你不错过任何一个节拍! dfuse 还可以观测和处理链的分叉,省去你的工作。
dfuse Search 提供的数据细化程度在区块链上是无先例的,能帮助你构建世界级的应用程序,可实现的实例有:
- 高性能和用户交互界面(借贷平台、钱包、去中心化交易所、游戏等)
- 实时跟踪去中心化交易所或其它 DeFi 形式的交易
- 高精度的 dapp 数据分析
要访问在以太坊上的内测版 dfuse Search:
- 点击这里注册 dfuse 账号,免费开始使用
- 连接到以太坊主网或 Ropsten 测试网端点
- 使用我们的 JS 库
- 访问 ethq.app,通过 dfuse 的探索以太坊
dfuse Search 查询语言
dfuse Search 查询语言类似于 Kibana 或 GitHub 公开的 issue 筛选的语言。用一个简单的 flat 字符串 key1:value1 key2:value2
表示,也允许使用否定句、用 OR
分隔的组合句。
dfuse Search 索引区块链上的每个EVM调用、每个日志,为你的查询提供前所未有的颗粒度。
查询 EVM 的调用
要查询由某个地址签名的所有交易,请使用:
signer:0x59a5208B32e627891C389EbafC644145224006E8
要获得对某个合约的所有 call
(非委托调用或 callcode),请使用:
callType:call to:0x5df9b87991262f6ba471f09758cde1c0fc1de734
要查询对某合约提供某指定输入的交易,请使用:input.0:00000000000000000000000084ae8708798c74ef8d00f540c4012963955106ff to:0x06012c8cf97bead5deae237070f9587f8e7a266d
查询所有触发了在合约上的指定 method
的交易,请使用:
method:a9059cbb to:0x8fdcc30eda7e94f1c12ce0280df6cd531e8365c5
或使用:
method:'transfer(address,uint256)'
查询任何对合约中指定 key 更改了存储的 EVM 调用:
to:0xa327075af2a223a1c83a36ada1126afe7430f955 storageChange:0x3
你还可以用 value
来查到从一个 call 转到另一个 call 的值,用 nonce
和 from
查询来自某个指定用户的交易,然后再和其他的 dfuse Search 配合使用。
对日志进行查询
想对日志进行查询的请试试 :
address:dac17f958d2ee523a2206206994597c13d831ec7
按索引主题或数据直接进行查询可使用:
data.0:1eda1ceca1274d6ab9101c30abd6b8b205861286
或使用:
topic.0:ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
或组合你的查询来找到你想找的转账:
可与 signer
和其它的查询字段配合使用
dfuse 全面观测和处理链的分叉
dfuse Search 可帮助你观测分叉并解决链重组的问题,让你无需再去自行处理这个复杂的问题。获取一个可以在全链上探测分叉的 cursor,在下一个查询中将其传回,让你永远不会错过任何一个节拍。
你可以定义查询的区块范围,按升序或降序查询。进行升序查询时,你可以使用内置的 cursor 在得到所有结果后继续搜索,监听新的匹配项。请参阅此文章中对此功能的展示。
dfuse 以太坊服务的 Alpha 内测
以太坊上 dfuse Search 目前处于内测状态。这是我们的第一次将其公开发布,因此我们将根据内测用户的反馈来改进 API。请随时告诉我们你希望看到的内容以及能帮助你改善开发体验的建议。加入 dfuse Ethereum Telegram 群,让我们共同构建明日的次世代 dapp。