织梦CMS - 轻松建站从此开始!

我的网站

当前位置: 主页 > 竞争币 > 以太坊

以太坊智能合约漏洞百出,89%的合约存在漏洞(2)

时间:2020-02-24 15:39来源:网络整理 作者:Admin 点击:
接着,DT 君给各位读者做个科普。以太坊是一个基于公链的分布式计算平台,同时,它还提供了一个去中心化的虚拟主机。 以太坊一共分为五层 : 数据层:层

接着,DT 君给各位读者做个科普。以太坊是一个基于公链的分布式计算平台,同时,它还提供了一个去中心化的虚拟主机。以太坊一共分为五层

数据层:层如其名,数据层包含了以太坊中最基本的数据结构以及账户加密算法,而该层也是以太坊的基础组成部分。

网络层:用于校验以太坊中各个节点数据传输。

共识层:用于保存基于作量的共识机制。

激励层:用于保存激励机制,主要负责激励节点自主挖矿,维持以太坊运行。

合约层:以太坊独有结构,是一台封装了可以执行图灵完备脚本语言的虚拟机,可以通过编写脚本语言作为智能合约部署到以太坊区块链中,以此实现应用的去中心化。

智能合约则是一种编码,在合约层有着可以自动运行的业务逻辑,并依靠以太坊的虚拟机而运行。智能合约代码基于堆栈的字节码低级语言,每一种字节代表着不同的操作。通常来讲,代码的执行过程中是无限循环的,只有代码完成执行、中断指令等才能停止其工作。

图丨去中心化架构

图丨去中心化架构

以太坊虚拟机是执行交易代码的引擎,这也是以太坊区块链和其他区块链最大的不同之处。它并不是像沙盒一样完全独立的,这意味着智能合约代码在虚拟机中运行时,不需要网络和文件系统。

另外,在智能合约的执行过程中,合约账户的作用也非常关键。该账户的地址取决于合约建立的时间,当以太坊虚拟机运行时,账户的计算状态可以通过 block_state、transaction 等元组来定义。通过程序执行时对元组数据的修改(block_state 包含所有账户的全局信息),从而实现智能合约的执行过程。

从应用方面来讲,智能合约是一项能够改善传统金融模式的技术,它通过上述的网络架构以及虚拟电子货币简化了价值转移的过程。大概可以被理解为三步

1、A 向区块链发送一条信息,并在信息中定义了一笔交易;

2、B 通过网络广播接受该交易信息;

3.、区块链网络验证,完成交易。

也就是说,智能合约和“把大象装进冰箱”的原理差不多。在传统金融模式中,交易双方都需要通过监管中心,而智能合约则可以利用区块链的分布式账本来跳过金融监管,以达到便捷交易的目的,这也是所谓的“去中心化”。

在以太坊中,智能合约由二进制字节码组成,其使用的编程语言为 Solidity。以太坊将智能合约编译后,存储于区块链中,从而实现了上述的信息中定义交易。

图丨 DApp 与智能合约的关系

智能合约能否实现?

实际上,以太坊也在日益进步。想要开发一个完善的智能合约,还需要时间磨砺。

以太坊去中心化的核心是其可以运行图灵完备的脚本语言,而开发以太坊智能合约则有四种语言:Serpent、Solidity、Mutan、LLL。这些语言都是面向底层设计的语言。目前来看,Solidity 是首选语言,这是由于它内置了 Serpent 语言的所有特性,语法类则似于使用广泛的 JavaScript。再加上 Solidity 的语言特性较少,该语言则可以更简单地实现完备的智能合约体系。

区块链去中心化的应用程序通常为 DApp,它由智能合约和后端代码构成。在 DApp 中,所有的服务和逻辑都运行于区块链上,也就意味着 DApp 不仅需要设计前端应用,还要开发基于以太坊的智能合约代码。

图丨 DApp 与智能合约的关系

图丨 DApp 与智能合约的关系

这些智能合约代码以 JsonPRC 的方式提供给应用程序进行调用,而此时,智能合约就如以太坊中的转账操作一样,被广播到所有节点上,通知这些节点运行被调用的智能合约 ABI,然后这些被调用的 ABI 会各自运行在该节点的虚拟机中。最后通过区块链的生成将运行过程和结果打包进区块链,并通过区块链的同步实现全网统一。

(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容