以太坊网络浏览器
以太坊网络区块浏览器目前主要是etherscan.io提供。官方正规的区块浏览器没有etherscan.io强大,不具有合约内联交易,Token交易分析功能,而etherscan.io不开源,而且API仅提供有限的服务。
不过etherscan.io的速度的确快,无论是查交易,还是查地址,查询速度基本可以在几秒之内返回。
为什么可以做得这么块呢,因为对于任意地址,仅保存了其100k(10万)的交易,这样查询一般的数据库在建立索引的情况,可以在3秒内返回。
目前(2019.2.10)地址有567万个,3.89亿个交易,这么大的数据量,可以满足如此高并发的查询请求,背后的资源投入可想而知。
blockscout
https://blockscout.com 的功能覆盖了etherscan.io的主要功能,包括内联交易,代笔交易等。
如下是其特征:
- 开源 代码由社区驱动,任何人可以使用,查看和改进
- 实时交易跟踪 交易实时更新,无需刷新页面,且支持无限下翻
- 智能合约交互 用户能读和验证智能合约,并访问已经存在的合约跟踪开发
- 代币支持 支持ERC20和ERC721,未来支持ERC223,ERC155
- 用户自定义 用户很容易部署在一个自定义兼容网络
- 以太坊侧链网络 blockscout支持以太坊主网,测试网络,POA网络,以及其他兼容的侧链或私有EVM网络。
blockscout技术分析
blockscout采用Erlang/OTP 20.2+,Elixir 1.6+开发,Phoenix Framework WEB框架,Postgres 10.0数据库。
为啥blockscout采用Postgres数据库,而不是MySQL或者MogoDB?
有点儿担心后面数据的查询性能是否可以跟得上。
如何保存交易?
交易表有3.89亿条记录,blockscout如何存储和检索?
参见:
https://github.com/poanetwork/blockscout/blob/master/apps/explorer/priv/repo/migrations/20180117221923_create_transactions.exs
区块高度,交易哈希都建立索引,属于正规操作。
如何保存地址?
担忧
如何处理如此大的数据量,对于一个开源项目仍然是一个很大的挑战。