首页 只有深入到源码级别的底层,才能一窥事物的本质
文章
取消

只有深入到源码级别的底层,才能一窥事物的本质

最近学习了Solidity(以太坊上智能合约的编程语言),看了源码后,才大概明白智能合约的原理以及为什么说以太坊是一个状态机了。

拿被广泛使用的两个标准来举例:

用来发行同质化代币的ERC20标准:

ERC20源码截图

用来发行非同质化代币NFT的ERC721标准:

ERC721源码截图

其实从代码中可以看到,ERC20和ERC721都是通过map(映射)来存储关键数据的,

  1. ERC20通过<地址,持有token的数量>这样的map来记录一个地址持有多少数量的token;

  2. ERC721则是通过<token ID,地址>这样的map来记录某个NFT的持有地址;

智能合约中的代码就是在对这些核心数据结构进行操作:读取或者更改其中的数据。

这些核心数据存储在以太坊上,每次数据的更改都是在执行对应的智能合约的某些函数,而这都需要通过发送交易的方式,在区块链上达成共识后才算生效。

数据更改前后的以太坊是两个不同的状态,因为交易的发生,状态发生了变化。以太坊就是负责维护和修改这个状态,所以可以把以太坊看作是一个状态机。

以太坊状态转换截图

在看源代码之前,通过阅读开发者文档,我也能大概理解以上提到的这些概念。但直到我读了源码之后,我才更深层次地明白了这些东西是怎么运行的。所以说在计算机的世界里,要想彻底搞明白一个东西,读源代码是不可或缺的。

而对计算机以外的世界也是一样的。要搞明白一样东西,必须要深入到它的底层,要想办法通过各种途径(查资料、请教别人、亲身实践等)去透过外表和现象寻找它的本质。

本文由作者按照 CC BY 4.0 进行授权

做减法和做取舍

关于创新的一点思考(上):站在巨人的肩膀上