说明
对于Web3来说,估计使用得最多的还是区块链浏览器(etherscan)。本篇文章算是对etherscan中各个功能的简单介绍,其实在之前的文章中或多或少都有穿插对于etherscan上的页面的一些参数的介绍,但是没有单独写篇文章来做一个集中式的说明。本篇文章主要是对于etherscan上的各个页面的功能进行说明,以及对于各个页面的参数的说明。
首页
首页的基本如下所示:

首页为我们大致了展示了有关以太坊的信息。一般情况下,我们都是聚焦于某个区块或者是某个交易,查看其具体信息。
区块信息
随便进入到某个区块详情页面: 15618238

Block Height,区块高度Status,当前区块状态,上图中显示的是Unfinalized,表示未确定,表示有可能会重组(一般情况下,概率比较小)。Timestamp,出块时间Proposed On,暂不清楚Transactions,当前区块中的交易信息,当前区块包含了349个交易,其中139是合约内部交易,通过txs可以查看到当前区块中的所有的交集信息Fee Recipient,矿工信息Block Reward,出块奖励Total Difficulty,总的难度Size,区块大小Gas Used,当前区块消耗的GasGas Limit,区块的Gas总量限制,一般这个值是固定不变的Base Fee Per Gas,Gas Fee,即Gas的价格Burnt Fees,燃烧的Gas的费用Extra Data,额外信息
以上就是一个区块的信息。
交易信息
我们平时最关心最常用的还是查看交易信息,这一部分也是最复杂的。由于区块链中的交易多种多样,包括转账,swap,交易,mint等等,为了方便理解。我们以最为常见的mint为例来介绍。mint交易基本上包含了常见交易的所有内容。
普通交易
在ether scan的交易页有4栏,分别展现的是合约的基本信息(Overview),事件信息(Log),状态信息(State)以及评论(Comments),这4栏重要性依次降低。最常用的还是查看合约的基本信息(Overview)。
Overview
以 0x2928ded9fbb51444fc2b7bb36d8df0cdbf0da96917066f555cdb7c5000025740 为例来说明。本部分主要是讲解有关交易信息的不分,至于有关交易费用的问题,可以参考之前的文章 Gas解析

Transaction Hash,交易HashStatus,交易状态。当前交易状态是Success,当然也会存在因为各种原因而失败的交易,对应的状态就是FailBlock,当前交易所在的区块Timestamp,具体交易时间Transaction Action,交易详情。From,发起人,谁主动发起这个交易Interacted With (To),交易的目的地址,可能是合约也有可能是EOA地址(比如链上转账)Tokens Transferred,是否涉及到ERC20的Token转移以及转移的方向Value,交易附带的ETH的数量/价值Input Data,执行代码时所附带的data信息。如果合约是开源的,就会显示函数名,参数参数内容。在本例中的信息如下:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20Function: whitelistSale(uint64 numberOfTokens_,bytes32[] signature_)
MethodID: 0xe61f8440
[0]: 0000000000000000000000000000000000000000000000000000000000000001
[1]: 0000000000000000000000000000000000000000000000000000000000000040
[2]: 000000000000000000000000000000000000000000000000000000000000000e
[3]: 8a941f7a67a8ada2a233f2fa05ab694589a96d20a6803d0e7d02a20780bb2200
[4]: 0e31d65a8f58903a353107e83230ca4be26819eb989571b1ab98b7e04e08fe78
[5]: 735c39de7e3dd1cf185c753a6e2477bc09570afa8352b001706f5aa1614a0e1a
[6]: 7589ea94fc3dde79f0ca2b3c1332d1659b8f19bfb735f4e1848a523a4b7b0ee3
[7]: 594021ec3bb816d9fd6d9991a94b12c1ad4af7b5497b48afb8b403c9d436c99c
[8]: 447fcb54661f1ad6aab3cc7060e57a778259729c5b08780c673bb50d17c752b6
[9]: efd4c0ff129a6f93f727a8b4e97d64aa4520b66592b8e4f25c35df9d133631c6
[10]: dffc93e0d3e55392e8f5b05661a2e9525f54aed2fea1d62066fca8f0aa820194
[11]: 649c285ad23016442ea1525cac6a0f81aec0c7d4e46e2fc70bfa722890d3018d
[12]: 20e990a057fa1f0b2acc6103fa1e069092af78e3600ac94d4924d55d4091ef45
[13]: 082e75822645b996c46c6f1450d0042dc2f5fd62e997b37a9d334258206c4c1f
[14]: 5abcdfc3f78acb2178b7a7f030194437246cf3571cbc79fe5ce1ccee36c260b5
[15]: 0181d6790169e56d1edc6069f6118930c0e00965c494df44408950b848e82378
[16]: 463c1a5a2ea0e9d80f3d7d112d4b3d86689d6c997c62a78d930dd3f0bba37cf2其中
Function: whitelistSale(uint64 numberOfTokens_,bytes32[] signature_)就列出了函数原型,MethodID: 0xe61f8440是函数选择器,后面的列表就是参数内容了。input data根据每个合约所展现的内容也不相同。
Log
Log信息记录的就是对应交易中的event事件。Event原理介绍和格式详解这篇文章就已经对Event做了详细的讲解,就不做过多的赘述。本节主要是集中在对界面的内容进行说明。

可以看到在本次交易中只有一个event记录。event的事件记录的数量取决于交易。如果交易比较复杂,那么event数量就会非常不多,种类也有可能非常多。
State

可以看到,这个交易有关state信息一共只有三行。从上往下的含义大致是,当前这个交易是被哪个矿工打包的,当前这个交易对应的合约的资金变化,当前这个交易的发起者的资金变化。
这个信息一般比较少会用到,所以也不用太过关注。
创建合约交易
除了前面所说的各种交易外,还有一类特殊的交易,就是创建合约的交易。这类交易的特征也非常的明显。一般情况下,在合约的首页上就可以看到创建合约的相关的基本信息。如下图所示:

进入到创建合约的交易当中,其中有几处与常规交易不同的地方。
From,对应的就是合约的创建者
To,就是创建出来的目标合约的地址。对于这种创建合约的交易,etherscan会在旁边增加一个Created的标识。
创建合约的交易中的Input data,就是合约的字节码。
合约信息
对于一个合约来说,我最关心的除了与合约相关的交易之外,就是合约是否是开源的,合约的代码。
合约基本信息
以0xa5Bb28eecC6134F89745E34ec6aB5d5Bcb16dAD7为例对合约信息进行讲解。上一节对于合约的基本信息已经做了说明。下面主要是关注etherscan为合约提供了哪些可以展示的信息。

Transcations,表示所有与这个合约交互的交易信息。IN就表示买入,OUT就表示卖出Internal Txns,表示合约的内部交易。调用了某个合约,而此合约功能复杂,他再发起交易去调度其他合约获取某些返回信息的时候,由合约作为from方的交易就是内部交易了。在本例中没有内部交易。Erc20 Token Txns,表示合约中的代币的交易情况。在本例中没有代币的转移情况。Erc721 Token Txns,表示合约中的NFT的交易情况。在本例中存在一个交易0x21e20b7cd5644b355fda59bbce6683bfd5bc4e8ea9e8190541896bbad92578a1。有人将NFT转移到了此合约中。Contract,对应于合约的代码。如果代码开源了,就会有一个绿色的标识。Events,是这个合约所有的交易发出来的事件日志。
合约代码
合约部门有三个信息,分别是Code,Read Code,Write Code。
- code,合约编译信息,包括合约的名字,合约的编译器版本,合约的代码;
Read Contract,展示的是一些可以直接调用的方法,一般对应合约中的view标识的方法。Write Contract,可能会改变链上状态的方法,如果调用这些方法,需要关联自己的账户,同时这些交易也会上链。
code
code页面上方展示了合约的编译的基本信息,下方展示了合约的源代码。可以看到页面的说明,当前合约中包含了14个文件,一般情况下,很多文件都是引入的第三方文件,比如openzeppelin,导致不方便看清楚合约主体代码。
通过etherscan.deth.net帮助理清了项目架构,方便我们查看代码。
Read Contract
展示的是一些可以直接调用的方法,一般对应合约中的view标识的方法。不需要消耗Gas。如下图所示,调用ownerOf方法,查看 tokenId对应的Owner。只需要直接在页面上输入对应的tokenId即可。
Write Contract
Write COntract下的方法,因为需要上链付出Gas费用,所以需要个人账号。最上方的Connect to Web3就是用来登录自己的账号(常见的诸如Metamask即可),登录之后就可以根据实际的方法填入需要的参数即可调用,最终方法成功调用之后也会上链。
这里就不做演示了。
总结
etherscan的功能很强大,几乎为我们展示了以太坊的方方面面的信息。当然本篇文章也仅仅只是展示了冰山一角,更强大更多的功能还有待大家自行发觉。
etherscan虽然功能强大,但是如果我们真的想用话etherscan,本质上还是需要我们对交易的类型,交易的元数据,交易背后反映的问题要有深刻的理解和认识。