zoukankan      html  css  js  c++  java
  • 区块链:理解权益证明安全模型的原理

    Devcon 3(译者注:即2017年的以太坊开发者大会,原文写作时间是2017年11月2日)正在全面开展,然而,先不提会议上那些面向开发的议程,很多听众仍然在关于共识协议的讨论中自觉如丈二的和尚——摸不着头脑。我们正好抓住这个机会,将科技术语转化为通俗的大白话。

    共识协议基础课

    标准定义

    “共识”问题

    每一种分布式容错系统的核心都是这样一个基本问题:保证相应系统内部发生的所有远程进程可以得到同样的结果。也就是所谓的在参与者中要求“共识”。在一个完全可信赖的受控环境中,也就是错误进程受到严密的监控并可被迅速修正的的环境中,取得共识是轻而易举的。但是,真实世界中的去中心化协议会显著地遭遇更多奇诡的问题,会更不安全,因此要求更高程度的可信赖保证,否则就没有用了。正如 Cosmos 的Ethan Buchman 说的那样,分布式共识机制必须“在不能相互信赖的环境中创造出一个可信的系统”。

    共识协议保证每一笔交易都被网络中的所有的机器以同样的顺序复制并记录下来。这种情境下,状态复制的方案是在区块链范式中实现的;在此范式中,区块链乃是一系列用哈希联系起来的“批处理日志”的结果,将被复制的交易确切地传遍网络中的所有进程。

    “安全”与“活跃性”

    安全意味着我们有且只有一条一致同意的链,而没有两条甚至更多都写了有效交易的竞争链。简单点来说,如果区块不会分叉,共识协议就可以说是“安全的”。

    同时,一个共识协议被认为是“活跃的”,当它会对新的交易广播作出反应,因此对新交易来说可用 的时候,有效的交易最终 会被写到区块链上。如果围绕着一系列观察到的违规行为出现了交易丢失、信息发不出去或是消息被重新排序的情况,活跃性问题就发生了。这些问题没法跟简单的网络延迟区别开来,因此难以探测出来。

    “异步”网络

    在异步网络中,不同节点见证的交易到达顺序的次数是不一样的。因此,为了保证安全,共识系统中的并发进程必须遵循一系列的协议规则,以使大家能够一致同意收到信息的顺序。做到这一点要求我们做出同步假设;我们建议为网络交易的延迟以及处理器时钟的速度设置一个最大值。

    这些假设让我们可以使用“连接超时(timeout)”来发现异步网络中的错误,也就是说,如果一个进程没有在给定时间内作出反应的话,可以假设它崩溃了。

    “加密经济”安全激励

    “密码学基本属性……在本质上与信任问题相关,它同样可能地被定义为可以使熵值大量减少的机制——成功地验证一个密码学方程会使可能结果的概率分布塌缩为一个单一的结果,或者有时候是少量结果……更有意思的是,经济机制同样有可能作为减少熵值的工具为我们服务,因为经济主体可以被激励引导——也就是说,被引导着更有可能做出特定的行为。实际上,比特币的深刻洞见就是密码学属性可以用来与经济激励相结合,从而显著地减少一个共有的共识网络的熵值,最后实现安全的状态复制”。

    ——Ethan Buchman,Tendermint:区块链时代的拜占庭容错

    权益

    假设大部分的经济主体并非拜占庭奸细(恶意的或是骗人的),而是理性的,我们就可以设计确定的协议内激励以确定地改变他们的选择。权益证明(Proof-of-Stake)共识中”权益“的杠杆作用可以提供比工作量证明共识更强大的安全性保证,因为它结合了抵押资本,或者说安全保证金。运用这一点对现代的容错型权益证明设计来说是非常关键的,因此主要的协议如 Tendermint 和 Casper 都是用了安全保证金作为它们的激励机制的核心。

    这是因为一个表现出违规行为的节点的权益会被协议罚没。协议因此可以定义强大的反向激励,或者说最大化错误行为的罚金,它可以远远超过正确行为所得的任何交易手续费或是挖矿奖励。

    作为安全保证的“验证者”

    在权益证明中,共识节点就是所谓的验证者;而在工作量证明中,他们是所谓的矿工。“抵押验证者”这一术语,或者简短一点来说,“验证者”,是由 Jae Kwon 在他一份关键的白皮书里首先提出的,这份白皮书就是 Tendermint:无需挖矿的共识系统。每一位验证者的投票权力,或者说权重,等同于他们自己投入或是分配给他们的权益的比重。上述三种共识协议都是用了动态的验证者集。

    在许多系统中,并非所有验证者都将拥有同样的“权重”。因此,我们对验证者的数量到底是 1/3 还是 2/3 并不感兴趣,更在意的是他们在全部投票力量中所占的比例,因为投票权力在各独立验证者之间也许并不是普遍分散的。所以当你听到“2/3 或更多”验证者时,实际意思应该被理解为一个验证者集合中验证者们投入的全部保证金的“2/3 乃至更多”(以保证金加权比重计)。

    希望对你们有帮助。


    原文链接: https://blog.cosmos.network/understanding-the-basics-of-a-proof-of-stake-security-model-de3b3e160710
    作者: Tendermint Team

  • 相关阅读:
    spring bean-- autowired的正确用法
    @Autowired的使用:推荐对构造函数进行注释
    spring中bean的构造函数,Autowired(Value)注入与@PostConstruct调用顺序
    IconVault – 创建自定义图标字体的神器推荐
    Pure – 赞!轻量的、响应式的 CSS 模块集
    HTML Inspector – 帮助你编写高质量的 HTML 代码
    Tourist.js – 简单灵活的操作指南和导航插件
    分享!20套惊艳的扁平化设计素材免费下载
    Web 开发人员必备的随机 JSON 数据生成工具
    Sylius – 100% 免费和开源的电子商务解决方案
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13313193.html
Copyright © 2011-2022 走看看