Author

Topic: 我也来奶一下柚子---EOS白皮书 (Read 118 times)

newbie
Activity: 135
Merit: 0
April 20, 2018, 10:01:54 AM
#1
 今天给大家看最基本的EOS白皮书

  EOS.IO 软件引入一种新的区块链架构设计,它使得去中心化的应用可以横向和纵向的扩展。 这通过构建一个仿操作系统的方式来实现,在它之上可以构建应用程序。 该软件提供帐户、身份验证、数据库、异步通信和跨越数百个 CPU 内核或集群的应用程序调度。

  由此产生的技术是一种区块链架构,它可以扩展至每秒处理百万级交易,消除用户的手续费,并且允许快速和轻松的部署去中心化的应用。

  背景

  区块链技术是通过 2008 年诞生的比特币货币得以被认知,自从那之后企业家和开发者就不断的尝试推广这一技术,以便在单一的区块链平台上支持更为广泛的应用程序。

  而一些区块链平台努力的支持可运作的去中心化应用,具体的应用比如 BitShares 去中心化交易所 (2014) 和 Steem 社交媒体平台 (2016) 已经成为每天被成千上万活跃用户重度使用的区块链。 他们能做到这些,是通过性能的提升达到每秒处理上千交易,消除手续费和提供堪比已经存在的中心化服务的用户体验。

  已存在的区块链平台承担着大量的交易费和有限的可计算能力,这都阻碍了区块链技术的大面积应用。

  区块链应用的要求

  为了赢得广泛的应用,构建在区块链之上的应用需要一个灵活性足以满足以下要求的平台:

  1、支持成百上千的用户
  像 Ebay、Uber、AirBnB 和 Facebook 这样企业,他们需要区块链技术能处理每日数以千万的活跃用户。 在某些情况下,除非用户群体达到一个极庞大的量级否则应用并无用武之地,因此一个可以处理极其庞大用户的平台是至关重要的。

  2、免费的使用
   一个可以免费供用户使用的区块链平台或许将赢得更为广泛的使用。 开发者和企业可以制订有效的货币化战略。

  3、简单升级和 bug 修复
  企业构建区块链基础的应用需要能够为应用增加新特性的灵活性。
  所有非同凡响的软件都会受到 bug 的影响,即便是经过了最严格意义上的验证。这个平台必须具有足够的鲁棒性以便应对不可避免出现的 bug。(简单来说计算机软件在输入错误、磁盘故障、网络过载或有意攻击情况下,能否不死机、不崩溃,就是该软件的鲁棒性。)

  4、低延时
  一个好的用户体验需要延时时间在数秒内就能收到可靠的反馈。 高延时会阻碍用户,并且会让构建在区块链上的应用比已有的非区块链应用缺乏竞争力。

  5、时序性能
  一些应用因为顺序依赖关系的执行步骤而不能使用并发算法实现。 比如交易所就需要足够的时序性能来处理很高的交易量,因此高时序性能处理的平台是必须的。

  6、并发性能大型可扩展应用需要将工作量分配到多 CPU 和计算机之上。

  共识算法 (DPOS)

  EOS.IO 软件使用唯一能满足区块链之上应用性能需求的去中心化共识算法,委托股权证明 (DPOS)。使得区块准确的每 3 秒生成一个并且在任何时间点都只有一个被授权的生产者来生成区块。 如果一个区块在规定时间之内未被生产出来则这一区块将被跳过。 当一个或多个区块被跳过发生时,在区块链中会有一个 6 秒及以上的间隔。

  在 EOS.IO 软件中,区块通过 21 名生产者轮流产生。 在每一轮的开始时,21 个唯一的区块生产者被选出。 获票最高的前 20 名自动在没轮被选中,剩余的一个生产者通过得票比例选出。 被选中的生产者通过从区块取到的时间作为伪随机数来打乱其顺序。 打乱顺序是为确保这些生产者与其他生产者保持均衡的连通性。

  如果一个生产者错过了一个区块并且在过去的 24 小时内没有生产任何的区块,那么它将被从候选中移除,直到它在区块链中通知它要开始再次生产区块的意图。 这样通过最小化区块丢失数量(因被证实不可靠的节点不作为导致)来确保网络操作的稳定性。

  在一般情况下,一个 DPOS 区块链不会经历任何的分叉,因为区块生产者是通过合作而非竞争的方式来生产区块。 即便真的出现了分叉,共识也将自动的切换到最长的链上。 之所以会这样运作,是因为区块添加到一个区块链分叉的速率与公用同一共识的区块生产者比例是相关的。 换句话说,具有更多生产者的区块链分叉会比拥有较少生产的那一个条增长的速度更快。 而且,没有一个生产者会同时在两个分叉上同时生产区块。 如果一个区块生产者被抓到做这样的事儿,那么这个生产者将很可能被投票投出。 这些双重生产行为对应密码学凭证可以用来自动的删除这些滥用者。

  1、交易确认
  通常 DPOS 区块链 100% 会有区块生产者参与。一个交易从广播开始后平均 1.5 秒就可以 99.9% 被认为是确认了。

  在一些特殊情况下例外,软件出现 bug,网络拥塞,或一个恶意的区块生产者制造了两个或更多的分叉。 为了确保一个交易绝对是不可逆的,一个节点可以选择等待 21 个区块生产者中的 15 个给出确认。 基于通常的 EOS.IO 软件配置,在一般情况下这需要平均 45 秒的时间。 默认情况下,所有的节点将认为当 21 个生产者中有 15 个给出确认后这一区块就是不可逆的了,并且不管长度如何都不会切换到没有这一区块的分叉。

  在分叉开始的 9 秒内,一个节点就可以警告用户他们极可能正处于分叉中。 在连续丢失 2 个区块后,有 95% 的概率可以确认一个节点处于分叉中。 在连续丢失 3 个区块后就有 99% 的概率确认。 可以通过节点丢失、近期参与比率和其他参数来构建鲁棒性预测模型,从而快速的警告操作者出现了问题。

  对于这种警告的反应完全取决于商业交易的性质,但最简单的做法就是等待 15/21 的确认直到警告消失。

  2、股权证明的交易 (TaPoS)
  EOS.IO 软件需要每一个交易包含最近一个区块头的哈希值。(哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。)这个哈希值有两个目的:

  防止不包含区块引用的交易在分叉时重放发生;和通知网络对应的用户和他们的股份当前在某个具体的分叉上。

  随着时间的推移,所有的用户直接确认区块链,在这一链条上难以伪造假的链条,因为假的链条根本无法从合法链条上迁移交易。

  帐户

  EOS.IO 软件允许所有的帐户使用一个唯一的人类可读的名称来索引,长度在 2 到 32 个字符之间。 这个名称由帐户创建者自己选择。 所有的帐户必须在创建时用极少的帐户余额来注资,从而覆盖存储帐户信息的成本。 帐户名称也支持命名空间,比如 @domain 这个帐户的拥有者是唯一可以创建 @user.domain 帐户的人。在一个去中心化的场景中,应用开发者将会为新用户注册成本买单。

  1、消息 & 处理
  每个帐户可以发送结构化的消息给其他的帐户,并且可以定义脚本来处理他们接收到的消息。 EOS.IO 软件给每个帐户提供了只有自己的消息处理脚本能访问的私有数据库。 消息处理脚本同样可以给其他帐户发送消息。 消息和自动化的消息处理的结合决定了 EOS.IO 如何定义智能合约的。

  2、基于角色的权限管理
  权限管理涉及判定一条消息是否被正确的授权。 权限管理最简单的形式就是检查一个交易包含必须的签名,但这意味着必须的签名是已知的。 一般情况下,权威必然是独立的个体或者个体组成的群体,并且是被划分开的。 EOS.IO 软件提供了声明式的权限管理系统,通过管理谁可以在什么时间做什么来给用户细力度和高维度的控制。

  授权和权限管理被标准化和脱离应用的商业逻辑是不可取的。 这使得管理权限的工具得以被开发,既满足常规的需求又为性能优化提供了重要的可能性。

  每一个帐户可以被任何权重组合的其他帐户和私钥管控。 这创建了分层级的权利结构,这反映了现实中的权限分配方式,并且让多用户共同管理资产变得从未如此简单。 多用户控制是安全最大的贡献者,并且,当用户使用得当,它可以极大的消除因被黑而导致被盗窃的风险。举个例子,可以指定一个密钥给一个用户的社交媒体账号,同时另一个密钥访问交易所。 甚至可以给其他帐户权限来代表自己而无需分配给他们密钥。

  1)命名的权限级别
  在 EOS.IO 软件中,帐户可以定义命名的权限级别,每一个是由更高级别的命名权限派生而来。 每一个命名的权限级别定义了一个权威;一个权威是多重签名阈值校验,它包含密钥和/或其他帐户的命名权限级别。 打个比方,一个帐户的“朋友”权限级别可以被设置为由该帐户的任何一个朋友无差别的控制。



  另一个例子在 Steem 区块链中,它包含三个硬编码的命名权限级别:拥有,活跃和发帖。 发帖权限就只能进行如投票和发帖的社交活动,而活跃权限可以做除了变更拥有之外的所有的事情。 拥有权限的意思是冷存储并且有能力做任何事。

  2)命名的消息处理群组
  EOS.IO 软件允许每个帐户将他们自己的消息组织到一个命名和嵌套的群组中。 这个命名的消息处理群组可以在其他帐户配置他们权限级别时被引用。

  最高级别的消息处理群组是帐户名称,最低级别的是一个帐户接收到的单独的消息类型。在这样的模型之下,交易所合约可以通过将挂单的创建和取消分组,从而与充值提现分离开。 交易所合约的这样分组对用户而言带来了方便。

  3)权限映射
  EOS.IO 软件允许每个帐户定义从任意帐户的一个命名的消息处理群组与自己的命名的权限级别之间建立映射。 举个例子,一个帐户所有者可以将自己社交媒体应用与自己的“朋友”权限群组建立映射。 有了这个映射,任何朋友可以以这一帐户的身份在这一帐户的社交媒体上发帖。 尽管他们将以帐户所有者的身份发帖,他们仍然使用自己的密钥来签名消息。 这意味着总是可以辨识出是哪一个朋友在以何种方式使用帐户。

  4)权限并行评估
  权限评估过程是“只读”的,并且通过交易对权限的变更在一个区块结束之前不会起作用。 这意味着对所有的交易对应的密钥和权限评估可以被并行执行。 此外,这意味着一个快速的权限验证是可行的,它无需启动会引起回滚需求的高成本的应用逻辑。 最后,这意味着交易权限可以被评估即便接收到等待的交易,并且之后无需再重新评估。

  从各方面考虑,权限验证占据了验证交易计算量的很大比例。 让其只读和普遍的并发处理将会使得性能有一个质的飞跃。

  当从消息日志中重新生成确定性状态时不再需要重复的权限验证。 事实是一个交易如果被包含近了一个被认为不存在问题的区块时它就有足够的理由跳过这 步这将极大减少因为区块链增长拉去过去记录时的计算量。

  3、带强制性延时的消息
  时间是安全中的一个关键组成部分。 在大多数情况下,一个私钥在没有被使用前都无从知晓它是否被偷窃。 当人们有需要密钥的应用在每天联网使用的电脑上运行时,基于时间的安全会更为重要。 EOS.IO 软件让应用开发者可以指明消息必须在被加到一个区块之前等待最小的时间间隙。

  用户可以在消息广播出去后通过邮件或者文字消息的形式收到通知。 如果他们没有授权,那么他们可以使用帐户恢复流程来恢复帐户,并收回消息。

  这个必须的延时由操作敏感性决定。 为一杯咖啡付款可以没有任何的延时,几秒之内就不可逆了,而购买一个房子也许需要 72 消失的结算期。 转移整个帐户到一个新的控制可能需要长达 30 天。 具体的延时选择由开发者和用户自己来做选择。

  4、被盗窃的密钥
  EOS.IO 软件提供给用户一种找回自己失窃密钥控制权的方式。 一个帐户的所有者可以使用过去 30 天任何活跃的拥有者密钥与事先指定的合作者帐户给出的批准来重置自己帐户的密钥。 帐户的恢复合作者在没有所有人帮助的情况下无法重置帐户的控制权。

  黑客尝试进行恢复流程是无意义的,因为他们已经“控制”了帐户。 此外,就算他们真的进行这一流程,恢复合作者也会询问身份证明和多因素认证 (手机和邮件)。 这会让黑客脱作出让步或者无功而返。

  这一流程与简单的多重签名有很大差异。 在多重签名中,另一个公司要参与所有转账的执行,但在恢复流程中,它却只在恢复时才起作用对每天的转账无从干预。 这大大的降低了参与者的成本和法律责任。
Jump to: