资讯专栏INFORMATION COLUMN

区块链学习之以太坊(七)

xiongzenghui / 1718人阅读

摘要:基于以太坊项目,以太坊团队目前运营了一个公开的区块链平台以太坊网络。主要特点以太坊区块链底层也是一个类似比特币网络的网络平台,智能合约运行在网络中的以太坊虚拟机里。以太坊采用交易作为执行操作的最小单位。

以太坊将比特币针对数字交易的功能进一步进行了拓展,面向更为复杂和灵活的应用场景,支持了智能合约这一重要特性。

以太坊项目简介

以太坊:项目最初的目标是打造以个智能合约的平台,该平台支持图灵完备的应用,按照智能合约的约定逻辑自动执行,理想情况下将不存在故障停机、审查、欺诈,以及第三方干预等问题

以太坊核心实现是基于比特币网络的核心思想进行了拓展,因此在很多设计特性上都与比特币网络十分类似。
基于以太坊项目,以太坊团队目前运营了一个公开的区块链平台——以太坊网络。智能合约开发者使用官方提供的工具和以太坊专用应用开发语言 Solidity,可以很容易地开发出运行在以太坊网络上的“去中心化”应用。

主要特点

以太坊区块链底层也是一个类似比特币网络的P2P网络平台,智能合约运行在网络中的以太坊虚拟机里。网络自身是公开可接入,任何人都可以接入并参与网络中数据的维护,提供运行以太坊虚拟机的资源。

与比特币项目相比,以太坊区块链的技术特点主要包括:

支持图灵完备的只能合约,设计了编程语言 Solidity 和虚拟机 EVM

选用了内存需求较高的哈希函数,避免出现强算力矿机、矿池攻击

叔块激励机制,降低矿池的优势,并减少了区块产生间隔(10分钟降低到15秒左右)

采用账户系统和世界状态,而不是UTXO,容易支持更复杂的逻辑

支持PoW共识算法,并计划支持效率更高的PoS算法

核心概念

基于比特币的核心思想,以太坊提出了许多创新的技术概念:智能合约、基于账户的交易、以太币和燃料

智能合约
智能合约是以太坊中最为重要的一个概念,即以计算机程序的方式来缔结和运行各种合约。

智能合约作为运行在以太坊虚拟机中的应用,可以接受来自外部的交易请求和事件,通过触发运行提前编写好的代码逻辑,进一步生成新的交易和事件,可以进一步调用其他智能合约。

智能合约的执行结果可能对以太坊网络上的账本状态进行更新。这些修改由于经过了以太坊网络中的共识,一旦确认后无法被伪造和篡改

账户
以太坊直接用账户来记录系统状态,每个账户存储余额信息、智能合约代码和内部数据存储等。以太坊支持在不同的账户之间转移数据,以实现更为复杂的逻辑。

以太坊账户分为两种类型:

合约账户: 存储执行的只能合约代码,只能被外部账户来调用激活

外部账户: 以太币拥有者账户,对应到某公钥。账户包括 nonce、balance、storageRoot、codeHash 等字段,由个人来控制

当合约账户被调用时,存储其中的智能合约会在矿工出的虚拟机中自动执行,并消耗一定的燃料。燃料通过外部账户中的以太币进行购买

交易
交易在以太坊中是指从一个账户到另一个账户的消息数据。消息数据可以是以太币或者合约执行参数。

以太坊采用交易作为执行操作的最小单位。每个交易包括如下字段:

to : 目标账户地址

value : 可以指定转移的以太币数量

nonce : 交易相关的字串

gasPrice : 执行交易需要消耗的 Gas价格

startgas : 交易消耗的最大 Gas 值

signature : 签名信息

以太币
以太币是以太坊网络中的货币。以太币主要用于购买燃料,支付给矿工,以维护以太坊网络运行智能合约的费用。

燃料
燃料(Gas),控制某次交易执行指令的上限。每执行一条合约指令会消耗固定的燃料。当某个交易还未执行结束,而燃料消耗完时,合约执行终止并回滚状态。

主要设计

为了支持更复杂的智能合约,以太坊在不少地方进行了改进,包括交易模型、共识、对攻击的防护和可扩展性

智能合约相关设计

运行环境
以太坊采用以太坊虚拟机作为智能合约的运行坏境。以太坊虚拟机是一个隔离的轻量级虚拟机环境,运行在其中的智能合约代码无法访问本地网络、文件系统或其他进程。

对同一个智能合约来说,往往需要在多个以太坊虚拟机中同时运行多份,以确保整个区块链数据额一致性和高度的容错性。但这也限制了整个网络的容量

开发语言
以太坊为编写智能合约设计了图灵完备的高级编程语言。目前Solidity是常用的以太坊合约编写语言之一。

智能合约代码编写完毕后,用编译器编译为以太坊虚拟机专用的二进制格式(EVM bytecode),右客户端上传到区块链中,之后在矿工的以太坊虚拟机中运行

交易模型

以太坊采用了账户的模型,状态可以实时地保存到账户里,而无需像比特币的UTXO模型那样去回溯整个历史。

共识

以太坊目前采用了基于成熟的PoW共识的变种算法Ethash协议作为共识机制。为了防止ASIC矿机矿池的算力攻击,跟原始PoW的计算密集型Hash运算不同,Ethash执行时需要消耗大量内存,反而跟计算效率关系不大。

降低攻击

以太坊网络在降低攻击方面的核心设计思想仍然是通过经济激励机制防止少数人作恶:

所有交易都要提供交易费用,避免DDos攻击

程序运行指令数通过Gas来限制,所消耗的费用超过设定上限时就会被取消,避免出现恶意合约

提高扩展性

可扩展性是以太坊网络承接更多业务量的最大制约。以太坊项目未来希望通过分片机制来提高整个网络的扩展性
分片:是一组维护和执行同一批智能合约的节点组成的子网络,是整个网络的子集。

分片前,所有节点都需要处理所有的智能合约,节点的处理能力会限制网络的最大处理能力。分片后,同一片内的合约处理是同步的,彼此达成共识,不同分片之间则可以是异步的,可以提高网络整体的可扩展性。

总结

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/24125.html

相关文章

  • node调取区块链学习之以太(eth)主币和代币余额查询

    摘要:查询以太坊的主币可以直接公钥地址查询,使用其里面的方法。币种名称币种余额小数位以上的几个方法可以获取其代币信息。但是获取的余额同样是以以太坊最小单位为单位的数值,所以需要对其进行处理。 这段时间有幸能接触到区块链,这对于一个前端来说是一个全新的世界。同时,也特别感谢领导给我机会,能让我接触学习这方面的东西。以下是这段时间的学习总结,可能认识比较浅薄,但是觉得写出来也是对自己学习的一个交...

    qieangel2013 评论0 收藏0
  • 区块链学习之区块链思想的诞生(一)

    摘要:区块链最早出现在比特币开元项目中。了不起的社会学实验比特币的诞生年化名中本聪的人发布比特币白皮书,并在年公开了实现代码比特币的意义和价值比特币首次真正从实践意义上实现了安全可靠的去中心化数字货币机制。 区块链最早出现在比特币开元项目中。比特币在诞生和发展过程中,借鉴了来自数字货币、密码学、博弈论、分布式系统、控制论等多个领域的技术成果,作为核心支撑结构的区块链技术大放异彩。 从实体货币...

    rozbo 评论0 收藏0
  • 区块链学习之核心技术概览(二)

    摘要:关键步骤完成对一批交易的共识新区块添加到区块链结构上,被大家认可,确保未来无法被篡改比特币的这种基于算力寻找串的共识机制称为工作量证明。 定义与原理 定义 维基上给出定义: 一种分布式数据库技术,通过维护数据块的链式结构,可以维持增长的、不可篡改的数据记录 基本原理 区块链包括三个概念: 交易: 一次对账本的操作,导致账本状态的一次改变,如添加一条转账记录 区块: 记录一段时间内发生...

    zhangwang 评论0 收藏0
  • 以太连载():C++客户端的安装与定制(一)

    摘要:以太坊客户端快速入门以太坊客户端的项目是。参考资料文章中的列表对应的链接可以参考第页下一篇文章我们将会介绍以太坊连载八客户端的安装与定制二感谢朝夕团队参与的翻译和校验。 以太坊C++客户端:cpp-ethereum 快速入门 以太坊C++客户端的Github项目是 webthree-umbrella。 我们将恢复到 cpp-ethereum-github 作为项目重启的一部分。 如果...

    wind3110991 评论0 收藏0
  • 区块链学习之比特币(六)

    摘要:侧链侧链协议允许资产在比特币区块链和其他区块链之间互转。实现了比特币区块链的扩展证明在比特币系统中验证交易时,涉及交易合法性检查双重花费检查脚本检查等。 比特币项目简介 比特币是基于区块链技术的一种数字货币实现,比特币网络是历史上首个经过大规模、长时间检查的数字货币系统 比特币网络在功能上具有如下特点: 去中心化: 意味着没有任何独立个体可以对网络中的交易进行破坏,任何交易请求都需要...

    xingpingz 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<