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

我的网站

当前位置: 主页 > 区块链

V神设计理念公布 细数以太坊潜在的优缺点(4)

时间:2021-07-13 10:43来源:未知 作者:admin 点击:
账户方式的一个弱点是:为了阻止重放攻击(replay attack,指让同一笔交易重复执行),每笔交易必须有一个 “nonce”(流水号)。因此,每个账户都要有

  账户方式的一个弱点是:为了阻止重放攻击(replay attack,指让同一笔交易重复执行),每笔交易必须有一个 “nonce”(流水号)。因此,每个账户都要有一个实时更新的 nonce 值,每一笔新交易都在账户 nonce 值上递增 1 作为自己的 nonce(并在交易处理之后按此值更新账户的 nonce 值)(校对注:在账户模式下,如果交易不附带这种消耗性的标识符,交易就可被重复处理,这样接收账户可以一遍又一遍地收账且不用付出任何代价,而发账的账户会被吸干;以太坊账户的 nonce 随所发起的交易得到处理而递增,就解决了这个问题)。这就意味着,即使不再使用的账户,也不能从账户状态中移除。解决这个问题的一个简单方法是让交易包含一个区块号,使它们在一段时间后就无法再被重放,并且每隔一段时间段重置 nonce。

  若要在状态中删除某个账户(比如长期不使用的账户),就必须先 “ping” 出它们来,而完整扫描区块链协议的开销是非常大的。在1.0上我们没有实现这个机制,1.1及以上版本可能会使用这个机制。

  校对注:这就是以太坊日后面临的 “状态爆炸” 问题的技术原因:所有状态数据必须完整保存,无法合理地删除账户。作为一种区块链协议,以太坊的节点不仅要对事务(交易)的顺序达成共识,还要对全局状态达成共识(表现形式就是区块头里需要包括状态根。因此,若要删除状态,也需要全网的共识,否则会陷入分裂。

  校对注:这种以 nonce 来标记账户交易顺序的做法,也使得用户的交易必须顺序执行,如果一笔交易无法得到处理,使用后续 nonce 的交易也无法得到处理。关于 “加速” 已发出的交易的上链进度,见这篇文章。默克尔帕特里夏树(MPT)

  默克尔帕特里夏树(Merkle Patricia tree/trie),由 Alan Reiner 提出设想,并在瑞波协议中得到实现,是以太坊的主要数据结构,用于存储所有账户状态,以及每个区块中的交易和收据数据。MPT 是默克尔树和帕特里夏树的结合,结合这两种树创建的结构具有以下属性:

  •   任一组 键-值对 所对应的根哈希值都是唯一的,想要谎称某个 键值对 存在于某棵树上是一定会被识破的(除非攻击者拥有约 2^128 的算力)。

  •   增、删、改 一个键值对的时间复杂度是对数级别。

  MPT为我们提供了一个高效、易更新、且代表整个状态树的 “指纹” 。关于MPT更详细描述:https://github.com/ethereum/wiki/wiki/Patricia-Tree。

  MPT的具体设计决策如下:

  •   有两类节点:KV 节点和离散节点。KV节点的存在提高了效率,因为如果在特定区域树是稀疏的,KV节点可作为一个 “捷径” 来压缩树的高度(阅读 MPT 的详述可了解更多细节)。 (责任编辑:admin)

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