Algorand 的新索引器V2
至少可以这么说,搜索交易和其他区块链数据点很难。搜索操作不仅相当耗时,区块链还常常限制一次操作可以搜索的信息量。尽管这样有助于区块链节点更加高效地运行,但要创建利用账本数据的应用就很头疼了。为解决这个问题,Algorand 为 Algorand 节点提供了索引器属性。启用此属性,就可随账本数据存储额外的元数据用于搜索目的。此方法虽然好用,但搜索的数量和类型有限。为克服这些限制,Algorand 重新设计了 Indexer,使其以独立的进程运行,完全独立于节点。Indexer V2 现已推出!
可在设置指南中查阅新版 Indexer 的安装方法。想要了解所有可用 REST API 端点,请参阅 Indexer 功能指南。Indexer 的源代码同样可从 Github 下载。
新版 Indexer 支持搜索交易、账户、资产和区块。另外,可以运用各种参数细化搜索,执行基于交易和余额的搜索、基于时间的搜索、基于轮次的搜索、交易类型搜索以及签名搜索。
举个例子,如果我想找出 DevDocsCoin 等特定 Algorand 资产的相关信息,我可以按名称搜索。
curl "localhost:8980/v2/assets?name=DevDocsCoin" | json_pp
{
"assets" : [
{
"params" : {
"reserve" : "SWOUICD7Y5PQBWWEYC4XZAQZI7FJRZLD5O3CP4GU2Y7FP3QFKA7RHN2WJU",
"name" : "DevDocsCoin",
"creator" : "SWOUICD7Y5PQBWWEYC4XZAQZI7FJRZLD5O3CP4GU2Y7FP3QFKA7RHN2WJU",
"clawback" : "SWOUICD7Y5PQBWWEYC4XZAQZI7FJRZLD5O3CP4GU2Y7FP3QFKA7RHN2WJU",
"decimals" : 0,
"default-frozen" : false,
"total" : 1000000,
"manager" : "SWOUICD7Y5PQBWWEYC4XZAQZI7FJRZLD5O3CP4GU2Y7FP3QFKA7RHN2WJU",
"url" : "https://bit.ly/374zKN2",
"freeze" : "SWOUICD7Y5PQBWWEYC4XZAQZI7FJRZLD5O3CP4GU2Y7FP3QFKA7RHN2WJU",
"unit-name" : "HiWorld"
},
"index" : 2044572
}
],
"current-round" : 7167266
}
使用本次调用中的索引,我现在可以利用下列 REST 端点搜索账本中拥有此通证的任意账户。
$ curl "localhost:8980/v2/assets/2044572/balances" | json_pp
{
"balances" : [
{
"amount" : 999900,
"address" : "SWOUICD7Y5PQBWWEYC4XZAQZI7FJRZLD5O3CP4GU2Y7FP3QFKA7RHN2WJU",
"is-frozen" : false
},
{
"address" : "UF7ATOM6PBLWMQMPUQ5QLA5DZ5E35PXQ2IENWGZQLEJJAAPAPGEGC3ZYNI",
"is-frozen" : false,
"amount" : 100
}
],
"current-round" : 7167317
}
可以添加很多额外的条件,细化新版 Indexer 的搜索范围。其中就包括支持基于历史的搜索的很多调用,比如,您可以搜索过去特定轮次的资产或 Algo 币余额。
Indexer 还提供结果分页机制,可以将搜索高效分成多个 REST 调用而不增加服务器负载。用户可以使用该功能设置分页结果的大小,通过用户的应用来控制搜索结果的处理时机和方式。
Algorand 网络上的每个交易都允许添加最多 1kb 的注释。这个功能在构建第 2 层应用时很有用,可以存储额外的元数据。索引器现在的搜索机制支持搜索这些注释中的特定字节前缀。应用可利用这一机制很方便地标记特定交易,快速返回此类交易列表。
全部 Algorand SDK 均已更新,完全支持新版 Indexer,所以请务必更新您的 SDK,欢迎向我们反馈关于新功能的看法。未来几周,Algorand 网络将推出更多强大功能,敬请期待。