什么是智能合约?最简单的定义是:智能合约是区块链网络中一个不可篡改的程序,如果某些预设条件被满足,这个程序就会被执行。
简单来说,智能合约就是一段程序,这段程序代码是透明且不可篡改的,它们在区块链网络上被执行。这个定义非常简单,但是你知道如何通过 EtherScan 来查看一个智能合约吗?
怎样阅读一个智能合约的内容
在本篇文章中,我们将 NFT 项目 Doodles 作为案例,来看如何在 EtherScan 上查看其智能合约。首先在 OpenSea 上找到这个 NFT 项目,然后通过这个项目中的任何一个 NFT,可以找到它背后的智能合约。
找到项目的智能合约
在 Opensea 的 NFT 项目之中,你可以查看单一的 item,然后在“Detail”下面,你会找到一个链接,会链接到智能合约的地址。点击这个链接,就会跳转到区块链浏览器 EtherScan 中,EtherScan 可以让你看到所有存储在以太坊上的信息。
检查被 Verified 的合约
一旦你知道了合约的地址,你就可以在 EtherScan 上查看这些合约。Doodles 的合约地址是 0x8a90CAb2b38dba80c64b7734e58Ee1dB38B8992e
。当然了,如果合约的代码还没有被验证的话,那么你在 EtherScan 还查看不了。尽管合约的 byte code 是可见的,并且也有可能被反编译,但是这个方法这篇文章中就不讨论了。如果你在“Contract”旁边没有看到一个绿色的对勾标记,那这个合约的代码就没有被验证。
查看经过验证的合约
如果合约是被验证过的,那它就是可读的。点击“Contract”标签,你就可以看到合约的代码。
在这里,根据合约作者验证方法的不同,你有可能会看到一个很大的文件,在这个文件中包含了所有用到的合约,或者是像 Doodles 这样,是很多分开的文件。这里能看到多个合约的原因是,一个合约中经常会引入别的合约。通过引用,合约可以重复使用其他已经验证过的合约,比如说在 Doodles 项目中用到的 OpenZeppelin 的 ERC-721 和 Ownable 合约。
在这里,你可以查看 Doodles NFT 项目的合约的所有代码,然后通过代码可以确认这个项目的合约有没有它所声明的功能。
与合约交互
对于经过验证的合约,你可以通过 EtherScan 和智能合约交互。可以在 “Read Contract” 和 “Write Contract” 标签中,使用智能合约的函数,任何人都可以免费使用这个特性,当然写入函数由于对区块链的状态发生了改变,所以需要用到一些 gas。
为什么查看智能合约很重要
智能合约可以被公开查看这一特性是它的优势之一,任何普通的用户都可以通过查看合约合约代码,来验证这个合约是否有如同它所说的功能。这样,我们就不用必须相信这个开发者了,而可以自己去验证。
找到智能合约并且查看它只是个开始,想要更好地了解智能合约中的内容,你需要了解 Solidity 的基础知识。
从哪里开始学习
可以关注 Chainlink 预言机,私信加入开发者社区,有大量关于智能合约的学习资料以及关于区块链的话题!