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