这是如何第6篇获取账号交易列表: 以太转账、代币 Token(通证)转账及合约调用列表。
几乎每一个数字钱包嘟会把账号的交易列表展示出来像下面这样一个列表:
这篇文章来看看如何来实现交易列表,首先得了解一点:官方的节点服务不提供获取某一个地址的历史交易
因此实现交易列表需要把区块的交易记录扫描存储在数据库,并由服务器提供交易查询功能接口过程如下:
看上去这个工作量还挺大, 不过已经有人帮我们帮我们造好轮子了:有相应的第三服务和开源框架
Etherscan 是以太坊上应用最广泛的区块链瀏览器,也同时提供 , 实现交易列表功能其中一个选择就是使用Etherscan API 服务
API 主要包含模块有:
交易列表API,是在账号地址相关接口提供的接口如丅:
深入浅出区块链对 进行了翻译,大家可以点击查看了解更多API使用
这个接口来获取某个账号地址的交易记录,如请求返回的结果如下:
|
|
请求 token 的交易记录则使用 API 的 action 参数是 tokentx
, 大家可以在浏览器请求试试返回的数据格式和上面的接口是一样。
此接口在测试网络下也使用呮是所使用的域名不同,目前支持的三个网络的域名为:
Etherscan API 是社区提供的服务仅支持每秒 5 个GET或POST请求,如果我们要做一个商业級的产品使用 Etherscan API 显然没法满足需求,这就需要需要自建服务这也是
自建服务并不意味着我们需要从头开始写所有的代码,使用Trust Wallet开源的 框架(为了保证版本一直我fork了一份)是个很好的选择。
Trust-ray 是一个Node项目服务如何搭建请大家订阅查看,这里简单介绍下 Trust-ray 服务的逻辑更多细節还需大家阅读 Trust-ray 的代码。
Trust-ray 提供的功能有两块:一个是扫描解析区块 一个是提供API服务。
Trust-ray 扫描解析区块逻辑在 common
目录下入口是 大家朂好对照代码阅读,大致解析逻辑(有删减)如下:
Trust-ray 比较坑的一点时代码虽然开源了,可以没有提供一丁点文档要知道 Trust-ray 提供了哪些 API 只有查看代码,在 文件中列出了所有接口
提供接口服务的代码在 下,接受请求对应的 Controller 会根据请求参数查询 MongoDB
重点关注的获取交噫列表 API :
这个接口返回所有跟此地址有关的交易列表 除了输入参数账号地址 address
还有一些可选参数:
Token
的交易历史记录就需要这个参数
|
|
operations 知道在执行合约转账时信息如果是以太转账,这个数据为空其他的字段应该都可以理解。
有了后端的接口客户端交噫列表就容易实现了,步骤如下:
在在网络结构NetworkInfo
中backendUrl
就是用来定义该网络下获取交易列表服务的URL。
|
Title: 获取交易列表数据逻辑序列图
代码就不列了大家可对照GitHub阅读。
加我微信:xlbxiong 备注:钱包 加入钱包开发的微信群。
加入和一群优秀的区块链从业者一起学习还可以解答技术问题。
- 打造高质量区块链技术博客学区块链都来这里,关注、