如何在 EtherScan 上读取智能合约

什么是智能合约?一个最简单的定义是:智能合约是区块链网络中一个不可篡改的程序,如果某些预设条件被满足,这个程序就会被执行。

简单来说,智能合约就是一段程序,这段程序代码是透明且不可篡改的,它们在区块链网络上被执行。这个定义非常简单,但是你知道如何通过 EtherScan 来查看一个智能合约吗?

怎样阅读一个智能合约的内容

在本篇文章中,我们将 NFT 项目 Doodles 作为案例,来看如何在 EtherScan 上查看其智能合约。首先在 OpenSea 上找到这个 NFT 项目,然后通过这个项目中的任何一个 NFT,可以找到它背后的智能合约。

找到项目的智能合约

在 Opensea 的 NFT 项目之中,你可以查看单一的 item,然后在“Detail”下面,你会找到一个链接,会链接到智能合约的地址。点击这个链接,就会跳转到区块链浏览器 EtherScan 中,EtherScan 可以让你看到所有存储在以太坊上的信息。

检查被验证的合约

一旦你知道了合约的地址,你就可以在 EtherScan 上查看这些合约。Doodles 的合约地址是 0x8a90CAb2b38dba80c64b7734e58Ee1dB38B8992e。当然了,如果合约的代码还没有被验证的话,那么你在 EtherScan 还查看不了。尽管合约的 byte code 是可见的,并且也有可能被反编译,但是这个方法这篇文章中就不讨论了。如果你在“Contract”旁边没有看到一个绿色的对勾标记,那这个合约的代码就没有被验证。

Etherscan smart contract code

查看经过验证的合约

如果合约是被验证过的,那它就是可读的。点击“Contract”标签,你就可以看到合约的代码。

Doodles smart contract code

在这里,根据合约作者验证方法的不同,你有可能会看到一个很大的文件,在这个文件中包含了所有用到的合约,或者是像 Doodles 这样,是很多分开的文件。这里能看到多个合约的原因是,一个合约中经常会引入别的合约。通过引用,合约可以重复使用其他已经验证过的合约,比如说在 Doodles 项目中用到的 OpenZeppelin 的 ERC-721 和 Ownable 合约。

Read Contract Write Contract

在这里,你可以查看 Doodles NFT 项目的合约的所有代码,然后通过代码可以确认这个项目的合约有没有它所声明的功能。

与合约交互

对于经过验证的合约,你可以通过 EtherScan 和智能合约交互。可以在 “Read Contract” 和 “Write Contract” 标签中,使用智能合约的函数,任何人都可以免费使用这个特性,当然写入函数由于对区块链的状态发生了改变,所以需要用到一些 gas。

Import contract

为什么查看智能合约很重要

智能合约可以被公开查看这一特性是它的优势之一,任何普通的用户都可以通过查看合约代码,来验证这个合约是否有如同它所说的功能。这样,我们就不用必须相信这个开发者了,而可以自己去验证。

找到智能合约并且查看它只是个开始,想要更好地了解智能合约中的内容,你需要了解 Solidity 的基础知识。

从哪里开始学习

可以关注 Chainlink 预言机并且加入开发者社区,有大量关于智能合约的学习资料以及关于区块链的话题!

Need Integration Support?
Talk to an expert
Faucets
Get testnet tokens
Read the Docs
Technical documentation