首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

以太坊智能合约开发指南

以太坊的基本设计与比特币类似。为了支持更复杂的智能合约,以太坊在不少地方进行了改进。包括交易模型、共识、对攻击的防护和可拓展性等。

智能合约设计

1. 运行环境

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

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

2.开发语言

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

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

3.交易模型

出于智能合约的便利考虑,以太坊采用了账户的模型,状态可以实时地保存到账户里,而无需像比特币的UXTO模型那样去回溯整个历史。UXTO 模型和账户模型的对比如下:

UXTO 模型和账户模型

UXTO模型的状态查询和变更,需要回溯历史,存储空间较大,易用性较难处理,安全性较好,易于理解和编程支持历史。

账户模型的状态查询和变更,可以直接访问,易用性较为简单,安全性方面需要处理好重放攻击(是指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性)等情况, 不支持追溯历史。

共识

以太坊目前采用了基于成熟的PoW共识的变种算法Ethash协议作为共识机制。

为了防止ASIC矿机矿池的算力攻击,跟原始PoW的计算密集型Hash运算不同,Ethash 在执行时候需要消耗大量内存,反而跟计算效率关系不大。这意味着很难制造出专门针对Ethash的芯片,即通用机器可能更加有效。

虽然,Ethash 对原始的PoW进行了改进,但仍然需要进行大量无效的运算,这也为人们所诟病。

社区已经有计划在未来采用更高效的Proof-of-Stake (PoS)作为共识机制。相对于PoW机制来讲,PoS机制无需消耗大量无用的Hash计算,但其共识过程的复杂度要更高點,还有待进一步的检验。

降低攻击

由于以太坊网络中的交易更加多样化,也就更容易受到攻击。

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

*所有交易都要提供交易费用,避免DDoS攻击:

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

这就确保了攻击 试图清托网络中虚报机的计算资源时,需要付出经济代价(支付大量的以太币)同时难以通过构造思意的循环或不稳定合约代码来对网络造成破坏。

提高扩展性

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

节点组造成了网络的最大处理能力会受限于单个节点的处理能力。支持分片功能之前, 以大坊整个网络中的每个事点都需要处理所有的智值合约。

分片后,任何一片内的合约处理是同步的,彼此达成共识,不同分片之间期可以的,可以提高网络整体的可扩展性。

参考文献:区块链原理设计

本订阅号由FoundGame社区委员会成立。所载内容均为对热点时事的跟踪与解读,基于已公开资料与信息撰写,但不保证资料及信息的完整性、准确性,如有侵权,请及时联系我们进行删除。在任何情况下,所载内容不构成投资建议。团队不对任何因使用本订阅号所载任何内容所引致或可能引致的损失承担任何责任。对本订阅号的所有内容进行复制、转载的,需注明出处。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190120G0MR8M00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券