首页 > 世链号 > DEX与CEX终有一战,解决这些问题将是关键
紫云探币  

DEX与CEX终有一战,解决这些问题将是关键

摘要:一方面,这有私钥管理不便的原因,另一方面,则是因为用户对交易有着很大的需求,而基于区块链的去中心化交易所们(DEX),也面临着各式各样的问题,这使得非常不区块链的CEX们,反而成为了整个加密货币生态的支柱。
“人类从历史中学到的唯一的教训,就是没有从历史中吸取到任何教训。” —— 德国哲学家黑格尔
2014初的MtGox,2016年8月份的Bitfinex,以及2020年2月17号的Fcoin……

 

这些曾经叱吒风云的中心化交易所,都爆出了过万BTC的损失记录,它们有的已经消失在圈子当中,有的则失去了以往的地位。

我们常说,“Not your keys, not your coins”,但真正愿意掌握私钥的用户依旧只有少数,更多的人喜欢将币托管在交易所。

一方面,这有私钥管理不便的原因,另一方面,则是因为用户对交易有着很大的需求,而基于区块链的去中心化交易所们(DEX),也面临着各式各样的问题,这使得非常不区块链的CEX们,反而成为了整个加密货币生态的支柱。

就拿刚正式官宣暴雷7000-13000 BTC的FCoin来说吧,尽管张健长篇大论解释了亏空的缘由,但事实就是他拿不出币来给用户提款。

而所谓中心化交易所(CEX),就是负责聚集流动性,托管客户资产和执行交易的平台,平台上的每笔交易,都反映为交易所数据库中的一个变化,用户将自己的资金存入交易所的地址,实际就是将自己的资金交给交易所管理,并信任其不会出事(包括被黑、跑路、挪用资产等)。

而用户进行的交易,是在IOU的基础上进行的,在其明确从交易所提取资金之前,他们不会得到资金的实际交付。

当然,CEX的优点是交易速度很快,而且收取的交易费也相对较少,因为它们是集中处理的,不涉及区块链的链上交易。另外,优秀的CEX还可以提供大量的流动性、法币通道、强大的交易功能等,这些因素的综合,使得交易者们被牢牢困在这些平台上。

然而,管理不当,或者居心不良等原因,都会造成CEX丢币的悲剧,而以下就是损失客户超过10000 BTC的中心化交易所例子:

7

(图片来自:洒脱喜)

那DEX可以取代CEX吗?

 

为了回答这个问题,本周的学术内容,我们就围绕DEX话题来谈啦。

而在硬核技术文章精选部分,我们还会看到V神的及时性检测器(TD)提案,分布式密钥技术用例以及Bitcoin Core开发贡献者指南的内容。

另外,在过去的一周当中,以太坊也迎来了众多技术进展。

Sealing a business transaction with a handshake (图片来自:tuchong.com)

 

 

一、DEX的崛起以及需要解决的难题

所谓去中心化交易所(DEX),它们是建立在公链平台(例如以太坊)之上的去中心化应用(dApp ) ,它们使用智能合约来促成交易。

 

不完全统计显示,市面上的DEX应用数量已超过了250个,DEX协议则超过了30个,而DEX相对于CEX最大的好处,就是用户的资产是保存在自己的钱包当中的,这大大提高了安全性。

由于区块链的layer 1存在严重的可扩展性限制,因此,很少有DEX是完全用去中心化的方式实现的,大多数DEX选择使用混合式方法,将非关键操作放到链外,而关键操作则放在链上处理。

而DEX们普遍面临,且容易理解的问题有以下这些:

  1. 用户体验糟糕:和大多数dApp一样,用户体验依旧是DEX面临的最大挑战之一,因为用户需要通过钱包来进行交易,这涉及到私钥的管理等,此外还存在链上结算延迟等问题;
  2. 智能合约可能存在漏洞:很多dApp和智能合约都是通过Solidity编写的,一些人认为Solidity存在设计缺陷,并且缺乏验证工具,因此,开发者在部署智能合约时可能会出错,而恶意的攻击者可以利用这些漏洞来损害用户的资金;
  3. 跨链问题:目前基于以太坊的DEX只提供ERC-20或ERC-721代币的交易,而没有涉及跨链资金的交换。一些跨链技术可以解决这个问题,然而,这也会迎来更多的挑战;
  4. DDoS和DNS攻击:理论上,运行基于区块链技术的dApp,它们的主要优势之一是就是零停机时间,然而,中心化组件的存在,就会阻碍dApp实现这一目标。DEX越中心化,其遭遇DDoS和DNS攻击的风险也就越高,2017年的EtherDelta就是遭遇DNS服务器攻击的一个例子;
  5. 监管问题:当第一个DEX出现时,人们认为DEX的其中一个好处是可以抵制审查,不需要KYC。然而,这实际也带来了监管方面的问题,例如,SEC在2018年11月就指控Etherdelta前首席执行官Zachary Coburn违反了证券交易法,经营了未经注册的证券交易所;
  6. 链上结算和撤销问题:以太坊区块链的延迟和成本给使用链上结算和链上取消的DEX带来了挑战;
  7. 流动性不足问题:DEX们的流动性当前普遍是不足的,交易者们被提供流动性的平台所吸引,但平台需要交易者聚集提供流动性,这是一个鸡与蛋的问题。当然,这与当前的DEX仍处于初级阶段有关,如果DEX解决了以上概述的挑战时,流动性可能会增加;
嗯,以上就是DEX们常见面临的,也是较容易理解的问题。(参考自circle的DEX研究报告

 

但问题仅仅只有这些吗,当然不是,实际上还存在着其它的挑战,这也是本文将重点探讨的,这里推荐的是Cornell Tech、UIUC大学、CMU大学以及ETH Zurich的多位研究者(Philip Daian等人)撰写的论文《Flash Boys 2.0:DEX中的预先交易、交易重排序和共识不稳定问题》。

原论文链接:https://arxiv.org/pdf/1904.05234.pdf

在这项工作中,研究者解释了DEX设计缺陷如何威胁到潜在的区块链安全,他们还研究了一个利用DEX缺陷的套利机器人社区。

研究发现,这些机器人表现出许多类似迈克尔·刘易斯所揭示的,在华尔街常见的预先交易、积极延迟优化等市场行为。

这一研究的主要关注点有:

  1. 纯收入机会:代表广泛DEX套利活动的一个特定子类别,这些是通过智能合约发布的原子性区块链交易,它们可以在每一笔交易中无条件获利;
  2. 优先gas拍卖(PGA):由于纯收入机会提供无条件收入,套利机器人经常通过竞价交易费用(gas)相互竞争。研究对机器人的PGA行为进行了形式化建模,并观察到一个合作均衡;
  3. 矿工可提取价值(MEV):研究引入了MEV的概念,即矿工可直接从智能合约中提取的价值,以此作为利润。MEV的一个特殊来源是排序优化(OO)费用,这是由矿工在特定epoch周期控制交易排序而产生的,而优先gas拍卖(PGA)和纯收入机会正是排序优化(OO)费用的一个来源,研究表明,MEV会造成系统共识层漏洞;
  4. 基于费用的分叉攻击:研究表明,排序优化(OO)费用可能会激励矿工发起分叉攻击;
  5. 时间盗贼攻击:研究表明,高MEV会引发新的攻击,在这种攻击当中,矿工会重写区块链历史,窃取过去由智能合约分配的资金,这种攻击被称为时间盗贼攻击,而研究者通过实验认为,纯收入利润和PGA机器人费用的MEV,足以对今天的以太坊构成时间盗贼攻击威胁;

1、1 利用DEX进行无风险套利的例子

在本节中,我们将深入探讨在DEX进行的预先交易、套利和高频自动交易的特定示例。这个具体的例子将为我们接下来的讨论提供背景,研究将对这个市场进行建模,并讨论它对基础智能合约系统安全性的影响。

 

我们首先需要知道的是,潜在利润的一个来源——价格差异,似乎是智能合约交易等环境所固有的。

如今,区块链处理的交易是离散批次(以区块的形式)处理的,此外,交易本质上是相互依赖的,因此它们是连续的:订单失败取决于过去的订单尝试,在某些交易所,价格直接取决于订单历史。当多个交易所在同一系统上运行时,当一个区块内的交易按顺序执行时,可能会在各交易所之间产生价格差异。

由于基于原子批处理的交易处理,以及交易本身可以由智能合约发起,因此,人们就可以通过代理合约建立跨交易所交易的机器人。

这些代理合约可以在单笔交易中按顺序执行一批订单,如果批处理中的任何交易失败,则通过引发异常来还原以前的交易。这意味着套利者有机会组成单笔交易,并且是全或无(all-or-nothing)故障模型。

这种交易的一个例子是以x的价格购买资产,然后立即以x0>x的价格出售;如果以原子方式执行,这些交易一起在基础资产中产生保证性的收入。例如,一个代理智能合约可执行以2ETH的价格购买X型token的交易,而另一个则以3 ETH的价格进行出售。如果这两个订单都在某个DEX的帐簿上,那么执行这两个订单的智能合约将确保套利者获得1 ETH的收入。

在传统的跨交易所套利当中,套利交易是被视为概率性的,因为很有可能会出现一笔交易成功,而另一笔交易失败的情况。

这使得基于智能合约的套利,在很多方面要比传统的跨交易所套利更易于观察、分析和研究,因为机器人的意图在订单请求中通常是明确的。

1

图1: 在以太坊交易中观察到的纯收入机会示例:0xc889bd13594f75e4dd824f04f0c2ad03896cb7ec6518df02455e9560367bb9c4,这笔发生在2018年11月15日的交易,利用了TokenStore DEX(设计类似于Etherdelta),同一颜色边代表是由一次交易产生的,作为纯收入机会示例,它在FREE和ETH这两个资产上都产生了净利润。

2

图2:纯收入机会示例的优先gas拍卖(PGA)情况,其显示了两个观察到的机器人随时间变化的gas竞价,表中详细列出了每个机器人的前两个和最后两个出价,以及两笔被确认的出价(中间);

为了计算交易利润,我们用收入减去成本,在这种情况下,成本就是指套利者支付的gas成本。

 

交易0xc889…b9c4支付了134.02 Gwei的gas价格(1 Gwei = 10^(−9)ETH), 该交易使用了113, 265 gas,因此,这次交易的总成本为113265·134.02 Gwei=0.01518 ETH(交易时约为5.13美元),而相关利润则约为0.77ETH,或267美元。

1、2 优先gas拍卖和重排序问题

以太坊交易是由客户端节点软件在点对点gossip多广播协议中路由传播的,这意味着所有交易信息都可供此网络中的所有参与者使用,但对于在gossip拓扑中处于有利位置的参与者而言,他们就可以更早利用。此外,节点可以模拟给定当前或预期系统状态的每个交易的结果。因此,一旦提交套利交易,它所涉及的交易序列就会被网络的对等节点公开了。

 

于是乎,一个自然的问题出现了:套利者之间的优先权是如何确定的呢?因为每一个纯利润机会,都带有一些可计算的利润p,并在全球范围内传播,所以套利机器人之间的竞争博弈,自然会变成谁先执行谁就能赢的问题,系统的机制规定了游戏中的所有后续交易都会失败,这个特殊的游戏如何进行,取决于底层区块链的点对点中继网络机制,以及底层的矿池策略和订单设计。

在上面提到的例子中,两个机器人相互竞争,最终赢家支付了一笔费用,而这笔交易是由矿池“MiningPoolHub”在区块高度6709727打包的,而矿工们被激励打包竞价失败的交易,因为这些交易为尝试执行支付了费用。请注意,虽然中标交易在执行中使用了113,265 gas,但竞争失败的交易则支付了33,547 gas单位,数额要小得多。从博弈论的角度来看,每一次竞拍都代表了一种全价拍卖的变体,在这种情况下,失败者将被迫向矿工支付一定比例的价格,而不是支付全部竞价。

1、3 套利流行度测量

由于缺乏相关工具,研究者通过分叉以太坊Go客户端来纪录mempool中的未确认交易。测量实验收集了18年4月-19年1月的网络数据(超过300G),结果显示,在区块链机器人套利的早期阶段,机器人程序通常每天进行1000次以上的交易,每日收入为10-100 ETH。后来,随着市场逐渐成熟,利润分配更加稳定和一致,机器人的每日套利变成了1- 10 ETH。

 

3

图3:观察到的纯收入市场ETH的下限规模,黑线显示市场规模的14天移动平均值,而橙色虚线表示市场规模的累积值。散点图着色/阴影表示每日纯收入交易的数量。

4

图4:自2018年4月以来,按累计纯收入计算的DEX机器人情况

近年来,纯收益交易的数量不断增加,由此呈现出DEX市场向小型零售交易和更有效市场设计发展的趋势,这降低了平均机会规模,但为更有效的机器人市场提供了更频繁的机会。

 

5

图5:纯收入机器人的利润(收入减去估计成本),研究观察到,在138948笔观察到的纯收入交易中,利润中值大约为纯收入机会规模的65%。

以太坊胜过其他市场设计的一个独特特点,是其交易数据的公开性,例如,图5中的套利者地址是已知的,并且可以通过单个参与者链接不同的交易。

 

这通常允许用户查看哪些套利机器人在针对他们进行套利交易,然后在区块链浏览器的公开评论页面发表评论,例如,图5中的顶级机器人似乎经常从犯错的DEX用户身上获利,一位名为“Getcoin Hub Inc.”的用户为此评论称:

“这显然是一笔错误的交易,是否存在可能,你能良心地把这笔交易送回去呢?”
另一位用户Benjamin Huffman则恳求称:
“我是一名单亲家长,为了维持生计,我不得不在我讨厌的工作上努力,请宽恕我吧。”
下载

 

类似的评论还有很多,虽然不可能验证这些假名评论的真实性,但它们的存在,确实指出了用户存在不当操作的可能,以及当前DEX设计对用户保障的影响。

现在我们将焦点转向合作策略,理论上,优先gas拍卖(PGA)会有一个合作纳什均衡游戏,由于出价是无法降低的,随着机器人提交的每一笔连续竞价,机会的最大盈利能力就会降低。因此,很自然地假设,只要可能,机器人就会联合起来然后将利润进行分配,而不是通过在链上竞价降低利润。

从目前来看,这种完美合作存在的可能性是较低的。虽然链外合作可能是有意义的,特别是在一个重复的游戏中,但它有一些缺点,包括缺乏匿名性。

1、4 矿工可提取价值(MEV)和区块链安全问题

上面谈到的PGA和DEX套利,似乎并不会立即对基础区块链的安全造成危害或影响。

 

它们可能只是在网络参与者之间传递市场信息的一种有效机制。然而不幸的是,研究认为,DEX的存在的确会对其基础区块链系统(即在共识层)造成安全风险影响。

换言之就是,应用层安全会对共识层安全构成威胁

在稳定的区块链中,区块奖励会激励诚实的矿工行为。然而,如果排序优化(OO)费用超过区块奖励,反而会激励分叉攻击。

为了获取排序优化(OO)费用,矿工可以重新排序用户的交易,并可能将自己的交易插入其中,直接获取最大的利润,这同时实现了套利交易,又可以收取所有“失败”套利机器人支付的PGA费用。

这种排序优化(OO)费用,我们可以称之为矿工可提取价值(MEV)。在具有高MEV的系统中,优化MEV提取利润,可以补贴两种不同形式的分叉攻击。第一种是被称为undercutting attack的攻击方式,它用显著的MEV分叉一个区块,而第二种攻击则被称为时间盗贼攻击(time-bandit attack)

时间盗贼攻击(time-bandit attack)的存在,意味着DEX和许多其他合约是对POW链稳定性的内在威胁,并且它们越大,威胁也就越大。

6

图6:以太坊上纯收入OO费用最高的区块,如图所示,这些区块中的OO费用明显高于区块奖励和交易费用,通常超过一个数量级。

关于这两种攻击的描述,有兴趣的读者可以阅读原论文,本文不多做介绍。

1、5 研究结论

这一研究揭示了庞大的机器人经济体如何从DEX的交易订单提供的机会中获利。研究者还模拟了在优先gas拍卖中,机器人相互竞争以获得矿工提供的交易优先权的行为。数据表明。在许多具体案例中,机器人仅从纯收入套利中获得的收入,要远远超过以太坊区块奖励和交易费用。

 

最后,研究者认为,矿工可提取价值(MEV),特别是订单优化(OO)费用的存在,会威胁到区块链共识的稳定性,如果这样的费用足够高,它们会构成一种经济脆弱性,这是以太坊或类似公链应用需要关注的一个问题。

洒脱喜简评:相较于中心化交易所存在的资产托管风险,DEX提供的安全保障是值得尝试的,但这难免会引入一些新的问题,随着技术的发展(例如ZK Rollup & Optimistic Rollup),一些问题已慢慢得到了解决,而另一些问题,研发人员们也在积极寻找着解决办法,尽管从目前来看,谈DEX取代CEX依旧是不太现实的,但终有一天,CEX们会被人们遗弃。
 

二、硬核技术文章一周精选


2、1 V神原文详解:通过及时性检测器(TD)解决区块链的51%攻击问题

注:原文作者是以太坊联合创始人Vitalik Buterin,在这篇文章中,他提出了一种称为及时性检测器(TD)的构造,以试图解决区块链51%攻击的问题。

V神

 (图:Vitalik Buterin)

以下为译文:

 

摘要

我提出了一种基于Lamport 99% 容错共识的构造,并称之为及时性检测器(timeliness detectors)。及时性检测器(TD)允许在线客户端(即连接到其它延迟≤δ客户端的客户端,又称用户)在保证正确性和一致性的情况下,检测区块是否是“准时”发布的。

在发生51%攻击的情况下,这允许至少一部分在线客户端就(i)是否发生了“足够糟糕”的51%攻击达成一致,以及确定(ii)什么是“正确”的链,甚至有可能(iii)确定哪些验证者要对攻击负责。这降低了51%攻击造成混乱的能力,加快了从攻击中恢复的时间,同时也潜在地增加了成功攻击的成本。

 

及时性检测器(TD)

及时性检测器最基本的结构如下。对于客户端收到的每个数据块,客户端都会维护一个“是否是及时”的依据,它会说明客户端是否认为区块是“准时”收到的。其目的是在51%攻击中尝试区分攻击链和“正确”链:

p1

我们的模型很简单:每个区块B都有一个自我声明的时间戳 t (在实际的协议中,时间戳通常是隐性的,例如以slot数显示)。然后有一个共同商定的同步约束δ。最简单的时间检测器是:如果你在时间t+δ之前接收到区块B,那么你认为该区块就是及时的,如果你在时间t+δ之后收到它,那你就不会认为它是及时的。但这并不能达成一致:

p2

我们通过下面的方式解决这个问题。对于每个区块,我们随机选择N个“证明者”样本(v1...vn)。每个证明者都遵循以下规则:如果他们看到一个带有时间戳t的区块B在时间t+(2k+1)δ之前有来自k个证明者的签名,他们就用自己的签名进行重新广播。而客户端遵循的规则则是:如果它们在时间t+2kδ之前看到一个带有时间戳t的区块B,以及来自k个证明者的签名,那么它们会及时接受它。如果它们看到区块B,但它永远不满足这个条件,则客户端就认为区块B是不及时的。

让我们看看,当只有一个客户端认为某个区块B是及时的,但其它客户端最初可能因为延迟差异,而不认为它是及时时,会发生什么。我们首先假设有一个诚实的证明者。

p3

这张图展示了所发生事情背后的基本原理。如果客户端在截止时间T之前看到一个区块,那么该区块将在证明者截止时间T+δ之前落入证明者的手中,并且证明者将添加他们的签名,并且他们将在时间T+δ之前重新广播它,保证其他节点在T+2δ前看到有签名的区块。关键的机制是一个附加签名以延迟截止时间的能力。

现在,让我们考虑n−1个非诚实证明者以及1个诚实证明者的情况。如果客户端看到一个带有k个签名的及时区块,则有两种可能:

  1. 这k个签名当中,有一个是诚实的;
  2. 这k个签名当中,没有一个是诚实的;
在情况(1)中,我们知道该证明者是诚实的,因此证明者在时间T+(2j−1)δ之前广播了带有 j ≤k 个签名的区块B,这意味着(通过同步假设)每个客户端在时间T+2jδ之前都看到了该bundle,所以每个客户端都接受区块B作为当前区块。

而在情况(2)中,我们知道诚实的证明者将在时间T+(2k+1)δ之前看到该bundle,因此它们将用自己的签名重新广播该它,并且所有其它客户端将在k+1签名截止时间T+(2k+2)δ之前看到该扩展bundle。

因此,现在我们有了一个“及时性检测器”,客户端可以使用它来跟踪哪些区块是“准时”的,哪些区块是“不准时”的,以及在什么时候,所有延迟小于δ的客户端都会同意哪些区块是准时的。

最简单的区块链架构

为了决定谁可以提出提议,谁可以在任何slot证明区块的目标。我们可以这样定义一个“99%容错区块链”:要确定当前状态,只需按照它们自己声明的时间戳顺序处理所有及时的区块。

这实际上是可行的(并且提供了对最终性逆转和审查51%攻击的抵抗),并且在它自己的假设下给出了一个相当简单的区块链架构!唯一的问题是:一切都建立在假设所有客户端都将在线,并且网络永远不会被中断的基础上。因此,要使其安全地工作,可能需要一周或更长的区块时间,而这实际上是一个“辅助链”的合理架构,它可以跟踪验证者的存款、提款以及罚没情况,例如,(通过审查新加入的验证者等)来防止长期的51%攻击。但我们不希望把这种架构应用到主链。

 

更合理的选择

然而,在这篇文章中,我们将重点关注满足一组较弱安全性假设的系统架构。即如果以下两个假设中的任何一个是真的,那么它们就是好的:(i)网络延迟很低,包括验证者和客户端之间的网络延迟,以及(ii)大多数验证者是诚实的。首先,让我们回到一个模型,在这个模型中,我们有带有一些分叉选择规则的区块链,而不仅仅是离散的区块。我们将通过我们最喜欢的两个终局性分叉选择规则例子,(i)FFG和 (ii) LMD GHOST。

对于FFG,我们将该分叉选择规则扩展如下。从创始区块开始,每当你看到两个子链都已完成的区块时,请选择lower-epoch及时完成区块的链。然后从那开始继续按以前的方式前进。一般来说,在两种情况下,只会有两个冲突的最终链:(i)33%的攻击,以及(ii)许多节点离线(或审查)导致长期运行的inactivity leak。

情况(i):

p4

情况(ii),option 1 (少数离线):

p5

情况(ii),option 2 (离线多数,稍后以最终确定的链重新出现):

p6

因此,在所有情况下,至少过了某个时间点(T+2kδ,在该时间点之后,如果客户端没有及时接受一个区块,那么我们知道它永远不会及时接受它)后,我们都可以防止51%攻击破坏最终性。还要注意,上面的图有点误导性。我们关心的不是完成区块的时间线,而是区块的及时性,其中包括证明该区块已最终确定的证据。

对于有时会离线的客户端而言,只要没有51%攻击,这不会改变任何事情:如果链没有受到攻击,那么规范链中的区块将是及时的,因此最终确定的区块将始终是及时的。

而可能导致风险增加的主要情况是,客户端具有高延迟,却没有意识到它们具有高延迟。它们可能会把及时区块视为非及时区块,或者把非及时区块视为及时区块。该机制的目标是,如果非及时性依赖分叉选择和及时性依赖分叉选择是不一致的,就应该通知用户,以便他们能够验证正在发生的事情。不应指示他们盲目接受依赖及时性分叉选择作为规范。

在处理审查问题时,我们还可以使用及时性检测器来自动检测和阻止审查。这很简单:如果具有自声明时间t的区块B是及时的,那么在时间t+(2k+2)δ之前不包含该区块的任何链(无论是作为祖先区块还是作为叔块)都会自动被判定为非规范链。这确保审查区块超过(2k+2)δ的链将被客户端自动拒绝。

p7

在这里使用及时性检测器(TD)的主要好处是,它可以在审查“过多”的情况下形成共识,避免“边缘攻击”的风险,这些“边缘攻击”被故意设计成对某些用户(而非其他用户)而言是足够糟糕的,从而导致社区浪费时间和精力来争论是否分叉审查链(相反,大多数用户在任何情况下都会同意正确的行动方案)。

注意,这需要一个叔块包含机制,而当前以太坊2.0是没有的。此外,它还需要一种机制来执行叔块内部的交易,这样审查阻力就能扩展到交易,而不仅仅是区块的原始体。这需要和无状态客户端很好地协作

另一个问题是,需要小心处理许多区块被发布并获得及时性状态的可能性。这可能是由于发布延迟,或者是由于一个提议者恶意地在同一slot中发布多个区块造成的。前者可以通过修改的规则处理,其中区块必须包括所有时间早于(2k+2)δ的及时区块或最大允许数(例如4)叔块。

而后者可以通过这样一个规则处理:如果包括来自特定slot的一个区块,则可以有效地忽略来自该slot的所有其他区块。

请注意,在Casper-CBC框架中,对包含非及时性或审查性区块的链进行审查预防和取消优先级操作,足以提供与上述FFG框架相同的终局性保证。

面临的挑战及任务

  1. 想出最好的方式,用非技术的语言向用户解释,在及时性意识和非及时性意识分叉选择规则不一致的情况下发生了什么,以及他们应该如何应对这种情况;
  2. 分析系统在延迟有时高于δ,或延迟总是潜在高于δ情况下,且我们有假设(例如,某些固定部分的证明者是诚实的,或其他混合假设)下的行为。查看是否有方法修改规则以提高这些场景中的性能;
  3. 分析实现这些属性,同时不需要包括新证明的方法,相反,只需要重用现有证明(例如,验证者证明FFG中的每个epoch的证明);
  4. 确定是否对基于“简单”最长链分叉选择规则进行了一些小的修改,使它们能够从及时性检测器中获益,从而获得某种终局性。


在这篇文章中,以太坊联合创始人Vitalik Buterin提出了一种称为及时性检测器(TD)的构造,以试图解决区块链51%攻击的问题。

在发生51%攻击的情况下,这允许至少一部分在线客户端就(i)是否发生了“足够糟糕”的51%攻击达成一致,以及确定(ii)什么是“正确”的链,甚至有可能(iii)确定哪些验证者要对攻击负责。这降低了51%攻击造成混乱的能力,加快了从攻击中恢复的时间,同时也潜在地增加了成功攻击的成本。

来源链接:https://www.8btc.com/article/555881

洒脱喜简评:51%攻击问题是每个区块链系统面临的阿喀琉斯之踵,而V神提出的新解决方案,实质上是为了增加51%攻击的难度,以及缓解攻击带来的影响,而并不是彻底解决该问题,但这依旧是值得研究的。

2、2 如何通过分布式密钥技术实现有效监管

原文作者:高承实(中国计算机学会区块链专业委员会委员)

非对称密码技术在信息化系统中始终扮演着关键角色,成为构建信息化系统诸多核心功能的基础。

文章介绍了分布式密钥系统的一些应用。

来源链接:https://www.8btc.com/article/555881

2、3 如何成为Bitcoin Core贡献者?最全的比特币开发者指南都在这里了

本文作者为Amiti Uttarwar,是Bitcoin Core开发者,就职于Xapo,曾是Coinbase的软件工程师。根据自身的经历,她在文章中分享了为比特币做贡献的秘籍,其中包含了大量的学习资料,干货满满,对有需要的人来说很有帮助。P.S. 这是个优秀的小姐姐哦~

clifford-photography-sk7rRsDuqVQ-unsplash

在过去的一年里,我进入了为Bitcoin Core做贡献的奇妙兔子洞。在这个过程中,我很幸运地从许多人那里得到了指导和支持,我自己也学到了一些技巧。在这篇文章中,我想分享一些我发现的有效工具。

成为Bitcoin Core贡献者只是帮助推进这个协议的其中一种方式。其他选择包括(并且远远超出)参与邮件列表讨论、研究攻击向量或扩容技术、为闪电网络客户端做贡献,或开发相关工具,如secpk256k1代码库或更好的测试基础设施。但这篇文章不涉及这些话题。

这篇文章是关于Bitcoin Core的,通过我的体验,我希望它能帮助你找到自己的贡献方式。

开始之前

首先,读白皮书。讲真,如果你还没有读过,那就别看这篇文章了,直接去读白皮书吧。

理解比特币运作的基础概念是必要的。了解的渠道有很多。我会从读其中一本书开始(Mastering Bitcoin、Programming Bitcoin或Grokking Bitcoin)。如果是线上资料,我会访问Jameson Lopp的资源列表或Chaincode实验室的课程。前者更宽泛,但后者专门针对协议开发。

如果你的目标是为Bitcoin Core做出贡献,不要试图学习每个概念的细节。有许多主题的差别不大。目标是获得高层次的理解,并接触系统的不同部分。彻底消化这个分布式共识系统的基本原理是需要时间的。

Bitcoin Optech周报是了解生态系统技术发展的“最佳”方式。Dave Harding在保证其更新。我强烈推荐订阅这个内容。

选择放弃什么

一旦你决定为Bitcoin Core做出贡献,这个过程就不会停止。这个项目有足够的复杂度和开发工作,足以让任何人忙上好几辈子。选择如何分配你的注意力,这有助于确定你“不想”关注什么(至少现在不想)。

要做出改变,开发的广度和深度都很重要。找到正确的平衡是一门随着时间而发展的艺术。广度增加了对新概念的接触,并有助于确定哪些工作是相关的。为了提出一种改进代码库的PR(Pull Request,合并代码请求),理解更大的背景与深入研究一个方面并充分熟悉所提议的变更集一样重要。

人们喜欢推荐的东西总是会超出你的阅读、理解、消化和学习范围……我在上面已经这样做过了——我推荐了3本书,2个无穷无尽的材料清单,还有一个周报。当你与他人交流时,你也会面临潜在的压力,因为你需要对大量的话题有足够的了解,以便在任何对话中都有所贡献。这对广度来说很好,但只有你才能创造出追求深度的道路。要提交一个PR,你需要开发特定的知识,让你提供改变。不要停留在“消化”阶段,专注将确保你继续“创造”的阶段。

如果你不是整天都在研究比特币,这一点就更重要了。这是一个非常复杂的项目。需要创造空间。即使是看起来很简单的任务也需要一段时间。

好了,人生忠告够多了了。现在开始说项目细节……

 

熟悉代码库

 
  • 复制代码库,进行编译和测试。
  • 通读项目开发人员文档:
1. Contributing to Bitcoin Core指南是入门的基本知识,包括pull request和审查过程如何工作。

2. 《开发者笔记》是很好的精读指南,在开启一个PR之前,重读这个笔记,以确保你符合当前的标准。

3. Productivity Notes的技巧在开发工作流程的不同时段非常有用。我强烈建议立即执行前四个步骤(安装ccache,执行./configure,使用make -j [num-cores]编译,并生成构建目标)。

阅读Jimmy Song和John Newbery写的入门文章。

参加每周的PR审查。审查PR对项目来说至关重要。更重要的是,这在最开始,是了解代码库和合并过程的有效方法。PR审查是在别人的帮助下熟悉特定变更集的一种方式。你从PR审查获得的价值是你愿意投入精力的直接产物。每周的参与有助于提高对技术架构和历史环境等模式的认识,独立开发需要更长的时间。无论你选择参与这样的活动,还是仅仅潜水,或花时间探索代码,你肯定会学到很多东西。提前准备可以让你利用这段时间来发文或树立你理解代码的信心。

找到你的第一个PR

当你开始适应代码库时,你可能觉得自己已经准备好提交PR了,但是不确定如何选择对项目有价值的贡献。到目前为止,这篇文章中提到的各种方法都很有可能帮助你找到一个有意义的内容。但如果你还在寻找,这里有一些其他的选择:

  • 时刻关注good first issueup for grabs
  • 搜索带有“TODO”的代码库,并进行解析,以查看是否有你熟悉且可用的代码库。我在测试中遇到过一些看起来对初学者很友好的。
  • 选择代码库的一个部分(也就是贡献文档中的一个部分),并注意正在打开的相关PR。如果你跟进了PR内容,你肯定会注意到接下来要做的事情。同时,批判性地思考如何测试这些变化。打开PR来跟进处理和增加测试覆盖率将是最佳选择。你还可以访问pr-review-club history来熟悉某个部分。
开源贡献的本质意味着没有中心化的项目管理系统。因此,有些对项目有用的变更集不一定是对PR作者注意力和技能的最佳利用。因此,作为一名贡献者,在你的学习曲线上找出有用的贡献是你工作的一部分。我的第一个PR是通过up-for-grabs找到的。

 

我很惊讶地发现有这么多举手之劳可以做。在仔细查看Github项目之前,我从来没有想到会这样。

从伴随着Bitcoin Core的“街头形象”来看,很难想象做贡献是多么容易。留意不间断的(简单和复杂的)待办事项清单,确实让我们看到了比特币项目是多么年轻,以及对更多贡献者的紧迫需求。

利用互联网来进行进一步学习

当我开始学习C++语言的时候,我拿到了一些很棒的书,但是说实话,我仍然在努力阅读它们。

动手学习对我来说最有效,我专注于学习语言中最相关的部分,这样我就可以读懂Bitcoin Core代码库。

所以,我会写代码。当我遇到一个新的C++概念时,我会读文档并试图在一个示例程序中将这个函数拎出来看。我会保持tmux制表打开状态,方便调用c++ play。这些程序还可以作为我修改过的概念的文档。另一个很棒的工具是Compiler Explorer。我发现颜色编码对于比较执行相同函数的多种方法特别有帮助,可以看出这些差异是表面的、优化出来的,还是从根本上改变了所做的工作。

为了更深入地研究具体的C++概念,我一直很喜欢观看CppCon talks,尤其是“Back To Basics”这一系列。

这是一个好的开始,但有时我想和人说话。最初,我有时会对一些符号有疑问,但我不知道如何用谷歌来搜索。目前,我更想确认我对文档的理解是否正确。

我发现了一些很棒的在线社区,有陌生人愿意帮助我找到正确的方向。关于C++有一个cpplang slack,一个## c++ -general交流渠道,还有discord上的#include< c++ >社区。在网络上,陌生人给予的帮助令我十分惊讶。

两个注意事项:

1. 我鼓励寻求帮助,但要有礼貌,并且思虑周全。做尽职调查,首先尝试自己找到答案。礼貌地使用适合你的问题的沟通渠道。人们不欠你答案。提供任何帮助都是出于慷慨。

2. 选择聊天客户端:我发现irccloud是一个简单、美观的客户端,而且是免费的。还可以选择支付少量的费用永久保留用户名和日志。这样的客户端有很多选择,但是我建议你将你的决策能力集中在更重要的事情上,尽可能快地选择客户端。

我最喜欢的比特币资源在这篇文章中随处可见,但这里有一些我想要强调的代码:

  • P2P消息和RPC(远程过程调用)的开发者参考
  • Bitcoin stack exchange有专门针对协议开发的讨论,涉及各种问题和答案。这个网站在谷歌很难搜到,所以最好直接访问
  • Fabian Jahr编写了一个关于调试技术的完整文档[演讲] [要点]
  • 我喜欢看James O’Beirne的架构概述[演讲]  [幻灯片]
如果你正在努力学习一个技术概念,不确定要尝试什么,请联系我!我肯定不知道所有的答案,但我很高兴能集思广益为你找到解决方案。

更多了解比特币的途径

有很多很棒的方法可以增加你对比特币生态系统发展的了解。以下是一些热门的选择:

  • UTC时间每周四19:00在#bitcoin-core-dev会举行会议
  • #bitcoin-core-pr-reviews频道有时候会讨论进程和工具,关注这个频道会有所帮助
  • 重新看看Chaincode Labs的比特币课程,那里有很多很棒的素材——演讲、论文、甚至是代码挑战
  • 参加高质量的会议
  • 观看之前会议的视频。我在上下班的路上看了Bitcoin Edge Dev++ [2017] [2018] 的视频,学到了很多
  • 如果可以的话,参加Socratic seminar
  • 阅读比特币维基,尤其是协议和隐私页面
  • Chaincode最近做了一个播客频道
熟悉比特币协议不是一件简单的事情,尤其是如果你有其他的事要做,比如一份全职工作或还是学生。我用间隔记忆法来记住新信息。我强烈推荐这个方式。它有助于催化持久记忆信息的能力,这样你就可以花更多的时间来获取新的概念或应用你所学到的知识。这样做还有其他好处,即可以随时进行概念学习,并可以将任何空闲时间都花在代码库的特定任务上。

密切关注Chaincode培训项目。我去年夏天有幸参加了这个项目,这改变了我的工作方式。但请记住,这是一个门槛很高的项目,你对Bitcoin Core的贡献程度越高会增加你被接受的几率(参加代码审查、审查PR、提交PR等等)。

说真的,快行动吧

为Bitcoin Core做贡献是很难的,但并非完全不可能。在开始这段旅程之前,我从来没有写过(甚至读过)任何C++代码。害怕是很自然的,但不要让这种情绪阻止你。

对自己要有耐心。我为Bitcoin Core做的贡献很多都需要花很多时间。有一次,我在集成测试中花了整整3天的时间,重复了用交易填充内存池的不同方法。我最初的几次尝试要求的测试时间长得很不合理,所以我不得不尝试不同的方法。不要陷入一种“这应该很容易”的假象。专注于你能学到的,并不断尝试。

刚开始的时候,“Bitcoin Core”和“核心贡献者”很容易让人觉得这是一个庞大而神秘的组织,不可能参与其中。我惊喜地发现人们是多么乐于助人和支持我。每个在项目中工作的人都受到极大的带宽限制,所以如果你做出了有意义的贡献,大家是会支持你的。

这是很重要的。不要一开始就纠正PR中的拼写错误。要有耐心,在你的学习上投入,观察这个项目,并确定你如何才能做出有意义的贡献。

无论你处于学习曲线的哪个位置,你都可以成为这个项目的资产。如果你愿意贡献你的精力,并且有能力批判性地思考和学习,你就是一笔财富。不要让傲慢或不安全感把你引入歧途。

一些异想天开的思考……

如果我们要描绘出各种各样的学习路径来为Bitcoin Core做贡献,它肯定不会像区块链那样有序和线性。追求你自己的旅程,享受路上的风景,玩得开心。

在开源领域的探索让我想起了越野背包旅行。

在背包旅行中,我首先在一张地形图上查看我想去的地方,然后画出我计划旅行的大致路线,尽量待在最平缓的地形上。由于比特币是新兴领域,可能在地图上还找不到。因此,在浏览比特币时,你首先必须用一些理解的片段拼凑出该地区的大致地图,然后制定出一种方法。我希望这篇文章能让这个过程变得简单一些。

徒步旅行的实际路线需要不断的迭代。每走一步,你都会获得新的信息,你可以利用这些信息来确定难度最小的路径,这样你就可以利用你的能量深入山区进行探险。你要注意每一步的细节,还要注意宏观路线。

这一过程与比特币领域的探索类似。当你学到更多,你会对未来的地形有不同的看法,必须不断选择正确的路线,以保持自己的合理前进。有时你会撞上悬崖,不得不回头尝试另一条路。寻找路线需要大量的精力和注意力。你必须是一个航海家和一个徒步旅行者。

我可以再深入谈谈我的经历,让这篇文章变得更长,但是,我将这样结尾:

祝你好运!希望在GitHub见到你的身影:)


 


Tags:
免责声明
世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。