给各位读者做个科普。以太坊是一个基于公链的分布式计算平台,同时,它还提供了一个去中心化的虚拟主机。以太坊一共分为五层:
数据层:层如其名,数据层包含了以太坊中最基本的数据结构以及账户加密算法,而该层也是以太坊的基础组成部分。
网络层:用于校验以太坊中各个节点数据传输。
共识层:用于保存基于作量的共识机制。
激励层:用于保存激励机制,主要负责激励节点自主挖矿,维持以太坊运行。
合约层:以太坊独有结构,是一台封装了可以执行图灵完备脚本语言的虚拟机,可以通过编写脚本语言作为智能合约部署到以太坊区块链中,以此实现应用的去中心化。
智能合约则是一种编码,在合约层有着可以自动运行的业务逻辑,并依靠以太坊的虚拟机而运行。智能合约代码基于堆栈的字节码低级语言,每一种字节代表着不同的操作。通常来讲,代码的执行过程中是无限循环的,只有代码完成执行、中断指令等才能停止其工作。
以太坊虚拟机是执行交易代码的引擎,这也是以太坊区块链和其他区块链最大的不同之处。它并不是像沙盒一样完全独立的,这意味着智能合约代码在虚拟机中运行时,不需要网络和文件系统。
另外,在智能合约的执行过程中,合约账户的作用也非常关键。该账户的地址取决于合约建立的时间,当以太坊虚拟机运行时,账户的计算状态可以通过 block_state、transaction 等元组来定义。通过程序执行时对元组数据的修改(block_state 包含所有账户的全局信息),从而实现智能合约的执行过程。
从应用方面来讲,智能合约是一项能够改善传统金融模式的技术,它通过上述的网络架构以及虚拟电子货币简化了价值转移的过程。大概可以被理解为三步:
1、A 向区块链发送一条信息,并在信息中定义了一笔交易;
2、B 通过网络广播接受该交易信息;
3.、区块链网络验证,完成交易。
也就是说,智能合约和“把大象装进冰箱”的原理差不多。在传统金融模式中,交易双方都需要通过监管中心,而智能合约则可以利用区块链的分布式账本来跳过金融监管,以达到便捷交易的目的,这也是所谓的“去中心化”。
在以太坊中,智能合约由二进制字节码组成,其使用的编程语言为 Solidity。以太坊将智能合约编译后,存储于区块链中,从而实现了上述的信息中定义交易。