现在位置:首页 > 以太坊2.0
  • 以太坊教程:Rollup Bridge 介绍(三):Celer cBridge

    本文受众:对汇总了解的区块链爱好者 Celer cBridge 是一个跨链资产转移方案,cBridge 同时支持了 L1 和 L2、以及 L1 与 L1 之间的桥接。我们可以从 cBridge 的 Web App 上看到他们已经支持了许多知名的 L1 和 L2 项目。 cBridge 支持的链种 本篇文章会时间在cBridge背后的技术实现,包含原理、契约实践以及运维的介绍。 道原则 cBridge 主要使用了 HTLCs 技术来实现跨链的资产转移,对于 HTLCs 不熟悉的读者,可以先参考这篇文章了解其原理以及应用场景:https://bcoin.io/guides/swaps.html 流程 cBridge 在其契约中 GitHub 的文件里描述了 cBridge 的道流程,以下为节选部分: 发送方在源链上发起转移交易 cBridge节点通过使用发送方的hashlock,在岸设置链上发起转账交易 发送方在源链上确认交易 cBridge 节点在目的地链上确认交易 为了帮助理解,我将一步步画成的如下图: cBridge 澜 下面会就四个关键步骤依序进行细节说明: 首发发送方发起转移交易 整个cBridge跨链的资产转移流程地址会由源链的发送方(即使用cBridge进行转帐的用户)发起帐单。发送方会负责产生哈希锁,设置转帐的时限,并与转的信息(令牌、 token 数量、目的地链代号、授权人地址)一起向部署在源链的 cBridge 合约发起转出请求。接收合约到请求后会的token数量,从发送方有将转移合约,导致转帐时限先要后转,才能将token取出。 第二步: cBridge 节点发起转账交易 在链下的cBridge节点会持续监控各链上cBridge合约的动作,当它发现源链上有突发的新转出请求,它会在链上获得转出的细节,主动对目的地进行部署链上的 cBridge 契约在请求中发起转移。 以协议方为指定的人地址,并使用与转让相同的哈希锁,限时转让以及取款时(约源链上设定限时2/3),准予转让的令牌 数量扣掉 cBridge 节点转发的成本和交通后,从 cBridge 节点转移到目的地链上的 cBridge 合约。 此时cBridge节点不知道,要外送方在第三步完成源链上转出散列锁,并揭散散列锁的答案后,cBridge本身有能力执行旅游链上转入的偏。 第三步:发送方确认交易 发送方确认 cBridge 节点有在目的地链上提交相应的转移后,就可以在请求链源上转移出请求的外部阶段。发送方首先要对源链的 cBridge 合约提交转移出哈希锁的答案,合约无误后,转出指定的令牌数量转移到cBridge节点,完成源链上转出的验证节点。 第四步:cBridge 节点确认交易 在链下的cBridge节点节点发送到监控方已经在源链上完成转出源后,准备好发送方节点时传播的哈希锁,到目的地链上的cBridge合约提交哈希锁,完成转入链上的链,此时的链上的人会收到来自源头的发送方,完成跨链的资产转移。 细节步骤看起来很繁琐,但对于cBridge App的用户来说,只要进行表演签名操作(第一步先转出,第三步对转出交易),并等待一些时间(3~5分钟) ,过程中完全不需要切换下载的网络,使用起来是非常简单流畅的。 退款 不小心是转出 自己转出在一个有效时间里转出,当有任何约定没有履行义务时,在设定的时限,自己有能力可以直接要求cB 合约免除任何人去处理转帐后的令牌,不需要提供哈希锁的答案。因为信用卡能够保护双方的资产,不会导致资产被永久锁在 cBridge 合约上。 因为是临时,目的地链的转出会比源链的转出更早,有可能cBridge节点对转出进行退款,用户才对转出进行确认,此时才会对用户造成损失。 当前cBridge Web App设置的转出时间截止时间为12,对应的转出时间约为12 * 2/3 = 8小时,时间相对充足,一般正常的转帐只需要几分钟,如果过程中出现非预期的状况,还可以有东南亚的反应时间处理。 简单的操作体验背后的代价 眼尖的读者可能已经发现,cBridge 道踏板中的第三与第四步,与典型的 HTLC 不同。 ,cBridge 节点可以到链源链取回它在链源公园付给每个人的链上。Celer官方说明这是为了提升用户体验,如果走典型的HTLC流程,用户在确认转出要外的步骤中,切换钱包的网络至目的地链,还需要专门在目的地链上的钱包里准备的gas token来支付自由的交易,对用户来说非常不方便。 因此cBridge调整了最后两个步骤的顺序,让用户只需要源源链进行操作,来致命的提升用户的体验。但这样的调整并不是没有成本,它会为用户带来额外的风险。 一个想链上:当用户在尝试源头,c桥节点收到用户的成功后,却没有在目的地链上将转移到海外给人(可能是、gas token或不足)是当机),节点节点链上的转账在生日当天,cBridge节点有能力对转账进行实时的操作,cBridge节点有可以无偿转帐用户获得的令牌。这部分必须仰赖用户自己的行动去降低风险,当你发现在有效区间内等了社交久的时间,国内人还没有得到目标,用户必须要自己主动去寻找链提供散列锁的答案,完成转移到特定的动作,以防止资产被恶意取走。 安全分析 综上所述,我们针对发送方和 cBridge 节点在 cBridge 四个操作步骤中可能产生的安全问题,进行分析与整理: 如果发送方执行了初步但是cBridge节点没有往下执行,此时发送方的资产会单方面被扣押在源链的cBridge合约中,必须要等待12小时,才能进行退款。 如果 cBridge 节点执行了第二步但发送方没有下执行,此时发送和 cBridge 节点资产的两个会被扣押押在源链和目的地链的 cBridge 合约中,必须更新帐单到期后,才能进行相关方需要的是,cBridge 能够在目的地链上的转移有更短的到期时间(8 小时比发送方更早完成)。 如果发送方执行了第三步但 cBridge 节点没有往下执行,此时发送已将资产转给 cBridge 节点,但目的地链上的新西兰人还没有收到相应的消息。到目的地链上的转移在到期后,cBridge 节点甚至有能力进行回转移,而导致发送方单方面的损失。 这个情况取方发送方带来安全疑虑,发送方需要在转入日期前(8 内),自己(或委托人)到目的地链上完成转入。人却迟迟没有收到任何收获,这时候就需要提高警觉了。 cBridge节点执行完第四步但交易没有成功(例如天然气),这时候发送方仍有损失的风险。以保护自己的资金安全。 契约实践 cBridge契约实践很简单,提供了转出、转入、确认以及退款的功能,人数众多,都是cBridge流中的核心动作,而且这些方法都可以让任何人去使用的。因此当节点在转帐过程中出现问题时,用户能够直接对资产进行操作,保护自己的。 cBridge 约定方法界面 特别要注意合约方法转出的第一个参数地址_bridge。这个参数链要填入才能为服务这些跨转帐需求(例如支持1,000 USDT从以太坊交易到Polygon)的cBridge地址,位置,用户在进行跨链转帐之前,必须先确定好要找哪个cBridge节点来服务。 Celer 官方提供了一个网关服务,负责 cBridge 节点的信息,用户将转帐的信息该给服务,它会尽快转用户转帐需求,且济州状态最好的岭节点(例如成功率高、低低等),用户在进行转接时填入塞勒推荐的cBridge节点。 由于 Celer 官方实际提供网关的相关信息,有技术背景的用户可以开始去操作 cBridge Web App,了解其背后的实践细节。 此外,契约里也有一些人可以去关注的重要事件: LogNewTransferOut事件:transferOut完成时会发出的事件,会记录转出的transferId。 LogNewTransferIn事件:transferIn完成时会发出的事件,会记录转入的transferId及其对应的转出的transferId(srcTransferId)。 在 cBridge 合约上不管是要确认呼叫请求,都需要提供 transferId,因此 transferId 在 cBridge 的应用中是控件的信息。除此之外,通过这两个事件的观察,帮助我们将跨链的转出和转入关联起来,有监控追踪转帐的状态,并在接下来发生的时候有什么能力。 cBridge 合约事件界面 节点运维 Celer官方自己开源了cBridge节点的实践,任何人都可以跑起的节点,但cBridge现阶段有白名单机制,想服务cBridge节点来服务用户一定要先跟官方接洽。 养节点的好处是可以从各个笔跨链转帐单中带一些带的链转帐,但还要考量到运维节点的,Celer 官方很贴心地在 cBridge 节点 GitHub 文件里详细了运维节点需要注意的事项,包括机器建议配备,支持的还有货币种类和需要提供的流动性,各条的建议链配置,运维节点数据的最佳操作等等,节点甚至建统计的API ,让运维者能够随时监控节点的交易状况。 从 GitHub 文件的程度以及量了运维节点的官方资料,可以找到 Celer 对社区的用心。 结语 以上是对于cBridge背后技术实现的介绍,如果有任何想要分享,想要了解更多,都可以一起讨论😃
  • 以太坊教程:Rollup Bridge 介绍(二):Hop Protocol

    本篇是 Rollup Bridge 介绍的第二篇,建议先从第一篇 Maker Bridge 看起: 以下所称 L2 皆指 Rollup 而非 Plasma 或侧链 以下所称「资产」和「代币」两个词指的是一样的东西 以下所称「七天」和「Rollup 挑战期」两个词指的是一样的东西 快速跨 Rollup 资产转移 如果你现在要从 Rollup A 把资产搬到 Rollup B,要怎么搬?答案是从 Rollup A 提款至 L1,再从 L1 存款到 Rollup B。所以你要等 Rollup A 的挑战期,然后再等 Rollup B 的存款到账(通常不会很久)才能成功完成跨 Rollup 的资产转移。 图片来源:Steven Wu from imToken Labs 而 Hop protocol 就像是前篇介绍里 fast withdrawl 的例子一样,只是现在流动性提供者是在 Rollup B 上去垫付而不是在 L1。以下会以 fast transfer 来指跨 Rollup 资产转移,以便和 fast withdrawl 做出区分。 从高维来看 Hop protocol 就跟 fast withdrawl 一样简单,流动性提供者承担资产锁住七天的风险及机会成本,收取手续费;使用者支付手续费,换取能快速把资产转移到另一个 Rollup 的服务。 注:Hop protocol 里把流动性提供者称作 Bonder。 而如同 fast withdrawl 的例子,如果没有人来垫付你的 fast transfer,你就必须自己走完正常的路线:回到 L1 再进到 Rollup B。 注:Rollup A 和 Rollup B 都支援 Rollup Bridge 的功能也是必要条件,否则无法安全可信地把转账讯息从 A relay 到 B 上。 不过实现 Hop protocol 其实没有这么简单。首先,每一个 Rollup 的提款方式、挑战期以及存款时间都不一样。每一个 Rollup 都需要 Hop protocol 团队去对接。 注:Hop protocol 也可以接上 ZK Rollup,ZK Rollup 因为没有挑战期所以设计会比较不一样,但一样需要团队去对接。 而整个 Hop protocol 的安全性会取决于其所接入的 Rollup 中安全性最低的那个。如果某一个 Rollup (或甚至 Rollup 上面的某一个代币合约)出现漏洞,导致攻击者可以任意凭空印钞,那攻击者就可以马上通过 Hop protocol 来换成其他 Rollup 上的资产。 其实就和跨链桥一样,你的防守范围从一条链变成了多条链上的无数个资产,其安全性不容轻忽。 接下来会介绍一些 Hop protocol 的设计细节 批量处理 如果每一笔 transfer 背后对应的 Rollup A -> L1 -> Rollup B 步骤,流动性提供者都要一笔一笔跑过一次,那会耗费很多 gas。所以 Hop protocol 提供批量处理的功能,流动性提供者可以等待一段时间,收集垫付完的 transfer,再把它们一并处理。 hToken hToken 是 Hop protocol 的代币,但这个不是治理代币,而且每个代币在 Hop protocol 里都有相对应的 hToken,例如 ETH 有 hETH,DAI 有 hDAI。 为什么需要 hToken? 首先,它能统一代表同一种代币,简化使用介面的复杂度:使用者不需要选择他要换的是 Optimism ETH 还是 Arbitrum ETH,使用者操作的都是 hETH。 其次,Hop protocol 不需要负责维护一个正统代币的清单。任何人都可以在 Rollup 上发行一个 Dai 合约,那 Hop protocol 要怎么知道哪一个才是 Maker 团队部署在 Rollup 上的 Dai 合约?答案是:Hop protocol 不需要知道,它只需要知道 hDAI。(你可能会想:拿到 hDAI 可以干嘛?hDAI 等于 Dai 吗?我们马上就会讲到) 最后,延续上一点。假设今天没有 hDAI,而我要从 Rollup A transfer Dai 到其他 Rollup。Hop protocol 就必须在 Rollup A 上记载 Rollup B C D E … 上的 Dai 合约地址,而且其他 Rollup 也都要依照办理。所以这样全部 Rollup 上总共记载的数目会是 NNM(N 是 Rollup 数量,M 是代币数量)。另外,谁有权力决定哪一个 Dai 合约才是正统? 好,那我今天拿到 hDAI 后可以干嘛?答案是拿去 AMM 换成 Dai。我们先不讨论 AMM 从哪里来,因为只要有诱因就会有人建出 hDAI/Dai 的 AMM 交易对并提供流动性。 注:这里的 AMM 指的 L2 上的 AMM。 先介绍 hToken 哪里来:任何人都可以到 L1 的 Hop protocol 合约抵押代币获得 hToken,例如抵押 Dai 获得 hDAI。流动性提供者一定会需要抵押来获得 hToken,因为他们垫付的代币会是 hToken。 接下来,假设使用者要从 Rollup A 把 Dai transfer 到 Rollup B,这过程会包含 (1) 把 Dai 换成 hDAI、 (2) transfer hDAI 到 Rollup B、 (3) 在 Rollup B 上把 hDAI 换成 Dai 其中 (1) 和 (3) 都会有 Dai/hDAI 互换的需求,有需求自然就会有人愿意提供 Dai/hDAI 流动性来赚取手续费。 图片来源:Steven Wu from imToken Labs 当然,如果你没有被说服为什么需要 hToken,那 hToken 和 AMM 看起来就会像是故意挤出来扒使用者皮的玩法。你可以想想看假设没有 hToken 的话,这个 protocol 的哪些运作流程、使用者介面会长得不一样,会是更好、还是更坏。(或许真的会变得更好?) 最后是一些我想到的可能的问题。 手续费怎么估?如果没有人垫付? 你可能有注意到,这个垫付的模式是你直接申请 transfer 然后等人来垫付,所以你在申请 transfer 时就要写好你愿意支付的手续费是多少,如果你的手续费太低,那下场就会是你要自己跑完 transfer 过程 — 等待七天。 另外一个模式是你和流动性提供者先在链下协议好手续费,然后再送 transfer 申请到 Rollup。但是因为现在是在两条不同 Rollup 上,表示交易不会是原子的:如果你在 Rollup A 上送出了你和流动性提供者协议好的 transfer,结果流动性提供者没有在 Rollup B 上依约垫付给你,你必须要有管道能够在 Rollup B 上证明你在 Rollup A 上和该流动性提供者的 transfer 协议。而这个管道会需要 Rollup B 能够读取到 Rollup A 的交易(因为这样才能以去中心化的方式来证明),这并非做不到,但是考量到其复杂度和带来的效益,可能不太值得。 所以目前这个模式会是比较可行的,但也表示计算手续费这边要小心,避免没有人来垫付,导致使用者要等七天。 另外不同 Rollup 上收取 gas 费用的方式不一样,也是 Hop protocol 团队在设计估算手续费功能需要注意的地方。 Happy case 以外情况的 demo? 目前 Hop protocol 团队提供的 demo 只有 happy case 的 demo,没有 demo 发生没人垫付的情况或是流动性提供者平常在不同 Rollup 间搬运、平衡资产的过程。
  • 以太坊教程:Rollup 不完全指南(精选)

    Rollup 最近在 Ethereum 社区风靡一时,有望在未来成为 Ethereum 的主要扩容解决方案。但这项技术到底是什么样的呢?它可以给我们带来什么变化?我们如何使用这项技术?这篇文章将试图回答其中的一些关键问题。 背景:什么是 Layer 1 和 Layer 2 扩容? 目前主要有两种区块链扩容方式。 首先,你可以直接提高区块链交易吞吐量,但这类技术主要挑战为「当区块容量越大时,区块链将更难以验证,而且很可能逐渐变得更中心化」。为了避免这样的风险,开发者可以提高客户端软件的效率(译者注:比如 Turbo Geth),或者使用 Sharding 技术让构建和验证工作分散到许多节点上,目前 Ethereum 准备借助 Eth2 升级引入 Sharding 技术。 其次,你也可以改变使用区块链的方式。用户不必将所有交易放在区块链上,而是可以通过 Layer2 协议在链下执行大部分交易。即链上的智能合约只需执行两个任务:处理存取款和验证链下交易的有效性。由此减轻链上负担,提高交易处理效率。 State channels vs plasma vs rollups 目前主要有三种 Layer 2 扩容方案:State channels、Plasma 和 Rollups,这三种各有优劣。 译者注:译文中省略 State channels 和 Plasma 科普内容,主要讲述 Rollups 部分。 术语说明 Batch:批处理交易,指将 Layer2 交易批量打包并提交到 Layer1 的 Rollup 合约。 Sequencer:排序者,指在 Layer2 上打包排序交易的角色,类似 Layer1 的矿工。 State root:状态根,指 Layer2 上所有状态(账户余额、合约代码等)通过 Merkle Tree 生成的哈希值。 Rollups 参考:Optimistic rollups: https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/optimistic_rollups/ 和 ZK rollups。:https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/zk-rollups Plasma 和 State Channels 是「完全」的 Layer2 方案,因为它们试图将数据和计算都转移至链下。然而,由于存在「数据可用性的博弈问题」,意味着这两种方案不可能安全地满足所有应用场景。Plasma 和 State Channels 通过依赖所属权的 owner(译者注:因为提交欺诈性证明需要证明资产所属权,这也是为什么 Plasma 采用 UTXO 方案,所以无法解决像 Uniswap 资产所属权场景的问题。感谢 Chih Cheng Liang 指点)来解决该问题,但这使它们无法完全通用化。 另一方面,Rollups 是一种「混合」的 Layer2 方案。Rollups 将计算(以及状态存储)转移至链下,但同时将每笔交易的部分数据保留在链上。 为了提高效率,他们使用了不少 fancy 的压缩技巧,尽可能地使用「计算」代替「数据」。其结果是系统的扩容仍然受限于底层区块链的数据带宽,但效率是可观的:Ethereum ERC20 代币转账成本约为 45,000 gas,而 Rollup 中的 ERC20 代币转账仅使用 16 字节的链上空间,成本低于 300 gas。 事实上,数据上链是关键(注意:将数据放在 IPFS 上是行不通的,因为 IPFS 不提供任何给定数据是否可用的共识,所以数据必须放到区块链上)。将数据放在链上并获得共识,如果任何人愿意,他们可以在本地处理 rollup 中的所有操作,从而允许他们监测欺诈交易,请求提款,或亲自生成 transaction batches。因为没有数据可用性问题,所以恶意或离线运营者所造成的损失会更少(比如他们不能造成 1 周的延迟),从而为谁有权发布 batches 打开了更大的设计空间,并简化 rollups 系统。最重要的是,没有数据可用性问题也意味着不再需要将资产映射到 owners。 这是 Ethereum 社区对 rollups 比以往的 Layer2 扩容方案更兴奋的关键原因:Rollups 是完全通用的,我们甚至可以在 rollup 内运行一个 EVM,使得现有的 Ethereum 应用不必编写过多新的代码就可以迁移到 rollups 上。 那么 Rollup 到底是如何工作的呢? 链上会有一个智能合约维护着 state root:rollup 状态的 Merkle root(即 rollup 内部的账户余额、合约代码等信息的 Merkle 化)。 任何人都可以发布一笔 batch 交易,这是一个高度压缩的交易集合,包含旧的 state root 和新的 state root。合约会检查 batch 中的旧 state root 是否匹配当前的 state root,如果匹配,则将 state root 更新到新的 state root。 为了支持存款和提款,我们增加了交易的能力,其输入或输出是「外部」的 rollup 状态。如果一个 batch 来自外部的输入,那么提交该 batch 的交易也需要将这些资产转移到 rollup 合约中。如果一个 batch 有对外的输出,那么在处理该 batch 时,智能合约将会执行「提现」操作。 这一切就这么简单! 除了一个主要的细节:如何知道 batch 中的 post-state roots 是正确的呢? 如果有人可以用任意 post-state root 提交一个 batch 而没有任何惩罚,他们就可以直接将 rollup 内的全部资产转给自己。这个问题有两种截然不同的解决思路,从而衍生出两种「口味」的 rollup 方案。 Optimistic rollups VS ZK rollups 以下是这两种「口味」的 rollups 方案描述: Optimistic rollups,采用欺诈性证明:rollup 合约会跟踪历史的 state roots 和每一个 batch 的哈希值。如果有人发现某个 batch 的 post-state root 不正确,那么他们可以向合约提交证明,证明该 batch 计算错误。合约验证该证明有效后,会对该 batch 和之后的所有 batch 进行回滚。 ZK rollups,采用有效性证明:每一个 batch 都包含一个称为 ZK-SNARK 的密码学证明(例如采用 PLONK 协议),它可以证明 post-state root 是执行该 batch 的正确结果。无论计算量有多大,合约都可以迅速地在链上验证证明。 但两种「口味」的 rollup 之间有着复杂的权衡: 方案权衡:https://www.notion.so/50a740eec456419089d93f3ec3008ad0 总的来说,我的观点是: 短期内,Optimistic rollups 很可能在通用的 EVM 计算中胜出,而 ZK rollups 则可能在简单的支付、交易和其他特定应用场景中胜出,但最终从中长期来看,随着 ZK-SNARK 技术的改进,ZK rollups 将在所有场景中胜出。 欺诈性证明剖析 Optimistic rollup 的安全性主要取决于:如果有人将一个无效 batch 发布到 rollup 合约中,那么保持跟踪链上信息并发现欺诈的任何人都可以发布欺诈性证明,向合约证明该 batch 无效并回滚。 如图所示,声称某 batch 无效的欺诈性证明将会包含这些绿色数据:该 batch 本身(对照存储在链上的哈希值核对)和 Merkle tree 的部分内容,从而证明该 batch 读取或修改特定账户。 而该树中的黄色节点可以从绿色的节点重建,所以不必提供。这些数据足以执行该 batch 并计算 post-state root(注:类似 stateless clients 验证单个区块的方式)。如果计算出的 post-state root 和该 batch 中提供的 post-state root 不一样,那么说明该 batch 具有欺诈性。 如果一个 batch 存在错误,但之前所有的 batches 都是正确的,那么就可以创建一个欺诈性证明以表示该 batch 是错误的。 请注意对旧的 batches 声称无效的处理:如果存在多笔无效 batches 提交到 rollup 中,那么最好尽量证明最早无效的 batch。当然,如果一个 batch 是正确的,那么永远不可能创建一个欺诈性证明以表示其无效。 Rollups 是如何压缩数据的? 一笔简单的 Ethereum 交易(比如发送 ETH)通常消耗约 110 字节。然而,在 Rollup 上发送 ETH 仅仅消耗约 12 字节。 字节消耗对比 为了达到这样的压缩效果,一方面是采用了更简单高级编码,而目前 Ethereum 的 RLP 在每个值的长度上都浪费了 1 字节。另一方面,还有一些巧妙的压缩技巧: Nonce:该参数的目的是为了防止「重放」。如果账户的当前 nonce 是 5,那么该账户的下一笔交易必须使用 nonce 5,但一旦交易被处理,那么该账户中的 nonce 就会被递增到 6,这样采用 nonce 5 的交易就不会被执行。在 rollup 中,我们可以完全省略 nonce,因为我们只是从 pre-state 中恢复 nonce。同时由于签名会采用最新的 nonce 进行检查,如果有人试图使用旧的 nonce 重放交易,那么签名将无法通过验证。 Gasprice:我们可以允许用户使用固定范围的 gasprices 进行支付,例如 2 的 16 次幂(译者注:主要为了节省字节)。或者,我们也可以在每笔 batch 中收取固定费用,甚至可以将 gas 支付完全移到 rollup 协议之外,让交易者通过特定渠道向 batch 创建者支付费用。 Gas:我们同样也可以将 gas 设置为 2 的多次幂。另外,我们也可以在 batch 层面设置 gas 限制。 To:我们可以使用「索引」来代替 20 字节的地址(例如:一个地址是「树」中的第 4,527 个地址,我们就可以用索引 4,527 来表示它,同时我们也会在状态中添加一个子树来存储索引到地址的映射)。 Value:我们可以用科学计数法存储 value。在大多数情况下,转账仅需 1~3 有效位。 Signature:我们可以使用 BLS 聚合签名,它允许许多签名聚合成一个约 32-96 字节的签名(取决于协议)。然后,这个签名可以一次性对整个消息集和发送者进行 batch 检查。表中的 ~0.5 表示一个区块中可验证的聚合签名的数量是有限制的,因为它需要在一次欺诈证明中验证签名。 ZK rollups 特有的一个重要压缩技巧:如果交易的一部分仅用于验证,并与计算状态更新无关,那么这部分可以省略。这在 Optimistic rollup 中是做不到的,因为该数据仍然需要包含在链上,以防将来欺诈性证明检查所需,而在 ZK rollup 中,证明数据正确性的 SNARK 已经提供了任何验证所需的数据。 一个重要的例子是隐私保护 rollups:在 Optimistic rollup 中,每笔交易中 ~500 字节用于隐私的 ZK-SNARK 需要上链,而在 ZK rollup 中,覆盖整个 batch 的 ZK-SNARK 已经足以表明「内部」的所有 ZK-SNARKs 是有效的。 这些压缩技巧是 rollup 扩容的关键,如果没有这些技巧,rollup 或许只能在基础链的扩容上有大约 10 倍的提升(在一些特定的计算量大的应用中,简单的 rollup 也已经很强大),但有了这些压缩技巧,几乎所有应用的扩容系数都可以超过 100 倍。 谁可以提交 batch? 关于哪些人可以在 Optimistic rollup 或 ZK rollup 中提交 batch 的问题存在许多流派。一般来说,大家都认为提交 batch 的用户必须先交纳一大笔押金,如果该用户提交欺诈性的 batch(例如采用一个无效的 state root),那么这笔押金的一部分将被烧掉,另一部分作为奖励给到提交欺诈性证明的用户。但除此之外,还存在许多可能性: Total anarchy:任何人都可以在任何时候提交 batch。这是最简单的方法,但它有一些严重的缺点,比如存在这样的问题:多个参与者同时生成并试图提交 batch,而其中仅有一个 batch 可以成功被收录。这将导致大量的浪费,比如没有意义的生成 batch 证明或者提交 batch 到链上。 中心化的 Sequencer:通过 Sequencer 这样的角色提交 batch(除了提现操作:首先由用户自己提交提现请求,如果 Sequencer 在下一个 batch 中没有处理该提现交易,那么用户可以亲自提交一个 batch 处理提现)。这是最「高效」的,但它依赖于一个中心化的角色。 Sequencer 拍卖:通过拍卖(比如每天)来决定谁有权利成为第二天的 Sequencer。这种方案的优点是可以筹集资金,而这些资金可以通过 rollup 的 DAO 来分配(参考:MEV 拍卖)。 从 PoS 集合中随机选择:任何人都可以将 ETH(或者 rollup 协议的代币)存入 rollup 合约中,每一个 batch 的 sequencer 都会从其中一个存款人中随机选择,被选中的概率与存款金额成正比。这种方案的主要缺点是大量资产被锁定,导致资金效率低。 DPoS 投票:Sequencer 通过拍卖选中,但如果他们表现不佳,那么代币持有者可以投票将其踢出,并举行新的拍卖来替代他们。 改进提交 batch 和 state root 的方式 目前一些正在开发的 rollup 方案采用的是 “split batch” 模式,即提交 Layer2 batch 的动作和提交一个 state root 的动作分开执行,这会有一些关键优势: 你可以允许许多 sequencers 并行发布 batch,以提高抗审查能力,而不用担心一些 batch 会因为其他 batch 已经被打包而无效。 如果一个 state root 存在欺诈,你不需要回滚所有 batch,仅恢复该 state root 即可,并等待有人为该 batch 提供新的 state root。这样可以更好地保障交易发送者的交易不会被回滚。 总的来说,这是一个相当复杂的技术组合,它们试图在涉及效率、简单性、抗审查和其他目标的复杂权衡中获得平衡。但现在谈哪种组合最有效还为时过早,而时间会证明一切。 Rollups 将会带来多大的扩容? 目前 Ethereum 的 gas limit 是 1,250 万,交易中每个字节的数据需要消耗 16 gas。那么如果一个区块仅包含一个 batch(我们假设使用 ZK rollup,将会消耗 50 万 gas 用于验证证明),那么该 batch 会有(1,200 万 / 16)= 75 万字节。如上图所示,每一位用户转账 ETH 仅消耗 12 字节,那么也就是说,该 batch 最多可以包含 62,500 笔交易。 在平均区块时间为 13 秒的情况下,这相当于达到约 4,807 TPS(对比 Ethereum 目前 ETH 转账的 1,250万 / 21,000 / 13 约为 45 TPS)。 部分用例扩容提升规模 那么扩容上限可以这么计算: (L1 gas cost) / (bytes in rollup 16) 12million / 12.5million。 现在值得注意的是这些数字还是过于乐观,原因有几个: 首先,最重要的是一个区块几乎永远不会仅包含一个 batch,因为将可能会存在多个 rollup 方案同时运作。第二,存款和提款将持续存在。第三,短期内使用量会很低,所以固定成本成为主要消耗。但即使将这些因素考虑在内,预计扩容规模也会超过 100 倍。 现在,如果我们想要超过 ~1,000 - 4,000 TPS,该怎么办呢?这就是 ETH 数据分片的意义所在,sharding 建议每 12 秒开辟一个 16MB 的空间,这个空间可以被任何数据填满,系统保证对这些数据的可用性达成共识,而这些数据空间可以被 rollup 使用。 这个约 1,398 kB/s 的数据量比当前 Ethereum 60 kB/s 提高了 23 倍,从长远来看,数据容量有望进一步增长。因此,使用 Eth2 分片数据的 rollup 可以处理高达约 100k TPS,未来甚至会更多。 Rollup 还有哪些尚未解决的挑战? 虽然现在 Rollup 的基本概念已经被大家所熟知,我们也很确认它们从根本上是可行的、安全的,以及已有多个 rollup 方案被部署到主网上,但 rollup 的设计仍然存在许多地方没有被很好地探索,将 Ethereum 生态系统的大部分内容完全迁移到 rollup 上以利用其扩容能力也存在不少挑战: User and ecosystem onboarding - 使用 rollups 的应用不多,用户对 rollups 也不熟悉,目前很少有钱包开始整合 rollups,而商家和慈善机构还不接受它们用于支付。 Cross-rollup transactions - 有效地将资产和数据 (例如 oracle 输出) 从一个 rollup 转移到另一个 rollup 中,而不会产生经过 Layer1 的费用。 Auditing incentives - 如何最大限度地提高至少一个诚实节点会真正全面验证一个 Optimistic rollup 的概率,以便出错时他们会发布欺诈性证明。对于小规模的 rollup(几百个 TPS 以下)来说,这不是一个重要的问题,可以简单地借助利他主义,但对于更大规模的 rollup 来说,需要更严谨地推理这个问题。 Exploring the design space in between plasma and rollups - 是否存在一些方法可以将状态更新的相关数据放在链上,而不是所有的数据。 Maximizing security of pre-confirmations - 许多 rollup 为了更快的用户体验,提供了一个「预确认」的概念,即 sequencer 立即给予一个承诺,交易将被包含在下一个 batch 中,如果他们食言,sequencer 的押金将被销毁。但这种方案的经济安全性是有限的,因为可能同时向许多用户做出承诺,这种机制能否获得改进? Improving speed of response to absent sequencers - 如果一个 rollup 的 sequencer 突然下线,那么快速和经济地从这种情况中恢复过来将是非常有价值的:要么快速且经济地大规模退出到另一个 rollup,要么更换 sequencer。 Efficient ZK-VM - 生成通用 EVM 代码的 ZK-SNARK 证明(或者将现有的智能合约编译适配到其他 VM)可以被正确执行,并且有一个明确结果。 结论 Rollups 是一种强大的 Layer2 扩容范式,预计将成为 Ethereum 短期和中期(甚至长期)扩容的基石。我们已经看到了 Ethereum 社区对此感到大大的兴奋,因为这与之前的 Layer2 扩容方案不同,它们可以支持通用的 EVM 代码,允许现有的智能合约轻松迁移。 这是通过一个关键的妥协来实现的:放弃将数据和计算完全放在链下,而是将每笔交易的少量数据留在链上。 Rollups 方案有很多种,在设计空间上会有很多选择:可以采用欺诈性证明的 Optimistic rollup,或者采用有效性证明的 ZK rollup(又名 ZK-SNARKs)。Sequencer(可以将交易 batch 发布到链上的用户)可以是一个中心化的角色,也可以是一个去中心化的角色,或者是介于两者之间的其他选择。 总的来说,Rollup 仍然是一项早期阶段的技术,一切仍在迅速发展,特别是 Loopring,ZKSync 和 DeversiFi 已经运作了几个月。期待在未来的几年内,Rollup 领域会出现更多令人兴奋的工作成果。
  • 以太坊教程:Rollup Bridge 介绍(一):Maker Dai Bridge

    作者:Nic Lin,imToken 资深区块链工程师 本文受众:对 Rollup 有所了解的区块链爱好者 Maker 的 Optimism Dai Bridge 是一个 Optimistic Rollup 上的快速资产提领协议。 Photo by Wilbur Wong on Unsplash 在介绍 Maker Bridge 之前,你要先对 Rollup 有一些了解,本文不会对 Rollup 做太多介绍。 了解 Rollup Rollup 未来在以太坊的角色:https://www.hopo-bright.com/ydf/291.html Vitalik:Rollup 不完全指南(精选):https://www.hopo-bright.com/ydf/312.html 在 Optimistic Rollup(Rollup 的其中一种)设计中,都先假设交易是正确的,如果发现有错再透过欺诈性证明来挑战错误的交易,但也因为要让欺诈性证明有时间可以送达,所以会有一段称为挑战期的延迟时间。一笔交易要等到顺利通过挑战期后(期间没有被挑战),链上合约才会接受它是正确的。 但这个挑战期也因此成为影响 Optimistic Rollup 使用者体验的缺点,所以有人提出了快速资产提领协议来解决这个使用体验的痛点。 在进入正题之前,先对标题做一些解释。首先,要能达到「快速」资产提领,并不是因为这些 Rollup 真的支持快速提领资产,而是需要一个中介商、一个流动性提供者来先垫付资产。 其次,标题是 Rollup Bridge 的介绍,但 Rollup Bridge 可以用来指该 Rollup 本身提供的 L1 <-> L2 Bridge,也可以用来指其他建构在 L1 <-> L2 Bridge 之上的 Bridge。本文介绍的是后者:搭建在 Optimism L1 <-> L2 Bridge 之上的 Maker Dai Bridge,用来让使用者快速提领资产回 L1。 快速资产提领是我从 fast withdrawal 翻过来的,可能有其他更好的翻译 以下所称的 L2 皆指 Rollup 而非 Plasma 或 Sidechain 以下所指 Rollup 为 Optimistic Rollup,因为 Optimistic Rollup 才有挑战期的问题 以下所称「资产」和「代币」两个词指的是一样的东西 以下所称「七天」和「Rollup 挑战期」两个词指的是一样的东西 以下 「Rollup Bridge」 指的是 Rollup 本身提供的 L1 <-> L2 Bridge,「Maker Dai Bridge」 指的是搭建在 Rollup Bridge 之上的 Bridge Rollup Bridge Rollup 的安全性是锚定在它所在的 L1 上的(例如 Optimism 锚定在 Ethereum 上):你要针对 L2 的交易进行审查攻击,等同于对 L1 交易进行审查攻击;你要重组 L2 ,进行双花攻击,等同于你要重组攻击 L1。 Rollup Bridge 是 L1 和 L2 互动的管道,你要从 L1 送讯息到 L2 合约或是你要把 ETH 存到 L2,都是透过 Rollup Bridge 来帮忙把讯息传递过去;反之亦然,你要从 L2 送讯息到 L1 合约或是你要把 ETH 提回 L1,也是透过 Rollup Bridge。Rollup Bridge 的安全性和 L2 交易的安全性是一样的,不会因为它多跨到了 L1 所以更不安全。 所以 Rollup Bridge 代表的是什么意思?Rollup Bridge 提供了一个安全、去中心化的方式让 L1 和 L2 能够进行互动、让 L1、L2 的资产能够互相转移。 注:Rollup Bridge 不是自然而然就会出现的东西,它不会因为你今天做了一个 Rollup,就自动生出 Rollup Bridge 的功能,而是要搭配你的 Rollup 协议来打造你的 Rollup Bridge。 如果你透过跨链桥用 MPC 的方式来执行跨链交易,你需要相信参与 MPC 的节点。但在 Rollup Bridge 里没有这样的角色,透过 Rollup Bridge 送讯息就跟送 Rollup 交易一样,其安全性和抗审查性是受 Rollup 本身所保障,所以才会说 Rollup Bridge 是去中心化的方式. Fast withdrawal(快速提领资产回到 L1) 一开始有说到,「快速」并非真的是 Rollup 支持快速转移资产,而是有一个流动性提供者来先垫付这笔资产。 Rollup 的挑战期是为了确保交易的安全性,所以任何人要从 L2 提取资产回 L1 都不可避免地要等待挑战期。不过如果今天你相信一笔提现交易是正确可信的,并且你也相信重组攻击很难会发生,所以你愿意冒这个险的话,你就可以提议在 L1 先代垫这笔提现交易,并从中间抽点手续费。反之,如果对方希望一个小时后(而非七天后)就能在 L1 拿到钱,且愿意被抽点手续费的话,那就成交,两边都开心。 运作流程 对方先在 L2 透过一个 fast withdrawal 合约来申请 fast withdrawal,fast withdrawal 合约背后走的一样是正常的提取流程,要等七天。这时候你看到了这笔 fast withdrawal 交易,且确认这笔交易是可信、很难被重组攻击后,你就到 L1 的 fast withdrawal 合约申请垫付,垫付的对象会是该笔 L2 fast withdrawal 交易的 ID。 注:这时候 L1 的 fast withdrawal 合约还不知道有这笔 L2 fast withdrawal 交易的存在。 等到七天挑战期过了,这个 L2 fast withdrawal 交易会被传递到 L1 fast withdrawal 合约。如果你之前有先垫付这笔交易,合约里会有纪录,那合约就会直接把这笔交易所提领的资产转给你。如果没有人来垫付,那合约就会照正常流程,把提领的资产转给当初的提领者。 注: 你垫付的金额会是对方提领的金额扣掉给你的手续费。 如果没有 Rollup Bridge,就没办法安全可信地把 fast withdrawal 讯息 relay 到 L1 上,就不会有人敢先做垫付的动作,因此 Rollup Bridge 是 fast withdrawal 的必要条件之一。(当然 Rollup 团队是一定会做出 Rollup Bridge 的功能的,否则没有人会想要用这个 Rollup) Maker Dai Bridge Maker Dai Bridge 大致是就是上面描述的 fast withdrawal,只是里面的流动性提供者不是别人,而是 Maker 的财库。 如同你放入抵押品(例如 ETH),Dai 财库就会铸造出 Dai 给你。 Maker Dai Bridge 也是相似的概念,你放入提领 Dai 的凭证(这个凭证要等到挑战期过后才能提领 Dai),Dai 财库铸造出 Dai 给你。等到挑战期过了,你就可以偿还借款、拿出抵押的凭证并用凭证去领出 Dai。 这个铸币的功能将会让 Maker Dai Bridge 在 fast withdrawal 服务的竞争里占尽极大优势,因为它不像其他流动性提供者一样要承担资本利用率、资产曝险的风险,而且理论上它的流动性可以到无限大。再来,因为抵押和借出的资产都是 Dai,也不需要考虑被清算的可能。最后,除非 Rollup 被攻击破坏,否则这些借款都会保证如期还款。 缺点 但 Maker Dai Bridge 也不是没有缺点,这个缺点是:它的安全性要多仰赖一个对象 — 它的 Oracle(预言机)服务。 注:Maker 协议本身有一群中心化的 Oracle 负责将代币在现实世界中的价格送到链上。Maker 协议仰赖这些 Oracle 的报价来决定哪些贷款已经进入可清算的状态。 因为 Dai 财库自己没办法判断 L2 上的提领是否是有效的,所以需要一个第三方在链下模拟交易执行,确认提领的有效性。就像 Optimisitic Rollup 节点不需要等 Operator 上传最新的状态,自己模拟交易执行都能得到正确的状态。 所以 Maker Bridge 会直接沿用原本已经建立好、经过实战测试的 Oracle 服务来担任这个第三方。 运作流程 首先是使用者把 Dai 存到 L1 Maker Bridge,L2 Maker Bridge 会铸出 oDAI 给使用者去用。 当使用者要提领回到 L1 时,向 L2 Maker Bridge 申请提领、销毁 oDAI。等待一段时间,这笔 L2 提领交易被放进 L1 的 Rollup 合约的交易日志后,Oracle 就可以执行并判断这笔 L2 提领交易的有效性。如果有效,Oracle 会到 L1 Maker Bridge 上批准,L1 Maker Bridge 会铸造出 fDAI 给使用者,这个 fDAI 是一个领取凭证,等到 L2 提领交易的挑战期结束后,可以拿这个领取凭证去取出 Dai。使用者接着拿 fDAI 到 Dai 财库去抵押换出 Dai 来使用。 最后,当 L2 提领交易的挑战期结束后,使用者(或其他人)就可以偿还借款、取出 fDAI 并用 fDAI 去提领 Dai。 注:fDAI 会是以 NFT 的形式存在,因为每一笔提领的解锁时间都不同,所以会是 Non Fungible(非同质化)。 为什么还需要多一层 fDAI? 假设没有 fDAI,Oracle 批准后 L1 Maker Bridge 就直接解锁 Dai 给使用者。则当 Oracle 作恶时,会导致 L1 Maker Bridge 的 Dai 被解锁拿走,这时候 Maker Bridge 上的 L1 Dai 会比 L2 oDAI 还少,这会导致 L2 有部分的人的 oDAI 会提领不出来。所以 Maker Bridge 改成用 fDAI 抵押借款的方式,把风险转嫁到 Dai 财库,也就是 Maker 代币的持有者:当 Oracle 作恶时,结果会是 Dai 财库新增一笔坏账,但 Maker Bridge 上的 L1 Dai 和 L2 oDAI 还是维持 1:1 的映射。 注:这边会需要设计让使用者有偿还贷款、取回 fDAI 并拿 fDAI 去领回当初提领的 Dai 的动机,否则抵押 fDAI 能借出 100% 提领的 Dai 的金额,那使用者就没有动机去完成提领的动作,Maker protocol 就只能自己负担这个成本。fDAI 抵押只能借出 X%(X < 100) 或是使用者提领时能退回部分手续费都是可能的机制,细节要等到 Maker Bridge 测试完才能知道。 附注 目前 Maker 只支持 Optimistic Rollup(更准确地来说是只有 Optimism),因为当前的 ZK Rollup 大多数都还未支持 L1 <-> L2 的互动(如前述,这是必要功能)。而且 ZK Rollup 的挑战期比 Optimisitc Rollup 的挑战期要短得多,快速资产提领不会是 ZK Rollup 使用者急需的功能。 目前 Maker Optimism Dai Bridge 仍在测试中。 一样的设计可以用于其他 Optimistic Rollup,例如 Arbitrum。只需要针对 Arbitrum 的 Rollup Bridge 来做相对应的修改。 Thanks to Kimi Wu and Chang-Wu Chen.
  • Rollup未来在以太坊的角色是什么?

    以太坊扩容在社区中的讨论如火如荼,多个解决方案正在加紧开发,并有望在今年全部上线主网。在整个以太坊 Layer2 方案爆发的前夕,imToken 联合 ETHPlanet、EthFans、ECN、上海前沿技术研讨会和 HiBlock 等多家优秀的以太坊生态社区与公司,共同策划一场以太坊扩容主题系列活动。4 月 23 日举办了第一场活动:Rollup - 以太坊 L2 扩容新范式杭州线下 Meetup。 以下是本次 imToken 首席科学家 Chang-Wu 的分享:「Rollup 未来在以太坊的角色」 的文字版,由 imToken 整理。 演讲整理 我先带大家了解一下什么是 Rollup,以及 Rollup 未来与 Eth2 路线图又是一个什么样的关系。 首先,我们都知道现在以太坊网络的一个 block(区块) ,它的计算单位是 gas limit(笔者注:每笔链上交易都会消耗 gas),每个区块的 gas limit 都有上限,目前这个上限值已经被调整为 1500 万,这 1500 万就代表每个区块可以包含的计算单元,也就是每个区块里所有交易累计消耗的 gas limit 不能超过 1500 万 gas。 举例来说,单纯的 ETH 转账,每笔的 gas limit 是 21000。如果一个区块中所有交易都是 ETH 转账,那么单个区块中最多可包含的交易笔数就是 1500w / 21000 = 714 笔。同时,目前以太坊出块平均时间是 12 秒,那么用 714 除以 12,我们就可以知道目前以太坊网络每秒可处理交易数的上限。 最近大家都看到了,现在的网络是非常拥挤的,尤其是在柏林升级前,区块 gas limit 只有 1200 万的时候。但即使是通过升级把 gas limit 提升到了 1500 万,我们仍然看到每个区块几乎都是满的,区块空间利用率接近饱和。 也就是说这时候你想要放入更多的交易其实是很困难的。同时我们也注意到,因为一些 DeFi 项目的兴起、需求等等,每当市场上有震荡的时候,手续费就会特别昂贵。过去一段时间,我相信大家也注意到在星火矿池维护的实时评估 gas 的网站上,有时甚至能看到 900、1000 Gwei 这样非常昂贵的手续费的产生。 所以在这一现状下我们认识到由于 DeFi 不停增长的需求,导致网络拥挤、每个区块都是饱和的状态、手续费昂贵。即便近期(在柏林升级中)提升了区块的 gas limit,但仍不足以满足链上的交易需求。 对此,我们越来越需要通过扩容来支撑以太坊网络整体的交易量。这就是我们今天想要和大家介绍的主题 - Rollup,中文叫做卷叠。通过引入 Rollup 技术方案,我们可以将以太坊网络的交易处理能力由当下 Eth1 上的 20 TPS(每秒可处理交易)提升至 4000 TPS(从理论上估计)。 那么 Rollup 是什么,以及它在 Eth2 路线图中又会扮演什么样的角色呢? 我们都知道 Eth2 想要通过分片的方法来提升整体的交易量。具体而言,分片是通过将交易发送到不同的 Eth2 分片去做执行,因为分片本身的设计允许不同的交易在不同分片上平行处理,以此从最底层的协议上进行优化,达到给网络整体扩容的目的。但是呢,我们也都知道,Eth2 的阶段 0 是去年 12 月份刚上的,上面谈到的分片实际运转起来可能要等到阶段 1.5 或阶段 2。如果没有过渡或者说妥协的方案出来,这中间将是漫长的等待期,而且期间网络将一如既往的拥堵。这也是为什么 Rollup 二层网络解决方案在近期越来越受到欢迎和普及。 那接下来,我们开始介绍 Rollup,我会通过说明 Rollup 的每一个步骤来向大家解释它是如何实现扩容的。 首先,下图中间黑线上面代表 Layer1,下方代表 Layer2。Layer1 的主网就是现在 Eth1 的主链,Rollup 项目方会在这条主链上部署一个智能合约。 用户在这个合约中可以 deposit(存入)资产,存入后,Rollup 运营商或服务商就会在二层网络上把这些资产映射出来。关于具体的映射方式,我们可以把它想像成是以数据库的方式,映射成一个存储的格式,而这个格式可以表示每一个账号现在有多少余额。 通过这种方式将用户在主网 Layer1 的存入资产与二层网络账户上的余额进行映射。然后,用户就可以在 Layer2 上进行转账、兑换等操作。那么,当用户们在 Layer2 发起大量交易时,由谁来对这些交易进行筛选、排序和打包呢? 在当前的 Rollup 二层网络方案中,这个角色一般由项目方来承担,我们称其为 sequencer(排序者)。sequencer 的角色,有点像是在打包这些交易,类似 Layer1 的矿工。但区别在于,sequencer 是先把交易整理好,然后才去做打包交易的动作。比如在二层网络中用户 A 给用户 B 转 10 个 token,用户 B 给用户 C 转 20 个 token,这些交易就会由 sequencer 来负责验证处理,并且打包整理成最后用户 A、B、C 的余额应该各有多少。 但仅做到以上这些仍是不够的,因为以太坊上一笔交易占据的空间非常大。例如仅收款方的地址,就占 20 个 bytes,ECDSA 签名占 64 bytes。对于以太坊区块有限的空间来说,这些数据所占用的空间较大,那么我们是否有办法压缩这些数据呢? 方法是有的。现在以太坊上一个地址是 20 bytes,在二层网络上,我们可以通过编码的方式进行压缩。具体来讲,Layer1 上的一个普通地址通过编码可以从 20 bytes 压缩到 3 bytes。同样的,上面提到的 ECDSA 签名数据和其他数据也可以进行压缩。sequencer 的职责就是压缩交易,并将压缩后的数据放在 Data(以太坊交易的一个字段)中同步到 Layer1 上。以上就是 Rollup 处理交易的过程说明。 到这一步,我们看到即使是在 Layer2 上,sequencer 最终同样需要把所有交易打包后的数据上链。这里有两个问题需要回答: 为什么要把数据放到链上? 原因在于只有当数据上链时,数据才具备可用性,其他人就可以通过这些数据来验证其中包含的交易是否真的成功。避免由于 sequencer 作恶(比如将一笔转账的收款地址替换为自己的地址)造成的资产损失。因此数据上链是必要的。 如何确保上链的数据是正确的(即如何保证数据的有效性)? 这就要求 sequencer 要对数据进行验证,一般是通过提交 Proof(证明)来确保上链数据正确。 在第二个问题上,目前的 Rollup 方案主要区别在于对数据和 Proof 的处理上。有的方案只把数据上链,但不对数据进行验证,也就是缺乏 Proof,比如 Optimism(笔者注:他们通过欺诈性证明来保障链上数据有效)。有的方案则是将数据和对数据的 Proof 同时上链来保证数据的有效性,比如 zkRollup 通过零知识证明对数据进行验证,并且把验证得到的 Proof 和数据一起上链,以此确保对应数据在链上的有效性和资金的安全性。所以 zkRollup 是目前被大家公认为比较安全的方案。 整体来看 Rollup 方案,Layer1 上的智能合约就像是城堡,其中的资金安全性依赖于 Layer1 自身的安全性。在 Layer1 上需要保存各账户的状态转换数据,同时要把 Layer2 上交易压缩后的数据同步到 Layer1 上,至于要不要做 Proof 则取决于具体的项目方的取舍。 Layer2 则负责执行交易,将本来在 Layer1 上处理的交易转移到 Layer2 上。当前对数据正确性的验证主要有两种典型的方案: Validity proof:即指类似于 zkRollup 的零知识证明方案。将数据和对数据的 Proof 同时上链。 Fraud proof:即指类似于 Optimism 的欺诈性证明方案。由于只将数据上链,所以 Optimism 需要用户或项目方自身去监测 sequencer 是否如实地把交易数据同步到了 Layer1 上。如果监测到欺诈行为,那么就可以通过提交欺诈性证明来保障资产安全。 最后,关于数据可用性,从形态上可以简单分为两个代表:zkRollup 和 Optimism。主要区别在于对哪些数据上链(on-chain) / 不上链(off-chain)方面的取舍。大部分方案都是把数据上链的,但是也有一些方案选择对一部分数据不上链处理,这么做的好处在于可以进一步提升扩容性能,而不用受区块自身可存放数据容量大小的限制;另一个原因是,有些应用顾虑到隐私性或其他一些特性,并不希望所有数据都上链,因而做了取舍,对这部分在这次分享中我们不去详细讨论。 在数据上链 / 不上链取舍上有一个典型的例子:zkPorter,也就是未来的 zkSync 2.0。他们宣称在 zkSync 2.0 中可以达到 24,000 TPS,这主要是通过默克尔树实现的,在不同分支中分别存放 zkRollup 与 zkPorter。对于在意安全性的用户来说,zkRollup 是一个更可靠的选择;但在对安全性要求相对较低的应用中,则可以考虑使用部分数据不上链的 zkPorter(效率更高,处理能力更好)。zkSync 2.0 通过这种混合的方式实现有保障性的安全和效率的提升。 那么为什么说 Rollup 和 Eth2 的路线图有关?其实前面有提到过,Eth2 分片上的交易执行暂时还无法立即到位,社区可能还要在等一段时间。但是在 Phase1 和 Phase 1.5 间,当分片的数据库成型时,其中的每个分片就好比是一个主网,这些分片的数据层就可以用来存储 Rollup 的数据。 当未来有分片的时候,虽然我们不能在其上立即进行交易,但是我们可以通过把 Rollup 的数据存到这些分片中提前发挥分片的作用,达到进一步扩容的目标。 这部分就是我今天的分享,谢谢大家。
  • 为什么我们需要zkPorter?zkPorter常见问题汇总!

    背景介绍 关于以太坊社区扩大的讨论很热烈,许多解决方案都亟待开发,预计今年将全部连接到主网络上。 在以太坊2计划爆炸前夕,imToken与ETHPlanet、EthFans、ECN、上海前沿技术研讨会、HiBlock等多家优秀的以太坊生态社区和公司合作,开展了以太坊的扩展主题系列活动。 4月23日,举办了第一届活动: Rollup -以太坊L2扩展新范式杭州线下Meetup。 以下是这次zkSync的市场占有率。 ZK porter —— whyrollupsarenotenough的文本版由imToken Riely组织。 你好,我叫安格拉。 我是zkSync的产品经理。 很高兴今天有机会和大家分享我们最新的进展—— zkSync 2.0。 大家都希望Rollup在今年夏天早点普及。 随着Rollup的广泛使用,预计矿工费用将便宜100倍。 虽然我们目前看到很多小资金使用zkSync网络,但总体来说,我们认为目前的Rollup尚未得到广泛验证,因此不建议大资金流入。 但是再过几个月,我们的Rollup就会越来越安全。 当时,zkSync对大规模资金也同样安全可靠,支持NFT和zkEVM,可以将更多的APP部署到zkSync网络上。 同时,也可以看到以太坊过高,充斥着其他链条(BSC、Polkadot、Solana、Polygon等)的用户回到以太坊。 另外,Coinbase IPO也吸引了很多新用户,我相信他们也想试试! 2020年至2021年间,以太坊的用户数量增加了12倍。 但是矿工费呈指数级增长,上升了192倍 2018年,以太坊的可扩展性预计将不足,无法为10亿级用户提供服务。 为此,我开始了zkRollup运动。 但是,根据上图的趋势,目前的Rollup计划提供的可扩展性仍然难以满足可能快速增长的用户和需求,预计Rollup普及一段时间后,矿工的费用可能会变高。 因此,基于zkRollup,我们有了新的突破- ZK波特。 在谈论zkPorter之前,我先介绍一下zkSync 2.0是如何工作的。 zkSync 2.0有默克尔的根,该默克尔的根分为两部分。 第一部分是ZK滚动上方向,ZK滚动上方向帐户位于ZK滚动上方向的默克尔叶节点上。 第二部分是ZK端口,ZK端口的所有帐户都位于ZK端口默克尔的叶节点上。 ZK滚动上升 那么,Rollup的安全性如何? Rollup的安全性主要由两个重要因素决定。 第一个是数据的有效性,第二个是数据的可用性。 数据的有效性保证你的资产不会被别人使用; 数据的可用性保证了资产的归属权,也就是说证明了你对资产的所有权。 zkRollup将交易计算和存储转移到zkSync网络,通过将处理后的数据提交给以太坊主节点来扩大以太坊的性能。 具体而言,当前zkSync网络的验证者总结用户在双层网络上的交易,用zkSNARK算法压缩后,将得到的默克尔根进一步上传到网络上,从而保证了块内所有交易的有效性 关于数据的可用性,通过将处理后的数据放入以太网的呼叫数据中来保证。 那么为什么是呼叫数据而不是智能合约呢? 这是因为在同等安全性的前提下,放入呼叫数据比放入智能合约要便宜。 zkRollup将每次交易压缩的数据传输给以太网主机,因此保证了zkRollup数据的有效性和可用性,与以太网基本相同。 ZK波特 zkPorter和zkRollup的主要区别在于数据的可用性。 想想为什么Rollup不能达到我们希望的扩展性。 这是因为每次交易都会将压缩的数据放在以太网上,但是以太网的块大小是有上限的。 我该怎么办? 现在,您可以通过选择提供链中数据可用性的zkPorter来实现预期的可扩展性。 ZK端口帐户的数据可用性由zkSync令牌所有者保障。 使用zkSync 2.0,您可以享受zkRollup和ZK门户帐户的混合体体验(可以自由选择,完全互通)。 守护者(guardian )通过质押其zkSync令牌来参与权益证明,并通过在区块上签名来确认zkPorter账户的数据可用性。 当然,在没有免费午餐的情况下,zkPorter比以太坊的安全性要低一些,因为zkPorter向zkSync令牌所有者(即守护程序)保证了数据的可用性。 但是,需要强调的是,zkRollup的安全性不变,具备与以太坊相同的安全性。 请看下图的蓝点。 这个蓝点是zkRollup的数据可用性。 绿色圆点表示由zkSync令牌所有者组成的保证网络中的数据可用性。 对应上图中的蓝点,就数据有效性而言,zkPorter和zkRollup的有效性由zkSNARK保证,且账户状态的正确性与以太坊主拥有相同的安全保证。 这意味着没有人可以转移你账户上的资产。 那么,zkPorter具体提供了哪些数据可用性? 通常,在谈论区块链的安全性时,需要考虑最坏的情况。 最坏的情况下,让我们看看系统的安全性如何得到保证。 让我们先来看看zkSync的令牌所有者——卫士。 他们需要签名以验证每个zkSync块的数据可用性。 的zkSync所有者拒绝生产块,对zkSync网络也没有多大影响。 因为zkRollup和zkPorter还可以询问其他有关数据可用性的问题。 最坏的情况是,互联网遭遇了大量的攻击。 在这种情况下,攻击者可以签字确认最后一块。 也就是说,还是有效的。 但是,在这种情况下,攻击者将无法使用数据。 此时,普通用户无法证明自己拥有的资产,因此无法正常管理这些资产。 但同时,对攻击者来说,也不能证明他拥有这些资产,也不能花这些钱。 ZK端口和Optimistic Rollup哪个安全? 可能会有人问。 我认为zkPorter更安全。 为什么? 因为zkPorter的攻击者没有足够的动力破坏我们的系统。 如果有一千万个zkSync令牌,攻击者需要使用七百万个令牌进行攻击,而且他无法获取任何资产(因为处于只能冻结zkPorter的状态,所以也会冻结自己的押金)。 但是,在Optimistic Rollup中,攻击者可以通过复杂但可行的攻击方法从Optimistic Rollup中窃取资金。 因此,zkPorter认为比Optimistic Rollup更安全。 伊利亚姆大师vs ZK roll up vs ZK波特 其实更重要的是,你想接受什么程度的安全性。 如果你是大笔资金,更认可伊萨利姆大师的安全性,我建议你在伊萨利姆。 但是如果你想便宜点的话,我建议你用ZK波特。 正如我之前提到的,由于以太网的块大小和TPS限制,目前许多Rollup解决方案的最大TPS不超过2000。 但是,zkPorter的数据可用性不受以太网限制,可以达到2万以上的TPS,甚至更高。 如果以萨雷姆大师的矿工费是100,zkRollup的转账需要1(zkRollup的矿工费服从以萨雷姆,以萨雷姆的矿工费更高的话zkRollup也就更高了),ZK Porl up也就更高了) 为什么说zkSync 2.0是一个突破呢? 这是因为ZK门户网站和zkRollup可以互相汇款。 所以,我们选择了基于以太坊。 以太坊的互操作性和组合性是惊人的。 如果使用zkPorter账户在Uniswap上进行了一千次兑换,则只需确认最后一次交易汇总后的最终状态如何,即可将交易费用节约为$0.1。 这就是ZK波特的优势。 接下来,让我们从数据的有效性和可用性的角度来与Optimistic Rollup进行比较。 在zkSync 2.0中,L2的状态分为两部分。 也就是链上的ZK滚动和链下的ZK入口。 但是,Optimistic Rollup不能这样做。 因为,其有效性依赖于以太网上数据的可用性。 否则,就不能进行欺诈性的证明。 因此,Optimistic Rollup的TPS受以太网自身的限制。 但是,zkPorter可以突破这个限制。 ZK同步路线图 什么时候在zkSync上面做东西? 首先,我们将在5月支持NFT! 然后,zkEVM也将于5月上线网络测试。 我们会努力让zkEVM在8月连接到以太网的主网络。 谢谢大家! 在这里我想特别感谢Riely,她翻译了很多关于以太坊的专业术语。 同时,我们在中国社区看到了非常多的积极的成员,感谢你们的支持。 对此,亚历克斯和我都很感动。 那么,拜拜! zkSync创始人Alex的总结 我对zkRollup和ZK波特非常兴奋。 因为他们可以把大量的用户带回以太坊,给他们最大程度的安全。 我们非常关注协议的安全性。 不管你们是DeFi项目方,还是普通的以太坊用户,我们都希望你们有安全保障。 同时,zkPorter对所有用户开放,所以不用担心会遇到链条上的昂贵费用。 zkSync希望为大家提供一个不论贫富,人人都有平等参与经济体系的权利,流动性充足,功能丰富的体系。 这也是我们公司的价值观之一,多元包容。 我们相信那个。 风险提示:本文的内容不构成任何形式的投资意见或建议。 对于本文档中所述的第三方服务和产品,imToken钱包教程不提供任何担保、不接受或不承担任何责任。 数字资产投资有风险,请仔细评估这些投资风险,并咨询相关专家自行决定。
  • Layer2 如何扩容 zkSync方案攻略

    为了更好地阅读本文,你需要先了解以太坊及其转账基本概念。 阅读这篇文章的「以太坊简介:https://www.hopo-bright.com/ydf/144.html 」和「以太坊转账:https://www.hopo-bright.com/ydf/151.html 」了解。 zkSync 简介 由于以太坊主网(即 Layer1)上交易严重拥堵,交易费用居高不下,开发者提出了 Layer2 以改善以太坊网络性能,提升交易处理速度。 zkSync 是欧洲团队 Matter Labs 推出的一款 Layer2 扩容方案,通过采用基于零知识证明的 Rollup(主流 Layer2 方案之一) 提升以太坊网络的可拓展性。 工作原理 zkSync 基于 ZK Rollup 打造。 ZK:零知识证明(Zero Knowledge)的缩写。 Rollup:Layer2 方案之一,也叫卷叠,通过将以太坊主网上交易的计算和存储转移至 Layer2 处理并压缩,再将压缩后的数据上传至以太坊主网以拓展以太坊性能。 ZK Rollup:采用零知识证明的 Rollup 方案,和其他 Rollup 的不同之处在于采用 zkSNARK 算法(一种零知识证明算法)压缩数据。 Rollup 的安全性由两个因素决定: 数据有效性:确保状态已被验证,避免验证人修改 Layer2 数据来窃取用户资产。 数据可用性:记录与维持 Layer2 的可用数据,确保用户拥有数据的自主权,并能利用 Layer2 数据自行离开回到 Layer1。 zkRollup(zkSync 将其所采用的 ZK Rollup 写作 zkRollup)通过将每笔交易压缩后的数据传到以太坊主网上,保证数据的有效性和可用性,使 zkSync 网络具备和以太坊主网同等的安全性。 关于 zkSync 原理,了解更多: 为什么我们需要 zkPorter:https://www.hopo-bright.com/ydf/290.html Rollup 未来在以太坊的角色:https://www.hopo-bright.com/ydf/291.html 特点 极低的交易费用 zkSync 的转账费用将始终比主网的矿工费便宜 20 倍以上(ERC-20 代币转账费用则便宜近 100 倍) 无需信任 通过加密技术保障资金拥有以太坊主网级别的安全性 用户资产自持 zkSync 钱包 以 imToken 为例,首先下载安装 imToken 并创建 / 导入钱包,下载链接:https://token.im/ 开启 打开 imToken 钱包,切换到「我」页面,点击「探索」,即可开启 zkSync 钱包。 使用 点击「充值」按钮进入充值页面,将以太坊主网地址中的资产充值至 zkSync 网络,到账后即可在 zkSync 网络中进行快速、低成本的转账。 详细教程:如何在 imToken 使用 zkSync 钱包?:https://www.hopo-bright.com/xszl/7.html 其他支持 zkSync 的钱包 Argent:https://www.argent.xyz/ MYKEY:https://mykey.org/en Loopring:https://loopring.org/#/ 常见问题 zkSync 钱包常见问题:https://www.hopo-bright.com/cjwt/56.html 学习 Layer2 为了解决以太坊的可拓展性问题,开发者提出了两个方向的解决方案,Layer2 和分片(Eth2 的一个重要升级)。Layer2 字面意思是二层网络,相对的,当前的以太坊主网也称为一层网络(Layer1),二层网络也就是基于当前以太坊主网的一个系统。 Layer2 方案主要是从减轻 Layer1 负担的角度出发,将 Layer1 的大量计算需求搬到 Layer2 上。 主流 Layer2 方案有 ZK Rollup、Optimistic Rollup、Plasma、State Channels(状态通道)、Validium 等。 ZK Rollup ZK 是 Zero Knowledge(零知识)的缩写,零知识证明是指证明者能够在不向验证者提供任何有用信息的情况下,使验证者相信某个论断是正确的。 Rollup 中文叫做卷叠,是一种以太坊扩容方案的统称。Rollup 通过将链上计算转移至链下(二层网络),但同时将每笔交易的部分数据保留在链上达到提升以太坊网络性能的目的。 ZK Rollup = 交易压缩 + 零知识证明(zk-SNARK) ZK Rollup 核心思想是在链下达成交易共识,并通过零知识证明算法压缩交易数据,保证链下交易状态的有效性,最后将数据同步至以太坊主网。 开发团队 Matter Labs zkSync 的开发团队 Mattet Labs 是一个对自由、区块链和数学充满热情的工程团队,总部位于柏林,员工遍及全球(主要是在欧洲)。 Matter Labs 通过零知识证明技术对以太坊进行扩展,其使命是加速这场正在进行的金融革命。 zkSync 浏览器 zkSync 区块浏览器是一个查询 zkSync 区块、交易、状态根哈希、账户地址等信息的网站。 zkScan|zkSync 的区块浏览器和数据分析平台:https://zkscan.io/ zkSync 路线图 该项目目前的产品路线图规划为:可扩展支付、智能合约、隐私和抗审查。 可扩展支付:zkSync 当前正处于此阶段,致力于打造一个安全可拓展的加密资产支付方案。 隐私:目前,zkSync 中的交易信息就像以太坊主网一样,是公开透明的,未来 zkSync 将引入隐私功能。 抗审查:扩展性解决方案的一个常见问题是大多数用户无法参与验证,网络会趋向中心化。zkSync 打算通过引入一个独立的共识机制来实现去中心化和抗审查,该机制包含验证者和守护者这两个不同的角色。 此外,zkSync 计划在未来推出原生代币用于治理。 已加入 zkSync 生态的团队 Curve Aave Loopring Balancer 1inch Coinbase Huobi Binance Moonpay Argent imToken MYKEY CoinGecko Gitcoin 更多资料 zkSync 官网:https://zksync.io/ Matter Labs 官网:https://matter-labs.io/
  • 以太坊知识:EIP-1559是什么?

    关于 EIP-1559 EIP-1559 将调整当前以太坊主网(Eth1)的矿工费机制。该提案将引入 baseFee(基础费用),baseFee 会根据以太坊区块空间的使用情况自动调整链上操作所需的 Gas Price,从而帮助钱包服务商和用户便捷估算操作的费用。 此外,EIP-1559 增加了一个新的交易类型,该类型允许用户自主设定对当前操作愿意支付的最高费用(maxFee)和支付给矿工的最高费用(maxPriorityFee),并可将最高费用与 baseFee 和矿工费用的差值退还用户。 而且,EIP-1559 将销毁 baseFee(基础费用),一定程度上减缓 ETH 的通胀速度,因此,社区中不少人认为这是对以太坊经济的一项重要改进。 imToken 如何支持 EIP-1559 imToken 支持伦敦升级,对本次升级用户无需进行额外操作。 升级完成后,imToken 用户仍可以正常使用当前版本 imToken 的以太坊钱包功能并发送交易。交易中的矿工费设置以 GasPrice 表示,GasPrice 的预估将基于 EIP-1559 规则。 关于自定义设置 EIP-1559 费用机制中的 maxPriorityFee(支付给矿工的小费)和 maxFee(最高费用),该功能预计将在后续版本 imToken v2.9.6 中尽快提供。 关于交易费用的变化,对此我们暂时无法预计,需要在 EIP-1559 启动后继续观察。 EIP-1559 设计目标 更好的用户体验 当前的以太坊和比特币都采用第一价格竞拍机制,这种费用机制简单但缺乏效率,其中最大的问题在于费用估计。EIP-1559 试图通过让所有的交易尽可能支付相同的费用来解决该问题。多数情况下,用户只需要决定是否发起交易,而无需考虑费用该如何设置。 可变区块容量 区块空间利用率往往是变化的,有些区块空间闲置,而有些区块塞满交易。可变区块容量将允许区块大小随实际需求变动。 更好的安全性 当区块奖励消失,仅靠交易费用不足以激励矿工维护网络安全。EIP-1559 通过销毁交易费用,即可在不增加总供应量的前提下,延长通过区块奖励激励矿工的时间,从而保障网络的安全性。 防止经济抽象 简单来说,即只允许使用 ETH 支付交易费用。如果用户可用任何代币支付交易费用,则可能会威胁到 ETH 的储备地位。EIP-1559 通过强制把 ETH 作为费用代币来缓解这一问题。 EIP-1559 如何工作 升级前的矿工费机制 矿工费 = GasPrice GasUsed GasUsed(gas):交易消耗的总 gas 数量。 GasPrice(gwei):即对单位 gas 的定价,1 gwei= 10^(-9) eth。 采用竞价机制,GasPrice 设置越高,交易处理速度越快。 交易由矿工处理,矿工费完全由矿工收取。 升级后的费用机制 交易费用 = (baseFee + PriorityFee) GasUsed 对比升级前后的公式,可以看出 EIP-1559 是将 GasPrice 拆分成了两个费率的组合:baseFee 和 PriorityFee。 baseFee(基础费用) baseFee 会根据上一区块的空间利用率自动调整,如果利用率超过 50%,则提升当前区块的 baseFee;反之降低。 按照 baseFee 计算公式,相邻区块间的 baseFee 变化幅度在 ±12.5% 之间: 如果上一区块空间利用率为 100%,则当前区块 baseFee 将自动提升 12.5% 如果上一区块空间利用率为 0%,则当前区块 baseFee 将自动降低 12.5% 不同于原来的矿工费机制,EIP-1559 升级后,交易费用不完全由矿工收取,其中 baseFee 将被完全销毁。 PriorityFee(小费) PriorityFee 表示给矿工的小费,延续了竞价设计。如果希望自己的交易在区块中被尽快打包,可通过设置 PriorityFee 激励矿工,矿工将优先处理 PriorityFee 高的交易。 同时,用户还可以自行设置 PriorityFee 的最高值,即付给矿工小费的上限,也叫 maxPriorityFee。 maxFee(最高费用) maxFee 表示用户愿意对某笔交易可支付的最高交易费用。对应到公式中,maxFee = baseFee + maxPriorityFee,其中 maxFee 和 maxPriorityFee 都支持用户自行设置,baseFee 则由算法自动给出。 注:升级后「矿工费」的说法已经不合适了,因为费用中的 baseFee 是要销毁的,只有 PriorityFee 由矿工收取。或许 EIP-1559 升级后,我们应该在以太坊生态中弃用「矿工费」的说法了。 EIP-1559 交易费用计算实例 升级前 矿工费 = GasPrice GasUsed 升级后 交易费用 = (baseFee + PriorityFee) GasUsed maxFee >= baseFee + maxPriorityFee 可能出现的各种费用情况,单位 gwei 如何看待 EIP-1559 EIP-1559 历经了两年的讨论,至今仍然备受争议,对于 EIP-1559 的利弊,社区中有很多严肃深入的思考和讨论,感兴趣的同学可以查看: EIP-1559 提案:EIP-1559: Fee market change for ETH 1.0 chain: https://eips.ethereum.org/EIPS/eip-1559 中文资料汇总:链闻精选 | 读懂以太坊 EIP-1559 提案,它为何备受争议?:https://www.chainnews.com/articles/118999530771.htm 英文资料汇总:EIP-1559 Resources 🔥:https://hackmd.io/@timbeiko/1559-resources EIP-1559 相关工具 https://ethburned.info/ 这个页面统计了 EIP-1559 启动后销毁的 ETH 数量。 https://www.gasnow.org/ 基于 EIP-1559 规则,GasNow 提供了对 baseFee、maxFee 及 maxPriorityFee 的设置建议。 参考资料 Deribit Insights | Analysis of EIP-1559: https://insights.deribit.com/market-research/analysis-of-eip-1559/ Chang-Wu:EIP-1559
  • 以太坊转账教程:一张gif 动图让你看懂

    Vitalik 曾说以太坊就像是一座城市,不同的应用是城市里的建筑。而不同的区块则是城市里的公交车。矿工打包区块,就是让不同的交易上不同班次的车。 DeFi 是城市里最热闹的街区。这里有最大的去中心化交易所 Uniswap,有借贷协议 MakerDAO,还有预言机 Chainlink 等等。最重要的是,这里有熙熙攘攘的人群。 而在繁华的街道上,忍耐拥堵的交通就成为了我们的必修课。如果你想享受到高速的服务,那就需要支付更高的生活成本,在以太坊这座城市里,意味着更高的矿工费。 今天我们就带大家来看看,以太坊网络的一笔交易是如何完成的。 熟悉以太坊的朋友们,可能对 TxStreet 不会陌生。它是一个既实用又有趣的可视化区块浏览器。在这里,区块被形象化为公交车,一笔笔不同的交易,则是不同的卡通小人物来表示。 当我们通过 imToken 发起一笔 Uniswap 交易,就会有一个卡通小人从 Uniswap 的建筑中走出,进到排队的队伍中,等待上车。如果你有急事需要插队,可以通过支付更高的矿工费排到队伍前面,更快上车。以太坊网络每隔 15 秒发一次车,这样一个区块就通过了红绿灯,打包发送出去了。 在排队的人较少时,卡通小人耐心排队,等待几分钟就可以上车了。但在以太坊这座城市,持续涌入的人口不断考验原有的基础交通设施。 等待区块班车的交易 在这张 gif 动图中,你会看到有些卡通小人进入区块公交的同时,还有其他的卡通小人出来,这是为什么呢?这就要提到以太坊的区块大小和转账机制了。 与比特币网络不同,以太坊没有明确地按内存限制每个区块的大小,而是通过区块 GasLimit 强制规定每个区块的大小和一个区块中可以打包的交易量。当前以太坊的区块 GasLimit 是 1200 万 Gas 左右,每一笔交易需要的 Gas 在几万到几十万之间,平均每个区块大概可以打包 200 笔左右的交易。 以太坊矿工的矿工费主要由两部分组成,一部分是挖矿产生的固定区块奖励,另一部分是区块里包含的矿工费。矿工在打包交易的时候,为了收到更多的矿工费,会优先打包支付更高矿工费的交易。而矿工费给的更少的交易,只能继续排队,搭乘后面的公交车了。当你处于继续等待的时候,链上的状态就是「pending」,即「确认中」。 如果你想赶上第一班公交车,在使用 imToken 发起交易时,选择默认的矿工费即可,交易将会被尽快打包。 讲到这里,你是不是已经清楚以太坊转账的机制了呢?如果还有任何关于以太坊转账的疑问,欢迎在下方评论区提问!
  • 以太坊代币入门指南

    什么是以太坊代币? 在学习以太坊代币(Ethereum tokens)之前,有必要先了解以太坊的基本原理。对于刚接触这些概念的人,可以先看我之前写的《以太坊入门指南》。以太坊代币是内置在以太坊区块链上的数字资产。它们受益于以太坊现有的基础设施,而不需要开发者重新构建全新区块链。它们还通过以太币(以太坊的本地货币,被用来驱动智能合约)来加强以太坊生态系统。这份入门指南可以帮助那些数字资产新人从更高的层面了解以太坊代币,以及它们和以太币的区别。 (数据采集于2017年5月22日) 对比 以太坊可以创建任何智能合约,包括可以表示数字资产的智能合约,而这些数字资产被称为以太坊代币。这类似 App Store 是提供 iOS apps 的平台一样,其中部分 apps 会在它们的游戏或平台中发行数字货币。然而,和 Apple 不同的是,以太坊没有中心实体来控制哪些 apps 可以上 App Store,每个人都可以在以太坊上发行代币。 以太坊代币可以用本地货币来表示任何实物,例如黄金(Digix)、用作支付交易费用的本地货币(Golem)。未来,代币甚至可以用来代表股票和债券等金融工具。每个代币的属性和功能完全遵守其预期用途的约束。代币可以有固定的供应量、恒定的通货膨胀率、甚至由复杂的货币政策来决定的供应量。代币可以用作多样化目的,例如支付访问网络,或用作去中心化组织的管理。 代币通常通过初始货币众筹(Initial Coin Offering,ICO)的销售方式进入公众视野。这些代币创建者会通过提供内置代币,来交换以太币、比特币或其他数字资产。近期有非常多的 ICO,在短短时间内改变了项目资金筹集的方式。尽管创建者希望去中心化应用程序中的代币尽可能被更多人拥有,但如何良好分配这些代币并没有限制。 图表来自于 thecontrol.co 现在有很多资料会教你创建新代币的过程,而且它们从技术层面解释了代币的工作原理。例如,代币工厂提供了一个简单的用户界面,允许你使用自定义参数来创建自己的以太坊代币。 类似比特币和以太,这些代币被记录在区块链上,也就是说所有已经发生的交易都被登记在了一个公开分类账本中。这是因为以太坊上的代币只是基于以太坊区块链一种特定的智能合约。 Aragon’s token tracked on Etherscan.io 现在市场上最大的以太坊代币是 Augur’s REP 和 Golem’s GNT。目前两个项目都在开发阶段,总市值 4.5 亿美元。我将简短阐述它们的工作原理,以便大家更好理解以太坊代币中的不同功能。 Augur Augur是由 Joey Krug 和 Jack Peterson 共同创建的去中心化预测市场。该预测市场允许用户下注不同事件的结果,也可以用来对冲。例如,如果你有一枚价值 2000 美元的比特币,而且想对冲持有,你可以打赌比特币的价格在某一天会低于 2000 美元。如果比特币上涨,那么你持有的比特币会更加值钱,如果比特币价格下跌,那么通过该预测市场你将缩小你的损失。这些事件结果的报告并没有中心化来源,所以会降低有一个腐败记者的风险,但也增加了对分散报告的需求。 Augur 发布的以太坊代币称为 Reputation (REP),REP的恒定供应量为 1100 万枚,其中 80%众筹到了 530 万美元,这些代币用于预测市场事件结果的报告。所有活跃的 REP 持有者必须报告随机选择事件的结果,这维护了用来解决 Augur 预测市场结果的去中心化报告池。作为提供这一关键报告功能的奖励,REP持有人可获得平台上预测市场产生的所有交易费用的一半。如果有人试图撒谎或报告错误结果,那么作为惩罚,他们必须放弃所持的一部分 REP。此外,如果大部分 REP 持有者是不诚实的,那么人们将再也不想用 Augur,REP 的价格也会随之下跌。这鼓励人们在 Augur 系统中诚实行事。 Golem Golem是一个由 Julian Zawistowski 领导的项目,它允许人们出租他们电脑的闲置算力。这个想法是通过创建一个全球超级计算机,使得计算能力更加便宜,有更多用户可以使用。 Golem 发行的以太坊代币叫 Golem Network Token (GNT),其恒定供应量为 10 亿枚代币,其中82% 通过众筹获得了 860 万美元。这些代币必须与 Golem 网络配合使用,用来支付算力的租用。由于访问此网络的代币有限,如果有更多的人想使用 Golem,那么 GNT 的价格就会上升。这理论上使GNT的持有者和使用者动机一致。 ERC20 代币 你也许听以太坊社区成员提起过 ERC20 代币。最初的 ERC20页面 “描述了实现代币合约的标准功能”,ERC20 是各个代币的标准接口。ERC20 代币仅仅是以太坊代币的子集。为了充分兼容 ERC20,开发者需要将一组特定的函数集成到他们的智能合约中,以便在高层面能够执行以下操作: 获得代币总供应量 获得账户余额 转让代币 批准花费代币 ERC20 让以太坊区块链上的其他智能合约和去中心化应用之间无缝交互。一些具有部分但非所有ERC20标准功能的代币被认为是部分 ERC20兼容,这还要视其具体缺失的功能而定,但总体是它们仍然很容易与外部交互。 资源 目前已经有很多现有和即将到来的以太坊代币。下面是一些能帮助你更好地理解以太坊代币的链接,同时有最及时和让人兴奋的新闻。 理解以太坊代币 应用虚拟币和协议代币的区别(https://medium.com/0x-project/the-difference-between-app-coins-and-protocol-tokens-7281a428348c) 如何使用代币在区块链上筹款(https://blog.gdax.com/how-to-raise-money-on-a-blockchain-with-a-token-510562c9cdfa) 区块链代币证券法律框架介绍(https://blog.coinbase.com/2016-12-07-blockchain-token-securities-law-a66ef03c383f) 代币、代币、更多的代币(https://thecontrol.co/tokens-tokens-and-more-tokens-d4b177fbb443) 代币经济(https://thecontrol.co/the-token-economy-81becd26b9de) 完美的代币销售结构(https://blog.gdax.com/the-perfect-token-sale-structure-63c169789491) 以太坊代币最新消息 ICO Alert(https://www.icoalert.com/) Smith + Crown(https://www.smithandcrown.com/) Ethereum Subreddit(https://www.reddit.com/r/ethereum/) The Control(https://thecontrol.co/) Week in Ethereum News(http://www.weekinethereum.com/) The Dapp Daily(https://dappdaily.com/)
sitemap