前言
在学习Solidity这门语言之前,我们先来介绍一下以太坊的层级架构。整个太坊的技术栈从上到下可以分为应用层、网络层、合约层、共识层、激励层和数据层
应用层:主要是基于以太坊公链衍生出的应用,例如各种Dapp应用、Geth控制台、Web3.js接口库以及Remix合约编写软件和Mist钱包如那件等
网络层:主要是以太坊的点对点通信和“RPC”接口服务
合约层:主要是基于智能合约虚拟机“EVM”的智能合约模块,有些公链没有合约层,比如比特币
共识层:主要是节点使用的共识机制
激励层:主要体现在节点的挖矿奖励。挖出胜出区块的节点或打包了叔块的区块所对应的节点,矿工会获得规则所设定的ETH奖励
数据层:用于整体的数据管理,包含但不限于区块数据、交易数据、事件数据以及“levelDB”存储技术模块
如下是以太坊的技术架构图
再回到语言上,尽管任何语言都能够编写智能合约,但是为什么我们要学习Solidity语言呢?这主要是因为构建在以太坊网络中的智能合约是运行在虚拟机(EVM)上的,而这个虚拟机运行的是字节码这种特殊形式机器码,虽然可以直接使用字节码来编写智能合约,但是它过于难懂和晦涩,所以使用高级语言可以让工程师们更容易去编写代码(高级语言通错编译器生成可供EVM执行的字节码)。另外,大多数常见的用户界面、操作系统接口和硬件接口在EVM环境中都不存在,还有跟EVM相关的一系列系统参数和函数也需要在编程语言中有所体现和支持,所以Solidity这种语言就应用而生了。当然以太坊还有其他若干智能合约编程语言和对应的编译器
反思:从上述内容我们也可以获知以太坊在智能合约编写层面的一些小小的局限性,但是总体而言以太坊的出现仍然将区块链的技术往前推动了一大步,关于以太坊的各个方面都是学习区块链思想和技术的重要材料