区块链作业2-以太坊系统设计思想

以太坊本质是一个基于交易的状态机,目的是基于脚本、竞争币和链上元协议概念进行整合和提高,使得开发者能够创建任意的基于共识的、可扩展的、标准化的、特性完备的、易于开发的和协同的应用,以太坊的状态中有百万个交易,这些交易被打包到一个区块中,这些交易被分组归类为区块。一个区块包含一系列交易,每个块与其前面的区块串联在一起。在区块链的基础上增加了智能合约打造出以太坊。

为了让一笔交易被认为是有效的,它必须要经过挖矿验证过程。 任何一个以太坊网络上的矿工都可以尝试创建和验证区块,如果一个区块被认为是有效的,并且是最快完成验证的,那么就会添加到主链上,如果要在主区块链上添加一个区块,矿工必须比其他竞争对手更快地对其证明。通过让矿工提供数学证明来验证每个区块的过程被称为工作量证明

主链是以太坊网络上最长的一条链。如果同时有多个矿工打包了一个区块,加上区块在网络中传播需要一定时间,难免会产生多条路径,就是所谓的分叉

为了防止多条链的产生,以太坊使用了 GHOST 协议,也就是选择一条完成计算最多的路径,区块号越大, 路径就越长,说明挖矿消耗的算力越多

以太坊系统的设计思想

架构

以太坊的架构设计可以简单的分为三个层次,协议层、接口层和应用层。而协议层又可以分为网络层和存储层

  • 协议层主要包括P2P网络通信,分布式算法,加密签名和数据存储技术;
  • 接口层与协议层完全分离,除了交易时与协议层进行交互,保证开发各种基于区块链的应用层业务不受约束,包括分布式存储业务,机器学习,物联网等;
  • 应用层主要是从区块链自身的特性出发,提供去中心化,不可篡改,安全可靠的场景应用。

账户

以太坊账户分为外部账户合约账户,外部账户有私人密钥控制,合约账户由合约代码控制,在以太坊区块链上发生的任何操作都是由外部控制账户的交易引起的

  • 两个外部账户之间的信息是一种价值转移,但从一个外部帐户到一个合约账户的消息会激活合约账户的代码,合约账户不能自行启动新的交易。相反,合约账户只能根据它们收到的其他交易进行交易

Merkle patricia树

  • 账户地址和账户状态之间的映射,并将映射存储在Merkle patricia树中
  • MPT具体设计决策
    • 有两类节点KV节点和离散节点
    • 离散节点是16进制,不是二进制
    • 空值(empty value)与非会员(non-membership)之间没有区别
    • 在安全树中采用SHA3(k)作为秘钥,通过设置离散节点的链的深度为64,以及反复调用SLOAD 和 SSTORE指令,使那些企图对树采取Dos攻击的行为变得非常困难。

Gas与费用

交易费用需要考虑到账户的许多方面,包括宽带费用,存储费用和计算费用。尤其重要的是,以太坊编程语言是图灵完备的,所以交易会使用任意数量的宽带、存储和计算成本。这就可能会导致在计算成本过程中,突遭停电而计算被迫中止。

  • 每笔交易必须指明一定数量的gas(即指定startgas的值),以及支付每单元gas所需费用(gasPrice)
  • 交易执行开始时,gasLimit * gasPrice 价值的以太币会从发送者账户中扣除;
  • 交易执行期间的所有操作每一步的计算都会消耗一定数量gas;
  • 交易执行完毕,消耗的gas值小于指定的限制值,则交易执行正常,并将剩余的gas值赋予量gas_rem ;
  • 交易完成,发送者会收到返回的gas_rem * gasPrice 价值的以太币,而给工的奖励是(gasLimit - gas_rem)* gasprice价值的以太币;
  • 若交易执行中,gas消耗殆尽,则所有的执行恢复原样,但交易仍然有效,只是交易的唯一果是将 startgas * gasprice 价值的以太币支付给矿工,其他不变;
  • 当一个合约发送消息给另一个合约,可以对这个消息引起的子执行设置一个gas限制。如果子行耗尽了gas,则子执行恢复原样,但gas仍然消耗;

更详细阐述另见以太坊Gas和支付

日志

以太坊允许log跟踪各种交易和消息,合约也可以通过定义需要记录的事件来显式生成log,log存储在一个bloom过滤器中,它以有效的方式存储海量的日志数据。

虚拟机EVM

  • VM 有一个基于栈机器的架构,EVM中每个栈条目的大小为256位,最大为1024位;
  • EVM具有内存,其中存储的条目是字地址字节数组, 内存是易失性的;
  • EVM还有存储空间。与内存不同,内存的存储是非易失性的,并作为系统状态的一部分来维护;
  • EVM在一个虚拟ROM中独立存储程序代码,只能通过特殊的指令访问虚拟ROM。

比特币和以太坊系统比较

比特币作为一种全球去中心化的金融体系,是一种支付交易媒介,具有成为数字价值存储的能力;以太坊被设计为一个平台,使用它自己的货币工具促进对等合约和应用程序。

对于采矿的工作方式来说。比特币和以太坊由于每种数字资产都有自己独特的共识算法,因此它们验证添加到分类账中的信息有效性的方式是不同的。比特币采矿是基于工作量证明(PoW)算法,以太坊采矿基于权益证明(PoS)算法

对于两者的供应上限方面:比特币的固定供应量为2100万比特币,这就构成了通货紧缩货币。目前,以太坊的循环供应量略高于1.07亿以太币,以太坊的代币没有供应上限,这些代币也可能受到通胀趋势的影响。

对区块链系统设计的看法

区块链是比特币的核心机制,区块链可以看作是一个公共账簿,其中所有的承诺事务存储在一个块链中。 当添加新的块时,这个链会不断增长,且区块链技术具有分散性,持久性,匿名性和可审核性等特性,区块链允许在没有任何银行或中介结构的情况下完成支付,这也使得区块链技术不仅仅在互联网交互系统是最有前景的技术之一,同时在经济,金融,和社会系统中也存在广泛的应用场景,如:区块链电子发票,商品溯源,公益项目,保险行业,医疗数据管理,区块链征信联盟,供应链金融数字政府等等

然而,区块链仍然面临着各种制约发展的问题和障碍,基于PoW公式过程的区块链主要面临的51%的攻击问题,只要节点掌握全网超过51%的算力就有能力篡改区块链的数据;区块链的隐私保护也是存在一定的安全性风险,区块链系统内的各个节点并非完全匿名,而是通过地址表示来实现数据传输,虽然和真实世界的身份无关联,不过还是存在着目标定位和识别的潜在风险。

第二个问题就是区块膨胀问题,对着区块链技术的发展,目前如果要完全同步从第一个区块到目前的区块需要巨大的存储空间,其次是交易效率和时间的问题,比特币区块链目前每秒能处理7笔交易,限制了区块链在发多数金融系统高频交易场景的应用,并且区块链交易确认时间一般比较久。

第三个问题是资源问题,PoW共识过高度依赖区块链节点贡献的算力,主要用于解决SHA256哈希和随机数搜索,并不会有其他额外的社会价值,不仅仅耗费巨大的算力资源,也浪费了巨大的电力资源,这使其逐渐成为了高耗能的行业。

总结来讲,随着以比特币为代表的数字加密货币的兴起,区块链技术逐渐成为热点课题,区块链技术的去中心化,不可篡改性,可编程性使得区块链技术在金融,加密货币,商业,医疗等等社会系统方面都有着广泛的应用前景,有效的解决区块链面临的挑战和问题,完善区块链的基础理论,不断跟进相关的技术研究才能使得区块链技术不断的进步发展下去

参考资料

以太坊设计原理参考
以太坊白皮书
一篇特别友好的小白介绍以太坊
比特币和以太坊比较

发布了27 篇原创文章 · 获赞 0 · 访问量 6030
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览