zoukankan      html  css  js  c++  java
  • 扩容解决方案:状态通道

    关于扩容解决方案的详细电子表格:

    Scaling Solution Summary Spreadsheet

    在本文中,我们会扼要重述活动第一天的发现。我们会简单说明此次会议的目标,什么叫做扩容,最近主流的扩容方案,以及对于这些解决方案目前状态的想法。

    目标

    -会议前的多个团队晚宴-

    我们坚信在现有的生态系统中,“扩容仍然是区块链的关键阻碍”。全世界的团队都在打造扩容方案,但是目前他们一直在封闭的环境下,并没有太多跨团队的合作。

    ScalingNOW! 活动为那些在为扩容奋斗的团队提供了会面的机会,同时也和很多被昂贵手续费困扰的 dApp 开发人员见面。如果想被邀请,团队需要正在研究某种即将或者几个月后实施的扩容方案。

    这个主题对于Web3基金来说非常重要,因为长期和短期的扩容方案对于该基金实现愿景都很必要。

    短期我们可以使用权威证明(POA)侧链解决一些扩容问题,这些侧链可以与以太坊进行桥接。Parity Technologies 发表了 Parity Bridge 技术,并且讨论如何使用低成本的 POA 网络来缓解高额手续费。虽然这可以短期起到作用,这个 Bridge 技术也是 Polkadot 的一个重要部分。(由 Web3 基金管理的一个更长期的扩容解决方案)

    什么是扩容?

    在以太坊中,我们定义扩容为随着用户(dApp)数量提高,提高主网性能(吞吐量,延迟)的能力,并且不会对用户体验(gas 价格,转账时间)造成什么影响。随着网络中增加的东西变多,网络架构一定要能够适应新的需求,而不是相反。

    在以太猫(CryptoKitties)游戏最火热的时候,我们就可以看出扩容问题。以太坊上快速转账变得非常昂贵,并且整个网络都很慢。

    CryptoKitties 的一个开发人员说道 Dieter Shirley :“70% 的 Gas 费用花费都在智能合约上,并且我们没有对其进行优化。而且,永久存储的模型也无法扩容。”

    主要解决方案 —— 状态通道和侧链

    现在即将可以使用的两个主要解决方案就是状态通道和侧链。这些技术将一些转账逻辑转移到链下,但是最终会依赖于主网来进行裁定。

    TrueBit 团队也提出了一个新的解决方案(更多细节,会在文章后面给出)。

    状态通道提供了在两个地址间直接一对一的转账。用户间交互包含的大量计算是通过链下加密安全的方式进行计算和沟通的。但是,最终余额的清算发生在以太坊主网络上。

    出席项目:µRaiden、Counterfactual、FunFair、SpankChain、Decentraland。

    侧链,也被成为桥链或者平行链,这种技术是指和以太坊主链平行的链。这些链可以有自己的共识机制,不需要和以太坊上的共识机制相同。例如,侧链的共识算法有可能是权威证明(PoA)或者权益证明(PoS)。这些侧链并不是完全独立的,它们最终还是要依赖主链做最终结算。但是,它们确实提供了多个用户能够在链下进行暂时地沟通。

    出席项目:Parity Technologies、POA Network、Cosmos、Plasma。

    时间线

    为了帮助 dApp 的研发人员,我们提供以下的时间线来展示哪些扩容方法已经准备好可以使用了,哪些扩容方案会在不久的将来可以使用。

    NOW!现在!

    • µRaiden —— ERC-20 & 223 状态通道。
    • Decentraland —— 定制 / 专门打造的状态通道。
    • Parity Tech —— 侧链技术。
    • POA Network —— 侧链解决方案。

    < 4 months 小于4个月

    • FunFair —— 通用状态通道。

    < 6 months 小于6个月

    • Cosmos ——  侧链解决方案(跨链交互)。

    ~ 6 months 大约6个月

    • Counterfactual ——  通用状态通道。

    • TrueBit —— 需要大量计算的 dApp 链下解决方案。

    < 9 months 小于9个月

    • Plasma —— 分层侧链解决方案

    项目汇总 —— 状态通道解决方案

    在这部分,我们会总结参会人员提出的关于状态通道扩容方案的重点。

    µRaiden

    • 解决方案:为 ERC20 和 ERC223 标准代币专门设置的状态通道。如果你想用自己的代币,则需要部署你自己的合约。
    • 何时可以使用:已经可以使用!
    • 安全性:依赖于主链,可以保证安全,活跃以及可用。不可以开放超过主链可以维持的链。现在 µRaiden 还不能识别和适用白名单与黑名单:当通道需要关闭时,是一个问题。
    • 并且,用户必须要保证私钥安全。
    • 可用性:收款者必须要运行轻客户端或者全节点,因为他们需要检查转账信息。交易发起者不需要这样做,因为他们是开启通道的人,并且知道通道的状态。需要花费 100k 的 gas 费用来开启通道,不过关闭通道的费用较少。

    Counterfactual

    • 解决方案:除支付以外打造一个通用的状态通道:团队说他们的通道可以用于玩国际象棋(通过智能合约来作裁判)或者更加宽泛地,用作信息交换的媒介。
    • 何时可以使用:6个月之内
    • 安全性:状态通道的角度来看的即时确定性(Instant Finality):也就是说,仅当转账另一方在线时,支付的结算是即时的。这就要假设底层链也活跃并且安全。对于状态通道,目前已知的唯一攻击方式是有人报告了一个过时的(旧的)状态,那么解决方案是拒绝响应。如果交易对手要最小化成本,他们可以拖慢交易速度(也就是 DoS(拒绝服务)攻击),会造成一定影响,但是无法盗走资金。
    • 可用性:提供API,因此开发人员不需要完全理解项目的所有代码,就可以使用。使用状态通道可以看到网站应用的响应时间;但是,该团队特别提出:不是所有的问题都可以通过一个通道来解决(也就是“不可通道化”)。

    FunFair

    • 解决方案:建立一个博彩 app,并且是通过一对一状态通道的P2P网络:也就是说,一个赌徒对应一个庄家。FunFair 在打造这个 app,但自己不会当庄家。他们的状态通道按照以下方式运行:
    1. 打开通道
    2. 锁定资金
    3. 参与游戏
    4. 关闭通道并且释放资金(结算余额)。
    • FunFair 说道,他们的状态通道是通用的,不仅是转账支付,还有链下状态机。他们同时也说,会围绕状态通道开发一个共享随机数方案:这是为了产生可证明的公平性。
    • 何时可以使用:最小可行产品已经开始使用,但是还需要 4 个月。最终代码会公开。
    • 安全性:很多不同的地方都可能出问题。这个游戏是网页应用,对于常见的网页安全问题会很敏感(这是链下解决方案);好在所有的转账都要经过通常的以太坊转账签名,但也因此,用户必须要管理他们各自的私钥。
    • 可用性:开启通道需要15-20秒。转账数量不会被 FunFair 的状态机所限制,而取决于以太坊可以维持多少个开放连接。

    SpankChain

    • 解决方案是什么:还处于思考和规划他们的状态通道解决方案的早期阶段。想要开发一个通用状态通道,功能不仅限于支付。
    • 何时可以使用:还没有公布。大约 1 个月前才刚刚发起了这个想法。
    • 安全性:还未公布。
    • 可用性:还未公布。

    Decentraland

    • 解决方案是什么:这个项目是一个虚拟世界,其中土地可以售卖。拍卖已经开始(2017年12月),并且都在链下进行。
    • 何时可以使用:已经开始(2017 年 12 月,自定义解决方案)。可能会有新的案例和解决方案,但是还没有公布何时可以完成。
    • 安全性:拍卖有可信的设置,而且是完全可验证。一些用户运行脚本(链下进行)来验证状态转变是完全有效的。
    • 可用性:这个解决方案是专门为 Decentraland 拍卖设计的,这意味着需要大量工作来修改,才能适应其他项目。值得注意地是,状态转变必须要完全序列化,这会限制吞吐量:每秒只能处理几十到数百个请求,如果失败提交的数量得到限制,理论上最多可以处理数千个请求。

    状态通道的主要问题

    • 容易受到 DoS 攻击
    • 在状态通道使用的时候,以太坊上需要锁定保证金。
    • 对于应用开发者,改变他们设计 app 的方式是一个挑战:他们需要有意识把开发工作与状态通道联系起来。
    • 依赖多重签名合约。在过去几年,我们已经看到了针对多签合约的很多攻击,所以如果过度依赖,也提升了潜在的风险。
    • 现有的工具需要开始和状态通道的特性整合。目前,这方面的进展有很有限。
    • 缺乏一个统一的时间戳服务。
    • 并非所有应用都“可通道化”。
    • 状态通道的应用场景是你提前知道其他各方,虽然这不是严格必须的,但是在创造通道之前,确实需要一定的信任。

     


    链接: https://medium.com/web3foundation/scalingnow-scaling-solution-summit-summary-be30047047bf

  • 相关阅读:
    JS立即执行函数: (function ( ){...})( ) 与 (function ( ){...}( )) 有区别?
    JS闭包和引用
    数据驱动测试二:使用TestNG和CSV文件进行数据驱动
    在SpringTest中将Mockito的mock对象通过spring注入使用
    Mockito各场景使用介绍
    mockito中两种部分mock的实现,spy、callRealMethod
    Docker学习笔记
    Docker实践(二):容器的管理(创建、查看、启动、终止、删除)
    mac 安装 RabbitMQ
    Mac 隐私与安全没有允许任何来源选项
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13312904.html
Copyright © 2011-2022 走看看